Fix VINSERTF128/VEXTRACTF128 to be marked as FP instructions. Allow execution depende...
[oota-llvm.git] / test / CodeGen / X86 / avx-intrinsics-x86.ll
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -march=x86 -mcpu=corei7 -mattr=avx | FileCheck %s
2
3 define <2 x i64> @test_x86_aesni_aesdec(<2 x i64> %a0, <2 x i64> %a1) {
4   ; CHECK: vaesdec
5   %res = call <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
6   ret <2 x i64> %res
7 }
8 declare <2 x i64> @llvm.x86.aesni.aesdec(<2 x i64>, <2 x i64>) nounwind readnone
9
10
11 define <2 x i64> @test_x86_aesni_aesdeclast(<2 x i64> %a0, <2 x i64> %a1) {
12   ; CHECK: vaesdeclast
13   %res = call <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
14   ret <2 x i64> %res
15 }
16 declare <2 x i64> @llvm.x86.aesni.aesdeclast(<2 x i64>, <2 x i64>) nounwind readnone
17
18
19 define <2 x i64> @test_x86_aesni_aesenc(<2 x i64> %a0, <2 x i64> %a1) {
20   ; CHECK: vaesenc
21   %res = call <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
22   ret <2 x i64> %res
23 }
24 declare <2 x i64> @llvm.x86.aesni.aesenc(<2 x i64>, <2 x i64>) nounwind readnone
25
26
27 define <2 x i64> @test_x86_aesni_aesenclast(<2 x i64> %a0, <2 x i64> %a1) {
28   ; CHECK: vaesenclast
29   %res = call <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
30   ret <2 x i64> %res
31 }
32 declare <2 x i64> @llvm.x86.aesni.aesenclast(<2 x i64>, <2 x i64>) nounwind readnone
33
34
35 define <2 x i64> @test_x86_aesni_aesimc(<2 x i64> %a0) {
36   ; CHECK: vaesimc
37   %res = call <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64> %a0) ; <<2 x i64>> [#uses=1]
38   ret <2 x i64> %res
39 }
40 declare <2 x i64> @llvm.x86.aesni.aesimc(<2 x i64>) nounwind readnone
41
42
43 define <2 x i64> @test_x86_aesni_aeskeygenassist(<2 x i64> %a0) {
44   ; CHECK: vaeskeygenassist
45   %res = call <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64> %a0, i8 7) ; <<2 x i64>> [#uses=1]
46   ret <2 x i64> %res
47 }
48 declare <2 x i64> @llvm.x86.aesni.aeskeygenassist(<2 x i64>, i8) nounwind readnone
49
50
51 define <2 x double> @test_x86_sse2_add_sd(<2 x double> %a0, <2 x double> %a1) {
52   ; CHECK: vaddsd
53   %res = call <2 x double> @llvm.x86.sse2.add.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
54   ret <2 x double> %res
55 }
56 declare <2 x double> @llvm.x86.sse2.add.sd(<2 x double>, <2 x double>) nounwind readnone
57
58
59 define <2 x double> @test_x86_sse2_cmp_pd(<2 x double> %a0, <2 x double> %a1) {
60   ; CHECK: vcmpordpd
61   %res = call <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
62   ret <2 x double> %res
63 }
64 declare <2 x double> @llvm.x86.sse2.cmp.pd(<2 x double>, <2 x double>, i8) nounwind readnone
65
66
67 define <2 x double> @test_x86_sse2_cmp_sd(<2 x double> %a0, <2 x double> %a1) {
68   ; CHECK: vcmpordsd
69   %res = call <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double> %a0, <2 x double> %a1, i8 7) ; <<2 x double>> [#uses=1]
70   ret <2 x double> %res
71 }
72 declare <2 x double> @llvm.x86.sse2.cmp.sd(<2 x double>, <2 x double>, i8) nounwind readnone
73
74
75 define i32 @test_x86_sse2_comieq_sd(<2 x double> %a0, <2 x double> %a1) {
76   ; CHECK: vcomisd
77   ; CHECK: sete
78   ; CHECK: movzbl
79   %res = call i32 @llvm.x86.sse2.comieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
80   ret i32 %res
81 }
82 declare i32 @llvm.x86.sse2.comieq.sd(<2 x double>, <2 x double>) nounwind readnone
83
84
85 define i32 @test_x86_sse2_comige_sd(<2 x double> %a0, <2 x double> %a1) {
86   ; CHECK: vcomisd
87   ; CHECK: setae
88   ; CHECK: movzbl
89   %res = call i32 @llvm.x86.sse2.comige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
90   ret i32 %res
91 }
92 declare i32 @llvm.x86.sse2.comige.sd(<2 x double>, <2 x double>) nounwind readnone
93
94
95 define i32 @test_x86_sse2_comigt_sd(<2 x double> %a0, <2 x double> %a1) {
96   ; CHECK: vcomisd
97   ; CHECK: seta
98   ; CHECK: movzbl
99   %res = call i32 @llvm.x86.sse2.comigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
100   ret i32 %res
101 }
102 declare i32 @llvm.x86.sse2.comigt.sd(<2 x double>, <2 x double>) nounwind readnone
103
104
105 define i32 @test_x86_sse2_comile_sd(<2 x double> %a0, <2 x double> %a1) {
106   ; CHECK: vcomisd
107   ; CHECK: setbe
108   ; CHECK: movzbl
109   %res = call i32 @llvm.x86.sse2.comile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
110   ret i32 %res
111 }
112 declare i32 @llvm.x86.sse2.comile.sd(<2 x double>, <2 x double>) nounwind readnone
113
114
115 define i32 @test_x86_sse2_comilt_sd(<2 x double> %a0, <2 x double> %a1) {
116   ; CHECK: vcomisd
117   ; CHECK: sbbl    %eax, %eax
118   ; CHECK: andl    $1, %eax
119   %res = call i32 @llvm.x86.sse2.comilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
120   ret i32 %res
121 }
122 declare i32 @llvm.x86.sse2.comilt.sd(<2 x double>, <2 x double>) nounwind readnone
123
124
125 define i32 @test_x86_sse2_comineq_sd(<2 x double> %a0, <2 x double> %a1) {
126   ; CHECK: vcomisd
127   ; CHECK: setne
128   ; CHECK: movzbl
129   %res = call i32 @llvm.x86.sse2.comineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
130   ret i32 %res
131 }
132 declare i32 @llvm.x86.sse2.comineq.sd(<2 x double>, <2 x double>) nounwind readnone
133
134
135 define <2 x double> @test_x86_sse2_cvtdq2pd(<4 x i32> %a0) {
136   ; CHECK: vcvtdq2pd
137   %res = call <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32> %a0) ; <<2 x double>> [#uses=1]
138   ret <2 x double> %res
139 }
140 declare <2 x double> @llvm.x86.sse2.cvtdq2pd(<4 x i32>) nounwind readnone
141
142
143 define <4 x float> @test_x86_sse2_cvtdq2ps(<4 x i32> %a0) {
144   ; CHECK: vcvtdq2ps
145   %res = call <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32> %a0) ; <<4 x float>> [#uses=1]
146   ret <4 x float> %res
147 }
148 declare <4 x float> @llvm.x86.sse2.cvtdq2ps(<4 x i32>) nounwind readnone
149
150
151 define <4 x i32> @test_x86_sse2_cvtpd2dq(<2 x double> %a0) {
152   ; CHECK: vcvtpd2dq
153   %res = call <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
154   ret <4 x i32> %res
155 }
156 declare <4 x i32> @llvm.x86.sse2.cvtpd2dq(<2 x double>) nounwind readnone
157
158
159 define <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) {
160   ; CHECK: vcvtpd2ps
161   %res = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) ; <<4 x float>> [#uses=1]
162   ret <4 x float> %res
163 }
164 declare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone
165
166
167 define <4 x i32> @test_x86_sse2_cvtps2dq(<4 x float> %a0) {
168   ; CHECK: vcvtps2dq
169   %res = call <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1]
170   ret <4 x i32> %res
171 }
172 declare <4 x i32> @llvm.x86.sse2.cvtps2dq(<4 x float>) nounwind readnone
173
174
175 define <2 x double> @test_x86_sse2_cvtps2pd(<4 x float> %a0) {
176   ; CHECK: vcvtps2pd
177   %res = call <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float> %a0) ; <<2 x double>> [#uses=1]
178   ret <2 x double> %res
179 }
180 declare <2 x double> @llvm.x86.sse2.cvtps2pd(<4 x float>) nounwind readnone
181
182
183 define i32 @test_x86_sse2_cvtsd2si(<2 x double> %a0) {
184   ; CHECK: vcvtsd2si
185   %res = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %a0) ; <i32> [#uses=1]
186   ret i32 %res
187 }
188 declare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
189
190
191 define <4 x float> @test_x86_sse2_cvtsd2ss(<4 x float> %a0, <2 x double> %a1) {
192   ; CHECK: vcvtsd2ss
193   %res = call <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float> %a0, <2 x double> %a1) ; <<4 x float>> [#uses=1]
194   ret <4 x float> %res
195 }
196 declare <4 x float> @llvm.x86.sse2.cvtsd2ss(<4 x float>, <2 x double>) nounwind readnone
197
198
199 define <2 x double> @test_x86_sse2_cvtsi2sd(<2 x double> %a0) {
200   ; CHECK: movl
201   ; CHECK: vcvtsi2sd
202   %res = call <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1]
203   ret <2 x double> %res
204 }
205 declare <2 x double> @llvm.x86.sse2.cvtsi2sd(<2 x double>, i32) nounwind readnone
206
207
208 define <2 x double> @test_x86_sse2_cvtss2sd(<2 x double> %a0, <4 x float> %a1) {
209   ; CHECK: vcvtss2sd
210   %res = call <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double> %a0, <4 x float> %a1) ; <<2 x double>> [#uses=1]
211   ret <2 x double> %res
212 }
213 declare <2 x double> @llvm.x86.sse2.cvtss2sd(<2 x double>, <4 x float>) nounwind readnone
214
215
216 define <4 x i32> @test_x86_sse2_cvttpd2dq(<2 x double> %a0) {
217   ; CHECK: vcvttpd2dq
218   %res = call <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double> %a0) ; <<4 x i32>> [#uses=1]
219   ret <4 x i32> %res
220 }
221 declare <4 x i32> @llvm.x86.sse2.cvttpd2dq(<2 x double>) nounwind readnone
222
223
224 define <4 x i32> @test_x86_sse2_cvttps2dq(<4 x float> %a0) {
225   ; CHECK: vcvttps2dq
226   %res = call <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float> %a0) ; <<4 x i32>> [#uses=1]
227   ret <4 x i32> %res
228 }
229 declare <4 x i32> @llvm.x86.sse2.cvttps2dq(<4 x float>) nounwind readnone
230
231
232 define i32 @test_x86_sse2_cvttsd2si(<2 x double> %a0) {
233   ; CHECK: vcvttsd2si
234   %res = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %a0) ; <i32> [#uses=1]
235   ret i32 %res
236 }
237 declare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
238
239
240 define <2 x double> @test_x86_sse2_div_sd(<2 x double> %a0, <2 x double> %a1) {
241   ; CHECK: vdivsd
242   %res = call <2 x double> @llvm.x86.sse2.div.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
243   ret <2 x double> %res
244 }
245 declare <2 x double> @llvm.x86.sse2.div.sd(<2 x double>, <2 x double>) nounwind readnone
246
247
248
249 define <2 x double> @test_x86_sse2_max_pd(<2 x double> %a0, <2 x double> %a1) {
250   ; CHECK: vmaxpd
251   %res = call <2 x double> @llvm.x86.sse2.max.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
252   ret <2 x double> %res
253 }
254 declare <2 x double> @llvm.x86.sse2.max.pd(<2 x double>, <2 x double>) nounwind readnone
255
256
257 define <2 x double> @test_x86_sse2_max_sd(<2 x double> %a0, <2 x double> %a1) {
258   ; CHECK: vmaxsd
259   %res = call <2 x double> @llvm.x86.sse2.max.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
260   ret <2 x double> %res
261 }
262 declare <2 x double> @llvm.x86.sse2.max.sd(<2 x double>, <2 x double>) nounwind readnone
263
264
265 define <2 x double> @test_x86_sse2_min_pd(<2 x double> %a0, <2 x double> %a1) {
266   ; CHECK: vminpd
267   %res = call <2 x double> @llvm.x86.sse2.min.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
268   ret <2 x double> %res
269 }
270 declare <2 x double> @llvm.x86.sse2.min.pd(<2 x double>, <2 x double>) nounwind readnone
271
272
273 define <2 x double> @test_x86_sse2_min_sd(<2 x double> %a0, <2 x double> %a1) {
274   ; CHECK: vminsd
275   %res = call <2 x double> @llvm.x86.sse2.min.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
276   ret <2 x double> %res
277 }
278 declare <2 x double> @llvm.x86.sse2.min.sd(<2 x double>, <2 x double>) nounwind readnone
279
280
281 define i32 @test_x86_sse2_movmsk_pd(<2 x double> %a0) {
282   ; CHECK: vmovmskpd
283   %res = call i32 @llvm.x86.sse2.movmsk.pd(<2 x double> %a0) ; <i32> [#uses=1]
284   ret i32 %res
285 }
286 declare i32 @llvm.x86.sse2.movmsk.pd(<2 x double>) nounwind readnone
287
288
289
290
291 define <2 x double> @test_x86_sse2_mul_sd(<2 x double> %a0, <2 x double> %a1) {
292   ; CHECK: test_x86_sse2_mul_sd
293   ; CHECK: vmulsd
294   %res = call <2 x double> @llvm.x86.sse2.mul.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
295   ret <2 x double> %res
296 }
297 declare <2 x double> @llvm.x86.sse2.mul.sd(<2 x double>, <2 x double>) nounwind readnone
298
299
300 define <8 x i16> @test_x86_sse2_packssdw_128(<4 x i32> %a0, <4 x i32> %a1) {
301   ; CHECK: vpackssdw
302   %res = call <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
303   ret <8 x i16> %res
304 }
305 declare <8 x i16> @llvm.x86.sse2.packssdw.128(<4 x i32>, <4 x i32>) nounwind readnone
306
307
308 define <16 x i8> @test_x86_sse2_packsswb_128(<8 x i16> %a0, <8 x i16> %a1) {
309   ; CHECK: vpacksswb
310   %res = call <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
311   ret <16 x i8> %res
312 }
313 declare <16 x i8> @llvm.x86.sse2.packsswb.128(<8 x i16>, <8 x i16>) nounwind readnone
314
315
316 define <16 x i8> @test_x86_sse2_packuswb_128(<8 x i16> %a0, <8 x i16> %a1) {
317   ; CHECK: vpackuswb
318   %res = call <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16> %a0, <8 x i16> %a1) ; <<16 x i8>> [#uses=1]
319   ret <16 x i8> %res
320 }
321 declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) nounwind readnone
322
323
324 define <16 x i8> @test_x86_sse2_padds_b(<16 x i8> %a0, <16 x i8> %a1) {
325   ; CHECK: vpaddsb
326   %res = call <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
327   ret <16 x i8> %res
328 }
329 declare <16 x i8> @llvm.x86.sse2.padds.b(<16 x i8>, <16 x i8>) nounwind readnone
330
331
332 define <8 x i16> @test_x86_sse2_padds_w(<8 x i16> %a0, <8 x i16> %a1) {
333   ; CHECK: vpaddsw
334   %res = call <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
335   ret <8 x i16> %res
336 }
337 declare <8 x i16> @llvm.x86.sse2.padds.w(<8 x i16>, <8 x i16>) nounwind readnone
338
339
340 define <16 x i8> @test_x86_sse2_paddus_b(<16 x i8> %a0, <16 x i8> %a1) {
341   ; CHECK: vpaddusb
342   %res = call <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
343   ret <16 x i8> %res
344 }
345 declare <16 x i8> @llvm.x86.sse2.paddus.b(<16 x i8>, <16 x i8>) nounwind readnone
346
347
348 define <8 x i16> @test_x86_sse2_paddus_w(<8 x i16> %a0, <8 x i16> %a1) {
349   ; CHECK: vpaddusw
350   %res = call <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
351   ret <8 x i16> %res
352 }
353 declare <8 x i16> @llvm.x86.sse2.paddus.w(<8 x i16>, <8 x i16>) nounwind readnone
354
355
356 define <16 x i8> @test_x86_sse2_pavg_b(<16 x i8> %a0, <16 x i8> %a1) {
357   ; CHECK: vpavgb
358   %res = call <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
359   ret <16 x i8> %res
360 }
361 declare <16 x i8> @llvm.x86.sse2.pavg.b(<16 x i8>, <16 x i8>) nounwind readnone
362
363
364 define <8 x i16> @test_x86_sse2_pavg_w(<8 x i16> %a0, <8 x i16> %a1) {
365   ; CHECK: vpavgw
366   %res = call <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
367   ret <8 x i16> %res
368 }
369 declare <8 x i16> @llvm.x86.sse2.pavg.w(<8 x i16>, <8 x i16>) nounwind readnone
370
371
372 define <16 x i8> @test_x86_sse2_pcmpeq_b(<16 x i8> %a0, <16 x i8> %a1) {
373   ; CHECK: vpcmpeqb
374   %res = call <16 x i8> @llvm.x86.sse2.pcmpeq.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
375   ret <16 x i8> %res
376 }
377 declare <16 x i8> @llvm.x86.sse2.pcmpeq.b(<16 x i8>, <16 x i8>) nounwind readnone
378
379
380 define <4 x i32> @test_x86_sse2_pcmpeq_d(<4 x i32> %a0, <4 x i32> %a1) {
381   ; CHECK: vpcmpeqd
382   %res = call <4 x i32> @llvm.x86.sse2.pcmpeq.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
383   ret <4 x i32> %res
384 }
385 declare <4 x i32> @llvm.x86.sse2.pcmpeq.d(<4 x i32>, <4 x i32>) nounwind readnone
386
387
388 define <8 x i16> @test_x86_sse2_pcmpeq_w(<8 x i16> %a0, <8 x i16> %a1) {
389   ; CHECK: vpcmpeqw
390   %res = call <8 x i16> @llvm.x86.sse2.pcmpeq.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
391   ret <8 x i16> %res
392 }
393 declare <8 x i16> @llvm.x86.sse2.pcmpeq.w(<8 x i16>, <8 x i16>) nounwind readnone
394
395
396 define <16 x i8> @test_x86_sse2_pcmpgt_b(<16 x i8> %a0, <16 x i8> %a1) {
397   ; CHECK: vpcmpgtb
398   %res = call <16 x i8> @llvm.x86.sse2.pcmpgt.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
399   ret <16 x i8> %res
400 }
401 declare <16 x i8> @llvm.x86.sse2.pcmpgt.b(<16 x i8>, <16 x i8>) nounwind readnone
402
403
404 define <4 x i32> @test_x86_sse2_pcmpgt_d(<4 x i32> %a0, <4 x i32> %a1) {
405   ; CHECK: vpcmpgtd
406   %res = call <4 x i32> @llvm.x86.sse2.pcmpgt.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
407   ret <4 x i32> %res
408 }
409 declare <4 x i32> @llvm.x86.sse2.pcmpgt.d(<4 x i32>, <4 x i32>) nounwind readnone
410
411
412 define <8 x i16> @test_x86_sse2_pcmpgt_w(<8 x i16> %a0, <8 x i16> %a1) {
413   ; CHECK: vpcmpgtw
414   %res = call <8 x i16> @llvm.x86.sse2.pcmpgt.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
415   ret <8 x i16> %res
416 }
417 declare <8 x i16> @llvm.x86.sse2.pcmpgt.w(<8 x i16>, <8 x i16>) nounwind readnone
418
419
420 define <4 x i32> @test_x86_sse2_pmadd_wd(<8 x i16> %a0, <8 x i16> %a1) {
421   ; CHECK: vpmaddwd
422   %res = call <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16> %a0, <8 x i16> %a1) ; <<4 x i32>> [#uses=1]
423   ret <4 x i32> %res
424 }
425 declare <4 x i32> @llvm.x86.sse2.pmadd.wd(<8 x i16>, <8 x i16>) nounwind readnone
426
427
428 define <8 x i16> @test_x86_sse2_pmaxs_w(<8 x i16> %a0, <8 x i16> %a1) {
429   ; CHECK: vpmaxsw
430   %res = call <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
431   ret <8 x i16> %res
432 }
433 declare <8 x i16> @llvm.x86.sse2.pmaxs.w(<8 x i16>, <8 x i16>) nounwind readnone
434
435
436 define <16 x i8> @test_x86_sse2_pmaxu_b(<16 x i8> %a0, <16 x i8> %a1) {
437   ; CHECK: vpmaxub
438   %res = call <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
439   ret <16 x i8> %res
440 }
441 declare <16 x i8> @llvm.x86.sse2.pmaxu.b(<16 x i8>, <16 x i8>) nounwind readnone
442
443
444 define <8 x i16> @test_x86_sse2_pmins_w(<8 x i16> %a0, <8 x i16> %a1) {
445   ; CHECK: vpminsw
446   %res = call <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
447   ret <8 x i16> %res
448 }
449 declare <8 x i16> @llvm.x86.sse2.pmins.w(<8 x i16>, <8 x i16>) nounwind readnone
450
451
452 define <16 x i8> @test_x86_sse2_pminu_b(<16 x i8> %a0, <16 x i8> %a1) {
453   ; CHECK: vpminub
454   %res = call <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
455   ret <16 x i8> %res
456 }
457 declare <16 x i8> @llvm.x86.sse2.pminu.b(<16 x i8>, <16 x i8>) nounwind readnone
458
459
460 define i32 @test_x86_sse2_pmovmskb_128(<16 x i8> %a0) {
461   ; CHECK: vpmovmskb
462   %res = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %a0) ; <i32> [#uses=1]
463   ret i32 %res
464 }
465 declare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>) nounwind readnone
466
467
468 define <8 x i16> @test_x86_sse2_pmulh_w(<8 x i16> %a0, <8 x i16> %a1) {
469   ; CHECK: vpmulhw
470   %res = call <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
471   ret <8 x i16> %res
472 }
473 declare <8 x i16> @llvm.x86.sse2.pmulh.w(<8 x i16>, <8 x i16>) nounwind readnone
474
475
476 define <8 x i16> @test_x86_sse2_pmulhu_w(<8 x i16> %a0, <8 x i16> %a1) {
477   ; CHECK: vpmulhuw
478   %res = call <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
479   ret <8 x i16> %res
480 }
481 declare <8 x i16> @llvm.x86.sse2.pmulhu.w(<8 x i16>, <8 x i16>) nounwind readnone
482
483
484 define <2 x i64> @test_x86_sse2_pmulu_dq(<4 x i32> %a0, <4 x i32> %a1) {
485   ; CHECK: vpmuludq
486   %res = call <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
487   ret <2 x i64> %res
488 }
489 declare <2 x i64> @llvm.x86.sse2.pmulu.dq(<4 x i32>, <4 x i32>) nounwind readnone
490
491
492 define <2 x i64> @test_x86_sse2_psad_bw(<16 x i8> %a0, <16 x i8> %a1) {
493   ; CHECK: vpsadbw
494   %res = call <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8> %a0, <16 x i8> %a1) ; <<2 x i64>> [#uses=1]
495   ret <2 x i64> %res
496 }
497 declare <2 x i64> @llvm.x86.sse2.psad.bw(<16 x i8>, <16 x i8>) nounwind readnone
498
499
500 define <4 x i32> @test_x86_sse2_psll_d(<4 x i32> %a0, <4 x i32> %a1) {
501   ; CHECK: vpslld
502   %res = call <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
503   ret <4 x i32> %res
504 }
505 declare <4 x i32> @llvm.x86.sse2.psll.d(<4 x i32>, <4 x i32>) nounwind readnone
506
507
508 define <2 x i64> @test_x86_sse2_psll_dq(<2 x i64> %a0) {
509   ; CHECK: vpslldq
510   %res = call <2 x i64> @llvm.x86.sse2.psll.dq(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
511   ret <2 x i64> %res
512 }
513 declare <2 x i64> @llvm.x86.sse2.psll.dq(<2 x i64>, i32) nounwind readnone
514
515
516 define <2 x i64> @test_x86_sse2_psll_dq_bs(<2 x i64> %a0) {
517   ; CHECK: vpslldq
518   %res = call <2 x i64> @llvm.x86.sse2.psll.dq.bs(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
519   ret <2 x i64> %res
520 }
521 declare <2 x i64> @llvm.x86.sse2.psll.dq.bs(<2 x i64>, i32) nounwind readnone
522
523
524 define <2 x i64> @test_x86_sse2_psll_q(<2 x i64> %a0, <2 x i64> %a1) {
525   ; CHECK: vpsllq
526   %res = call <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
527   ret <2 x i64> %res
528 }
529 declare <2 x i64> @llvm.x86.sse2.psll.q(<2 x i64>, <2 x i64>) nounwind readnone
530
531
532 define <8 x i16> @test_x86_sse2_psll_w(<8 x i16> %a0, <8 x i16> %a1) {
533   ; CHECK: vpsllw
534   %res = call <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
535   ret <8 x i16> %res
536 }
537 declare <8 x i16> @llvm.x86.sse2.psll.w(<8 x i16>, <8 x i16>) nounwind readnone
538
539
540 define <4 x i32> @test_x86_sse2_pslli_d(<4 x i32> %a0) {
541   ; CHECK: vpslld
542   %res = call <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
543   ret <4 x i32> %res
544 }
545 declare <4 x i32> @llvm.x86.sse2.pslli.d(<4 x i32>, i32) nounwind readnone
546
547
548 define <2 x i64> @test_x86_sse2_pslli_q(<2 x i64> %a0) {
549   ; CHECK: vpsllq
550   %res = call <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
551   ret <2 x i64> %res
552 }
553 declare <2 x i64> @llvm.x86.sse2.pslli.q(<2 x i64>, i32) nounwind readnone
554
555
556 define <8 x i16> @test_x86_sse2_pslli_w(<8 x i16> %a0) {
557   ; CHECK: vpsllw
558   %res = call <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
559   ret <8 x i16> %res
560 }
561 declare <8 x i16> @llvm.x86.sse2.pslli.w(<8 x i16>, i32) nounwind readnone
562
563
564 define <4 x i32> @test_x86_sse2_psra_d(<4 x i32> %a0, <4 x i32> %a1) {
565   ; CHECK: vpsrad
566   %res = call <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
567   ret <4 x i32> %res
568 }
569 declare <4 x i32> @llvm.x86.sse2.psra.d(<4 x i32>, <4 x i32>) nounwind readnone
570
571
572 define <8 x i16> @test_x86_sse2_psra_w(<8 x i16> %a0, <8 x i16> %a1) {
573   ; CHECK: vpsraw
574   %res = call <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
575   ret <8 x i16> %res
576 }
577 declare <8 x i16> @llvm.x86.sse2.psra.w(<8 x i16>, <8 x i16>) nounwind readnone
578
579
580 define <4 x i32> @test_x86_sse2_psrai_d(<4 x i32> %a0) {
581   ; CHECK: vpsrad
582   %res = call <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
583   ret <4 x i32> %res
584 }
585 declare <4 x i32> @llvm.x86.sse2.psrai.d(<4 x i32>, i32) nounwind readnone
586
587
588 define <8 x i16> @test_x86_sse2_psrai_w(<8 x i16> %a0) {
589   ; CHECK: vpsraw
590   %res = call <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
591   ret <8 x i16> %res
592 }
593 declare <8 x i16> @llvm.x86.sse2.psrai.w(<8 x i16>, i32) nounwind readnone
594
595
596 define <4 x i32> @test_x86_sse2_psrl_d(<4 x i32> %a0, <4 x i32> %a1) {
597   ; CHECK: vpsrld
598   %res = call <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
599   ret <4 x i32> %res
600 }
601 declare <4 x i32> @llvm.x86.sse2.psrl.d(<4 x i32>, <4 x i32>) nounwind readnone
602
603
604 define <2 x i64> @test_x86_sse2_psrl_dq(<2 x i64> %a0) {
605   ; CHECK: vpsrldq
606   %res = call <2 x i64> @llvm.x86.sse2.psrl.dq(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
607   ret <2 x i64> %res
608 }
609 declare <2 x i64> @llvm.x86.sse2.psrl.dq(<2 x i64>, i32) nounwind readnone
610
611
612 define <2 x i64> @test_x86_sse2_psrl_dq_bs(<2 x i64> %a0) {
613   ; CHECK: vpsrldq
614   %res = call <2 x i64> @llvm.x86.sse2.psrl.dq.bs(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
615   ret <2 x i64> %res
616 }
617 declare <2 x i64> @llvm.x86.sse2.psrl.dq.bs(<2 x i64>, i32) nounwind readnone
618
619
620 define <2 x i64> @test_x86_sse2_psrl_q(<2 x i64> %a0, <2 x i64> %a1) {
621   ; CHECK: vpsrlq
622   %res = call <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
623   ret <2 x i64> %res
624 }
625 declare <2 x i64> @llvm.x86.sse2.psrl.q(<2 x i64>, <2 x i64>) nounwind readnone
626
627
628 define <8 x i16> @test_x86_sse2_psrl_w(<8 x i16> %a0, <8 x i16> %a1) {
629   ; CHECK: vpsrlw
630   %res = call <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
631   ret <8 x i16> %res
632 }
633 declare <8 x i16> @llvm.x86.sse2.psrl.w(<8 x i16>, <8 x i16>) nounwind readnone
634
635
636 define <4 x i32> @test_x86_sse2_psrli_d(<4 x i32> %a0) {
637   ; CHECK: vpsrld
638   %res = call <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32> %a0, i32 7) ; <<4 x i32>> [#uses=1]
639   ret <4 x i32> %res
640 }
641 declare <4 x i32> @llvm.x86.sse2.psrli.d(<4 x i32>, i32) nounwind readnone
642
643
644 define <2 x i64> @test_x86_sse2_psrli_q(<2 x i64> %a0) {
645   ; CHECK: vpsrlq
646   %res = call <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64> %a0, i32 7) ; <<2 x i64>> [#uses=1]
647   ret <2 x i64> %res
648 }
649 declare <2 x i64> @llvm.x86.sse2.psrli.q(<2 x i64>, i32) nounwind readnone
650
651
652 define <8 x i16> @test_x86_sse2_psrli_w(<8 x i16> %a0) {
653   ; CHECK: vpsrlw
654   %res = call <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16> %a0, i32 7) ; <<8 x i16>> [#uses=1]
655   ret <8 x i16> %res
656 }
657 declare <8 x i16> @llvm.x86.sse2.psrli.w(<8 x i16>, i32) nounwind readnone
658
659
660 define <16 x i8> @test_x86_sse2_psubs_b(<16 x i8> %a0, <16 x i8> %a1) {
661   ; CHECK: vpsubsb
662   %res = call <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
663   ret <16 x i8> %res
664 }
665 declare <16 x i8> @llvm.x86.sse2.psubs.b(<16 x i8>, <16 x i8>) nounwind readnone
666
667
668 define <8 x i16> @test_x86_sse2_psubs_w(<8 x i16> %a0, <8 x i16> %a1) {
669   ; CHECK: vpsubsw
670   %res = call <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
671   ret <8 x i16> %res
672 }
673 declare <8 x i16> @llvm.x86.sse2.psubs.w(<8 x i16>, <8 x i16>) nounwind readnone
674
675
676 define <16 x i8> @test_x86_sse2_psubus_b(<16 x i8> %a0, <16 x i8> %a1) {
677   ; CHECK: vpsubusb
678   %res = call <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
679   ret <16 x i8> %res
680 }
681 declare <16 x i8> @llvm.x86.sse2.psubus.b(<16 x i8>, <16 x i8>) nounwind readnone
682
683
684 define <8 x i16> @test_x86_sse2_psubus_w(<8 x i16> %a0, <8 x i16> %a1) {
685   ; CHECK: vpsubusw
686   %res = call <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
687   ret <8 x i16> %res
688 }
689 declare <8 x i16> @llvm.x86.sse2.psubus.w(<8 x i16>, <8 x i16>) nounwind readnone
690
691
692 define <2 x double> @test_x86_sse2_sqrt_pd(<2 x double> %a0) {
693   ; CHECK: vsqrtpd
694   %res = call <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
695   ret <2 x double> %res
696 }
697 declare <2 x double> @llvm.x86.sse2.sqrt.pd(<2 x double>) nounwind readnone
698
699
700 define <2 x double> @test_x86_sse2_sqrt_sd(<2 x double> %a0) {
701   ; CHECK: vsqrtsd
702   %res = call <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double> %a0) ; <<2 x double>> [#uses=1]
703   ret <2 x double> %res
704 }
705 declare <2 x double> @llvm.x86.sse2.sqrt.sd(<2 x double>) nounwind readnone
706
707
708 define void @test_x86_sse2_storel_dq(i8* %a0, <4 x i32> %a1) {
709   ; CHECK: test_x86_sse2_storel_dq
710   ; CHECK: movl
711   ; CHECK: vmovq
712   call void @llvm.x86.sse2.storel.dq(i8* %a0, <4 x i32> %a1)
713   ret void
714 }
715 declare void @llvm.x86.sse2.storel.dq(i8*, <4 x i32>) nounwind
716
717
718 define void @test_x86_sse2_storeu_dq(i8* %a0, <16 x i8> %a1) {
719   ; CHECK: test_x86_sse2_storeu_dq
720   ; CHECK: movl
721   ; CHECK: vmovdqu
722   call void @llvm.x86.sse2.storeu.dq(i8* %a0, <16 x i8> %a1)
723   ret void
724 }
725 declare void @llvm.x86.sse2.storeu.dq(i8*, <16 x i8>) nounwind
726
727
728 define void @test_x86_sse2_storeu_pd(i8* %a0, <2 x double> %a1) {
729   ; CHECK: test_x86_sse2_storeu_pd
730   ; CHECK: movl
731   ; CHECK: vmovupd
732   %a2 = fadd <2 x double> %a1, <double 0x0, double 0x4200000000000000>
733   call void @llvm.x86.sse2.storeu.pd(i8* %a0, <2 x double> %a2)
734   ret void
735 }
736 declare void @llvm.x86.sse2.storeu.pd(i8*, <2 x double>) nounwind
737
738
739 define <2 x double> @test_x86_sse2_sub_sd(<2 x double> %a0, <2 x double> %a1) {
740   ; CHECK: test_x86_sse2_sub_sd
741   ; CHECK: vsubsd
742   %res = call <2 x double> @llvm.x86.sse2.sub.sd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
743   ret <2 x double> %res
744 }
745 declare <2 x double> @llvm.x86.sse2.sub.sd(<2 x double>, <2 x double>) nounwind readnone
746
747
748 define i32 @test_x86_sse2_ucomieq_sd(<2 x double> %a0, <2 x double> %a1) {
749   ; CHECK: vucomisd
750   ; CHECK: sete
751   ; CHECK: movzbl
752   %res = call i32 @llvm.x86.sse2.ucomieq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
753   ret i32 %res
754 }
755 declare i32 @llvm.x86.sse2.ucomieq.sd(<2 x double>, <2 x double>) nounwind readnone
756
757
758 define i32 @test_x86_sse2_ucomige_sd(<2 x double> %a0, <2 x double> %a1) {
759   ; CHECK: vucomisd
760   ; CHECK: setae
761   ; CHECK: movzbl
762   %res = call i32 @llvm.x86.sse2.ucomige.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
763   ret i32 %res
764 }
765 declare i32 @llvm.x86.sse2.ucomige.sd(<2 x double>, <2 x double>) nounwind readnone
766
767
768 define i32 @test_x86_sse2_ucomigt_sd(<2 x double> %a0, <2 x double> %a1) {
769   ; CHECK: vucomisd
770   ; CHECK: seta
771   ; CHECK: movzbl
772   %res = call i32 @llvm.x86.sse2.ucomigt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
773   ret i32 %res
774 }
775 declare i32 @llvm.x86.sse2.ucomigt.sd(<2 x double>, <2 x double>) nounwind readnone
776
777
778 define i32 @test_x86_sse2_ucomile_sd(<2 x double> %a0, <2 x double> %a1) {
779   ; CHECK: vucomisd
780   ; CHECK: setbe
781   ; CHECK: movzbl
782   %res = call i32 @llvm.x86.sse2.ucomile.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
783   ret i32 %res
784 }
785 declare i32 @llvm.x86.sse2.ucomile.sd(<2 x double>, <2 x double>) nounwind readnone
786
787
788 define i32 @test_x86_sse2_ucomilt_sd(<2 x double> %a0, <2 x double> %a1) {
789   ; CHECK: vucomisd
790   ; CHECK: sbbl
791   %res = call i32 @llvm.x86.sse2.ucomilt.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
792   ret i32 %res
793 }
794 declare i32 @llvm.x86.sse2.ucomilt.sd(<2 x double>, <2 x double>) nounwind readnone
795
796
797 define i32 @test_x86_sse2_ucomineq_sd(<2 x double> %a0, <2 x double> %a1) {
798   ; CHECK: vucomisd
799   ; CHECK: setne
800   ; CHECK: movzbl
801   %res = call i32 @llvm.x86.sse2.ucomineq.sd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
802   ret i32 %res
803 }
804 declare i32 @llvm.x86.sse2.ucomineq.sd(<2 x double>, <2 x double>) nounwind readnone
805
806
807 define <2 x double> @test_x86_sse3_addsub_pd(<2 x double> %a0, <2 x double> %a1) {
808   ; CHECK: vaddsubpd
809   %res = call <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
810   ret <2 x double> %res
811 }
812 declare <2 x double> @llvm.x86.sse3.addsub.pd(<2 x double>, <2 x double>) nounwind readnone
813
814
815 define <4 x float> @test_x86_sse3_addsub_ps(<4 x float> %a0, <4 x float> %a1) {
816   ; CHECK: vaddsubps
817   %res = call <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
818   ret <4 x float> %res
819 }
820 declare <4 x float> @llvm.x86.sse3.addsub.ps(<4 x float>, <4 x float>) nounwind readnone
821
822
823 define <2 x double> @test_x86_sse3_hadd_pd(<2 x double> %a0, <2 x double> %a1) {
824   ; CHECK: vhaddpd
825   %res = call <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
826   ret <2 x double> %res
827 }
828 declare <2 x double> @llvm.x86.sse3.hadd.pd(<2 x double>, <2 x double>) nounwind readnone
829
830
831 define <4 x float> @test_x86_sse3_hadd_ps(<4 x float> %a0, <4 x float> %a1) {
832   ; CHECK: vhaddps
833   %res = call <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
834   ret <4 x float> %res
835 }
836 declare <4 x float> @llvm.x86.sse3.hadd.ps(<4 x float>, <4 x float>) nounwind readnone
837
838
839 define <2 x double> @test_x86_sse3_hsub_pd(<2 x double> %a0, <2 x double> %a1) {
840   ; CHECK: vhsubpd
841   %res = call <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double> %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
842   ret <2 x double> %res
843 }
844 declare <2 x double> @llvm.x86.sse3.hsub.pd(<2 x double>, <2 x double>) nounwind readnone
845
846
847 define <4 x float> @test_x86_sse3_hsub_ps(<4 x float> %a0, <4 x float> %a1) {
848   ; CHECK: vhsubps
849   %res = call <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
850   ret <4 x float> %res
851 }
852 declare <4 x float> @llvm.x86.sse3.hsub.ps(<4 x float>, <4 x float>) nounwind readnone
853
854
855 define <16 x i8> @test_x86_sse3_ldu_dq(i8* %a0) {
856   ; CHECK: movl
857   ; CHECK: vlddqu
858   %res = call <16 x i8> @llvm.x86.sse3.ldu.dq(i8* %a0) ; <<16 x i8>> [#uses=1]
859   ret <16 x i8> %res
860 }
861 declare <16 x i8> @llvm.x86.sse3.ldu.dq(i8*) nounwind readonly
862
863
864 define <2 x double> @test_x86_sse41_blendpd(<2 x double> %a0, <2 x double> %a1) {
865   ; CHECK: vblendpd
866   %res = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
867   ret <2 x double> %res
868 }
869 declare <2 x double> @llvm.x86.sse41.blendpd(<2 x double>, <2 x double>, i32) nounwind readnone
870
871
872 define <4 x float> @test_x86_sse41_blendps(<4 x float> %a0, <4 x float> %a1) {
873   ; CHECK: vblendps
874   %res = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
875   ret <4 x float> %res
876 }
877 declare <4 x float> @llvm.x86.sse41.blendps(<4 x float>, <4 x float>, i32) nounwind readnone
878
879
880 define <2 x double> @test_x86_sse41_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
881   ; CHECK: vblendvpd
882   %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) ; <<2 x double>> [#uses=1]
883   ret <2 x double> %res
884 }
885 declare <2 x double> @llvm.x86.sse41.blendvpd(<2 x double>, <2 x double>, <2 x double>) nounwind readnone
886
887
888 define <4 x float> @test_x86_sse41_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
889   ; CHECK: vblendvps
890   %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) ; <<4 x float>> [#uses=1]
891   ret <4 x float> %res
892 }
893 declare <4 x float> @llvm.x86.sse41.blendvps(<4 x float>, <4 x float>, <4 x float>) nounwind readnone
894
895
896 define <2 x double> @test_x86_sse41_dppd(<2 x double> %a0, <2 x double> %a1) {
897   ; CHECK: vdppd
898   %res = call <2 x double> @llvm.x86.sse41.dppd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
899   ret <2 x double> %res
900 }
901 declare <2 x double> @llvm.x86.sse41.dppd(<2 x double>, <2 x double>, i32) nounwind readnone
902
903
904 define <4 x float> @test_x86_sse41_dpps(<4 x float> %a0, <4 x float> %a1) {
905   ; CHECK: vdpps
906   %res = call <4 x float> @llvm.x86.sse41.dpps(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
907   ret <4 x float> %res
908 }
909 declare <4 x float> @llvm.x86.sse41.dpps(<4 x float>, <4 x float>, i32) nounwind readnone
910
911
912 define <4 x float> @test_x86_sse41_insertps(<4 x float> %a0, <4 x float> %a1) {
913   ; CHECK: vinsertps
914   %res = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
915   ret <4 x float> %res
916 }
917 declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i32) nounwind readnone
918
919
920
921 define <8 x i16> @test_x86_sse41_mpsadbw(<16 x i8> %a0, <16 x i8> %a1) {
922   ; CHECK: vmpsadbw
923   %res = call <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8> %a0, <16 x i8> %a1, i32 7) ; <<8 x i16>> [#uses=1]
924   ret <8 x i16> %res
925 }
926 declare <8 x i16> @llvm.x86.sse41.mpsadbw(<16 x i8>, <16 x i8>, i32) nounwind readnone
927
928
929 define <8 x i16> @test_x86_sse41_packusdw(<4 x i32> %a0, <4 x i32> %a1) {
930   ; CHECK: vpackusdw
931   %res = call <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32> %a0, <4 x i32> %a1) ; <<8 x i16>> [#uses=1]
932   ret <8 x i16> %res
933 }
934 declare <8 x i16> @llvm.x86.sse41.packusdw(<4 x i32>, <4 x i32>) nounwind readnone
935
936
937 define <16 x i8> @test_x86_sse41_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {
938   ; CHECK: vpblendvb
939   %res = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ; <<16 x i8>> [#uses=1]
940   ret <16 x i8> %res
941 }
942 declare <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
943
944
945 define <8 x i16> @test_x86_sse41_pblendw(<8 x i16> %a0, <8 x i16> %a1) {
946   ; CHECK: vpblendw
947   %res = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 7) ; <<8 x i16>> [#uses=1]
948   ret <8 x i16> %res
949 }
950 declare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i32) nounwind readnone
951
952
953 define <2 x i64> @test_x86_sse41_pcmpeqq(<2 x i64> %a0, <2 x i64> %a1) {
954   ; CHECK: vpcmpeqq
955   %res = call <2 x i64> @llvm.x86.sse41.pcmpeqq(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
956   ret <2 x i64> %res
957 }
958 declare <2 x i64> @llvm.x86.sse41.pcmpeqq(<2 x i64>, <2 x i64>) nounwind readnone
959
960
961 define <8 x i16> @test_x86_sse41_phminposuw(<8 x i16> %a0) {
962   ; CHECK: vphminposuw
963   %res = call <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16> %a0) ; <<8 x i16>> [#uses=1]
964   ret <8 x i16> %res
965 }
966 declare <8 x i16> @llvm.x86.sse41.phminposuw(<8 x i16>) nounwind readnone
967
968
969 define <16 x i8> @test_x86_sse41_pmaxsb(<16 x i8> %a0, <16 x i8> %a1) {
970   ; CHECK: vpmaxsb
971   %res = call <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
972   ret <16 x i8> %res
973 }
974 declare <16 x i8> @llvm.x86.sse41.pmaxsb(<16 x i8>, <16 x i8>) nounwind readnone
975
976
977 define <4 x i32> @test_x86_sse41_pmaxsd(<4 x i32> %a0, <4 x i32> %a1) {
978   ; CHECK: vpmaxsd
979   %res = call <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
980   ret <4 x i32> %res
981 }
982 declare <4 x i32> @llvm.x86.sse41.pmaxsd(<4 x i32>, <4 x i32>) nounwind readnone
983
984
985 define <4 x i32> @test_x86_sse41_pmaxud(<4 x i32> %a0, <4 x i32> %a1) {
986   ; CHECK: vpmaxud
987   %res = call <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
988   ret <4 x i32> %res
989 }
990 declare <4 x i32> @llvm.x86.sse41.pmaxud(<4 x i32>, <4 x i32>) nounwind readnone
991
992
993 define <8 x i16> @test_x86_sse41_pmaxuw(<8 x i16> %a0, <8 x i16> %a1) {
994   ; CHECK: vpmaxuw
995   %res = call <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
996   ret <8 x i16> %res
997 }
998 declare <8 x i16> @llvm.x86.sse41.pmaxuw(<8 x i16>, <8 x i16>) nounwind readnone
999
1000
1001 define <16 x i8> @test_x86_sse41_pminsb(<16 x i8> %a0, <16 x i8> %a1) {
1002   ; CHECK: vpminsb
1003   %res = call <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1004   ret <16 x i8> %res
1005 }
1006 declare <16 x i8> @llvm.x86.sse41.pminsb(<16 x i8>, <16 x i8>) nounwind readnone
1007
1008
1009 define <4 x i32> @test_x86_sse41_pminsd(<4 x i32> %a0, <4 x i32> %a1) {
1010   ; CHECK: vpminsd
1011   %res = call <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1012   ret <4 x i32> %res
1013 }
1014 declare <4 x i32> @llvm.x86.sse41.pminsd(<4 x i32>, <4 x i32>) nounwind readnone
1015
1016
1017 define <4 x i32> @test_x86_sse41_pminud(<4 x i32> %a0, <4 x i32> %a1) {
1018   ; CHECK: vpminud
1019   %res = call <4 x i32> @llvm.x86.sse41.pminud(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1020   ret <4 x i32> %res
1021 }
1022 declare <4 x i32> @llvm.x86.sse41.pminud(<4 x i32>, <4 x i32>) nounwind readnone
1023
1024
1025 define <8 x i16> @test_x86_sse41_pminuw(<8 x i16> %a0, <8 x i16> %a1) {
1026   ; CHECK: vpminuw
1027   %res = call <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1028   ret <8 x i16> %res
1029 }
1030 declare <8 x i16> @llvm.x86.sse41.pminuw(<8 x i16>, <8 x i16>) nounwind readnone
1031
1032
1033 define <4 x i32> @test_x86_sse41_pmovsxbd(<16 x i8> %a0) {
1034   ; CHECK: vpmovsxbd
1035   %res = call <4 x i32> @llvm.x86.sse41.pmovsxbd(<16 x i8> %a0) ; <<4 x i32>> [#uses=1]
1036   ret <4 x i32> %res
1037 }
1038 declare <4 x i32> @llvm.x86.sse41.pmovsxbd(<16 x i8>) nounwind readnone
1039
1040
1041 define <2 x i64> @test_x86_sse41_pmovsxbq(<16 x i8> %a0) {
1042   ; CHECK: vpmovsxbq
1043   %res = call <2 x i64> @llvm.x86.sse41.pmovsxbq(<16 x i8> %a0) ; <<2 x i64>> [#uses=1]
1044   ret <2 x i64> %res
1045 }
1046 declare <2 x i64> @llvm.x86.sse41.pmovsxbq(<16 x i8>) nounwind readnone
1047
1048
1049 define <8 x i16> @test_x86_sse41_pmovsxbw(<16 x i8> %a0) {
1050   ; CHECK: vpmovsxbw
1051   %res = call <8 x i16> @llvm.x86.sse41.pmovsxbw(<16 x i8> %a0) ; <<8 x i16>> [#uses=1]
1052   ret <8 x i16> %res
1053 }
1054 declare <8 x i16> @llvm.x86.sse41.pmovsxbw(<16 x i8>) nounwind readnone
1055
1056
1057 define <2 x i64> @test_x86_sse41_pmovsxdq(<4 x i32> %a0) {
1058   ; CHECK: vpmovsxdq
1059   %res = call <2 x i64> @llvm.x86.sse41.pmovsxdq(<4 x i32> %a0) ; <<2 x i64>> [#uses=1]
1060   ret <2 x i64> %res
1061 }
1062 declare <2 x i64> @llvm.x86.sse41.pmovsxdq(<4 x i32>) nounwind readnone
1063
1064
1065 define <4 x i32> @test_x86_sse41_pmovsxwd(<8 x i16> %a0) {
1066   ; CHECK: vpmovsxwd
1067   %res = call <4 x i32> @llvm.x86.sse41.pmovsxwd(<8 x i16> %a0) ; <<4 x i32>> [#uses=1]
1068   ret <4 x i32> %res
1069 }
1070 declare <4 x i32> @llvm.x86.sse41.pmovsxwd(<8 x i16>) nounwind readnone
1071
1072
1073 define <2 x i64> @test_x86_sse41_pmovsxwq(<8 x i16> %a0) {
1074   ; CHECK: vpmovsxwq
1075   %res = call <2 x i64> @llvm.x86.sse41.pmovsxwq(<8 x i16> %a0) ; <<2 x i64>> [#uses=1]
1076   ret <2 x i64> %res
1077 }
1078 declare <2 x i64> @llvm.x86.sse41.pmovsxwq(<8 x i16>) nounwind readnone
1079
1080
1081 define <4 x i32> @test_x86_sse41_pmovzxbd(<16 x i8> %a0) {
1082   ; CHECK: vpmovzxbd
1083   %res = call <4 x i32> @llvm.x86.sse41.pmovzxbd(<16 x i8> %a0) ; <<4 x i32>> [#uses=1]
1084   ret <4 x i32> %res
1085 }
1086 declare <4 x i32> @llvm.x86.sse41.pmovzxbd(<16 x i8>) nounwind readnone
1087
1088
1089 define <2 x i64> @test_x86_sse41_pmovzxbq(<16 x i8> %a0) {
1090   ; CHECK: vpmovzxbq
1091   %res = call <2 x i64> @llvm.x86.sse41.pmovzxbq(<16 x i8> %a0) ; <<2 x i64>> [#uses=1]
1092   ret <2 x i64> %res
1093 }
1094 declare <2 x i64> @llvm.x86.sse41.pmovzxbq(<16 x i8>) nounwind readnone
1095
1096
1097 define <8 x i16> @test_x86_sse41_pmovzxbw(<16 x i8> %a0) {
1098   ; CHECK: vpmovzxbw
1099   %res = call <8 x i16> @llvm.x86.sse41.pmovzxbw(<16 x i8> %a0) ; <<8 x i16>> [#uses=1]
1100   ret <8 x i16> %res
1101 }
1102 declare <8 x i16> @llvm.x86.sse41.pmovzxbw(<16 x i8>) nounwind readnone
1103
1104
1105 define <2 x i64> @test_x86_sse41_pmovzxdq(<4 x i32> %a0) {
1106   ; CHECK: vpmovzxdq
1107   %res = call <2 x i64> @llvm.x86.sse41.pmovzxdq(<4 x i32> %a0) ; <<2 x i64>> [#uses=1]
1108   ret <2 x i64> %res
1109 }
1110 declare <2 x i64> @llvm.x86.sse41.pmovzxdq(<4 x i32>) nounwind readnone
1111
1112
1113 define <4 x i32> @test_x86_sse41_pmovzxwd(<8 x i16> %a0) {
1114   ; CHECK: vpmovzxwd
1115   %res = call <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16> %a0) ; <<4 x i32>> [#uses=1]
1116   ret <4 x i32> %res
1117 }
1118 declare <4 x i32> @llvm.x86.sse41.pmovzxwd(<8 x i16>) nounwind readnone
1119
1120
1121 define <2 x i64> @test_x86_sse41_pmovzxwq(<8 x i16> %a0) {
1122   ; CHECK: vpmovzxwq
1123   %res = call <2 x i64> @llvm.x86.sse41.pmovzxwq(<8 x i16> %a0) ; <<2 x i64>> [#uses=1]
1124   ret <2 x i64> %res
1125 }
1126 declare <2 x i64> @llvm.x86.sse41.pmovzxwq(<8 x i16>) nounwind readnone
1127
1128
1129 define <2 x i64> @test_x86_sse41_pmuldq(<4 x i32> %a0, <4 x i32> %a1) {
1130   ; CHECK: vpmuldq
1131   %res = call <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32> %a0, <4 x i32> %a1) ; <<2 x i64>> [#uses=1]
1132   ret <2 x i64> %res
1133 }
1134 declare <2 x i64> @llvm.x86.sse41.pmuldq(<4 x i32>, <4 x i32>) nounwind readnone
1135
1136
1137 define i32 @test_x86_sse41_ptestc(<4 x float> %a0, <4 x float> %a1) {
1138   ; CHECK: vptest 
1139   ; CHECK: sbbl
1140   %res = call i32 @llvm.x86.sse41.ptestc(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1141   ret i32 %res
1142 }
1143 declare i32 @llvm.x86.sse41.ptestc(<4 x float>, <4 x float>) nounwind readnone
1144
1145
1146 define i32 @test_x86_sse41_ptestnzc(<4 x float> %a0, <4 x float> %a1) {
1147   ; CHECK: vptest 
1148   ; CHECK: seta
1149   ; CHECK: movzbl
1150   %res = call i32 @llvm.x86.sse41.ptestnzc(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1151   ret i32 %res
1152 }
1153 declare i32 @llvm.x86.sse41.ptestnzc(<4 x float>, <4 x float>) nounwind readnone
1154
1155
1156 define i32 @test_x86_sse41_ptestz(<4 x float> %a0, <4 x float> %a1) {
1157   ; CHECK: vptest 
1158   ; CHECK: sete
1159   ; CHECK: movzbl
1160   %res = call i32 @llvm.x86.sse41.ptestz(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1161   ret i32 %res
1162 }
1163 declare i32 @llvm.x86.sse41.ptestz(<4 x float>, <4 x float>) nounwind readnone
1164
1165
1166 define <2 x double> @test_x86_sse41_round_pd(<2 x double> %a0) {
1167   ; CHECK: vroundpd
1168   %res = call <2 x double> @llvm.x86.sse41.round.pd(<2 x double> %a0, i32 7) ; <<2 x double>> [#uses=1]
1169   ret <2 x double> %res
1170 }
1171 declare <2 x double> @llvm.x86.sse41.round.pd(<2 x double>, i32) nounwind readnone
1172
1173
1174 define <4 x float> @test_x86_sse41_round_ps(<4 x float> %a0) {
1175   ; CHECK: vroundps
1176   %res = call <4 x float> @llvm.x86.sse41.round.ps(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
1177   ret <4 x float> %res
1178 }
1179 declare <4 x float> @llvm.x86.sse41.round.ps(<4 x float>, i32) nounwind readnone
1180
1181
1182 define <2 x double> @test_x86_sse41_round_sd(<2 x double> %a0, <2 x double> %a1) {
1183   ; CHECK: vroundsd
1184   %res = call <2 x double> @llvm.x86.sse41.round.sd(<2 x double> %a0, <2 x double> %a1, i32 7) ; <<2 x double>> [#uses=1]
1185   ret <2 x double> %res
1186 }
1187 declare <2 x double> @llvm.x86.sse41.round.sd(<2 x double>, <2 x double>, i32) nounwind readnone
1188
1189
1190 define <4 x float> @test_x86_sse41_round_ss(<4 x float> %a0, <4 x float> %a1) {
1191   ; CHECK: vroundss
1192   %res = call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %a0, <4 x float> %a1, i32 7) ; <<4 x float>> [#uses=1]
1193   ret <4 x float> %res
1194 }
1195 declare <4 x float> @llvm.x86.sse41.round.ss(<4 x float>, <4 x float>, i32) nounwind readnone
1196
1197
1198 define i32 @test_x86_sse42_pcmpestri128(<16 x i8> %a0, <16 x i8> %a2) {
1199   ; CHECK: movl
1200   ; CHECK: movl
1201   ; CHECK: vpcmpestri
1202   ; CHECK: movl
1203   %res = call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1204   ret i32 %res
1205 }
1206 declare i32 @llvm.x86.sse42.pcmpestri128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1207
1208
1209 define i32 @test_x86_sse42_pcmpestria128(<16 x i8> %a0, <16 x i8> %a2) {
1210   ; CHECK: movl
1211   ; CHECK: movl
1212   ; CHECK: vpcmpestri
1213   ; CHECK: movl
1214   %res = call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1215   ret i32 %res
1216 }
1217 declare i32 @llvm.x86.sse42.pcmpestria128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1218
1219
1220 define i32 @test_x86_sse42_pcmpestric128(<16 x i8> %a0, <16 x i8> %a2) {
1221   ; CHECK: movl
1222   ; CHECK: movl
1223   ; CHECK: vpcmpestri
1224   ; CHECK: movl
1225   %res = call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1226   ret i32 %res
1227 }
1228 declare i32 @llvm.x86.sse42.pcmpestric128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1229
1230
1231 define i32 @test_x86_sse42_pcmpestrio128(<16 x i8> %a0, <16 x i8> %a2) {
1232   ; CHECK: movl
1233   ; CHECK: movl
1234   ; CHECK: vpcmpestri
1235   ; CHECK: movl
1236   %res = call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1237   ret i32 %res
1238 }
1239 declare i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1240
1241
1242 define i32 @test_x86_sse42_pcmpestris128(<16 x i8> %a0, <16 x i8> %a2) {
1243   ; CHECK: movl
1244   ; CHECK: movl
1245   ; CHECK: vpcmpestri
1246   ; CHECK: movl
1247   %res = call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1248   ret i32 %res
1249 }
1250 declare i32 @llvm.x86.sse42.pcmpestris128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1251
1252
1253 define i32 @test_x86_sse42_pcmpestriz128(<16 x i8> %a0, <16 x i8> %a2) {
1254   ; CHECK: movl
1255   ; CHECK: movl
1256   ; CHECK: vpcmpestri
1257   ; CHECK: movl
1258   %res = call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <i32> [#uses=1]
1259   ret i32 %res
1260 }
1261 declare i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1262
1263
1264 define <16 x i8> @test_x86_sse42_pcmpestrm128(<16 x i8> %a0, <16 x i8> %a2) {
1265   ; CHECK: movl
1266   ; CHECK: movl
1267   ; CHECK: vpcmpestrm
1268   %res = call <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8> %a0, i32 7, <16 x i8> %a2, i32 7, i8 7) ; <<16 x i8>> [#uses=1]
1269   ret <16 x i8> %res
1270 }
1271 declare <16 x i8> @llvm.x86.sse42.pcmpestrm128(<16 x i8>, i32, <16 x i8>, i32, i8) nounwind readnone
1272
1273
1274 define <2 x i64> @test_x86_sse42_pcmpgtq(<2 x i64> %a0, <2 x i64> %a1) {
1275   ; CHECK: vpcmpgtq
1276   %res = call <2 x i64> @llvm.x86.sse42.pcmpgtq(<2 x i64> %a0, <2 x i64> %a1) ; <<2 x i64>> [#uses=1]
1277   ret <2 x i64> %res
1278 }
1279 declare <2 x i64> @llvm.x86.sse42.pcmpgtq(<2 x i64>, <2 x i64>) nounwind readnone
1280
1281
1282 define i32 @test_x86_sse42_pcmpistri128(<16 x i8> %a0, <16 x i8> %a1) {
1283   ; CHECK: vpcmpistri
1284   ; CHECK: movl
1285   %res = call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1286   ret i32 %res
1287 }
1288 declare i32 @llvm.x86.sse42.pcmpistri128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1289
1290
1291 define i32 @test_x86_sse42_pcmpistria128(<16 x i8> %a0, <16 x i8> %a1) {
1292   ; CHECK: vpcmpistri
1293   ; CHECK: movl
1294   %res = call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1295   ret i32 %res
1296 }
1297 declare i32 @llvm.x86.sse42.pcmpistria128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1298
1299
1300 define i32 @test_x86_sse42_pcmpistric128(<16 x i8> %a0, <16 x i8> %a1) {
1301   ; CHECK: vpcmpistri
1302   ; CHECK: movl
1303   %res = call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1304   ret i32 %res
1305 }
1306 declare i32 @llvm.x86.sse42.pcmpistric128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1307
1308
1309 define i32 @test_x86_sse42_pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1) {
1310   ; CHECK: vpcmpistri
1311   ; CHECK: movl
1312   %res = call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1313   ret i32 %res
1314 }
1315 declare i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1316
1317
1318 define i32 @test_x86_sse42_pcmpistris128(<16 x i8> %a0, <16 x i8> %a1) {
1319   ; CHECK: vpcmpistri
1320   ; CHECK: movl
1321   %res = call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1322   ret i32 %res
1323 }
1324 declare i32 @llvm.x86.sse42.pcmpistris128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1325
1326
1327 define i32 @test_x86_sse42_pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1) {
1328   ; CHECK: vpcmpistri
1329   ; CHECK: movl
1330   %res = call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <i32> [#uses=1]
1331   ret i32 %res
1332 }
1333 declare i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1334
1335
1336 define <16 x i8> @test_x86_sse42_pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1) {
1337   ; CHECK: vpcmpistrm
1338   %res = call <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8> %a0, <16 x i8> %a1, i8 7) ; <<16 x i8>> [#uses=1]
1339   ret <16 x i8> %res
1340 }
1341 declare <16 x i8> @llvm.x86.sse42.pcmpistrm128(<16 x i8>, <16 x i8>, i8) nounwind readnone
1342
1343
1344 define <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) {
1345   ; CHECK: vaddss
1346   %res = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1347   ret <4 x float> %res
1348 }
1349 declare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
1350
1351
1352 define <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) {
1353   ; CHECK: vcmpordps
1354   %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
1355   ret <4 x float> %res
1356 }
1357 declare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
1358
1359
1360 define <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) {
1361   ; CHECK: vcmpordss
1362   %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
1363   ret <4 x float> %res
1364 }
1365 declare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
1366
1367
1368 define i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) {
1369   ; CHECK: vcomiss
1370   ; CHECK: sete
1371   ; CHECK: movzbl
1372   %res = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1373   ret i32 %res
1374 }
1375 declare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
1376
1377
1378 define i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) {
1379   ; CHECK: vcomiss
1380   ; CHECK: setae
1381   ; CHECK: movzbl
1382   %res = call i32 @llvm.x86.sse.comige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1383   ret i32 %res
1384 }
1385 declare i32 @llvm.x86.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone
1386
1387
1388 define i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) {
1389   ; CHECK: vcomiss
1390   ; CHECK: seta
1391   ; CHECK: movzbl
1392   %res = call i32 @llvm.x86.sse.comigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1393   ret i32 %res
1394 }
1395 declare i32 @llvm.x86.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone
1396
1397
1398 define i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) {
1399   ; CHECK: vcomiss
1400   ; CHECK: setbe
1401   ; CHECK: movzbl
1402   %res = call i32 @llvm.x86.sse.comile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1403   ret i32 %res
1404 }
1405 declare i32 @llvm.x86.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone
1406
1407
1408 define i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) {
1409   ; CHECK: vcomiss
1410   ; CHECK: sbb
1411   %res = call i32 @llvm.x86.sse.comilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1412   ret i32 %res
1413 }
1414 declare i32 @llvm.x86.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone
1415
1416
1417 define i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) {
1418   ; CHECK: vcomiss
1419   ; CHECK: setne
1420   ; CHECK: movzbl
1421   %res = call i32 @llvm.x86.sse.comineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1422   ret i32 %res
1423 }
1424 declare i32 @llvm.x86.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone
1425
1426
1427 define <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) {
1428   ; CHECK: movl
1429   ; CHECK: vcvtsi2ss
1430   %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
1431   ret <4 x float> %res
1432 }
1433 declare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
1434
1435
1436 define i32 @test_x86_sse_cvtss2si(<4 x float> %a0) {
1437   ; CHECK: vcvtss2si
1438   %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1]
1439   ret i32 %res
1440 }
1441 declare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
1442
1443
1444 define i32 @test_x86_sse_cvttss2si(<4 x float> %a0) {
1445   ; CHECK: vcvttss2si
1446   %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1]
1447   ret i32 %res
1448 }
1449 declare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
1450
1451
1452 define <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) {
1453   ; CHECK: vdivss
1454   %res = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1455   ret <4 x float> %res
1456 }
1457 declare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
1458
1459
1460 define void @test_x86_sse_ldmxcsr(i8* %a0) {
1461   ; CHECK: movl
1462   ; CHECK: vldmxcsr
1463   call void @llvm.x86.sse.ldmxcsr(i8* %a0)
1464   ret void
1465 }
1466 declare void @llvm.x86.sse.ldmxcsr(i8*) nounwind
1467
1468
1469
1470 define <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) {
1471   ; CHECK: vmaxps
1472   %res = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1473   ret <4 x float> %res
1474 }
1475 declare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
1476
1477
1478 define <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) {
1479   ; CHECK: vmaxss
1480   %res = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1481   ret <4 x float> %res
1482 }
1483 declare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
1484
1485
1486 define <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) {
1487   ; CHECK: vminps
1488   %res = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1489   ret <4 x float> %res
1490 }
1491 declare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
1492
1493
1494 define <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) {
1495   ; CHECK: vminss
1496   %res = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1497   ret <4 x float> %res
1498 }
1499 declare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
1500
1501
1502 define i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) {
1503   ; CHECK: vmovmskps
1504   %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1]
1505   ret i32 %res
1506 }
1507 declare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone
1508
1509
1510
1511 define <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) {
1512   ; CHECK: vmulss
1513   %res = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1514   ret <4 x float> %res
1515 }
1516 declare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
1517
1518
1519 define <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) {
1520   ; CHECK: vrcpps
1521   %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1522   ret <4 x float> %res
1523 }
1524 declare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
1525
1526
1527 define <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) {
1528   ; CHECK: vrcpss
1529   %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1530   ret <4 x float> %res
1531 }
1532 declare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone
1533
1534
1535 define <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) {
1536   ; CHECK: vrsqrtps
1537   %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1538   ret <4 x float> %res
1539 }
1540 declare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
1541
1542
1543 define <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) {
1544   ; CHECK: vrsqrtss
1545   %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1546   ret <4 x float> %res
1547 }
1548 declare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone
1549
1550
1551 define <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) {
1552   ; CHECK: vsqrtps
1553   %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1554   ret <4 x float> %res
1555 }
1556 declare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
1557
1558
1559 define <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) {
1560   ; CHECK: vsqrtss
1561   %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
1562   ret <4 x float> %res
1563 }
1564 declare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
1565
1566
1567 define void @test_x86_sse_stmxcsr(i8* %a0) {
1568   ; CHECK: movl
1569   ; CHECK: vstmxcsr
1570   call void @llvm.x86.sse.stmxcsr(i8* %a0)
1571   ret void
1572 }
1573 declare void @llvm.x86.sse.stmxcsr(i8*) nounwind
1574
1575
1576 define void @test_x86_sse_storeu_ps(i8* %a0, <4 x float> %a1) {
1577   ; CHECK: movl
1578   ; CHECK: vmovups
1579   call void @llvm.x86.sse.storeu.ps(i8* %a0, <4 x float> %a1)
1580   ret void
1581 }
1582 declare void @llvm.x86.sse.storeu.ps(i8*, <4 x float>) nounwind
1583
1584
1585 define <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) {
1586   ; CHECK: vsubss
1587   %res = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1588   ret <4 x float> %res
1589 }
1590 declare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
1591
1592
1593 define i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) {
1594   ; CHECK: vucomiss
1595   ; CHECK: sete
1596   ; CHECK: movzbl
1597   %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1598   ret i32 %res
1599 }
1600 declare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
1601
1602
1603 define i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) {
1604   ; CHECK: vucomiss
1605   ; CHECK: setae
1606   ; CHECK: movzbl
1607   %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1608   ret i32 %res
1609 }
1610 declare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone
1611
1612
1613 define i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) {
1614   ; CHECK: vucomiss
1615   ; CHECK: seta
1616   ; CHECK: movzbl
1617   %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1618   ret i32 %res
1619 }
1620 declare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone
1621
1622
1623 define i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) {
1624   ; CHECK: vucomiss
1625   ; CHECK: setbe
1626   ; CHECK: movzbl
1627   %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1628   ret i32 %res
1629 }
1630 declare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone
1631
1632
1633 define i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) {
1634   ; CHECK: vucomiss
1635   ; CHECK: sbbl
1636   %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1637   ret i32 %res
1638 }
1639 declare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone
1640
1641
1642 define i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) {
1643   ; CHECK: vucomiss
1644   ; CHECK: setne
1645   ; CHECK: movzbl
1646   %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
1647   ret i32 %res
1648 }
1649 declare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone
1650
1651
1652 define <16 x i8> @test_x86_ssse3_pabs_b_128(<16 x i8> %a0) {
1653   ; CHECK: vpabsb
1654   %res = call <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8> %a0) ; <<16 x i8>> [#uses=1]
1655   ret <16 x i8> %res
1656 }
1657 declare <16 x i8> @llvm.x86.ssse3.pabs.b.128(<16 x i8>) nounwind readnone
1658
1659
1660 define <4 x i32> @test_x86_ssse3_pabs_d_128(<4 x i32> %a0) {
1661   ; CHECK: vpabsd
1662   %res = call <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32> %a0) ; <<4 x i32>> [#uses=1]
1663   ret <4 x i32> %res
1664 }
1665 declare <4 x i32> @llvm.x86.ssse3.pabs.d.128(<4 x i32>) nounwind readnone
1666
1667
1668 define <8 x i16> @test_x86_ssse3_pabs_w_128(<8 x i16> %a0) {
1669   ; CHECK: vpabsw
1670   %res = call <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16> %a0) ; <<8 x i16>> [#uses=1]
1671   ret <8 x i16> %res
1672 }
1673 declare <8 x i16> @llvm.x86.ssse3.pabs.w.128(<8 x i16>) nounwind readnone
1674
1675
1676 define <4 x i32> @test_x86_ssse3_phadd_d_128(<4 x i32> %a0, <4 x i32> %a1) {
1677   ; CHECK: vphaddd
1678   %res = call <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1679   ret <4 x i32> %res
1680 }
1681 declare <4 x i32> @llvm.x86.ssse3.phadd.d.128(<4 x i32>, <4 x i32>) nounwind readnone
1682
1683
1684 define <8 x i16> @test_x86_ssse3_phadd_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
1685   ; CHECK: vphaddsw
1686   %res = call <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1687   ret <8 x i16> %res
1688 }
1689 declare <8 x i16> @llvm.x86.ssse3.phadd.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
1690
1691
1692 define <8 x i16> @test_x86_ssse3_phadd_w_128(<8 x i16> %a0, <8 x i16> %a1) {
1693   ; CHECK: vphaddw
1694   %res = call <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1695   ret <8 x i16> %res
1696 }
1697 declare <8 x i16> @llvm.x86.ssse3.phadd.w.128(<8 x i16>, <8 x i16>) nounwind readnone
1698
1699
1700 define <4 x i32> @test_x86_ssse3_phsub_d_128(<4 x i32> %a0, <4 x i32> %a1) {
1701   ; CHECK: vphsubd
1702   %res = call <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1703   ret <4 x i32> %res
1704 }
1705 declare <4 x i32> @llvm.x86.ssse3.phsub.d.128(<4 x i32>, <4 x i32>) nounwind readnone
1706
1707
1708 define <8 x i16> @test_x86_ssse3_phsub_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
1709   ; CHECK: vphsubsw
1710   %res = call <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1711   ret <8 x i16> %res
1712 }
1713 declare <8 x i16> @llvm.x86.ssse3.phsub.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
1714
1715
1716 define <8 x i16> @test_x86_ssse3_phsub_w_128(<8 x i16> %a0, <8 x i16> %a1) {
1717   ; CHECK: vphsubw
1718   %res = call <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1719   ret <8 x i16> %res
1720 }
1721 declare <8 x i16> @llvm.x86.ssse3.phsub.w.128(<8 x i16>, <8 x i16>) nounwind readnone
1722
1723
1724 define <8 x i16> @test_x86_ssse3_pmadd_ub_sw_128(<16 x i8> %a0, <16 x i8> %a1) {
1725   ; CHECK: vpmaddubsw
1726   %res = call <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8> %a0, <16 x i8> %a1) ; <<8 x i16>> [#uses=1]
1727   ret <8 x i16> %res
1728 }
1729 declare <8 x i16> @llvm.x86.ssse3.pmadd.ub.sw.128(<16 x i8>, <16 x i8>) nounwind readnone
1730
1731
1732 define <8 x i16> @test_x86_ssse3_pmul_hr_sw_128(<8 x i16> %a0, <8 x i16> %a1) {
1733   ; CHECK: vpmulhrsw
1734   %res = call <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1735   ret <8 x i16> %res
1736 }
1737 declare <8 x i16> @llvm.x86.ssse3.pmul.hr.sw.128(<8 x i16>, <8 x i16>) nounwind readnone
1738
1739
1740 define <16 x i8> @test_x86_ssse3_pshuf_b_128(<16 x i8> %a0, <16 x i8> %a1) {
1741   ; CHECK: vpshufb
1742   %res = call <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1743   ret <16 x i8> %res
1744 }
1745 declare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>) nounwind readnone
1746
1747
1748 define <16 x i8> @test_x86_ssse3_psign_b_128(<16 x i8> %a0, <16 x i8> %a1) {
1749   ; CHECK: vpsignb
1750   %res = call <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8> %a0, <16 x i8> %a1) ; <<16 x i8>> [#uses=1]
1751   ret <16 x i8> %res
1752 }
1753 declare <16 x i8> @llvm.x86.ssse3.psign.b.128(<16 x i8>, <16 x i8>) nounwind readnone
1754
1755
1756 define <4 x i32> @test_x86_ssse3_psign_d_128(<4 x i32> %a0, <4 x i32> %a1) {
1757   ; CHECK: vpsignd
1758   %res = call <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32> %a0, <4 x i32> %a1) ; <<4 x i32>> [#uses=1]
1759   ret <4 x i32> %res
1760 }
1761 declare <4 x i32> @llvm.x86.ssse3.psign.d.128(<4 x i32>, <4 x i32>) nounwind readnone
1762
1763
1764 define <8 x i16> @test_x86_ssse3_psign_w_128(<8 x i16> %a0, <8 x i16> %a1) {
1765   ; CHECK: vpsignw
1766   %res = call <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16> %a0, <8 x i16> %a1) ; <<8 x i16>> [#uses=1]
1767   ret <8 x i16> %res
1768 }
1769 declare <8 x i16> @llvm.x86.ssse3.psign.w.128(<8 x i16>, <8 x i16>) nounwind readnone
1770
1771
1772 define <4 x double> @test_x86_avx_addsub_pd_256(<4 x double> %a0, <4 x double> %a1) {
1773   ; CHECK: vaddsubpd
1774   %res = call <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
1775   ret <4 x double> %res
1776 }
1777 declare <4 x double> @llvm.x86.avx.addsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
1778
1779
1780 define <8 x float> @test_x86_avx_addsub_ps_256(<8 x float> %a0, <8 x float> %a1) {
1781   ; CHECK: vaddsubps
1782   %res = call <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
1783   ret <8 x float> %res
1784 }
1785 declare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
1786
1787
1788 define <4 x double> @test_x86_avx_blend_pd_256(<4 x double> %a0, <4 x double> %a1) {
1789   ; CHECK: vblendpd
1790   %res = call <4 x double> @llvm.x86.avx.blend.pd.256(<4 x double> %a0, <4 x double> %a1, i32 7) ; <<4 x double>> [#uses=1]
1791   ret <4 x double> %res
1792 }
1793 declare <4 x double> @llvm.x86.avx.blend.pd.256(<4 x double>, <4 x double>, i32) nounwind readnone
1794
1795
1796 define <8 x float> @test_x86_avx_blend_ps_256(<8 x float> %a0, <8 x float> %a1) {
1797   ; CHECK: vblendps
1798   %res = call <8 x float> @llvm.x86.avx.blend.ps.256(<8 x float> %a0, <8 x float> %a1, i32 7) ; <<8 x float>> [#uses=1]
1799   ret <8 x float> %res
1800 }
1801 declare <8 x float> @llvm.x86.avx.blend.ps.256(<8 x float>, <8 x float>, i32) nounwind readnone
1802
1803
1804 define <4 x double> @test_x86_avx_blendv_pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) {
1805   ; CHECK: vblendvpd
1806   %res = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) ; <<4 x double>> [#uses=1]
1807   ret <4 x double> %res
1808 }
1809 declare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4 x double>) nounwind readnone
1810
1811
1812 define <8 x float> @test_x86_avx_blendv_ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {
1813   ; CHECK: vblendvps
1814   %res = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) ; <<8 x float>> [#uses=1]
1815   ret <8 x float> %res
1816 }
1817 declare <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float>, <8 x float>, <8 x float>) nounwind readnone
1818
1819
1820 define <4 x double> @test_x86_avx_cmp_pd_256(<4 x double> %a0, <4 x double> %a1) {
1821   ; CHECK: vcmpordpd
1822   %res = call <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1]
1823   ret <4 x double> %res
1824 }
1825 declare <4 x double> @llvm.x86.avx.cmp.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
1826
1827
1828 define <8 x float> @test_x86_avx_cmp_ps_256(<8 x float> %a0, <8 x float> %a1) {
1829   ; CHECK: vcmpordps
1830   %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
1831   ret <8 x float> %res
1832 }
1833 declare <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
1834
1835
1836 define <4 x float> @test_x86_avx_cvt_pd2_ps_256(<4 x double> %a0) {
1837   ; CHECK: vcvtpd2psy
1838   %res = call <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double> %a0) ; <<4 x float>> [#uses=1]
1839   ret <4 x float> %res
1840 }
1841 declare <4 x float> @llvm.x86.avx.cvt.pd2.ps.256(<4 x double>) nounwind readnone
1842
1843
1844 define <4 x i32> @test_x86_avx_cvt_pd2dq_256(<4 x double> %a0) {
1845   ; CHECK: vcvtpd2dqy
1846   %res = call <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double> %a0) ; <<4 x i32>> [#uses=1]
1847   ret <4 x i32> %res
1848 }
1849 declare <4 x i32> @llvm.x86.avx.cvt.pd2dq.256(<4 x double>) nounwind readnone
1850
1851
1852 define <4 x double> @test_x86_avx_cvt_ps2_pd_256(<4 x float> %a0) {
1853   ; CHECK: vcvtps2pd
1854   %res = call <4 x double> @llvm.x86.avx.cvt.ps2.pd.256(<4 x float> %a0) ; <<4 x double>> [#uses=1]
1855   ret <4 x double> %res
1856 }
1857 declare <4 x double> @llvm.x86.avx.cvt.ps2.pd.256(<4 x float>) nounwind readnone
1858
1859
1860 define <8 x i32> @test_x86_avx_cvt_ps2dq_256(<8 x float> %a0) {
1861   ; CHECK: vcvtps2dq
1862   %res = call <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float> %a0) ; <<8 x i32>> [#uses=1]
1863   ret <8 x i32> %res
1864 }
1865 declare <8 x i32> @llvm.x86.avx.cvt.ps2dq.256(<8 x float>) nounwind readnone
1866
1867
1868 define <4 x double> @test_x86_avx_cvtdq2_pd_256(<4 x i32> %a0) {
1869   ; CHECK: vcvtdq2pd
1870   %res = call <4 x double> @llvm.x86.avx.cvtdq2.pd.256(<4 x i32> %a0) ; <<4 x double>> [#uses=1]
1871   ret <4 x double> %res
1872 }
1873 declare <4 x double> @llvm.x86.avx.cvtdq2.pd.256(<4 x i32>) nounwind readnone
1874
1875
1876 define <8 x float> @test_x86_avx_cvtdq2_ps_256(<8 x i32> %a0) {
1877   ; CHECK: vcvtdq2ps
1878   %res = call <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32> %a0) ; <<8 x float>> [#uses=1]
1879   ret <8 x float> %res
1880 }
1881 declare <8 x float> @llvm.x86.avx.cvtdq2.ps.256(<8 x i32>) nounwind readnone
1882
1883
1884 define <4 x i32> @test_x86_avx_cvtt_pd2dq_256(<4 x double> %a0) {
1885   ; CHECK: vcvttpd2dqy
1886   %res = call <4 x i32> @llvm.x86.avx.cvtt.pd2dq.256(<4 x double> %a0) ; <<4 x i32>> [#uses=1]
1887   ret <4 x i32> %res
1888 }
1889 declare <4 x i32> @llvm.x86.avx.cvtt.pd2dq.256(<4 x double>) nounwind readnone
1890
1891
1892 define <8 x i32> @test_x86_avx_cvtt_ps2dq_256(<8 x float> %a0) {
1893   ; CHECK: vcvttps2dq
1894   %res = call <8 x i32> @llvm.x86.avx.cvtt.ps2dq.256(<8 x float> %a0) ; <<8 x i32>> [#uses=1]
1895   ret <8 x i32> %res
1896 }
1897 declare <8 x i32> @llvm.x86.avx.cvtt.ps2dq.256(<8 x float>) nounwind readnone
1898
1899
1900 define <8 x float> @test_x86_avx_dp_ps_256(<8 x float> %a0, <8 x float> %a1) {
1901   ; CHECK: vdpps
1902   %res = call <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float> %a0, <8 x float> %a1, i32 7) ; <<8 x float>> [#uses=1]
1903   ret <8 x float> %res
1904 }
1905 declare <8 x float> @llvm.x86.avx.dp.ps.256(<8 x float>, <8 x float>, i32) nounwind readnone
1906
1907
1908 define <4 x double> @test_x86_avx_hadd_pd_256(<4 x double> %a0, <4 x double> %a1) {
1909   ; CHECK: vhaddpd
1910   %res = call <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
1911   ret <4 x double> %res
1912 }
1913 declare <4 x double> @llvm.x86.avx.hadd.pd.256(<4 x double>, <4 x double>) nounwind readnone
1914
1915
1916 define <8 x float> @test_x86_avx_hadd_ps_256(<8 x float> %a0, <8 x float> %a1) {
1917   ; CHECK: vhaddps
1918   %res = call <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
1919   ret <8 x float> %res
1920 }
1921 declare <8 x float> @llvm.x86.avx.hadd.ps.256(<8 x float>, <8 x float>) nounwind readnone
1922
1923
1924 define <4 x double> @test_x86_avx_hsub_pd_256(<4 x double> %a0, <4 x double> %a1) {
1925   ; CHECK: vhsubpd
1926   %res = call <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
1927   ret <4 x double> %res
1928 }
1929 declare <4 x double> @llvm.x86.avx.hsub.pd.256(<4 x double>, <4 x double>) nounwind readnone
1930
1931
1932 define <8 x float> @test_x86_avx_hsub_ps_256(<8 x float> %a0, <8 x float> %a1) {
1933   ; CHECK: vhsubps
1934   %res = call <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
1935   ret <8 x float> %res
1936 }
1937 declare <8 x float> @llvm.x86.avx.hsub.ps.256(<8 x float>, <8 x float>) nounwind readnone
1938
1939
1940 define <32 x i8> @test_x86_avx_ldu_dq_256(i8* %a0) {
1941   ; CHECK: vlddqu
1942   %res = call <32 x i8> @llvm.x86.avx.ldu.dq.256(i8* %a0) ; <<32 x i8>> [#uses=1]
1943   ret <32 x i8> %res
1944 }
1945 declare <32 x i8> @llvm.x86.avx.ldu.dq.256(i8*) nounwind readonly
1946
1947
1948 define <2 x double> @test_x86_avx_maskload_pd(i8* %a0, <2 x double> %a1) {
1949   ; CHECK: vmaskmovpd
1950   %res = call <2 x double> @llvm.x86.avx.maskload.pd(i8* %a0, <2 x double> %a1) ; <<2 x double>> [#uses=1]
1951   ret <2 x double> %res
1952 }
1953 declare <2 x double> @llvm.x86.avx.maskload.pd(i8*, <2 x double>) nounwind readonly
1954
1955
1956 define <4 x double> @test_x86_avx_maskload_pd_256(i8* %a0, <4 x double> %a1) {
1957   ; CHECK: vmaskmovpd
1958   %res = call <4 x double> @llvm.x86.avx.maskload.pd.256(i8* %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
1959   ret <4 x double> %res
1960 }
1961 declare <4 x double> @llvm.x86.avx.maskload.pd.256(i8*, <4 x double>) nounwind readonly
1962
1963
1964 define <4 x float> @test_x86_avx_maskload_ps(i8* %a0, <4 x float> %a1) {
1965   ; CHECK: vmaskmovps
1966   %res = call <4 x float> @llvm.x86.avx.maskload.ps(i8* %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
1967   ret <4 x float> %res
1968 }
1969 declare <4 x float> @llvm.x86.avx.maskload.ps(i8*, <4 x float>) nounwind readonly
1970
1971
1972 define <8 x float> @test_x86_avx_maskload_ps_256(i8* %a0, <8 x float> %a1) {
1973   ; CHECK: vmaskmovps
1974   %res = call <8 x float> @llvm.x86.avx.maskload.ps.256(i8* %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
1975   ret <8 x float> %res
1976 }
1977 declare <8 x float> @llvm.x86.avx.maskload.ps.256(i8*, <8 x float>) nounwind readonly
1978
1979
1980 define void @test_x86_avx_maskstore_pd(i8* %a0, <2 x double> %a1, <2 x double> %a2) {
1981   ; CHECK: vmaskmovpd
1982   call void @llvm.x86.avx.maskstore.pd(i8* %a0, <2 x double> %a1, <2 x double> %a2)
1983   ret void
1984 }
1985 declare void @llvm.x86.avx.maskstore.pd(i8*, <2 x double>, <2 x double>) nounwind
1986
1987
1988 define void @test_x86_avx_maskstore_pd_256(i8* %a0, <4 x double> %a1, <4 x double> %a2) {
1989   ; CHECK: vmaskmovpd
1990   call void @llvm.x86.avx.maskstore.pd.256(i8* %a0, <4 x double> %a1, <4 x double> %a2)
1991   ret void
1992 }
1993 declare void @llvm.x86.avx.maskstore.pd.256(i8*, <4 x double>, <4 x double>) nounwind
1994
1995
1996 define void @test_x86_avx_maskstore_ps(i8* %a0, <4 x float> %a1, <4 x float> %a2) {
1997   ; CHECK: vmaskmovps
1998   call void @llvm.x86.avx.maskstore.ps(i8* %a0, <4 x float> %a1, <4 x float> %a2)
1999   ret void
2000 }
2001 declare void @llvm.x86.avx.maskstore.ps(i8*, <4 x float>, <4 x float>) nounwind
2002
2003
2004 define void @test_x86_avx_maskstore_ps_256(i8* %a0, <8 x float> %a1, <8 x float> %a2) {
2005   ; CHECK: vmaskmovps
2006   call void @llvm.x86.avx.maskstore.ps.256(i8* %a0, <8 x float> %a1, <8 x float> %a2)
2007   ret void
2008 }
2009 declare void @llvm.x86.avx.maskstore.ps.256(i8*, <8 x float>, <8 x float>) nounwind
2010
2011
2012 define <4 x double> @test_x86_avx_max_pd_256(<4 x double> %a0, <4 x double> %a1) {
2013   ; CHECK: vmaxpd
2014   %res = call <4 x double> @llvm.x86.avx.max.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
2015   ret <4 x double> %res
2016 }
2017 declare <4 x double> @llvm.x86.avx.max.pd.256(<4 x double>, <4 x double>) nounwind readnone
2018
2019
2020 define <8 x float> @test_x86_avx_max_ps_256(<8 x float> %a0, <8 x float> %a1) {
2021   ; CHECK: vmaxps
2022   %res = call <8 x float> @llvm.x86.avx.max.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
2023   ret <8 x float> %res
2024 }
2025 declare <8 x float> @llvm.x86.avx.max.ps.256(<8 x float>, <8 x float>) nounwind readnone
2026
2027
2028 define <4 x double> @test_x86_avx_min_pd_256(<4 x double> %a0, <4 x double> %a1) {
2029   ; CHECK: vminpd
2030   %res = call <4 x double> @llvm.x86.avx.min.pd.256(<4 x double> %a0, <4 x double> %a1) ; <<4 x double>> [#uses=1]
2031   ret <4 x double> %res
2032 }
2033 declare <4 x double> @llvm.x86.avx.min.pd.256(<4 x double>, <4 x double>) nounwind readnone
2034
2035
2036 define <8 x float> @test_x86_avx_min_ps_256(<8 x float> %a0, <8 x float> %a1) {
2037   ; CHECK: vminps
2038   %res = call <8 x float> @llvm.x86.avx.min.ps.256(<8 x float> %a0, <8 x float> %a1) ; <<8 x float>> [#uses=1]
2039   ret <8 x float> %res
2040 }
2041 declare <8 x float> @llvm.x86.avx.min.ps.256(<8 x float>, <8 x float>) nounwind readnone
2042
2043
2044 define i32 @test_x86_avx_movmsk_pd_256(<4 x double> %a0) {
2045   ; CHECK: vmovmskpd
2046   %res = call i32 @llvm.x86.avx.movmsk.pd.256(<4 x double> %a0) ; <i32> [#uses=1]
2047   ret i32 %res
2048 }
2049 declare i32 @llvm.x86.avx.movmsk.pd.256(<4 x double>) nounwind readnone
2050
2051
2052 define i32 @test_x86_avx_movmsk_ps_256(<8 x float> %a0) {
2053   ; CHECK: vmovmskps
2054   %res = call i32 @llvm.x86.avx.movmsk.ps.256(<8 x float> %a0) ; <i32> [#uses=1]
2055   ret i32 %res
2056 }
2057 declare i32 @llvm.x86.avx.movmsk.ps.256(<8 x float>) nounwind readnone
2058
2059
2060
2061
2062
2063
2064
2065 define i32 @test_x86_avx_ptestc_256(<4 x i64> %a0, <4 x i64> %a1) {
2066   ; CHECK: vptest
2067   ; CHECK: sbbl
2068   %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
2069   ret i32 %res
2070 }
2071 declare i32 @llvm.x86.avx.ptestc.256(<4 x i64>, <4 x i64>) nounwind readnone
2072
2073
2074 define i32 @test_x86_avx_ptestnzc_256(<4 x i64> %a0, <4 x i64> %a1) {
2075   ; CHECK: vptest
2076   ; CHECK: seta
2077   ; CHECK: movzbl
2078   %res = call i32 @llvm.x86.avx.ptestnzc.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
2079   ret i32 %res
2080 }
2081 declare i32 @llvm.x86.avx.ptestnzc.256(<4 x i64>, <4 x i64>) nounwind readnone
2082
2083
2084 define i32 @test_x86_avx_ptestz_256(<4 x i64> %a0, <4 x i64> %a1) {
2085   ; CHECK: vptest
2086   ; CHECK: sete
2087   ; CHECK: movzbl
2088   %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a0, <4 x i64> %a1) ; <i32> [#uses=1]
2089   ret i32 %res
2090 }
2091 declare i32 @llvm.x86.avx.ptestz.256(<4 x i64>, <4 x i64>) nounwind readnone
2092
2093
2094 define <8 x float> @test_x86_avx_rcp_ps_256(<8 x float> %a0) {
2095   ; CHECK: vrcpps
2096   %res = call <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
2097   ret <8 x float> %res
2098 }
2099 declare <8 x float> @llvm.x86.avx.rcp.ps.256(<8 x float>) nounwind readnone
2100
2101
2102 define <4 x double> @test_x86_avx_round_pd_256(<4 x double> %a0) {
2103   ; CHECK: vroundpd
2104   %res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7) ; <<4 x double>> [#uses=1]
2105   ret <4 x double> %res
2106 }
2107 declare <4 x double> @llvm.x86.avx.round.pd.256(<4 x double>, i32) nounwind readnone
2108
2109
2110 define <8 x float> @test_x86_avx_round_ps_256(<8 x float> %a0) {
2111   ; CHECK: vroundps
2112   %res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7) ; <<8 x float>> [#uses=1]
2113   ret <8 x float> %res
2114 }
2115 declare <8 x float> @llvm.x86.avx.round.ps.256(<8 x float>, i32) nounwind readnone
2116
2117
2118 define <8 x float> @test_x86_avx_rsqrt_ps_256(<8 x float> %a0) {
2119   ; CHECK: vrsqrtps
2120   %res = call <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
2121   ret <8 x float> %res
2122 }
2123 declare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
2124
2125
2126 define <4 x double> @test_x86_avx_sqrt_pd_256(<4 x double> %a0) {
2127   ; CHECK: vsqrtpd
2128   %res = call <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double> %a0) ; <<4 x double>> [#uses=1]
2129   ret <4 x double> %res
2130 }
2131 declare <4 x double> @llvm.x86.avx.sqrt.pd.256(<4 x double>) nounwind readnone
2132
2133
2134 define <8 x float> @test_x86_avx_sqrt_ps_256(<8 x float> %a0) {
2135   ; CHECK: vsqrtps
2136   %res = call <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float> %a0) ; <<8 x float>> [#uses=1]
2137   ret <8 x float> %res
2138 }
2139 declare <8 x float> @llvm.x86.avx.sqrt.ps.256(<8 x float>) nounwind readnone
2140
2141
2142 define void @test_x86_avx_storeu_dq_256(i8* %a0, <32 x i8> %a1) {
2143   ; FIXME: unfortunately the execution domain fix pass changes this to vmovups and its hard to force with no 256-bit integer instructions
2144   ; CHECK: vmovups
2145   ; add operation forces the execution domain.
2146   %a2 = add <32 x i8> %a1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
2147   call void @llvm.x86.avx.storeu.dq.256(i8* %a0, <32 x i8> %a2)
2148   ret void
2149 }
2150 declare void @llvm.x86.avx.storeu.dq.256(i8*, <32 x i8>) nounwind
2151
2152
2153 define void @test_x86_avx_storeu_pd_256(i8* %a0, <4 x double> %a1) {
2154   ; CHECK: vmovupd
2155   ; add operation forces the execution domain.
2156   %a2 = fadd <4 x double> %a1, <double 0x0, double 0x0, double 0x0, double 0x0>
2157   call void @llvm.x86.avx.storeu.pd.256(i8* %a0, <4 x double> %a2)
2158   ret void
2159 }
2160 declare void @llvm.x86.avx.storeu.pd.256(i8*, <4 x double>) nounwind
2161
2162
2163 define void @test_x86_avx_storeu_ps_256(i8* %a0, <8 x float> %a1) {
2164   ; CHECK: vmovups
2165   call void @llvm.x86.avx.storeu.ps.256(i8* %a0, <8 x float> %a1)
2166   ret void
2167 }
2168 declare void @llvm.x86.avx.storeu.ps.256(i8*, <8 x float>) nounwind
2169
2170
2171 define <4 x double> @test_x86_avx_vbroadcast_sd_256(i8* %a0) {
2172   ; CHECK: vbroadcastsd
2173   %res = call <4 x double> @llvm.x86.avx.vbroadcast.sd.256(i8* %a0) ; <<4 x double>> [#uses=1]
2174   ret <4 x double> %res
2175 }
2176 declare <4 x double> @llvm.x86.avx.vbroadcast.sd.256(i8*) nounwind readonly
2177
2178
2179 define <4 x double> @test_x86_avx_vbroadcastf128_pd_256(i8* %a0) {
2180   ; CHECK: vbroadcastf128
2181   %res = call <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8* %a0) ; <<4 x double>> [#uses=1]
2182   ret <4 x double> %res
2183 }
2184 declare <4 x double> @llvm.x86.avx.vbroadcastf128.pd.256(i8*) nounwind readonly
2185
2186
2187 define <8 x float> @test_x86_avx_vbroadcastf128_ps_256(i8* %a0) {
2188   ; CHECK: vbroadcastf128
2189   %res = call <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8* %a0) ; <<8 x float>> [#uses=1]
2190   ret <8 x float> %res
2191 }
2192 declare <8 x float> @llvm.x86.avx.vbroadcastf128.ps.256(i8*) nounwind readonly
2193
2194
2195 define <4 x float> @test_x86_avx_vbroadcast_ss(i8* %a0) {
2196   ; CHECK: vbroadcastss
2197   %res = call <4 x float> @llvm.x86.avx.vbroadcast.ss(i8* %a0) ; <<4 x float>> [#uses=1]
2198   ret <4 x float> %res
2199 }
2200 declare <4 x float> @llvm.x86.avx.vbroadcast.ss(i8*) nounwind readonly
2201
2202
2203 define <8 x float> @test_x86_avx_vbroadcast_ss_256(i8* %a0) {
2204   ; CHECK: vbroadcastss
2205   %res = call <8 x float> @llvm.x86.avx.vbroadcast.ss.256(i8* %a0) ; <<8 x float>> [#uses=1]
2206   ret <8 x float> %res
2207 }
2208 declare <8 x float> @llvm.x86.avx.vbroadcast.ss.256(i8*) nounwind readonly
2209
2210
2211 define <2 x double> @test_x86_avx_vextractf128_pd_256(<4 x double> %a0) {
2212   ; CHECK: vextractf128
2213   %res = call <2 x double> @llvm.x86.avx.vextractf128.pd.256(<4 x double> %a0, i8 7) ; <<2 x double>> [#uses=1]
2214   ret <2 x double> %res
2215 }
2216 declare <2 x double> @llvm.x86.avx.vextractf128.pd.256(<4 x double>, i8) nounwind readnone
2217
2218
2219 define <4 x float> @test_x86_avx_vextractf128_ps_256(<8 x float> %a0) {
2220   ; CHECK: vextractf128
2221   %res = call <4 x float> @llvm.x86.avx.vextractf128.ps.256(<8 x float> %a0, i8 7) ; <<4 x float>> [#uses=1]
2222   ret <4 x float> %res
2223 }
2224 declare <4 x float> @llvm.x86.avx.vextractf128.ps.256(<8 x float>, i8) nounwind readnone
2225
2226
2227 define <4 x i32> @test_x86_avx_vextractf128_si_256(<8 x i32> %a0) {
2228   ; CHECK: vextractf128
2229   %res = call <4 x i32> @llvm.x86.avx.vextractf128.si.256(<8 x i32> %a0, i8 7) ; <<4 x i32>> [#uses=1]
2230   ret <4 x i32> %res
2231 }
2232 declare <4 x i32> @llvm.x86.avx.vextractf128.si.256(<8 x i32>, i8) nounwind readnone
2233
2234
2235 define <4 x double> @test_x86_avx_vinsertf128_pd_256(<4 x double> %a0, <2 x double> %a1) {
2236   ; CHECK: vinsertf128
2237   %res = call <4 x double> @llvm.x86.avx.vinsertf128.pd.256(<4 x double> %a0, <2 x double> %a1, i8 7) ; <<4 x double>> [#uses=1]
2238   ret <4 x double> %res
2239 }
2240 declare <4 x double> @llvm.x86.avx.vinsertf128.pd.256(<4 x double>, <2 x double>, i8) nounwind readnone
2241
2242
2243 define <8 x float> @test_x86_avx_vinsertf128_ps_256(<8 x float> %a0, <4 x float> %a1) {
2244   ; CHECK: vinsertf128
2245   %res = call <8 x float> @llvm.x86.avx.vinsertf128.ps.256(<8 x float> %a0, <4 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
2246   ret <8 x float> %res
2247 }
2248 declare <8 x float> @llvm.x86.avx.vinsertf128.ps.256(<8 x float>, <4 x float>, i8) nounwind readnone
2249
2250
2251 define <8 x i32> @test_x86_avx_vinsertf128_si_256(<8 x i32> %a0, <4 x i32> %a1) {
2252   ; CHECK: vinsertf128
2253   %res = call <8 x i32> @llvm.x86.avx.vinsertf128.si.256(<8 x i32> %a0, <4 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1]
2254   ret <8 x i32> %res
2255 }
2256 declare <8 x i32> @llvm.x86.avx.vinsertf128.si.256(<8 x i32>, <4 x i32>, i8) nounwind readnone
2257
2258
2259 define <4 x double> @test_x86_avx_vperm2f128_pd_256(<4 x double> %a0, <4 x double> %a1) {
2260   ; CHECK: vperm2f128
2261   %res = call <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double> %a0, <4 x double> %a1, i8 7) ; <<4 x double>> [#uses=1]
2262   ret <4 x double> %res
2263 }
2264 declare <4 x double> @llvm.x86.avx.vperm2f128.pd.256(<4 x double>, <4 x double>, i8) nounwind readnone
2265
2266
2267 define <8 x float> @test_x86_avx_vperm2f128_ps_256(<8 x float> %a0, <8 x float> %a1) {
2268   ; CHECK: vperm2f128
2269   %res = call <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float> %a0, <8 x float> %a1, i8 7) ; <<8 x float>> [#uses=1]
2270   ret <8 x float> %res
2271 }
2272 declare <8 x float> @llvm.x86.avx.vperm2f128.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone
2273
2274
2275 define <8 x i32> @test_x86_avx_vperm2f128_si_256(<8 x i32> %a0, <8 x i32> %a1) {
2276   ; CHECK: vperm2f128
2277   %res = call <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32> %a0, <8 x i32> %a1, i8 7) ; <<8 x i32>> [#uses=1]
2278   ret <8 x i32> %res
2279 }
2280 declare <8 x i32> @llvm.x86.avx.vperm2f128.si.256(<8 x i32>, <8 x i32>, i8) nounwind readnone
2281
2282
2283 define <2 x double> @test_x86_avx_vpermil_pd(<2 x double> %a0) {
2284   ; CHECK: vpermilpd
2285   %res = call <2 x double> @llvm.x86.avx.vpermil.pd(<2 x double> %a0, i8 7) ; <<2 x double>> [#uses=1]
2286   ret <2 x double> %res
2287 }
2288 declare <2 x double> @llvm.x86.avx.vpermil.pd(<2 x double>, i8) nounwind readnone
2289
2290
2291 define <4 x double> @test_x86_avx_vpermil_pd_256(<4 x double> %a0) {
2292   ; CHECK: vpermilpd
2293   %res = call <4 x double> @llvm.x86.avx.vpermil.pd.256(<4 x double> %a0, i8 7) ; <<4 x double>> [#uses=1]
2294   ret <4 x double> %res
2295 }
2296 declare <4 x double> @llvm.x86.avx.vpermil.pd.256(<4 x double>, i8) nounwind readnone
2297
2298
2299 define <4 x float> @test_x86_avx_vpermil_ps(<4 x float> %a0) {
2300   ; CHECK: vpermilps
2301   %res = call <4 x float> @llvm.x86.avx.vpermil.ps(<4 x float> %a0, i8 7) ; <<4 x float>> [#uses=1]
2302   ret <4 x float> %res
2303 }
2304 declare <4 x float> @llvm.x86.avx.vpermil.ps(<4 x float>, i8) nounwind readnone
2305
2306
2307 define <8 x float> @test_x86_avx_vpermil_ps_256(<8 x float> %a0) {
2308   ; CHECK: vpermilps
2309   %res = call <8 x float> @llvm.x86.avx.vpermil.ps.256(<8 x float> %a0, i8 7) ; <<8 x float>> [#uses=1]
2310   ret <8 x float> %res
2311 }
2312 declare <8 x float> @llvm.x86.avx.vpermil.ps.256(<8 x float>, i8) nounwind readnone
2313
2314
2315 define <2 x double> @test_x86_avx_vpermilvar_pd(<2 x double> %a0, <2 x i64> %a1) {
2316   ; CHECK: vpermilpd
2317   %res = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> %a0, <2 x i64> %a1) ; <<2 x double>> [#uses=1]
2318   ret <2 x double> %res
2319 }
2320 declare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwind readnone
2321
2322
2323 define <4 x double> @test_x86_avx_vpermilvar_pd_256(<4 x double> %a0, <4 x i64> %a1) {
2324   ; CHECK: vpermilpd
2325   %res = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> %a0, <4 x i64> %a1) ; <<4 x double>> [#uses=1]
2326   ret <4 x double> %res
2327 }
2328 declare <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double>, <4 x i64>) nounwind readnone
2329
2330
2331 define <4 x float> @test_x86_avx_vpermilvar_ps(<4 x float> %a0, <4 x i32> %a1) {
2332   ; CHECK: vpermilps
2333   %res = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> %a0, <4 x i32> %a1) ; <<4 x float>> [#uses=1]
2334   ret <4 x float> %res
2335 }
2336 declare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind readnone
2337
2338
2339 define <8 x float> @test_x86_avx_vpermilvar_ps_256(<8 x float> %a0, <8 x i32> %a1) {
2340   ; CHECK: vpermilps
2341   %res = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> %a0, <8 x i32> %a1) ; <<8 x float>> [#uses=1]
2342   ret <8 x float> %res
2343 }
2344 declare <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float>, <8 x i32>) nounwind readnone
2345
2346
2347 define i32 @test_x86_avx_vtestc_pd(<2 x double> %a0, <2 x double> %a1) {
2348   ; CHECK: vtestpd
2349   ; CHECK: sbbl
2350   %res = call i32 @llvm.x86.avx.vtestc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
2351   ret i32 %res
2352 }
2353 declare i32 @llvm.x86.avx.vtestc.pd(<2 x double>, <2 x double>) nounwind readnone
2354
2355
2356 define i32 @test_x86_avx_vtestc_pd_256(<4 x double> %a0, <4 x double> %a1) {
2357   ; CHECK: vtestpd
2358   ; CHECK: sbbl
2359   %res = call i32 @llvm.x86.avx.vtestc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
2360   ret i32 %res
2361 }
2362 declare i32 @llvm.x86.avx.vtestc.pd.256(<4 x double>, <4 x double>) nounwind readnone
2363
2364
2365 define i32 @test_x86_avx_vtestc_ps(<4 x float> %a0, <4 x float> %a1) {
2366   ; CHECK: vtestps
2367   ; CHECK: sbbl
2368   %res = call i32 @llvm.x86.avx.vtestc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2369   ret i32 %res
2370 }
2371 declare i32 @llvm.x86.avx.vtestc.ps(<4 x float>, <4 x float>) nounwind readnone
2372
2373
2374 define i32 @test_x86_avx_vtestc_ps_256(<8 x float> %a0, <8 x float> %a1) {
2375   ; CHECK: vtestps
2376   ; CHECK: sbbl
2377   %res = call i32 @llvm.x86.avx.vtestc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
2378   ret i32 %res
2379 }
2380 declare i32 @llvm.x86.avx.vtestc.ps.256(<8 x float>, <8 x float>) nounwind readnone
2381
2382
2383 define i32 @test_x86_avx_vtestnzc_pd(<2 x double> %a0, <2 x double> %a1) {
2384   ; CHECK: vtestpd
2385   ; CHECK: seta
2386   ; CHECK: movzbl
2387   %res = call i32 @llvm.x86.avx.vtestnzc.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
2388   ret i32 %res
2389 }
2390 declare i32 @llvm.x86.avx.vtestnzc.pd(<2 x double>, <2 x double>) nounwind readnone
2391
2392
2393 define i32 @test_x86_avx_vtestnzc_pd_256(<4 x double> %a0, <4 x double> %a1) {
2394   ; CHECK: vtestpd
2395   ; CHECK: seta
2396   ; CHECK: movzbl
2397   %res = call i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
2398   ret i32 %res
2399 }
2400 declare i32 @llvm.x86.avx.vtestnzc.pd.256(<4 x double>, <4 x double>) nounwind readnone
2401
2402
2403 define i32 @test_x86_avx_vtestnzc_ps(<4 x float> %a0, <4 x float> %a1) {
2404   ; CHECK: vtestps
2405   ; CHECK: seta
2406   ; CHECK: movzbl
2407   %res = call i32 @llvm.x86.avx.vtestnzc.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2408   ret i32 %res
2409 }
2410 declare i32 @llvm.x86.avx.vtestnzc.ps(<4 x float>, <4 x float>) nounwind readnone
2411
2412
2413 define i32 @test_x86_avx_vtestnzc_ps_256(<8 x float> %a0, <8 x float> %a1) {
2414   ; CHECK: vtestps
2415   ; CHECK: seta
2416   ; CHECK: movzbl
2417   %res = call i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
2418   ret i32 %res
2419 }
2420 declare i32 @llvm.x86.avx.vtestnzc.ps.256(<8 x float>, <8 x float>) nounwind readnone
2421
2422
2423 define i32 @test_x86_avx_vtestz_pd(<2 x double> %a0, <2 x double> %a1) {
2424   ; CHECK: vtestpd
2425   ; CHECK: sete
2426   ; CHECK: movzbl
2427   %res = call i32 @llvm.x86.avx.vtestz.pd(<2 x double> %a0, <2 x double> %a1) ; <i32> [#uses=1]
2428   ret i32 %res
2429 }
2430 declare i32 @llvm.x86.avx.vtestz.pd(<2 x double>, <2 x double>) nounwind readnone
2431
2432
2433 define i32 @test_x86_avx_vtestz_pd_256(<4 x double> %a0, <4 x double> %a1) {
2434   ; CHECK: vtestpd
2435   ; CHECK: sete
2436   ; CHECK: movzbl
2437   %res = call i32 @llvm.x86.avx.vtestz.pd.256(<4 x double> %a0, <4 x double> %a1) ; <i32> [#uses=1]
2438   ret i32 %res
2439 }
2440 declare i32 @llvm.x86.avx.vtestz.pd.256(<4 x double>, <4 x double>) nounwind readnone
2441
2442
2443 define i32 @test_x86_avx_vtestz_ps(<4 x float> %a0, <4 x float> %a1) {
2444   ; CHECK: vtestps
2445   ; CHECK: sete
2446   ; CHECK: movzbl
2447   %res = call i32 @llvm.x86.avx.vtestz.ps(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
2448   ret i32 %res
2449 }
2450 declare i32 @llvm.x86.avx.vtestz.ps(<4 x float>, <4 x float>) nounwind readnone
2451
2452
2453 define i32 @test_x86_avx_vtestz_ps_256(<8 x float> %a0, <8 x float> %a1) {
2454   ; CHECK: vtestps
2455   ; CHECK: sete
2456   ; CHECK: movzbl
2457   %res = call i32 @llvm.x86.avx.vtestz.ps.256(<8 x float> %a0, <8 x float> %a1) ; <i32> [#uses=1]
2458   ret i32 %res
2459 }
2460 declare i32 @llvm.x86.avx.vtestz.ps.256(<8 x float>, <8 x float>) nounwind readnone
2461
2462
2463 define void @test_x86_avx_vzeroall() {
2464   ; CHECK: vzeroall
2465   call void @llvm.x86.avx.vzeroall()
2466   ret void
2467 }
2468 declare void @llvm.x86.avx.vzeroall() nounwind
2469
2470
2471 define void @test_x86_avx_vzeroupper() {
2472   ; CHECK: vzeroupper
2473   call void @llvm.x86.avx.vzeroupper()
2474   ret void
2475 }
2476 declare void @llvm.x86.avx.vzeroupper() nounwind
2477
2478