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