Ben Langmuir | c67a774 | 2015-01-13 21:54:32 +0000 | [diff] [blame] | 1 | module _Builtin_intrinsics [system] [extern_c] { |
Douglas Gregor | 232e343 | 2012-01-31 21:57:50 +0000 | [diff] [blame] | 2 | explicit module altivec { |
3 | requires altivec | ||||
4 | header "altivec.h" | ||||
5 | } | ||||
6 | |||||
Douglas Gregor | 5cad45b | 2013-05-20 14:07:18 +0000 | [diff] [blame] | 7 | explicit module arm { |
8 | requires arm | ||||
9 | |||||
Yi Kong | cd08139 | 2014-07-23 09:00:21 +0000 | [diff] [blame] | 10 | explicit module acle { |
11 | header "arm_acle.h" | ||||
12 | export * | ||||
13 | } | ||||
14 | |||||
Douglas Gregor | 5cad45b | 2013-05-20 14:07:18 +0000 | [diff] [blame] | 15 | explicit module neon { |
16 | requires neon | ||||
17 | header "arm_neon.h" | ||||
18 | export * | ||||
19 | } | ||||
20 | } | ||||
21 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 22 | explicit module intel { |
23 | requires x86 | ||||
Douglas Gregor | 3ec6663 | 2012-02-02 18:42:48 +0000 | [diff] [blame] | 24 | export * |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 25 | |
26 | header "immintrin.h" | ||||
27 | header "x86intrin.h" | ||||
28 | |||||
Douglas Gregor | 3ec6663 | 2012-02-02 18:42:48 +0000 | [diff] [blame] | 29 | explicit module mm_malloc { |
30 | header "mm_malloc.h" | ||||
31 | export * // note: for <stdlib.h> dependency | ||||
32 | } | ||||
33 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 34 | explicit module cpuid { |
35 | header "cpuid.h" | ||||
36 | } | ||||
37 | |||||
38 | explicit module mmx { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 39 | header "mmintrin.h" |
40 | } | ||||
41 | |||||
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 42 | explicit module f16c { |
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 43 | header "f16cintrin.h" |
44 | } | ||||
45 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 46 | explicit module sse { |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 47 | export mmx |
Richard Smith | 23d8d03 | 2015-05-14 00:45:20 +0000 | [diff] [blame] | 48 | export sse2 // note: for hackish <emmintrin.h> dependency |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 49 | header "xmmintrin.h" |
50 | } | ||||
51 | |||||
52 | explicit module sse2 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 53 | export sse |
54 | header "emmintrin.h" | ||||
55 | } | ||||
56 | |||||
57 | explicit module sse3 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 58 | export sse2 |
59 | header "pmmintrin.h" | ||||
60 | } | ||||
61 | |||||
62 | explicit module ssse3 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 63 | export sse3 |
64 | header "tmmintrin.h" | ||||
65 | } | ||||
66 | |||||
67 | explicit module sse4_1 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 68 | export ssse3 |
69 | header "smmintrin.h" | ||||
70 | } | ||||
71 | |||||
72 | explicit module sse4_2 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 73 | export sse4_1 |
74 | header "nmmintrin.h" | ||||
75 | } | ||||
76 | |||||
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 77 | explicit module sse4a { |
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 78 | export sse3 |
Douglas Gregor | 10b4f2a | 2012-11-05 20:41:30 +0000 | [diff] [blame] | 79 | header "ammintrin.h" |
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 80 | } |
81 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 82 | explicit module avx { |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 83 | export sse4_2 |
84 | header "avxintrin.h" | ||||
85 | } | ||||
86 | |||||
87 | explicit module avx2 { | ||||
Douglas Gregor | 71022ca | 2012-01-30 18:49:05 +0000 | [diff] [blame] | 88 | export avx |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 89 | header "avx2intrin.h" |
90 | } | ||||
91 | |||||
Elena Demikhovsky | bd1a49b | 2014-07-22 12:08:25 +0000 | [diff] [blame] | 92 | explicit module avx512f { |
Elena Demikhovsky | bd1a49b | 2014-07-22 12:08:25 +0000 | [diff] [blame] | 93 | export avx2 |
94 | header "avx512fintrin.h" | ||||
95 | } | ||||
96 | |||||
97 | explicit module avx512er { | ||||
Elena Demikhovsky | bd1a49b | 2014-07-22 12:08:25 +0000 | [diff] [blame] | 98 | header "avx512erintrin.h" |
99 | } | ||||
100 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 101 | explicit module bmi { |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 102 | header "bmiintrin.h" |
103 | } | ||||
104 | |||||
105 | explicit module bmi2 { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 106 | header "bmi2intrin.h" |
107 | } | ||||
108 | |||||
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 109 | explicit module fma { |
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 110 | header "fmaintrin.h" |
111 | } | ||||
112 | |||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 113 | explicit module fma4 { |
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 114 | export sse3 |
115 | header "fma4intrin.h" | ||||
116 | } | ||||
117 | |||||
118 | explicit module lzcnt { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 119 | header "lzcntintrin.h" |
120 | } | ||||
121 | |||||
122 | explicit module popcnt { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 123 | header "popcntintrin.h" |
124 | } | ||||
125 | |||||
126 | explicit module mm3dnow { | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 127 | header "mm3dnow.h" |
128 | } | ||||
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 129 | |
130 | explicit module xop { | ||||
Douglas Gregor | 4c69859 | 2012-11-05 20:11:10 +0000 | [diff] [blame] | 131 | export fma4 |
132 | header "xopintrin.h" | ||||
133 | } | ||||
Douglas Gregor | dc779ab | 2012-11-05 23:30:26 +0000 | [diff] [blame] | 134 | |
135 | explicit module aes_pclmul { | ||||
Douglas Gregor | dc779ab | 2012-11-05 23:30:26 +0000 | [diff] [blame] | 136 | header "wmmintrin.h" |
John Thompson | b7892ff | 2015-05-27 18:26:41 +0000 | [diff] [blame] | 137 | export aes |
138 | export pclmul | ||||
Douglas Gregor | dc779ab | 2012-11-05 23:30:26 +0000 | [diff] [blame] | 139 | } |
140 | |||||
141 | explicit module aes { | ||||
Douglas Gregor | dc779ab | 2012-11-05 23:30:26 +0000 | [diff] [blame] | 142 | header "__wmmintrin_aes.h" |
143 | } | ||||
144 | |||||
145 | explicit module pclmul { | ||||
Douglas Gregor | dc779ab | 2012-11-05 23:30:26 +0000 | [diff] [blame] | 146 | header "__wmmintrin_pclmul.h" |
147 | } | ||||
Douglas Gregor | 0070c0b | 2012-01-30 06:38:25 +0000 | [diff] [blame] | 148 | } |
Ulrich Weigand | cc67344 | 2015-04-01 14:15:35 +0000 | [diff] [blame] | 149 | |
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 Weigand | ca25643 | 2015-07-30 14:10:43 +0000 | [diff] [blame] | 161 | |
162 | explicit module zvector { | ||||
163 | requires zvector, vx | ||||
164 | header "vecintrin.h" | ||||
165 | } | ||||
Ulrich Weigand | cc67344 | 2015-04-01 14:15:35 +0000 | [diff] [blame] | 166 | } |
Douglas Gregor | 3f09de6 | 2012-01-29 20:52:14 +0000 | [diff] [blame] | 167 | } |
Richard Smith | ef99e4d | 2014-10-03 00:31:35 +0000 | [diff] [blame] | 168 | |
169 | module _Builtin_stddef_max_align_t [system] [extern_c] { | ||||
170 | header "__stddef_max_align_t.h" | ||||
171 | } |