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