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 | |
24 | module _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 | header "arm_fp16.h" |
42 | export * |
43 | } |
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 "avx512erintrin.h" |
56 | textual header "fmaintrin.h" |
57 | |
58 | header "x86intrin.h" |
59 | textual header "bmiintrin.h" |
60 | textual header "bmi2intrin.h" |
61 | textual header "lzcntintrin.h" |
62 | textual header "xopintrin.h" |
63 | textual header "fma4intrin.h" |
64 | textual header "mwaitxintrin.h" |
65 | textual header "clzerointrin.h" |
66 | textual header "wbnoinvdintrin.h" |
67 | textual header "cldemoteintrin.h" |
68 | textual header "waitpkgintrin.h" |
69 | textual header "movdirintrin.h" |
70 | textual header "pconfigintrin.h" |
71 | textual header "sgxintrin.h" |
72 | textual header "ptwriteintrin.h" |
73 | textual header "invpcidintrin.h" |
74 | |
75 | textual header "__wmmintrin_aes.h" |
76 | textual header "__wmmintrin_pclmul.h" |
77 | |
78 | explicit module mm_malloc { |
79 | requires !freestanding |
80 | header "mm_malloc.h" |
81 | export * // note: for <stdlib.h> dependency |
82 | } |
83 | |
84 | explicit module cpuid { |
85 | requires gnuinlineasm |
86 | header "cpuid.h" |
87 | } |
88 | |
89 | explicit module mmx { |
90 | header "mmintrin.h" |
91 | } |
92 | |
93 | explicit module sse { |
94 | export mm_malloc |
95 | export mmx |
96 | export sse2 // note: for hackish <emmintrin.h> dependency |
97 | header "xmmintrin.h" |
98 | } |
99 | |
100 | explicit module sse2 { |
101 | export sse |
102 | header "emmintrin.h" |
103 | } |
104 | |
105 | explicit module sse3 { |
106 | export sse2 |
107 | header "pmmintrin.h" |
108 | } |
109 | |
110 | explicit module ssse3 { |
111 | export sse3 |
112 | header "tmmintrin.h" |
113 | } |
114 | |
115 | explicit module sse4_1 { |
116 | export ssse3 |
117 | header "smmintrin.h" |
118 | } |
119 | |
120 | explicit module sse4_2 { |
121 | export sse4_1 |
122 | header "nmmintrin.h" |
123 | } |
124 | |
125 | explicit module sse4a { |
126 | export sse3 |
127 | header "ammintrin.h" |
128 | } |
129 | |
130 | explicit module popcnt { |
131 | header "popcntintrin.h" |
132 | } |
133 | |
134 | explicit module mm3dnow { |
135 | header "mm3dnow.h" |
136 | } |
137 | |
138 | explicit module aes_pclmul { |
139 | header "wmmintrin.h" |
140 | export aes |
141 | export pclmul |
142 | } |
143 | } |
144 | |
145 | explicit module systemz { |
146 | requires systemz |
147 | export * |
148 | |
149 | header "s390intrin.h" |
150 | |
151 | explicit module htm { |
152 | requires htm |
153 | header "htmintrin.h" |
154 | header "htmxlintrin.h" |
155 | } |
156 | |
157 | explicit module zvector { |
158 | requires zvector, vx |
159 | header "vecintrin.h" |
160 | } |
161 | } |
162 | } |
163 | |
164 | module _Builtin_stddef_max_align_t [system] [extern_c] { |
165 | header "__stddef_max_align_t.h" |
166 | } |
167 | |
168 | module opencl_c { |
169 | requires opencl |
170 | header "opencl-c.h" |
171 | } |
172 | |