1/*===---- module.modulemap - intrinsics module map -------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24module _Builtin_intrinsics [system] [extern_c] {
25  explicit module altivec {
26    requires altivec
27    header "altivec.h"
28  }
29
30  explicit module arm {
31    requires arm
32
33    explicit module acle {
34      header "arm_acle.h"
35      export *
36    }
37
38    explicit module neon {
39      requires neon
40      header "arm_neon.h"
41      export *
42    }
43  }
44
45  explicit module intel {
46    requires x86
47    export *
48
49    header "immintrin.h"
50    header "x86intrin.h"
51
52    explicit module mm_malloc {
53      header "mm_malloc.h"
54      export * // note: for <stdlib.h> dependency
55    }
56
57    explicit module cpuid {
58      header "cpuid.h"
59    }
60
61    explicit module mmx {
62      header "mmintrin.h"
63    }
64
65    explicit module f16c {
66      header "f16cintrin.h"
67    }
68
69    explicit module sse {
70      export mm_malloc
71      export mmx
72      export sse2 // note: for hackish <emmintrin.h> dependency
73      header "xmmintrin.h"
74    }
75
76    explicit module sse2 {
77      export sse
78      header "emmintrin.h"
79    }
80
81    explicit module sse3 {
82      export sse2
83      header "pmmintrin.h"
84    }
85
86    explicit module ssse3 {
87      export sse3
88      header "tmmintrin.h"
89    }
90
91    explicit module sse4_1 {
92      export ssse3
93      header "smmintrin.h"
94    }
95
96    explicit module sse4_2 {
97      export sse4_1
98      header "nmmintrin.h"
99    }
100
101    explicit module sse4a {
102      export sse3
103      header "ammintrin.h"
104    }
105
106    explicit module avx {
107      export sse4_2
108      header "avxintrin.h"
109    }
110
111    explicit module avx2 {
112      export avx
113      header "avx2intrin.h"
114    }
115
116    explicit module avx512f {
117      export avx2
118      header "avx512fintrin.h"
119    }
120
121    explicit module avx512er {
122      header "avx512erintrin.h"
123    }
124
125    explicit module bmi {
126      header "bmiintrin.h"
127    }
128
129    explicit module bmi2 {
130      header "bmi2intrin.h"
131    }
132
133    explicit module fma {
134      header "fmaintrin.h"
135    }
136
137    explicit module fma4 {
138      export sse3
139      header "fma4intrin.h"
140    }
141
142    explicit module lzcnt {
143      header "lzcntintrin.h"
144    }
145
146    explicit module popcnt {
147      header "popcntintrin.h"
148    }
149
150    explicit module mm3dnow {
151      header "mm3dnow.h"
152    }
153
154    explicit module xop {
155      export fma4
156      header "xopintrin.h"
157    }
158
159    explicit module aes_pclmul {
160      header "wmmintrin.h"
161      export aes
162      export pclmul
163    }
164
165    explicit module aes {
166      header "__wmmintrin_aes.h"
167    }
168
169    explicit module pclmul {
170      header "__wmmintrin_pclmul.h"
171    }
172  }
173
174  explicit module systemz {
175    requires systemz
176    export *
177
178    header "s390intrin.h"
179
180    explicit module htm {
181      requires htm
182      header "htmintrin.h"
183      header "htmxlintrin.h"
184    }
185
186    explicit module zvector {
187      requires zvector, vx
188      header "vecintrin.h"
189    }
190  }
191}
192
193module _Builtin_stddef_max_align_t [system] [extern_c] {
194  header "__stddef_max_align_t.h"
195}
196