blob: 64b2889297506c4a5b5fc9f7d892c007fba20d8a [file] [log] [blame]
Douglas Gregor232e3432012-01-31 21:57:50 +00001module _Builtin_intrinsics [system] {
2 explicit module altivec {
3 requires altivec
4 header "altivec.h"
5 }
6
Douglas Gregor5cad45b2013-05-20 14:07:18 +00007 explicit module arm {
8 requires arm
9
10 explicit module neon {
11 requires neon
12 header "arm_neon.h"
13 export *
14 }
15 }
16
Douglas Gregor0070c0b2012-01-30 06:38:25 +000017 explicit module intel {
18 requires x86
Douglas Gregor3ec66632012-02-02 18:42:48 +000019 export *
Douglas Gregor0070c0b2012-01-30 06:38:25 +000020
21 header "immintrin.h"
22 header "x86intrin.h"
23
Douglas Gregor3ec66632012-02-02 18:42:48 +000024 explicit module mm_malloc {
25 header "mm_malloc.h"
26 export * // note: for <stdlib.h> dependency
27 }
28
Douglas Gregor0070c0b2012-01-30 06:38:25 +000029 explicit module cpuid {
Richard Smith584f7dc2013-04-04 02:55:24 +000030 requires x86
Douglas Gregor0070c0b2012-01-30 06:38:25 +000031 header "cpuid.h"
32 }
33
34 explicit module mmx {
35 requires mmx
36 header "mmintrin.h"
37 }
38
Douglas Gregor4c698592012-11-05 20:11:10 +000039 explicit module f16c {
40 requires f16c
41 header "f16cintrin.h"
42 }
43
Douglas Gregor0070c0b2012-01-30 06:38:25 +000044 explicit module sse {
45 requires sse
46 export mmx
Douglas Gregorae3a4df2013-06-07 22:49:44 +000047 export * // note: for hackish <emmintrin.h> dependency
Douglas Gregor0070c0b2012-01-30 06:38:25 +000048 header "xmmintrin.h"
49 }
50
51 explicit module sse2 {
52 requires sse2
53 export sse
54 header "emmintrin.h"
55 }
56
57 explicit module sse3 {
58 requires sse3
59 export sse2
60 header "pmmintrin.h"
61 }
62
63 explicit module ssse3 {
64 requires ssse3
65 export sse3
66 header "tmmintrin.h"
67 }
68
69 explicit module sse4_1 {
70 requires sse41
71 export ssse3
72 header "smmintrin.h"
73 }
74
75 explicit module sse4_2 {
76 requires sse42
77 export sse4_1
78 header "nmmintrin.h"
79 }
80
Douglas Gregor4c698592012-11-05 20:11:10 +000081 explicit module sse4a {
82 requires sse4a
83 export sse3
Douglas Gregor10b4f2a2012-11-05 20:41:30 +000084 header "ammintrin.h"
Douglas Gregor4c698592012-11-05 20:11:10 +000085 }
86
Douglas Gregor0070c0b2012-01-30 06:38:25 +000087 explicit module avx {
88 requires avx
89 export sse4_2
90 header "avxintrin.h"
91 }
92
93 explicit module avx2 {
94 requires avx2
Douglas Gregor71022ca2012-01-30 18:49:05 +000095 export avx
Douglas Gregor0070c0b2012-01-30 06:38:25 +000096 header "avx2intrin.h"
97 }
98
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000099 explicit module avx512f {
100 requires avx512f
101 export avx2
102 header "avx512fintrin.h"
103 }
104
105 explicit module avx512er {
106 requires avx512er
107 header "avx512erintrin.h"
108 }
109
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000110 explicit module bmi {
111 requires bmi
112 header "bmiintrin.h"
113 }
114
115 explicit module bmi2 {
116 requires bmi2
117 header "bmi2intrin.h"
118 }
119
Douglas Gregor4c698592012-11-05 20:11:10 +0000120 explicit module fma {
121 requires fma
122 header "fmaintrin.h"
123 }
124
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000125 explicit module fma4 {
126 requires fma4
127 export sse3
128 header "fma4intrin.h"
129 }
130
131 explicit module lzcnt {
132 requires lzcnt
133 header "lzcntintrin.h"
134 }
135
136 explicit module popcnt {
137 requires popcnt
138 header "popcntintrin.h"
139 }
140
141 explicit module mm3dnow {
142 requires mm3dnow
143 header "mm3dnow.h"
144 }
Douglas Gregor4c698592012-11-05 20:11:10 +0000145
146 explicit module xop {
147 requires xop
148 export fma4
149 header "xopintrin.h"
150 }
Douglas Gregordc779ab2012-11-05 23:30:26 +0000151
152 explicit module aes_pclmul {
153 requires aes, pclmul
154 header "wmmintrin.h"
155 }
156
157 explicit module aes {
158 requires aes
159 header "__wmmintrin_aes.h"
160 }
161
162 explicit module pclmul {
163 requires pclmul
164 header "__wmmintrin_pclmul.h"
165 }
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000166 }
Douglas Gregor3f09de62012-01-29 20:52:14 +0000167}