1 | // RUN: %clang_cc1 -DUSE_64 -triple x86_64-unknown-unknown -target-feature +fxsr -target-feature +avx -target-feature +xsaveopt -target-feature +xsaves -target-feature +xsavec -target-feature +mwaitx -target-feature +clzero -target-feature +shstk -target-feature +wbnoinvd -target-feature +cldemote -emit-llvm -o %t %s |
2 | // RUN: %clang_cc1 -DUSE_ALL -triple x86_64-unknown-unknown -target-feature +fxsr -target-feature +avx -target-feature +xsaveopt -target-feature +xsaves -target-feature +xsavec -target-feature +mwaitx -target-feature +shstk -target-feature +clzero -target-feature +wbnoinvd -target-feature +cldemote -fsyntax-only -o %t %s |
3 | |
4 | #ifdef USE_ALL |
5 | #define USE_3DNOW |
6 | #define USE_64 |
7 | #define USE_SSE4 |
8 | #endif |
9 | |
10 | // 64-bit |
11 | typedef char V8c __attribute__((vector_size(8 * sizeof(char)))); |
12 | typedef signed short V4s __attribute__((vector_size(8))); |
13 | typedef signed int V2i __attribute__((vector_size(8))); |
14 | typedef signed long long V1LLi __attribute__((vector_size(8))); |
15 | |
16 | typedef float V2f __attribute__((vector_size(8))); |
17 | |
18 | // 128-bit |
19 | typedef char V16c __attribute__((vector_size(16))); |
20 | typedef signed short V8s __attribute__((vector_size(16))); |
21 | typedef signed int V4i __attribute__((vector_size(16))); |
22 | typedef signed long long V2LLi __attribute__((vector_size(16))); |
23 | |
24 | typedef float V4f __attribute__((vector_size(16))); |
25 | typedef double V2d __attribute__((vector_size(16))); |
26 | |
27 | // 256-bit |
28 | typedef char V32c __attribute__((vector_size(32))); |
29 | typedef signed int V8i __attribute__((vector_size(32))); |
30 | typedef signed long long V4LLi __attribute__((vector_size(32))); |
31 | |
32 | typedef double V4d __attribute__((vector_size(32))); |
33 | typedef float V8f __attribute__((vector_size(32))); |
34 | |
35 | void f0() { |
36 | signed char tmp_c; |
37 | // unsigned char tmp_Uc; |
38 | signed short tmp_s; |
39 | #ifdef USE_ALL |
40 | unsigned short tmp_Us; |
41 | #endif |
42 | signed int tmp_i; |
43 | unsigned int tmp_Ui; |
44 | signed long long tmp_LLi; |
45 | unsigned long long tmp_ULLi; |
46 | float tmp_f; |
47 | double tmp_d; |
48 | |
49 | void* tmp_vp; |
50 | const void* tmp_vCp; |
51 | char* tmp_cp; |
52 | const char* tmp_cCp; |
53 | int* tmp_ip; |
54 | float* tmp_fp; |
55 | const float* tmp_fCp; |
56 | double* tmp_dp; |
57 | const double* tmp_dCp; |
58 | long long* tmp_LLip; |
59 | |
60 | #define imm_i 32 |
61 | #define imm_i_0_2 0 |
62 | #define imm_i_0_4 3 |
63 | #define imm_i_0_8 7 |
64 | #define imm_i_0_16 15 |
65 | // Check this. |
66 | #define imm_i_0_256 0 |
67 | |
68 | V2i* tmp_V2ip; |
69 | V1LLi* tmp_V1LLip; |
70 | V2LLi* tmp_V2LLip; |
71 | |
72 | // 64-bit |
73 | V8c tmp_V8c; |
74 | V4s tmp_V4s; |
75 | V2i tmp_V2i; |
76 | V1LLi tmp_V1LLi; |
77 | #ifdef USE_3DNOW |
78 | V2f tmp_V2f; |
79 | #endif |
80 | |
81 | // 128-bit |
82 | V16c tmp_V16c; |
83 | V8s tmp_V8s; |
84 | V4i tmp_V4i; |
85 | V2LLi tmp_V2LLi; |
86 | V4f tmp_V4f; |
87 | V2d tmp_V2d; |
88 | V2d* tmp_V2dp; |
89 | V4f* tmp_V4fp; |
90 | const V2d* tmp_V2dCp; |
91 | const V4f* tmp_V4fCp; |
92 | |
93 | // 256-bit |
94 | V32c tmp_V32c; |
95 | V4d tmp_V4d; |
96 | V8f tmp_V8f; |
97 | V4LLi tmp_V4LLi; |
98 | V8i tmp_V8i; |
99 | V4LLi* tmp_V4LLip; |
100 | V4d* tmp_V4dp; |
101 | V8f* tmp_V8fp; |
102 | const V4d* tmp_V4dCp; |
103 | const V8f* tmp_V8fCp; |
104 | |
105 | tmp_V2LLi = __builtin_ia32_undef128(); |
106 | tmp_V4LLi = __builtin_ia32_undef256(); |
107 | |
108 | tmp_i = __builtin_ia32_comieq(tmp_V4f, tmp_V4f); |
109 | tmp_i = __builtin_ia32_comilt(tmp_V4f, tmp_V4f); |
110 | tmp_i = __builtin_ia32_comile(tmp_V4f, tmp_V4f); |
111 | tmp_i = __builtin_ia32_comigt(tmp_V4f, tmp_V4f); |
112 | tmp_i = __builtin_ia32_comige(tmp_V4f, tmp_V4f); |
113 | tmp_i = __builtin_ia32_comineq(tmp_V4f, tmp_V4f); |
114 | tmp_i = __builtin_ia32_ucomieq(tmp_V4f, tmp_V4f); |
115 | tmp_i = __builtin_ia32_ucomilt(tmp_V4f, tmp_V4f); |
116 | tmp_i = __builtin_ia32_ucomile(tmp_V4f, tmp_V4f); |
117 | tmp_i = __builtin_ia32_ucomigt(tmp_V4f, tmp_V4f); |
118 | tmp_i = __builtin_ia32_ucomige(tmp_V4f, tmp_V4f); |
119 | tmp_i = __builtin_ia32_ucomineq(tmp_V4f, tmp_V4f); |
120 | tmp_i = __builtin_ia32_comisdeq(tmp_V2d, tmp_V2d); |
121 | tmp_i = __builtin_ia32_comisdlt(tmp_V2d, tmp_V2d); |
122 | tmp_i = __builtin_ia32_comisdle(tmp_V2d, tmp_V2d); |
123 | tmp_i = __builtin_ia32_comisdgt(tmp_V2d, tmp_V2d); |
124 | tmp_i = __builtin_ia32_comisdge(tmp_V2d, tmp_V2d); |
125 | tmp_i = __builtin_ia32_comisdneq(tmp_V2d, tmp_V2d); |
126 | tmp_i = __builtin_ia32_ucomisdeq(tmp_V2d, tmp_V2d); |
127 | tmp_i = __builtin_ia32_ucomisdlt(tmp_V2d, tmp_V2d); |
128 | tmp_i = __builtin_ia32_ucomisdle(tmp_V2d, tmp_V2d); |
129 | tmp_i = __builtin_ia32_ucomisdgt(tmp_V2d, tmp_V2d); |
130 | tmp_i = __builtin_ia32_ucomisdge(tmp_V2d, tmp_V2d); |
131 | tmp_i = __builtin_ia32_ucomisdneq(tmp_V2d, tmp_V2d); |
132 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 0); |
133 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 1); |
134 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 2); |
135 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 3); |
136 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 4); |
137 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 5); |
138 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 6); |
139 | tmp_V4f = __builtin_ia32_cmpps(tmp_V4f, tmp_V4f, 7); |
140 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 0); |
141 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 1); |
142 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 2); |
143 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 3); |
144 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 4); |
145 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 5); |
146 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 6); |
147 | tmp_V4f = __builtin_ia32_cmpss(tmp_V4f, tmp_V4f, 7); |
148 | tmp_V4f = __builtin_ia32_minps(tmp_V4f, tmp_V4f); |
149 | tmp_V4f = __builtin_ia32_maxps(tmp_V4f, tmp_V4f); |
150 | tmp_V4f = __builtin_ia32_minss(tmp_V4f, tmp_V4f); |
151 | tmp_V4f = __builtin_ia32_maxss(tmp_V4f, tmp_V4f); |
152 | |
153 | tmp_V8c = __builtin_ia32_paddsb(tmp_V8c, tmp_V8c); |
154 | tmp_V4s = __builtin_ia32_paddsw(tmp_V4s, tmp_V4s); |
155 | tmp_V8c = __builtin_ia32_psubsb(tmp_V8c, tmp_V8c); |
156 | tmp_V4s = __builtin_ia32_psubsw(tmp_V4s, tmp_V4s); |
157 | tmp_V8c = __builtin_ia32_paddusb(tmp_V8c, tmp_V8c); |
158 | tmp_V4s = __builtin_ia32_paddusw(tmp_V4s, tmp_V4s); |
159 | tmp_V8c = __builtin_ia32_psubusb(tmp_V8c, tmp_V8c); |
160 | tmp_V4s = __builtin_ia32_psubusw(tmp_V4s, tmp_V4s); |
161 | tmp_V4s = __builtin_ia32_pmulhw(tmp_V4s, tmp_V4s); |
162 | tmp_V4s = __builtin_ia32_pmulhuw(tmp_V4s, tmp_V4s); |
163 | tmp_V8c = __builtin_ia32_pcmpeqb(tmp_V8c, tmp_V8c); |
164 | tmp_V4s = __builtin_ia32_pcmpeqw(tmp_V4s, tmp_V4s); |
165 | tmp_V2i = __builtin_ia32_pcmpeqd(tmp_V2i, tmp_V2i); |
166 | tmp_V8c = __builtin_ia32_pcmpgtb(tmp_V8c, tmp_V8c); |
167 | tmp_V4s = __builtin_ia32_pcmpgtw(tmp_V4s, tmp_V4s); |
168 | tmp_V2i = __builtin_ia32_pcmpgtd(tmp_V2i, tmp_V2i); |
169 | tmp_V8c = __builtin_ia32_pmaxub(tmp_V8c, tmp_V8c); |
170 | tmp_V4s = __builtin_ia32_pmaxsw(tmp_V4s, tmp_V4s); |
171 | tmp_V8c = __builtin_ia32_pminub(tmp_V8c, tmp_V8c); |
172 | tmp_V4s = __builtin_ia32_pminsw(tmp_V4s, tmp_V4s); |
173 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 0); |
174 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 1); |
175 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 2); |
176 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 3); |
177 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 4); |
178 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 5); |
179 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 6); |
180 | tmp_V2d = __builtin_ia32_cmppd(tmp_V2d, tmp_V2d, 7); |
181 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 0); |
182 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 1); |
183 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 2); |
184 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 3); |
185 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 4); |
186 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 5); |
187 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 6); |
188 | tmp_V2d = __builtin_ia32_cmpsd(tmp_V2d, tmp_V2d, 7); |
189 | tmp_V2d = __builtin_ia32_minpd(tmp_V2d, tmp_V2d); |
190 | tmp_V2d = __builtin_ia32_maxpd(tmp_V2d, tmp_V2d); |
191 | tmp_V2d = __builtin_ia32_minsd(tmp_V2d, tmp_V2d); |
192 | tmp_V2d = __builtin_ia32_maxsd(tmp_V2d, tmp_V2d); |
193 | tmp_V16c = __builtin_ia32_paddsb128(tmp_V16c, tmp_V16c); |
194 | tmp_V8s = __builtin_ia32_paddsw128(tmp_V8s, tmp_V8s); |
195 | tmp_V16c = __builtin_ia32_psubsb128(tmp_V16c, tmp_V16c); |
196 | tmp_V8s = __builtin_ia32_psubsw128(tmp_V8s, tmp_V8s); |
197 | tmp_V16c = __builtin_ia32_paddusb128(tmp_V16c, tmp_V16c); |
198 | tmp_V8s = __builtin_ia32_paddusw128(tmp_V8s, tmp_V8s); |
199 | tmp_V16c = __builtin_ia32_psubusb128(tmp_V16c, tmp_V16c); |
200 | tmp_V8s = __builtin_ia32_psubusw128(tmp_V8s, tmp_V8s); |
201 | tmp_V8s = __builtin_ia32_pmulhw128(tmp_V8s, tmp_V8s); |
202 | tmp_V16c = __builtin_ia32_pmaxub128(tmp_V16c, tmp_V16c); |
203 | tmp_V8s = __builtin_ia32_pmaxsw128(tmp_V8s, tmp_V8s); |
204 | tmp_V16c = __builtin_ia32_pminub128(tmp_V16c, tmp_V16c); |
205 | tmp_V8s = __builtin_ia32_pminsw128(tmp_V8s, tmp_V8s); |
206 | tmp_V8s = __builtin_ia32_packsswb128(tmp_V8s, tmp_V8s); |
207 | tmp_V4i = __builtin_ia32_packssdw128(tmp_V4i, tmp_V4i); |
208 | tmp_V8s = __builtin_ia32_packuswb128(tmp_V8s, tmp_V8s); |
209 | tmp_V8s = __builtin_ia32_pmulhuw128(tmp_V8s, tmp_V8s); |
210 | tmp_V4f = __builtin_ia32_addsubps(tmp_V4f, tmp_V4f); |
211 | tmp_V2d = __builtin_ia32_addsubpd(tmp_V2d, tmp_V2d); |
212 | tmp_V4f = __builtin_ia32_haddps(tmp_V4f, tmp_V4f); |
213 | tmp_V2d = __builtin_ia32_haddpd(tmp_V2d, tmp_V2d); |
214 | tmp_V4f = __builtin_ia32_hsubps(tmp_V4f, tmp_V4f); |
215 | tmp_V2d = __builtin_ia32_hsubpd(tmp_V2d, tmp_V2d); |
216 | tmp_V8s = __builtin_ia32_phaddw128(tmp_V8s, tmp_V8s); |
217 | tmp_V4s = __builtin_ia32_phaddw(tmp_V4s, tmp_V4s); |
218 | tmp_V4i = __builtin_ia32_phaddd128(tmp_V4i, tmp_V4i); |
219 | tmp_V2i = __builtin_ia32_phaddd(tmp_V2i, tmp_V2i); |
220 | tmp_V8s = __builtin_ia32_phaddsw128(tmp_V8s, tmp_V8s); |
221 | tmp_V4s = __builtin_ia32_phaddsw(tmp_V4s, tmp_V4s); |
222 | tmp_V8s = __builtin_ia32_phsubw128(tmp_V8s, tmp_V8s); |
223 | tmp_V4s = __builtin_ia32_phsubw(tmp_V4s, tmp_V4s); |
224 | tmp_V4i = __builtin_ia32_phsubd128(tmp_V4i, tmp_V4i); |
225 | tmp_V2i = __builtin_ia32_phsubd(tmp_V2i, tmp_V2i); |
226 | tmp_V8s = __builtin_ia32_phsubsw128(tmp_V8s, tmp_V8s); |
227 | tmp_V4s = __builtin_ia32_phsubsw(tmp_V4s, tmp_V4s); |
228 | tmp_V16c = __builtin_ia32_pmaddubsw128(tmp_V16c, tmp_V16c); |
229 | tmp_V8c = __builtin_ia32_pmaddubsw(tmp_V8c, tmp_V8c); |
230 | tmp_V8s = __builtin_ia32_pmulhrsw128(tmp_V8s, tmp_V8s); |
231 | tmp_V4s = __builtin_ia32_pmulhrsw(tmp_V4s, tmp_V4s); |
232 | tmp_V16c = __builtin_ia32_pshufb128(tmp_V16c, tmp_V16c); |
233 | tmp_V8c = __builtin_ia32_pshufb(tmp_V8c, tmp_V8c); |
234 | tmp_V16c = __builtin_ia32_psignb128(tmp_V16c, tmp_V16c); |
235 | tmp_V8c = __builtin_ia32_psignb(tmp_V8c, tmp_V8c); |
236 | tmp_V8s = __builtin_ia32_psignw128(tmp_V8s, tmp_V8s); |
237 | tmp_V4s = __builtin_ia32_psignw(tmp_V4s, tmp_V4s); |
238 | tmp_V4i = __builtin_ia32_psignd128(tmp_V4i, tmp_V4i); |
239 | tmp_V2i = __builtin_ia32_psignd(tmp_V2i, tmp_V2i); |
240 | tmp_V16c = __builtin_ia32_pabsb128(tmp_V16c); |
241 | tmp_V8c = __builtin_ia32_pabsb(tmp_V8c); |
242 | tmp_V8s = __builtin_ia32_pabsw128(tmp_V8s); |
243 | tmp_V4s = __builtin_ia32_pabsw(tmp_V4s); |
244 | tmp_V4i = __builtin_ia32_pabsd128(tmp_V4i); |
245 | tmp_V2i = __builtin_ia32_pabsd(tmp_V2i); |
246 | tmp_V4s = __builtin_ia32_psllw(tmp_V4s, tmp_V1LLi); |
247 | tmp_V2i = __builtin_ia32_pslld(tmp_V2i, tmp_V1LLi); |
248 | tmp_V1LLi = __builtin_ia32_psllq(tmp_V1LLi, tmp_V1LLi); |
249 | tmp_V4s = __builtin_ia32_psrlw(tmp_V4s, tmp_V1LLi); |
250 | tmp_V2i = __builtin_ia32_psrld(tmp_V2i, tmp_V1LLi); |
251 | tmp_V1LLi = __builtin_ia32_psrlq(tmp_V1LLi, tmp_V1LLi); |
252 | tmp_V4s = __builtin_ia32_psraw(tmp_V4s, tmp_V1LLi); |
253 | tmp_V2i = __builtin_ia32_psrad(tmp_V2i, tmp_V1LLi); |
254 | tmp_V2i = __builtin_ia32_pmaddwd(tmp_V4s, tmp_V4s); |
255 | tmp_V8c = __builtin_ia32_packsswb(tmp_V4s, tmp_V4s); |
256 | tmp_V4s = __builtin_ia32_packssdw(tmp_V2i, tmp_V2i); |
257 | tmp_V8c = __builtin_ia32_packuswb(tmp_V4s, tmp_V4s); |
258 | tmp_i = __builtin_ia32_vec_ext_v2si(tmp_V2i, 0); |
259 | |
260 | __builtin_ia32_incsspd(tmp_Ui); |
261 | __builtin_ia32_incsspq(tmp_ULLi); |
262 | tmp_Ui = __builtin_ia32_rdsspd(tmp_Ui); |
263 | tmp_ULLi = __builtin_ia32_rdsspq(tmp_ULLi); |
264 | __builtin_ia32_saveprevssp(); |
265 | __builtin_ia32_rstorssp(tmp_vp); |
266 | __builtin_ia32_wrssd(tmp_Ui, tmp_vp); |
267 | __builtin_ia32_wrssq(tmp_ULLi, tmp_vp); |
268 | __builtin_ia32_wrussd(tmp_Ui, tmp_vp); |
269 | __builtin_ia32_wrussq(tmp_ULLi, tmp_vp); |
270 | __builtin_ia32_setssbsy(); |
271 | __builtin_ia32_clrssbsy(tmp_vp); |
272 | |
273 | (void) __builtin_ia32_ldmxcsr(tmp_Ui); |
274 | (void) _mm_setcsr(tmp_Ui); |
275 | tmp_Ui = __builtin_ia32_stmxcsr(); |
276 | tmp_Ui = _mm_getcsr(); |
277 | (void)__builtin_ia32_fxsave(tmp_vp); |
278 | (void)__builtin_ia32_fxsave64(tmp_vp); |
279 | (void)__builtin_ia32_fxrstor(tmp_vp); |
280 | (void)__builtin_ia32_fxrstor64(tmp_vp); |
281 | |
282 | (void)__builtin_ia32_xsave(tmp_vp, tmp_ULLi); |
283 | (void)__builtin_ia32_xsave64(tmp_vp, tmp_ULLi); |
284 | tmp_ULLi = __builtin_ia32_xgetbv(tmp_Ui); |
285 | (void)__builtin_ia32_xsetbv(tmp_Ui, tmp_ULLi); |
286 | (void)__builtin_ia32_xrstor(tmp_vp, tmp_ULLi); |
287 | (void)__builtin_ia32_xrstor64(tmp_vp, tmp_ULLi); |
288 | (void)__builtin_ia32_xsaveopt(tmp_vp, tmp_ULLi); |
289 | (void)__builtin_ia32_xsaveopt64(tmp_vp, tmp_ULLi); |
290 | (void)__builtin_ia32_xrstors(tmp_vp, tmp_ULLi); |
291 | (void)__builtin_ia32_xrstors64(tmp_vp, tmp_ULLi); |
292 | (void)__builtin_ia32_xsavec(tmp_vp, tmp_ULLi); |
293 | (void)__builtin_ia32_xsavec64(tmp_vp, tmp_ULLi); |
294 | (void)__builtin_ia32_xsaves(tmp_vp, tmp_ULLi); |
295 | (void)__builtin_ia32_xsaves64(tmp_vp, tmp_ULLi); |
296 | |
297 | (void) __builtin_ia32_monitorx(tmp_vp, tmp_Ui, tmp_Ui); |
298 | (void) __builtin_ia32_mwaitx(tmp_Ui, tmp_Ui, tmp_Ui); |
299 | (void) __builtin_ia32_clzero(tmp_vp); |
300 | (void) __builtin_ia32_cldemote(tmp_vp); |
301 | |
302 | tmp_V4f = __builtin_ia32_cvtpi2ps(tmp_V4f, tmp_V2i); |
303 | tmp_V2i = __builtin_ia32_cvtps2pi(tmp_V4f); |
304 | tmp_i = __builtin_ia32_cvtss2si(tmp_V4f); |
305 | tmp_i = __builtin_ia32_cvttss2si(tmp_V4f); |
306 | |
307 | tmp_i = __builtin_ia32_rdtsc(); |
308 | tmp_i = __rdtsc(); |
309 | tmp_i = __builtin_ia32_rdtscp(&tmp_Ui); |
310 | tmp_LLi = __builtin_ia32_rdpmc(tmp_i); |
311 | __builtin_ia32_wbnoinvd(); |
312 | #ifdef USE_64 |
313 | tmp_LLi = __builtin_ia32_cvtss2si64(tmp_V4f); |
314 | tmp_LLi = __builtin_ia32_cvttss2si64(tmp_V4f); |
315 | #endif |
316 | tmp_V2i = __builtin_ia32_cvttps2pi(tmp_V4f); |
317 | (void) __builtin_ia32_maskmovq(tmp_V8c, tmp_V8c, tmp_cp); |
318 | (void) __builtin_ia32_storehps(tmp_V2ip, tmp_V4f); |
319 | (void) __builtin_ia32_storelps(tmp_V2ip, tmp_V4f); |
320 | tmp_i = __builtin_ia32_movmskps(tmp_V4f); |
321 | tmp_i = __builtin_ia32_pmovmskb(tmp_V8c); |
322 | (void) __builtin_ia32_movntq(tmp_V1LLip, tmp_V1LLi); |
323 | (void) __builtin_ia32_sfence(); |
324 | (void) _mm_sfence(); |
325 | |
326 | tmp_V4s = __builtin_ia32_psadbw(tmp_V8c, tmp_V8c); |
327 | tmp_V4f = __builtin_ia32_rcpps(tmp_V4f); |
328 | tmp_V4f = __builtin_ia32_rcpss(tmp_V4f); |
329 | tmp_V4f = __builtin_ia32_rsqrtps(tmp_V4f); |
330 | tmp_V4f = __builtin_ia32_rsqrtss(tmp_V4f); |
331 | tmp_V4f = __builtin_ia32_sqrtps(tmp_V4f); |
332 | tmp_V4f = __builtin_ia32_sqrtss(tmp_V4f); |
333 | (void) __builtin_ia32_maskmovdqu(tmp_V16c, tmp_V16c, tmp_cp); |
334 | tmp_i = __builtin_ia32_movmskpd(tmp_V2d); |
335 | tmp_i = __builtin_ia32_pmovmskb128(tmp_V16c); |
336 | (void) __builtin_ia32_movnti(tmp_ip, tmp_i); |
337 | #ifdef USE_64 |
338 | (void) __builtin_ia32_movnti64(tmp_LLip, tmp_LLi); |
339 | #endif |
340 | tmp_V2LLi = __builtin_ia32_psadbw128(tmp_V16c, tmp_V16c); |
341 | tmp_V2d = __builtin_ia32_sqrtpd(tmp_V2d); |
342 | tmp_V2d = __builtin_ia32_sqrtsd(tmp_V2d); |
343 | tmp_V2LLi = __builtin_ia32_cvtpd2dq(tmp_V2d); |
344 | tmp_V2i = __builtin_ia32_cvtpd2pi(tmp_V2d); |
345 | tmp_V4f = __builtin_ia32_cvtpd2ps(tmp_V2d); |
346 | tmp_V4i = __builtin_ia32_cvttpd2dq(tmp_V2d); |
347 | tmp_V2i = __builtin_ia32_cvttpd2pi(tmp_V2d); |
348 | tmp_V2d = __builtin_ia32_cvtpi2pd(tmp_V2i); |
349 | tmp_i = __builtin_ia32_cvtsd2si(tmp_V2d); |
350 | tmp_i = __builtin_ia32_cvttsd2si(tmp_V2d); |
351 | tmp_V4f = __builtin_ia32_cvtsd2ss(tmp_V4f, tmp_V2d); |
352 | #ifdef USE_64 |
353 | tmp_LLi = __builtin_ia32_cvtsd2si64(tmp_V2d); |
354 | tmp_LLi = __builtin_ia32_cvttsd2si64(tmp_V2d); |
355 | #endif |
356 | tmp_V4i = __builtin_ia32_cvtps2dq(tmp_V4f); |
357 | tmp_V4i = __builtin_ia32_cvttps2dq(tmp_V4f); |
358 | (void) __builtin_ia32_clflush(tmp_vCp); |
359 | (void) _mm_clflush(tmp_vCp); |
360 | (void) __builtin_ia32_lfence(); |
361 | (void) _mm_lfence(); |
362 | (void) __builtin_ia32_mfence(); |
363 | (void) _mm_mfence(); |
364 | (void) __builtin_ia32_pause(); |
365 | (void) _mm_pause(); |
366 | tmp_V4s = __builtin_ia32_psllwi(tmp_V4s, tmp_i); |
367 | tmp_V2i = __builtin_ia32_pslldi(tmp_V2i, tmp_i); |
368 | tmp_V1LLi = __builtin_ia32_psllqi(tmp_V1LLi, tmp_i); |
369 | tmp_V4s = __builtin_ia32_psrawi(tmp_V4s, tmp_i); |
370 | tmp_V2i = __builtin_ia32_psradi(tmp_V2i, tmp_i); |
371 | tmp_V4s = __builtin_ia32_psrlwi(tmp_V4s, tmp_i); |
372 | tmp_V2i = __builtin_ia32_psrldi(tmp_V2i, tmp_i); |
373 | tmp_V1LLi = __builtin_ia32_psrlqi(tmp_V1LLi, tmp_i); |
374 | tmp_V1LLi = __builtin_ia32_pmuludq(tmp_V2i, tmp_V2i); |
375 | tmp_V2LLi = __builtin_ia32_pmuludq128(tmp_V4i, tmp_V4i); |
376 | tmp_V8s = __builtin_ia32_psraw128(tmp_V8s, tmp_V8s); |
377 | tmp_V4i = __builtin_ia32_psrad128(tmp_V4i, tmp_V4i); |
378 | tmp_V8s = __builtin_ia32_psrlw128(tmp_V8s, tmp_V8s); |
379 | tmp_V4i = __builtin_ia32_psrld128(tmp_V4i, tmp_V4i); |
380 | tmp_V2LLi = __builtin_ia32_psrlq128(tmp_V2LLi, tmp_V2LLi); |
381 | tmp_V8s = __builtin_ia32_psllw128(tmp_V8s, tmp_V8s); |
382 | tmp_V4i = __builtin_ia32_pslld128(tmp_V4i, tmp_V4i); |
383 | tmp_V2LLi = __builtin_ia32_psllq128(tmp_V2LLi, tmp_V2LLi); |
384 | tmp_V8s = __builtin_ia32_psllwi128(tmp_V8s, tmp_i); |
385 | tmp_V4i = __builtin_ia32_pslldi128(tmp_V4i, tmp_i); |
386 | tmp_V2LLi = __builtin_ia32_psllqi128(tmp_V2LLi, tmp_i); |
387 | tmp_V8s = __builtin_ia32_psrlwi128(tmp_V8s, tmp_i); |
388 | tmp_V4i = __builtin_ia32_psrldi128(tmp_V4i, tmp_i); |
389 | tmp_V2LLi = __builtin_ia32_psrlqi128(tmp_V2LLi, tmp_i); |
390 | tmp_V8s = __builtin_ia32_psrawi128(tmp_V8s, tmp_i); |
391 | tmp_V4i = __builtin_ia32_psradi128(tmp_V4i, tmp_i); |
392 | tmp_V8s = __builtin_ia32_pmaddwd128(tmp_V8s, tmp_V8s); |
393 | (void) __builtin_ia32_monitor(tmp_vp, tmp_Ui, tmp_Ui); |
394 | (void) __builtin_ia32_mwait(tmp_Ui, tmp_Ui); |
395 | tmp_V16c = __builtin_ia32_lddqu(tmp_cCp); |
396 | tmp_V2LLi = __builtin_ia32_palignr128(tmp_V2LLi, tmp_V2LLi, imm_i); |
397 | tmp_V1LLi = __builtin_ia32_palignr(tmp_V1LLi, tmp_V1LLi, imm_i); |
398 | #ifdef USE_SSE4 |
399 | tmp_V16c = __builtin_ia32_pblendvb128(tmp_V16c, tmp_V16c, tmp_V16c); |
400 | tmp_V2d = __builtin_ia32_blendvpd(tmp_V2d, tmp_V2d, tmp_V2d); |
401 | tmp_V4f = __builtin_ia32_blendvps(tmp_V4f, tmp_V4f, tmp_V4f); |
402 | tmp_V8s = __builtin_ia32_packusdw128(tmp_V4i, tmp_V4i); |
403 | tmp_V16c = __builtin_ia32_pmaxsb128(tmp_V16c, tmp_V16c); |
404 | tmp_V4i = __builtin_ia32_pmaxsd128(tmp_V4i, tmp_V4i); |
405 | tmp_V4i = __builtin_ia32_pmaxud128(tmp_V4i, tmp_V4i); |
406 | tmp_V8s = __builtin_ia32_pmaxuw128(tmp_V8s, tmp_V8s); |
407 | tmp_V16c = __builtin_ia32_pminsb128(tmp_V16c, tmp_V16c); |
408 | tmp_V4i = __builtin_ia32_pminsd128(tmp_V4i, tmp_V4i); |
409 | tmp_V4i = __builtin_ia32_pminud128(tmp_V4i, tmp_V4i); |
410 | tmp_V8s = __builtin_ia32_pminuw128(tmp_V8s, tmp_V8s); |
411 | tmp_V2LLi = __builtin_ia32_pmuldq128(tmp_V4i, tmp_V4i); |
412 | tmp_V4f = __builtin_ia32_roundps(tmp_V4f, imm_i_0_16); |
413 | tmp_V4f = __builtin_ia32_roundss(tmp_V4f, tmp_V4f, imm_i_0_16); |
414 | tmp_V2d = __builtin_ia32_roundsd(tmp_V2d, tmp_V2d, imm_i_0_16); |
415 | tmp_V2d = __builtin_ia32_roundpd(tmp_V2d, imm_i_0_16); |
416 | tmp_V4f = __builtin_ia32_insertps128(tmp_V4f, tmp_V4f, imm_i_0_256); |
417 | #endif |
418 | |
419 | tmp_V4d = __builtin_ia32_addsubpd256(tmp_V4d, tmp_V4d); |
420 | tmp_V8f = __builtin_ia32_addsubps256(tmp_V8f, tmp_V8f); |
421 | tmp_V4d = __builtin_ia32_haddpd256(tmp_V4d, tmp_V4d); |
422 | tmp_V8f = __builtin_ia32_hsubps256(tmp_V8f, tmp_V8f); |
423 | tmp_V4d = __builtin_ia32_hsubpd256(tmp_V4d, tmp_V4d); |
424 | tmp_V8f = __builtin_ia32_haddps256(tmp_V8f, tmp_V8f); |
425 | tmp_V4d = __builtin_ia32_maxpd256(tmp_V4d, tmp_V4d); |
426 | tmp_V8f = __builtin_ia32_maxps256(tmp_V8f, tmp_V8f); |
427 | tmp_V4d = __builtin_ia32_minpd256(tmp_V4d, tmp_V4d); |
428 | tmp_V8f = __builtin_ia32_minps256(tmp_V8f, tmp_V8f); |
429 | tmp_V2d = __builtin_ia32_vpermilvarpd(tmp_V2d, tmp_V2LLi); |
430 | tmp_V4f = __builtin_ia32_vpermilvarps(tmp_V4f, tmp_V4i); |
431 | tmp_V4d = __builtin_ia32_vpermilvarpd256(tmp_V4d, tmp_V4LLi); |
432 | tmp_V8f = __builtin_ia32_vpermilvarps256(tmp_V8f, tmp_V8i); |
433 | tmp_V4d = __builtin_ia32_blendvpd256(tmp_V4d, tmp_V4d, tmp_V4d); |
434 | tmp_V8f = __builtin_ia32_blendvps256(tmp_V8f, tmp_V8f, tmp_V8f); |
435 | tmp_V8f = __builtin_ia32_dpps256(tmp_V8f, tmp_V8f, 0x7); |
436 | tmp_V4d = __builtin_ia32_cmppd256(tmp_V4d, tmp_V4d, 0); |
437 | tmp_V8f = __builtin_ia32_cmpps256(tmp_V8f, tmp_V8f, 0); |
438 | tmp_V4f = __builtin_ia32_cvtpd2ps256(tmp_V4d); |
439 | tmp_V8i = __builtin_ia32_cvtps2dq256(tmp_V8f); |
440 | tmp_V4i = __builtin_ia32_cvttpd2dq256(tmp_V4d); |
441 | tmp_V4i = __builtin_ia32_cvtpd2dq256(tmp_V4d); |
442 | tmp_V8i = __builtin_ia32_cvttps2dq256(tmp_V8f); |
443 | tmp_V4d = __builtin_ia32_vperm2f128_pd256(tmp_V4d, tmp_V4d, 0x7); |
444 | tmp_V8f = __builtin_ia32_vperm2f128_ps256(tmp_V8f, tmp_V8f, 0x7); |
445 | tmp_V8i = __builtin_ia32_vperm2f128_si256(tmp_V8i, tmp_V8i, 0x7); |
446 | tmp_V4d = __builtin_ia32_sqrtpd256(tmp_V4d); |
447 | tmp_V8f = __builtin_ia32_sqrtps256(tmp_V8f); |
448 | tmp_V8f = __builtin_ia32_rsqrtps256(tmp_V8f); |
449 | tmp_V8f = __builtin_ia32_rcpps256(tmp_V8f); |
450 | tmp_V4d = __builtin_ia32_roundpd256(tmp_V4d, 0x1); |
451 | tmp_V8f = __builtin_ia32_roundps256(tmp_V8f, 0x1); |
452 | tmp_i = __builtin_ia32_vtestzpd(tmp_V2d, tmp_V2d); |
453 | tmp_i = __builtin_ia32_vtestcpd(tmp_V2d, tmp_V2d); |
454 | tmp_i = __builtin_ia32_vtestnzcpd(tmp_V2d, tmp_V2d); |
455 | tmp_i = __builtin_ia32_vtestzps(tmp_V4f, tmp_V4f); |
456 | tmp_i = __builtin_ia32_vtestcps(tmp_V4f, tmp_V4f); |
457 | tmp_i = __builtin_ia32_vtestnzcps(tmp_V4f, tmp_V4f); |
458 | tmp_i = __builtin_ia32_vtestzpd256(tmp_V4d, tmp_V4d); |
459 | tmp_i = __builtin_ia32_vtestcpd256(tmp_V4d, tmp_V4d); |
460 | tmp_i = __builtin_ia32_vtestnzcpd256(tmp_V4d, tmp_V4d); |
461 | tmp_i = __builtin_ia32_vtestzps256(tmp_V8f, tmp_V8f); |
462 | tmp_i = __builtin_ia32_vtestcps256(tmp_V8f, tmp_V8f); |
463 | tmp_i = __builtin_ia32_vtestnzcps256(tmp_V8f, tmp_V8f); |
464 | tmp_i = __builtin_ia32_ptestz256(tmp_V4LLi, tmp_V4LLi); |
465 | tmp_i = __builtin_ia32_ptestc256(tmp_V4LLi, tmp_V4LLi); |
466 | tmp_i = __builtin_ia32_ptestnzc256(tmp_V4LLi, tmp_V4LLi); |
467 | tmp_i = __builtin_ia32_movmskpd256(tmp_V4d); |
468 | tmp_i = __builtin_ia32_movmskps256(tmp_V8f); |
469 | __builtin_ia32_vzeroall(); |
470 | __builtin_ia32_vzeroupper(); |
471 | tmp_V32c = __builtin_ia32_lddqu256(tmp_cCp); |
472 | tmp_V2d = __builtin_ia32_maskloadpd(tmp_V2dCp, tmp_V2LLi); |
473 | tmp_V4f = __builtin_ia32_maskloadps(tmp_V4fCp, tmp_V4i); |
474 | tmp_V4d = __builtin_ia32_maskloadpd256(tmp_V4dCp, tmp_V4LLi); |
475 | tmp_V8f = __builtin_ia32_maskloadps256(tmp_V8fCp, tmp_V8i); |
476 | __builtin_ia32_maskstorepd(tmp_V2dp, tmp_V2LLi, tmp_V2d); |
477 | __builtin_ia32_maskstoreps(tmp_V4fp, tmp_V4i, tmp_V4f); |
478 | __builtin_ia32_maskstorepd256(tmp_V4dp, tmp_V4LLi, tmp_V4d); |
479 | __builtin_ia32_maskstoreps256(tmp_V8fp, tmp_V8i, tmp_V8f); |
480 | |
481 | #ifdef USE_3DNOW |
482 | tmp_V8c = __builtin_ia32_pavgusb(tmp_V8c, tmp_V8c); |
483 | tmp_V2i = __builtin_ia32_pf2id(tmp_V2f); |
484 | tmp_V2f = __builtin_ia32_pfacc(tmp_V2f, tmp_V2f); |
485 | tmp_V2f = __builtin_ia32_pfadd(tmp_V2f, tmp_V2f); |
486 | tmp_V2i = __builtin_ia32_pfcmpeq(tmp_V2f, tmp_V2f); |
487 | tmp_V2i = __builtin_ia32_pfcmpge(tmp_V2f, tmp_V2f); |
488 | tmp_V2i = __builtin_ia32_pfcmpgt(tmp_V2f, tmp_V2f); |
489 | tmp_V2f = __builtin_ia32_pfmax(tmp_V2f, tmp_V2f); |
490 | tmp_V2f = __builtin_ia32_pfmin(tmp_V2f, tmp_V2f); |
491 | tmp_V2f = __builtin_ia32_pfmul(tmp_V2f, tmp_V2f); |
492 | tmp_V2f = __builtin_ia32_pfrcp(tmp_V2f); |
493 | tmp_V2f = __builtin_ia32_pfrcpit1(tmp_V2f, tmp_V2f); |
494 | tmp_V2f = __builtin_ia32_pfrcpit2(tmp_V2f, tmp_V2f); |
495 | tmp_V2f = __builtin_ia32_pfrsqrt(tmp_V2f); |
496 | tmp_V2f = __builtin_ia32_pfrsqit1(tmp_V2f, tmp_V2f); |
497 | tmp_V2f = __builtin_ia32_pfsub(tmp_V2f, tmp_V2f); |
498 | tmp_V2f = __builtin_ia32_pfsubr(tmp_V2f, tmp_V2f); |
499 | tmp_V2f = __builtin_ia32_pi2fd(tmp_V2i); |
500 | tmp_V4s = __builtin_ia32_pmulhrw(tmp_V4s, tmp_V4s); |
501 | tmp_V2i = __builtin_ia32_pf2iw(tmp_V2f); |
502 | tmp_V2f = __builtin_ia32_pfnacc(tmp_V2f, tmp_V2f); |
503 | tmp_V2f = __builtin_ia32_pfpnacc(tmp_V2f, tmp_V2f); |
504 | tmp_V2f = __builtin_ia32_pi2fw(tmp_V2i); |
505 | tmp_V2f = __builtin_ia32_pswapdsf(tmp_V2f); |
506 | tmp_V2i = __builtin_ia32_pswapdsi(tmp_V2i); |
507 | |
508 | tmp_V4i = __builtin_ia32_sha1rnds4(tmp_V4i, tmp_V4i, imm_i_0_4); |
509 | tmp_V4i = __builtin_ia32_sha1nexte(tmp_V4i, tmp_V4i); |
510 | tmp_V4i = __builtin_ia32_sha1msg1(tmp_V4i, tmp_V4i); |
511 | tmp_V4i = __builtin_ia32_sha1msg2(tmp_V4i, tmp_V4i); |
512 | tmp_V4i = __builtin_ia32_sha256rnds2(tmp_V4i, tmp_V4i, tmp_V4i); |
513 | tmp_V4i = __builtin_ia32_sha256msg1(tmp_V4i, tmp_V4i); |
514 | tmp_V4i = __builtin_ia32_sha256msg2(tmp_V4i, tmp_V4i); |
515 | #endif |
516 | } |
517 | |