xref: /freebsd/contrib/llvm-project/clang/lib/Headers/module.modulemap (revision 0b57cec536236d46e3dba9bd041533462f33dbb7)
1*0b57cec5SDimitry Andric/*===---- module.modulemap - intrinsics module map -------------------------===
2*0b57cec5SDimitry Andric *
3*0b57cec5SDimitry Andric * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0b57cec5SDimitry Andric * See https://llvm.org/LICENSE.txt for license information.
5*0b57cec5SDimitry Andric * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0b57cec5SDimitry Andric *
7*0b57cec5SDimitry Andric *===-----------------------------------------------------------------------===
8*0b57cec5SDimitry Andric */
9*0b57cec5SDimitry Andric
10*0b57cec5SDimitry Andricmodule _Builtin_intrinsics [system] [extern_c] {
11*0b57cec5SDimitry Andric  explicit module altivec {
12*0b57cec5SDimitry Andric    requires altivec
13*0b57cec5SDimitry Andric    header "altivec.h"
14*0b57cec5SDimitry Andric  }
15*0b57cec5SDimitry Andric
16*0b57cec5SDimitry Andric  explicit module arm {
17*0b57cec5SDimitry Andric    requires arm
18*0b57cec5SDimitry Andric
19*0b57cec5SDimitry Andric    explicit module acle {
20*0b57cec5SDimitry Andric      header "arm_acle.h"
21*0b57cec5SDimitry Andric      export *
22*0b57cec5SDimitry Andric    }
23*0b57cec5SDimitry Andric
24*0b57cec5SDimitry Andric    explicit module neon {
25*0b57cec5SDimitry Andric      requires neon
26*0b57cec5SDimitry Andric      header "arm_neon.h"
27*0b57cec5SDimitry Andric      header "arm_fp16.h"
28*0b57cec5SDimitry Andric      export *
29*0b57cec5SDimitry Andric    }
30*0b57cec5SDimitry Andric  }
31*0b57cec5SDimitry Andric
32*0b57cec5SDimitry Andric  explicit module intel {
33*0b57cec5SDimitry Andric    requires x86
34*0b57cec5SDimitry Andric    export *
35*0b57cec5SDimitry Andric
36*0b57cec5SDimitry Andric    header "immintrin.h"
37*0b57cec5SDimitry Andric    textual header "f16cintrin.h"
38*0b57cec5SDimitry Andric    textual header "avxintrin.h"
39*0b57cec5SDimitry Andric    textual header "avx2intrin.h"
40*0b57cec5SDimitry Andric    textual header "avx512fintrin.h"
41*0b57cec5SDimitry Andric    textual header "avx512erintrin.h"
42*0b57cec5SDimitry Andric    textual header "fmaintrin.h"
43*0b57cec5SDimitry Andric
44*0b57cec5SDimitry Andric    header "x86intrin.h"
45*0b57cec5SDimitry Andric    textual header "bmiintrin.h"
46*0b57cec5SDimitry Andric    textual header "bmi2intrin.h"
47*0b57cec5SDimitry Andric    textual header "lzcntintrin.h"
48*0b57cec5SDimitry Andric    textual header "xopintrin.h"
49*0b57cec5SDimitry Andric    textual header "fma4intrin.h"
50*0b57cec5SDimitry Andric    textual header "mwaitxintrin.h"
51*0b57cec5SDimitry Andric    textual header "clzerointrin.h"
52*0b57cec5SDimitry Andric    textual header "wbnoinvdintrin.h"
53*0b57cec5SDimitry Andric    textual header "cldemoteintrin.h"
54*0b57cec5SDimitry Andric    textual header "waitpkgintrin.h"
55*0b57cec5SDimitry Andric    textual header "movdirintrin.h"
56*0b57cec5SDimitry Andric    textual header "pconfigintrin.h"
57*0b57cec5SDimitry Andric    textual header "sgxintrin.h"
58*0b57cec5SDimitry Andric    textual header "ptwriteintrin.h"
59*0b57cec5SDimitry Andric    textual header "invpcidintrin.h"
60*0b57cec5SDimitry Andric
61*0b57cec5SDimitry Andric    textual header "__wmmintrin_aes.h"
62*0b57cec5SDimitry Andric    textual header "__wmmintrin_pclmul.h"
63*0b57cec5SDimitry Andric
64*0b57cec5SDimitry Andric    explicit module mm_malloc {
65*0b57cec5SDimitry Andric      requires !freestanding
66*0b57cec5SDimitry Andric      header "mm_malloc.h"
67*0b57cec5SDimitry Andric      export * // note: for <stdlib.h> dependency
68*0b57cec5SDimitry Andric    }
69*0b57cec5SDimitry Andric
70*0b57cec5SDimitry Andric    explicit module cpuid {
71*0b57cec5SDimitry Andric      requires gnuinlineasm
72*0b57cec5SDimitry Andric      header "cpuid.h"
73*0b57cec5SDimitry Andric    }
74*0b57cec5SDimitry Andric
75*0b57cec5SDimitry Andric    explicit module mmx {
76*0b57cec5SDimitry Andric      header "mmintrin.h"
77*0b57cec5SDimitry Andric    }
78*0b57cec5SDimitry Andric
79*0b57cec5SDimitry Andric    explicit module sse {
80*0b57cec5SDimitry Andric      export mm_malloc
81*0b57cec5SDimitry Andric      export mmx
82*0b57cec5SDimitry Andric      export sse2 // note: for hackish <emmintrin.h> dependency
83*0b57cec5SDimitry Andric      header "xmmintrin.h"
84*0b57cec5SDimitry Andric    }
85*0b57cec5SDimitry Andric
86*0b57cec5SDimitry Andric    explicit module sse2 {
87*0b57cec5SDimitry Andric      export sse
88*0b57cec5SDimitry Andric      header "emmintrin.h"
89*0b57cec5SDimitry Andric    }
90*0b57cec5SDimitry Andric
91*0b57cec5SDimitry Andric    explicit module sse3 {
92*0b57cec5SDimitry Andric      export sse2
93*0b57cec5SDimitry Andric      header "pmmintrin.h"
94*0b57cec5SDimitry Andric    }
95*0b57cec5SDimitry Andric
96*0b57cec5SDimitry Andric    explicit module ssse3 {
97*0b57cec5SDimitry Andric      export sse3
98*0b57cec5SDimitry Andric      header "tmmintrin.h"
99*0b57cec5SDimitry Andric    }
100*0b57cec5SDimitry Andric
101*0b57cec5SDimitry Andric    explicit module sse4_1 {
102*0b57cec5SDimitry Andric      export ssse3
103*0b57cec5SDimitry Andric      header "smmintrin.h"
104*0b57cec5SDimitry Andric    }
105*0b57cec5SDimitry Andric
106*0b57cec5SDimitry Andric    explicit module sse4_2 {
107*0b57cec5SDimitry Andric      export sse4_1
108*0b57cec5SDimitry Andric      header "nmmintrin.h"
109*0b57cec5SDimitry Andric    }
110*0b57cec5SDimitry Andric
111*0b57cec5SDimitry Andric    explicit module sse4a {
112*0b57cec5SDimitry Andric      export sse3
113*0b57cec5SDimitry Andric      header "ammintrin.h"
114*0b57cec5SDimitry Andric    }
115*0b57cec5SDimitry Andric
116*0b57cec5SDimitry Andric    explicit module popcnt {
117*0b57cec5SDimitry Andric      header "popcntintrin.h"
118*0b57cec5SDimitry Andric    }
119*0b57cec5SDimitry Andric
120*0b57cec5SDimitry Andric    explicit module mm3dnow {
121*0b57cec5SDimitry Andric      header "mm3dnow.h"
122*0b57cec5SDimitry Andric    }
123*0b57cec5SDimitry Andric
124*0b57cec5SDimitry Andric    explicit module aes_pclmul {
125*0b57cec5SDimitry Andric      header "wmmintrin.h"
126*0b57cec5SDimitry Andric      export aes
127*0b57cec5SDimitry Andric      export pclmul
128*0b57cec5SDimitry Andric    }
129*0b57cec5SDimitry Andric  }
130*0b57cec5SDimitry Andric
131*0b57cec5SDimitry Andric  explicit module systemz {
132*0b57cec5SDimitry Andric    requires systemz
133*0b57cec5SDimitry Andric    export *
134*0b57cec5SDimitry Andric
135*0b57cec5SDimitry Andric    header "s390intrin.h"
136*0b57cec5SDimitry Andric
137*0b57cec5SDimitry Andric    explicit module htm {
138*0b57cec5SDimitry Andric      requires htm
139*0b57cec5SDimitry Andric      header "htmintrin.h"
140*0b57cec5SDimitry Andric      header "htmxlintrin.h"
141*0b57cec5SDimitry Andric    }
142*0b57cec5SDimitry Andric
143*0b57cec5SDimitry Andric    explicit module zvector {
144*0b57cec5SDimitry Andric      requires zvector, vx
145*0b57cec5SDimitry Andric      header "vecintrin.h"
146*0b57cec5SDimitry Andric    }
147*0b57cec5SDimitry Andric  }
148*0b57cec5SDimitry Andric}
149*0b57cec5SDimitry Andric
150*0b57cec5SDimitry Andricmodule _Builtin_stddef_max_align_t [system] [extern_c] {
151*0b57cec5SDimitry Andric  header "__stddef_max_align_t.h"
152*0b57cec5SDimitry Andric}
153*0b57cec5SDimitry Andric
154*0b57cec5SDimitry Andricmodule opencl_c {
155*0b57cec5SDimitry Andric  requires opencl
156*0b57cec5SDimitry Andric  header "opencl-c.h"
157*0b57cec5SDimitry Andric  header "opencl-c-base.h"
158*0b57cec5SDimitry Andric}
159