blob: afb38652ef54d53b99785e9fcada1330f1448ff8 [file] [log] [blame]
Ben Langmuirc67a7742015-01-13 21:54:32 +00001module _Builtin_intrinsics [system] [extern_c] {
Douglas Gregor232e3432012-01-31 21:57:50 +00002 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
Yi Kongcd081392014-07-23 09:00:21 +000010 explicit module acle {
11 header "arm_acle.h"
12 export *
13 }
14
Douglas Gregor5cad45b2013-05-20 14:07:18 +000015 explicit module neon {
16 requires neon
17 header "arm_neon.h"
18 export *
19 }
20 }
21
Douglas Gregor0070c0b2012-01-30 06:38:25 +000022 explicit module intel {
23 requires x86
Douglas Gregor3ec66632012-02-02 18:42:48 +000024 export *
Douglas Gregor0070c0b2012-01-30 06:38:25 +000025
26 header "immintrin.h"
27 header "x86intrin.h"
28
Douglas Gregor3ec66632012-02-02 18:42:48 +000029 explicit module mm_malloc {
30 header "mm_malloc.h"
31 export * // note: for <stdlib.h> dependency
32 }
33
Douglas Gregor0070c0b2012-01-30 06:38:25 +000034 explicit module cpuid {
35 header "cpuid.h"
36 }
37
38 explicit module mmx {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000039 header "mmintrin.h"
40 }
41
Douglas Gregor4c698592012-11-05 20:11:10 +000042 explicit module f16c {
Douglas Gregor4c698592012-11-05 20:11:10 +000043 header "f16cintrin.h"
44 }
45
Douglas Gregor0070c0b2012-01-30 06:38:25 +000046 explicit module sse {
John Thompsondebce242016-03-22 20:57:51 +000047 export mm_malloc
Douglas Gregor0070c0b2012-01-30 06:38:25 +000048 export mmx
Richard Smith23d8d032015-05-14 00:45:20 +000049 export sse2 // note: for hackish <emmintrin.h> dependency
Douglas Gregor0070c0b2012-01-30 06:38:25 +000050 header "xmmintrin.h"
51 }
52
53 explicit module sse2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000054 export sse
55 header "emmintrin.h"
56 }
57
58 explicit module sse3 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000059 export sse2
60 header "pmmintrin.h"
61 }
62
63 explicit module ssse3 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000064 export sse3
65 header "tmmintrin.h"
66 }
67
68 explicit module sse4_1 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000069 export ssse3
70 header "smmintrin.h"
71 }
72
73 explicit module sse4_2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000074 export sse4_1
75 header "nmmintrin.h"
76 }
77
Douglas Gregor4c698592012-11-05 20:11:10 +000078 explicit module sse4a {
Douglas Gregor4c698592012-11-05 20:11:10 +000079 export sse3
Douglas Gregor10b4f2a2012-11-05 20:41:30 +000080 header "ammintrin.h"
Douglas Gregor4c698592012-11-05 20:11:10 +000081 }
82
Douglas Gregor0070c0b2012-01-30 06:38:25 +000083 explicit module avx {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000084 export sse4_2
85 header "avxintrin.h"
86 }
87
88 explicit module avx2 {
Douglas Gregor71022ca2012-01-30 18:49:05 +000089 export avx
Douglas Gregor0070c0b2012-01-30 06:38:25 +000090 header "avx2intrin.h"
91 }
92
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000093 explicit module avx512f {
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000094 export avx2
95 header "avx512fintrin.h"
96 }
97
98 explicit module avx512er {
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000099 header "avx512erintrin.h"
100 }
101
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000102 explicit module bmi {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000103 header "bmiintrin.h"
104 }
105
106 explicit module bmi2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000107 header "bmi2intrin.h"
108 }
109
Douglas Gregor4c698592012-11-05 20:11:10 +0000110 explicit module fma {
Douglas Gregor4c698592012-11-05 20:11:10 +0000111 header "fmaintrin.h"
112 }
113
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000114 explicit module fma4 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000115 export sse3
116 header "fma4intrin.h"
117 }
118
119 explicit module lzcnt {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000120 header "lzcntintrin.h"
121 }
122
123 explicit module popcnt {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000124 header "popcntintrin.h"
125 }
126
127 explicit module mm3dnow {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000128 header "mm3dnow.h"
129 }
Douglas Gregor4c698592012-11-05 20:11:10 +0000130
131 explicit module xop {
Douglas Gregor4c698592012-11-05 20:11:10 +0000132 export fma4
133 header "xopintrin.h"
134 }
Douglas Gregordc779ab2012-11-05 23:30:26 +0000135
136 explicit module aes_pclmul {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000137 header "wmmintrin.h"
John Thompsonb7892ff2015-05-27 18:26:41 +0000138 export aes
139 export pclmul
Douglas Gregordc779ab2012-11-05 23:30:26 +0000140 }
141
142 explicit module aes {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000143 header "__wmmintrin_aes.h"
144 }
145
146 explicit module pclmul {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000147 header "__wmmintrin_pclmul.h"
148 }
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000149 }
Ulrich Weigandcc673442015-04-01 14:15:35 +0000150
151 explicit module systemz {
152 requires systemz
153 export *
154
155 header "s390intrin.h"
156
157 explicit module htm {
158 requires htm
159 header "htmintrin.h"
160 header "htmxlintrin.h"
161 }
Ulrich Weigandca256432015-07-30 14:10:43 +0000162
163 explicit module zvector {
164 requires zvector, vx
165 header "vecintrin.h"
166 }
Ulrich Weigandcc673442015-04-01 14:15:35 +0000167 }
Douglas Gregor3f09de62012-01-29 20:52:14 +0000168}
Richard Smithef99e4d2014-10-03 00:31:35 +0000169
170module _Builtin_stddef_max_align_t [system] [extern_c] {
171 header "__stddef_max_align_t.h"
172}