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
156module _Builtin_stddef_max_align_t [system] [extern_c] {
157  header "__stddef_max_align_t.h"
158}
159
160module opencl_c {
161  requires opencl
162  header "opencl-c.h"
163  header "opencl-c-base.h"
164}
165