master
  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 arm64 {
 39    requires arm64
 40    requires windows
 41
 42    header "arm64intr.h"
 43    export *
 44  }
 45
 46  explicit module intel {
 47    requires x86
 48    export *
 49
 50    header "immintrin.h"
 51    textual header "f16cintrin.h"
 52    textual header "avxintrin.h"
 53    textual header "avx2intrin.h"
 54    textual header "avx512fintrin.h"
 55    textual header "fmaintrin.h"
 56
 57    header "x86intrin.h"
 58    textual header "bmiintrin.h"
 59    textual header "bmi2intrin.h"
 60    textual header "lzcntintrin.h"
 61    textual header "xopintrin.h"
 62    textual header "fma4intrin.h"
 63    textual header "mwaitxintrin.h"
 64    textual header "clzerointrin.h"
 65    textual header "wbnoinvdintrin.h"
 66    textual header "cldemoteintrin.h"
 67    textual header "waitpkgintrin.h"
 68    textual header "movdirintrin.h"
 69    textual header "pconfigintrin.h"
 70    textual header "sgxintrin.h"
 71    textual header "ptwriteintrin.h"
 72    textual header "invpcidintrin.h"
 73
 74    textual header "__wmmintrin_aes.h"
 75    textual header "__wmmintrin_pclmul.h"
 76
 77    textual header "mm3dnow.h"
 78
 79    explicit module mm_malloc {
 80      requires !freestanding
 81      header "mm_malloc.h"
 82      export * // note: for <stdlib.h> dependency
 83    }
 84
 85    explicit module cpuid {
 86      requires gnuinlineasm
 87      header "cpuid.h"
 88    }
 89
 90    explicit module mmx {
 91      header "mmintrin.h"
 92    }
 93
 94    explicit module sse {
 95      export mm_malloc
 96      export mmx
 97      export sse2 // note: for hackish <emmintrin.h> dependency
 98      header "xmmintrin.h"
 99    }
100
101    explicit module sse2 {
102      export sse
103      header "emmintrin.h"
104    }
105
106    explicit module sse3 {
107      export sse2
108      header "pmmintrin.h"
109    }
110
111    explicit module ssse3 {
112      export sse3
113      header "tmmintrin.h"
114    }
115
116    explicit module sse4_1 {
117      export ssse3
118      header "smmintrin.h"
119    }
120
121    explicit module sse4_2 {
122      export sse4_1
123      header "nmmintrin.h"
124    }
125
126    explicit module sse4a {
127      export sse3
128      header "ammintrin.h"
129    }
130
131    explicit module popcnt {
132      header "popcntintrin.h"
133    }
134
135    explicit module aes_pclmul {
136      header "wmmintrin.h"
137      export aes
138      export pclmul
139    }
140  }
141
142  explicit module systemz {
143    requires systemz
144    export *
145
146    header "s390intrin.h"
147
148    explicit module htm {
149      requires htm
150      header "htmintrin.h"
151      header "htmxlintrin.h"
152    }
153
154    explicit module zvector {
155      requires zvector, vx
156      header "vecintrin.h"
157    }
158  }
159}
160
161// Start -fbuiltin-headers-in-system-modules affected modules
162
163// The following modules all ignore their headers when
164// -fbuiltin-headers-in-system-modules is passed, and many of
165// those headers join system modules when present.
166
167// e.g. if -fbuiltin-headers-in-system-modules is passed, then
168// float.h will not be in the _Builtin_float module (that module
169// will be empty). If there is a system module that declares
170// `header "float.h"`, then the builtin float.h will join
171// that module. The system float.h (if present) will be treated
172// as a textual header in the sytem module.
173module _Builtin_float [system] {
174  header "float.h"
175  export *
176}
177
178module _Builtin_inttypes [system] {
179  header "inttypes.h"
180  export *
181}
182
183module _Builtin_iso646 [system] {
184  header "iso646.h"
185  export *
186}
187
188module _Builtin_limits [system] {
189  header "limits.h"
190  export *
191}
192
193module _Builtin_stdalign [system] {
194  header "stdalign.h"
195  export *
196}
197
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 header_macro {
212    header "__stdarg_header_macro.h"
213    export *
214  }
215
216  explicit module va_arg {
217    header "__stdarg_va_arg.h"
218    export *
219  }
220
221  explicit module va_copy {
222    header "__stdarg_va_copy.h"
223    export *
224  }
225
226  explicit module va_list {
227    header "__stdarg_va_list.h"
228    export *
229  }
230}
231
232module _Builtin_stdatomic [system] {
233  header "stdatomic.h"
234  export *
235}
236
237module _Builtin_stdbool [system] {
238  header "stdbool.h"
239  export *
240}
241
242module _Builtin_stdcountof [system] {
243  header "stdcountof.h"
244  export *
245}
246
247module _Builtin_stddef [system] {
248  textual header "stddef.h"
249
250  explicit module header_macro {
251    header "__stddef_header_macro.h"
252    export *
253  }
254  // __stddef_max_align_t.h is always in this module, even if
255  // -fbuiltin-headers-in-system-modules is passed.
256  explicit module max_align_t {
257    header "__stddef_max_align_t.h"
258    export *
259  }
260
261  explicit module null {
262    header "__stddef_null.h"
263    export *
264  }
265
266  explicit module nullptr_t {
267    header "__stddef_nullptr_t.h"
268    export *
269  }
270
271  explicit module offsetof {
272    header "__stddef_offsetof.h"
273    export *
274  }
275
276  explicit module ptrdiff_t {
277    header "__stddef_ptrdiff_t.h"
278    export *
279  }
280
281  explicit module rsize_t {
282    header "__stddef_rsize_t.h"
283    export *
284  }
285
286  explicit module size_t {
287    header "__stddef_size_t.h"
288    export *
289  }
290
291  explicit module unreachable {
292    header "__stddef_unreachable.h"
293    export *
294  }
295
296  explicit module wchar_t {
297    header "__stddef_wchar_t.h"
298    export *
299  }
300}
301
302// wint_t is provided by <wchar.h> and not <stddef.h>. It's here
303// for compatibility, but must be explicitly requested. Therefore
304// __stddef_wint_t.h is not part of _Builtin_stddef. It is always in
305// this module even if -fbuiltin-headers-in-system-modules is passed.
306module _Builtin_stddef_wint_t [system] {
307  header "__stddef_wint_t.h"
308  export *
309}
310
311module _Builtin_stdint [system] {
312  header "stdint.h"
313  export *
314}
315
316module _Builtin_stdnoreturn [system] {
317  header "stdnoreturn.h"
318  export *
319}
320
321module _Builtin_tgmath [system] {
322  header "tgmath.h"
323  export *
324}
325
326module _Builtin_unwind [system] {
327  header "unwind.h"
328  export *
329}
330// End -fbuiltin-headers-in-system-modules affected modules
331
332module opencl_c {
333  requires opencl
334  header "opencl-c.h"
335  header "opencl-c-base.h"
336}
337
338module ptrauth {
339  header "ptrauth.h"
340  export *
341}