1280031Sdimmodule _Builtin_intrinsics [system] [extern_c] {
2274958Sdim  explicit module altivec {
3274958Sdim    requires altivec
4274958Sdim    header "altivec.h"
5274958Sdim  }
6274958Sdim
7274958Sdim  explicit module arm {
8274958Sdim    requires arm
9274958Sdim
10280031Sdim    explicit module acle {
11280031Sdim      header "arm_acle.h"
12280031Sdim      export *
13280031Sdim    }
14280031Sdim
15274958Sdim    explicit module neon {
16274958Sdim      requires neon
17274958Sdim      header "arm_neon.h"
18274958Sdim      export *
19274958Sdim    }
20274958Sdim  }
21274958Sdim
22274958Sdim  explicit module intel {
23274958Sdim    requires x86
24274958Sdim    export *
25274958Sdim
26274958Sdim    header "immintrin.h"
27274958Sdim    header "x86intrin.h"
28274958Sdim
29274958Sdim    explicit module mm_malloc {
30274958Sdim      header "mm_malloc.h"
31274958Sdim      export * // note: for <stdlib.h> dependency
32274958Sdim    }
33274958Sdim
34274958Sdim    explicit module cpuid {
35274958Sdim      header "cpuid.h"
36274958Sdim    }
37274958Sdim
38274958Sdim    explicit module mmx {
39274958Sdim      header "mmintrin.h"
40274958Sdim    }
41274958Sdim
42274958Sdim    explicit module f16c {
43274958Sdim      header "f16cintrin.h"
44274958Sdim    }
45274958Sdim
46274958Sdim    explicit module sse {
47274958Sdim      export mmx
48288943Sdim      export sse2 // note: for hackish <emmintrin.h> dependency
49274958Sdim      header "xmmintrin.h"
50274958Sdim    }
51274958Sdim
52274958Sdim    explicit module sse2 {
53274958Sdim      export sse
54274958Sdim      header "emmintrin.h"
55274958Sdim    }
56274958Sdim
57274958Sdim    explicit module sse3 {
58274958Sdim      export sse2
59274958Sdim      header "pmmintrin.h"
60274958Sdim    }
61274958Sdim
62274958Sdim    explicit module ssse3 {
63274958Sdim      export sse3
64274958Sdim      header "tmmintrin.h"
65274958Sdim    }
66274958Sdim
67274958Sdim    explicit module sse4_1 {
68274958Sdim      export ssse3
69274958Sdim      header "smmintrin.h"
70274958Sdim    }
71274958Sdim
72274958Sdim    explicit module sse4_2 {
73274958Sdim      export sse4_1
74274958Sdim      header "nmmintrin.h"
75274958Sdim    }
76274958Sdim
77274958Sdim    explicit module sse4a {
78274958Sdim      export sse3
79274958Sdim      header "ammintrin.h"
80274958Sdim    }
81274958Sdim
82274958Sdim    explicit module avx {
83274958Sdim      export sse4_2
84274958Sdim      header "avxintrin.h"
85274958Sdim    }
86274958Sdim
87274958Sdim    explicit module avx2 {
88274958Sdim      export avx
89274958Sdim      header "avx2intrin.h"
90274958Sdim    }
91274958Sdim
92280031Sdim    explicit module avx512f {
93280031Sdim      export avx2
94280031Sdim      header "avx512fintrin.h"
95280031Sdim    }
96280031Sdim
97280031Sdim    explicit module avx512er {
98280031Sdim      header "avx512erintrin.h"
99280031Sdim    }
100280031Sdim
101274958Sdim    explicit module bmi {
102274958Sdim      header "bmiintrin.h"
103274958Sdim    }
104274958Sdim
105274958Sdim    explicit module bmi2 {
106274958Sdim      header "bmi2intrin.h"
107274958Sdim    }
108274958Sdim
109274958Sdim    explicit module fma {
110274958Sdim      header "fmaintrin.h"
111274958Sdim    }
112274958Sdim
113274958Sdim    explicit module fma4 {
114274958Sdim      export sse3
115274958Sdim      header "fma4intrin.h"
116274958Sdim    }
117274958Sdim
118274958Sdim    explicit module lzcnt {
119274958Sdim      header "lzcntintrin.h"
120274958Sdim    }
121274958Sdim
122274958Sdim    explicit module popcnt {
123274958Sdim      header "popcntintrin.h"
124274958Sdim    }
125274958Sdim
126274958Sdim    explicit module mm3dnow {
127274958Sdim      header "mm3dnow.h"
128274958Sdim    }
129274958Sdim
130274958Sdim    explicit module xop {
131274958Sdim      export fma4
132274958Sdim      header "xopintrin.h"
133274958Sdim    }
134274958Sdim
135274958Sdim    explicit module aes_pclmul {
136274958Sdim      header "wmmintrin.h"
137288943Sdim      export aes
138288943Sdim      export pclmul
139274958Sdim    }
140274958Sdim
141274958Sdim    explicit module aes {
142274958Sdim      header "__wmmintrin_aes.h"
143274958Sdim    }
144274958Sdim
145274958Sdim    explicit module pclmul {
146274958Sdim      header "__wmmintrin_pclmul.h"
147274958Sdim    }
148274958Sdim  }
149288943Sdim
150288943Sdim  explicit module systemz {
151288943Sdim    requires systemz
152288943Sdim    export *
153288943Sdim
154288943Sdim    header "s390intrin.h"
155288943Sdim
156288943Sdim    explicit module htm {
157288943Sdim      requires htm
158288943Sdim      header "htmintrin.h"
159288943Sdim      header "htmxlintrin.h"
160288943Sdim    }
161288943Sdim
162288943Sdim    explicit module zvector {
163288943Sdim      requires zvector, vx
164288943Sdim      header "vecintrin.h"
165288943Sdim    }
166288943Sdim  }
167274958Sdim}
168280031Sdim
169280031Sdimmodule _Builtin_stddef_max_align_t [system] [extern_c] {
170280031Sdim  header "__stddef_max_align_t.h"
171280031Sdim}
172