xref: /freebsd/contrib/llvm-project/clang/lib/Headers/module.modulemap (revision cb14a3fe5122c879eae1fb480ed7ce82a699ddb6)
1/*===---- module.modulemap - intrinsics module map -------------------------===
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===-----------------------------------------------------------------------===
8 */
9
10module _Builtin_intrinsics [system] [extern_c] {
11  explicit module altivec {
12    requires altivec
13    header "altivec.h"
14  }
15
16  explicit module arm {
17    requires arm
18
19    explicit module acle {
20      header "arm_acle.h"
21      export *
22    }
23
24    explicit module neon {
25      requires neon
26      header "arm_neon.h"
27      header "arm_fp16.h"
28      export *
29    }
30
31    explicit module sve {
32      requires sve
33      header "arm_sve.h"
34      export *
35    }
36  }
37
38  explicit module intel {
39    requires x86
40    export *
41
42    header "immintrin.h"
43    textual header "f16cintrin.h"
44    textual header "avxintrin.h"
45    textual header "avx2intrin.h"
46    textual header "avx512fintrin.h"
47    textual header "avx512erintrin.h"
48    textual header "fmaintrin.h"
49
50    header "x86intrin.h"
51    textual header "bmiintrin.h"
52    textual header "bmi2intrin.h"
53    textual header "lzcntintrin.h"
54    textual header "xopintrin.h"
55    textual header "fma4intrin.h"
56    textual header "mwaitxintrin.h"
57    textual header "clzerointrin.h"
58    textual header "wbnoinvdintrin.h"
59    textual header "cldemoteintrin.h"
60    textual header "waitpkgintrin.h"
61    textual header "movdirintrin.h"
62    textual header "pconfigintrin.h"
63    textual header "sgxintrin.h"
64    textual header "ptwriteintrin.h"
65    textual header "invpcidintrin.h"
66
67    textual header "__wmmintrin_aes.h"
68    textual header "__wmmintrin_pclmul.h"
69
70    explicit module mm_malloc {
71      requires !freestanding
72      header "mm_malloc.h"
73      export * // note: for <stdlib.h> dependency
74    }
75
76    explicit module cpuid {
77      requires gnuinlineasm
78      header "cpuid.h"
79    }
80
81    explicit module mmx {
82      header "mmintrin.h"
83    }
84
85    explicit module sse {
86      export mm_malloc
87      export mmx
88      export sse2 // note: for hackish <emmintrin.h> dependency
89      header "xmmintrin.h"
90    }
91
92    explicit module sse2 {
93      export sse
94      header "emmintrin.h"
95    }
96
97    explicit module sse3 {
98      export sse2
99      header "pmmintrin.h"
100    }
101
102    explicit module ssse3 {
103      export sse3
104      header "tmmintrin.h"
105    }
106
107    explicit module sse4_1 {
108      export ssse3
109      header "smmintrin.h"
110    }
111
112    explicit module sse4_2 {
113      export sse4_1
114      header "nmmintrin.h"
115    }
116
117    explicit module sse4a {
118      export sse3
119      header "ammintrin.h"
120    }
121
122    explicit module popcnt {
123      header "popcntintrin.h"
124    }
125
126    explicit module mm3dnow {
127      header "mm3dnow.h"
128    }
129
130    explicit module aes_pclmul {
131      header "wmmintrin.h"
132      export aes
133      export pclmul
134    }
135  }
136
137  explicit module systemz {
138    requires systemz
139    export *
140
141    header "s390intrin.h"
142
143    explicit module htm {
144      requires htm
145      header "htmintrin.h"
146      header "htmxlintrin.h"
147    }
148
149    explicit module zvector {
150      requires zvector, vx
151      header "vecintrin.h"
152    }
153  }
154}
155
156// Start -fbuiltin-headers-in-system-modules affected modules
157
158// The following modules all ignore their top level headers
159// when -fbuiltin-headers-in-system-modules is passed, and
160// most of those headers join system modules when present.
161
162// e.g. if -fbuiltin-headers-in-system-modules is passed, then
163// float.h will not be in the _Builtin_float module (that module
164// will be empty). If there is a system module that declares
165// `header "float.h"`, then the builtin float.h will join
166// that module. The system float.h (if present) will be treated
167// as a textual header in the sytem module.
168module _Builtin_float [system] {
169  header "float.h"
170  export *
171}
172
173module _Builtin_inttypes [system] {
174  header "inttypes.h"
175  export *
176}
177
178module _Builtin_iso646 [system] {
179  header "iso646.h"
180  export *
181}
182
183module _Builtin_limits [system] {
184  header "limits.h"
185  export *
186}
187
188module _Builtin_stdalign [system] {
189  header "stdalign.h"
190  export *
191}
192
193// When -fbuiltin-headers-in-system-modules is passed, only
194// the top level headers are removed, the implementation headers
195// will always be in their submodules. That means when stdarg.h
196// is included, it will still import this module and make the
197// appropriate submodules visible.
198module _Builtin_stdarg [system] {
199  textual header "stdarg.h"
200
201  explicit module __gnuc_va_list {
202    header "__stdarg___gnuc_va_list.h"
203    export *
204  }
205
206  explicit module __va_copy {
207    header "__stdarg___va_copy.h"
208    export *
209  }
210
211  explicit module va_arg {
212    header "__stdarg_va_arg.h"
213    export *
214  }
215
216  explicit module va_copy {
217    header "__stdarg_va_copy.h"
218    export *
219  }
220
221  explicit module va_list {
222    header "__stdarg_va_list.h"
223    export *
224  }
225}
226
227module _Builtin_stdatomic [system] {
228  header "stdatomic.h"
229  export *
230}
231
232module _Builtin_stdbool [system] {
233  header "stdbool.h"
234  export *
235}
236
237module _Builtin_stddef [system] {
238  textual header "stddef.h"
239
240  explicit module max_align_t {
241    header "__stddef_max_align_t.h"
242    export *
243  }
244
245  explicit module null {
246    header "__stddef_null.h"
247    export *
248  }
249
250  explicit module nullptr_t {
251    header "__stddef_nullptr_t.h"
252    export *
253  }
254
255  explicit module offsetof {
256    header "__stddef_offsetof.h"
257    export *
258  }
259
260  explicit module ptrdiff_t {
261    header "__stddef_ptrdiff_t.h"
262    export *
263  }
264
265  explicit module rsize_t {
266    header "__stddef_rsize_t.h"
267    export *
268  }
269
270  explicit module size_t {
271    header "__stddef_size_t.h"
272    export *
273  }
274
275  explicit module unreachable {
276    header "__stddef_unreachable.h"
277    export *
278  }
279
280  explicit module wchar_t {
281    header "__stddef_wchar_t.h"
282    export *
283  }
284}
285
286/* wint_t is provided by <wchar.h> and not <stddef.h>. It's here
287 * for compatibility, but must be explicitly requested. Therefore
288 * __stddef_wint_t.h is not part of _Builtin_stddef. */
289module _Builtin_stddef_wint_t [system] {
290  header "__stddef_wint_t.h"
291  export *
292}
293
294module _Builtin_stdint [system] {
295  header "stdint.h"
296  export *
297}
298
299module _Builtin_stdnoreturn [system] {
300  header "stdnoreturn.h"
301  export *
302}
303
304module _Builtin_tgmath [system] {
305  header "tgmath.h"
306  export *
307}
308
309module _Builtin_unwind [system] {
310  header "unwind.h"
311  export *
312}
313// End -fbuiltin-headers-in-system-modules affected modules
314
315module opencl_c {
316  requires opencl
317  header "opencl-c.h"
318  header "opencl-c-base.h"
319}
320