blob: b147e891dceb3000f0b5c5f419d069220956a1e7 [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 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000047 export mmx
Richard Smith23d8d032015-05-14 00:45:20 +000048 export sse2 // note: for hackish <emmintrin.h> dependency
Douglas Gregor0070c0b2012-01-30 06:38:25 +000049 header "xmmintrin.h"
50 }
51
52 explicit module sse2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000053 export sse
54 header "emmintrin.h"
55 }
56
57 explicit module sse3 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000058 export sse2
59 header "pmmintrin.h"
60 }
61
62 explicit module ssse3 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000063 export sse3
64 header "tmmintrin.h"
65 }
66
67 explicit module sse4_1 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000068 export ssse3
69 header "smmintrin.h"
70 }
71
72 explicit module sse4_2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000073 export sse4_1
74 header "nmmintrin.h"
75 }
76
Douglas Gregor4c698592012-11-05 20:11:10 +000077 explicit module sse4a {
Douglas Gregor4c698592012-11-05 20:11:10 +000078 export sse3
Douglas Gregor10b4f2a2012-11-05 20:41:30 +000079 header "ammintrin.h"
Douglas Gregor4c698592012-11-05 20:11:10 +000080 }
81
Douglas Gregor0070c0b2012-01-30 06:38:25 +000082 explicit module avx {
Douglas Gregor0070c0b2012-01-30 06:38:25 +000083 export sse4_2
84 header "avxintrin.h"
85 }
86
87 explicit module avx2 {
Douglas Gregor71022ca2012-01-30 18:49:05 +000088 export avx
Douglas Gregor0070c0b2012-01-30 06:38:25 +000089 header "avx2intrin.h"
90 }
91
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000092 explicit module avx512f {
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000093 export avx2
94 header "avx512fintrin.h"
95 }
96
97 explicit module avx512er {
Elena Demikhovskybd1a49b2014-07-22 12:08:25 +000098 header "avx512erintrin.h"
99 }
100
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000101 explicit module bmi {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000102 header "bmiintrin.h"
103 }
104
105 explicit module bmi2 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000106 header "bmi2intrin.h"
107 }
108
Douglas Gregor4c698592012-11-05 20:11:10 +0000109 explicit module fma {
Douglas Gregor4c698592012-11-05 20:11:10 +0000110 header "fmaintrin.h"
111 }
112
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000113 explicit module fma4 {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000114 export sse3
115 header "fma4intrin.h"
116 }
117
118 explicit module lzcnt {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000119 header "lzcntintrin.h"
120 }
121
122 explicit module popcnt {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000123 header "popcntintrin.h"
124 }
125
126 explicit module mm3dnow {
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000127 header "mm3dnow.h"
128 }
Douglas Gregor4c698592012-11-05 20:11:10 +0000129
130 explicit module xop {
Douglas Gregor4c698592012-11-05 20:11:10 +0000131 export fma4
132 header "xopintrin.h"
133 }
Douglas Gregordc779ab2012-11-05 23:30:26 +0000134
135 explicit module aes_pclmul {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000136 header "wmmintrin.h"
John Thompsonb7892ff2015-05-27 18:26:41 +0000137 export aes
138 export pclmul
Douglas Gregordc779ab2012-11-05 23:30:26 +0000139 }
140
141 explicit module aes {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000142 header "__wmmintrin_aes.h"
143 }
144
145 explicit module pclmul {
Douglas Gregordc779ab2012-11-05 23:30:26 +0000146 header "__wmmintrin_pclmul.h"
147 }
Douglas Gregor0070c0b2012-01-30 06:38:25 +0000148 }
Ulrich Weigandcc673442015-04-01 14:15:35 +0000149
150 explicit module systemz {
151 requires systemz
152 export *
153
154 header "s390intrin.h"
155
156 explicit module htm {
157 requires htm
158 header "htmintrin.h"
159 header "htmxlintrin.h"
160 }
Ulrich Weigandca256432015-07-30 14:10:43 +0000161
162 explicit module zvector {
163 requires zvector, vx
164 header "vecintrin.h"
165 }
Ulrich Weigandcc673442015-04-01 14:15:35 +0000166 }
Douglas Gregor3f09de62012-01-29 20:52:14 +0000167}
Richard Smithef99e4d2014-10-03 00:31:35 +0000168
169module _Builtin_stddef_max_align_t [system] [extern_c] {
170 header "__stddef_max_align_t.h"
171}