1234287Sdimmodule _Builtin_intrinsics [system] {
2234287Sdim  explicit module altivec {
3234287Sdim    requires altivec
4234287Sdim    header "altivec.h"
5234287Sdim  }
6234287Sdim
7234287Sdim  explicit module intel {
8234287Sdim    requires x86
9234287Sdim    export *
10234287Sdim
11234287Sdim    header "immintrin.h"
12234287Sdim    header "x86intrin.h"
13234287Sdim
14234287Sdim    explicit module mm_malloc {
15234287Sdim      header "mm_malloc.h"
16234287Sdim      export * // note: for <stdlib.h> dependency
17234287Sdim    }
18234287Sdim
19234287Sdim    explicit module cpuid {
20249423Sdim      requires x86
21234287Sdim      header "cpuid.h"
22234287Sdim    }
23234287Sdim
24234287Sdim    explicit module mmx {
25234287Sdim      requires mmx
26234287Sdim      header "mmintrin.h"
27234287Sdim    }
28234287Sdim
29243830Sdim    explicit module f16c {
30243830Sdim      requires f16c
31243830Sdim      header "f16cintrin.h"
32243830Sdim    }
33243830Sdim
34234287Sdim    explicit module sse {
35234287Sdim      requires sse
36234287Sdim      export mmx
37234287Sdim      header "xmmintrin.h"
38234287Sdim    }
39234287Sdim
40234287Sdim    explicit module sse2 {
41234287Sdim      requires sse2
42234287Sdim      export sse
43234287Sdim      header "emmintrin.h"
44234287Sdim    }
45234287Sdim
46234287Sdim    explicit module sse3 {
47234287Sdim      requires sse3
48234287Sdim      export sse2
49234287Sdim      header "pmmintrin.h"
50234287Sdim    }
51234287Sdim
52234287Sdim    explicit module ssse3 {
53234287Sdim      requires ssse3
54234287Sdim      export sse3
55234287Sdim      header "tmmintrin.h"
56234287Sdim    }
57234287Sdim
58234287Sdim    explicit module sse4_1 {
59234287Sdim      requires sse41
60234287Sdim      export ssse3
61234287Sdim      header "smmintrin.h"
62234287Sdim    }
63234287Sdim
64234287Sdim    explicit module sse4_2 {
65234287Sdim      requires sse42
66234287Sdim      export sse4_1
67234287Sdim      header "nmmintrin.h"
68234287Sdim    }
69234287Sdim
70243830Sdim    explicit module sse4a {
71243830Sdim      requires sse4a
72243830Sdim      export sse3
73243830Sdim      header "ammintrin.h"
74243830Sdim    }
75243830Sdim
76234287Sdim    explicit module avx {
77234287Sdim      requires avx
78234287Sdim      export sse4_2
79234287Sdim      header "avxintrin.h"
80234287Sdim    }
81234287Sdim
82234287Sdim    explicit module avx2 {
83234287Sdim      requires avx2
84234287Sdim      export avx
85234287Sdim      header "avx2intrin.h"
86234287Sdim    }
87234287Sdim
88234287Sdim    explicit module bmi {
89234287Sdim      requires bmi
90234287Sdim      header "bmiintrin.h"
91234287Sdim    }
92234287Sdim
93234287Sdim    explicit module bmi2 {
94234287Sdim      requires bmi2
95234287Sdim      header "bmi2intrin.h"
96234287Sdim    }
97234287Sdim
98243830Sdim    explicit module fma {
99243830Sdim      requires fma
100243830Sdim      header "fmaintrin.h"
101243830Sdim    }
102243830Sdim
103234287Sdim    explicit module fma4 {
104234287Sdim      requires fma4
105234287Sdim      export sse3
106234287Sdim      header "fma4intrin.h"
107234287Sdim    }
108234287Sdim
109234287Sdim    explicit module lzcnt {
110234287Sdim      requires lzcnt
111234287Sdim      header "lzcntintrin.h"
112234287Sdim    }
113234287Sdim
114234287Sdim    explicit module popcnt {
115234287Sdim      requires popcnt
116234287Sdim      header "popcntintrin.h"
117234287Sdim    }
118234287Sdim
119234287Sdim    explicit module mm3dnow {
120234287Sdim      requires mm3dnow
121234287Sdim      header "mm3dnow.h"
122234287Sdim    }
123243830Sdim
124243830Sdim    explicit module xop {
125243830Sdim      requires xop
126243830Sdim      export fma4
127243830Sdim      header "xopintrin.h"
128243830Sdim    }
129243830Sdim
130243830Sdim    explicit module aes_pclmul {
131243830Sdim      requires aes, pclmul
132243830Sdim      header "wmmintrin.h"
133243830Sdim    }
134243830Sdim
135243830Sdim    explicit module aes {
136243830Sdim      requires aes
137243830Sdim      header "__wmmintrin_aes.h"
138243830Sdim    }
139243830Sdim
140243830Sdim    explicit module pclmul {
141243830Sdim      requires pclmul
142243830Sdim      header "__wmmintrin_pclmul.h"
143243830Sdim    }
144234287Sdim  }
145234287Sdim}
146