1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx,+fma4,+xop | FileCheck %s
4 define <2 x double> @test_int_x86_xop_vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
5 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd:
7 ; CHECK-NEXT: vpermil2pd $1, %xmm2, %xmm1, %xmm0, %xmm0
9 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 1) ; [#uses=1]
12 define <2 x double> @test_int_x86_xop_vpermil2pd_mr(<2 x double> %a0, ptr %a1, <2 x double> %a2) {
13 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd_mr:
15 ; CHECK-NEXT: vpermil2pd $1, %xmm1, (%rdi), %xmm0, %xmm0
17 %vec = load <2 x double>, ptr %a1
18 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %vec, <2 x double> %a2, i8 1) ; [#uses=1]
21 define <2 x double> @test_int_x86_xop_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, ptr %a2) {
22 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd_rm:
24 ; CHECK-NEXT: vpermil2pd $1, (%rdi), %xmm1, %xmm0, %xmm0
26 %vec = load <2 x double>, ptr %a2
27 %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %vec, i8 1) ; [#uses=1]
30 declare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x double>, i8) nounwind readnone
32 define <4 x double> @test_int_x86_xop_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) {
33 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256:
35 ; CHECK-NEXT: vpermil2pd $2, %ymm2, %ymm1, %ymm0, %ymm0
37 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 2) ;
40 define <4 x double> @test_int_x86_xop_vpermil2pd_256_mr(<4 x double> %a0, ptr %a1, <4 x double> %a2) {
41 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_mr:
43 ; CHECK-NEXT: vpermil2pd $2, %ymm1, (%rdi), %ymm0, %ymm0
45 %vec = load <4 x double>, ptr %a1
46 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %vec, <4 x double> %a2, i8 2) ;
49 define <4 x double> @test_int_x86_xop_vpermil2pd_256_rm(<4 x double> %a0, <4 x double> %a1, ptr %a2) {
50 ; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_rm:
52 ; CHECK-NEXT: vpermil2pd $2, (%rdi), %ymm1, %ymm0, %ymm0
54 %vec = load <4 x double>, ptr %a2
55 %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %vec, i8 2) ;
58 declare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x double>, i8) nounwind readnone
60 define <4 x float> @test_int_x86_xop_vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
61 ; CHECK-LABEL: test_int_x86_xop_vpermil2ps:
63 ; CHECK-NEXT: vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0
65 %res = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 3) ;
68 declare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x float>, i8) nounwind readnone
70 define <8 x float> @test_int_x86_xop_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2) {
71 ; CHECK-LABEL: test_int_x86_xop_vpermil2ps_256:
73 ; CHECK-NEXT: vpermil2ps $4, %ymm2, %ymm1, %ymm0, %ymm0
75 %res = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 4) ;
78 declare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x float>, i8) nounwind readnone
80 define <16 x i8> @test_int_x86_xop_vpcomeqb(<16 x i8> %a0, <16 x i8> %a1) {
81 ; CHECK-LABEL: test_int_x86_xop_vpcomeqb:
83 ; CHECK-NEXT: vpcomeqb %xmm1, %xmm0, %xmm0
85 %res = call <16 x i8> @llvm.x86.xop.vpcomeqb(<16 x i8> %a0, <16 x i8> %a1) ;
88 define <16 x i8> @test_int_x86_xop_vpcomeqb_mem(<16 x i8> %a0, ptr %a1) {
89 ; CHECK-LABEL: test_int_x86_xop_vpcomeqb_mem:
91 ; CHECK-NEXT: vpcomeqb (%rdi), %xmm0, %xmm0
93 %vec = load <16 x i8>, ptr %a1
94 %res = call <16 x i8> @llvm.x86.xop.vpcomeqb(<16 x i8> %a0, <16 x i8> %vec) ;
97 declare <16 x i8> @llvm.x86.xop.vpcomeqb(<16 x i8>, <16 x i8>) nounwind readnone
99 define <8 x i16> @test_int_x86_xop_vpcomeqw(<8 x i16> %a0, <8 x i16> %a1) {
100 ; CHECK-LABEL: test_int_x86_xop_vpcomeqw:
102 ; CHECK-NEXT: vpcomeqw %xmm1, %xmm0, %xmm0
104 %res = call <8 x i16> @llvm.x86.xop.vpcomeqw(<8 x i16> %a0, <8 x i16> %a1) ;
107 declare <8 x i16> @llvm.x86.xop.vpcomeqw(<8 x i16>, <8 x i16>) nounwind readnone
109 define <4 x i32> @test_int_x86_xop_vpcomeqd(<4 x i32> %a0, <4 x i32> %a1) {
110 ; CHECK-LABEL: test_int_x86_xop_vpcomeqd:
112 ; CHECK-NEXT: vpcomeqd %xmm1, %xmm0, %xmm0
114 %res = call <4 x i32> @llvm.x86.xop.vpcomeqd(<4 x i32> %a0, <4 x i32> %a1) ;
117 declare <4 x i32> @llvm.x86.xop.vpcomeqd(<4 x i32>, <4 x i32>) nounwind readnone
119 define <2 x i64> @test_int_x86_xop_vpcomeqq(<2 x i64> %a0, <2 x i64> %a1) {
120 ; CHECK-LABEL: test_int_x86_xop_vpcomeqq:
122 ; CHECK-NEXT: vpcomeqq %xmm1, %xmm0, %xmm0
124 %res = call <2 x i64> @llvm.x86.xop.vpcomeqq(<2 x i64> %a0, <2 x i64> %a1) ;
127 declare <2 x i64> @llvm.x86.xop.vpcomeqq(<2 x i64>, <2 x i64>) nounwind readnone
129 define <16 x i8> @test_int_x86_xop_vpcomequb(<16 x i8> %a0, <16 x i8> %a1) {
130 ; CHECK-LABEL: test_int_x86_xop_vpcomequb:
132 ; CHECK-NEXT: vpcomeqb %xmm1, %xmm0, %xmm0
134 %res = call <16 x i8> @llvm.x86.xop.vpcomequb(<16 x i8> %a0, <16 x i8> %a1) ;
137 declare <16 x i8> @llvm.x86.xop.vpcomequb(<16 x i8>, <16 x i8>) nounwind readnone
139 define <4 x i32> @test_int_x86_xop_vpcomequd(<4 x i32> %a0, <4 x i32> %a1) {
140 ; CHECK-LABEL: test_int_x86_xop_vpcomequd:
142 ; CHECK-NEXT: vpcomeqd %xmm1, %xmm0, %xmm0
144 %res = call <4 x i32> @llvm.x86.xop.vpcomequd(<4 x i32> %a0, <4 x i32> %a1) ;
147 declare <4 x i32> @llvm.x86.xop.vpcomequd(<4 x i32>, <4 x i32>) nounwind readnone
149 define <2 x i64> @test_int_x86_xop_vpcomequq(<2 x i64> %a0, <2 x i64> %a1) {
150 ; CHECK-LABEL: test_int_x86_xop_vpcomequq:
152 ; CHECK-NEXT: vpcomeqq %xmm1, %xmm0, %xmm0
154 %res = call <2 x i64> @llvm.x86.xop.vpcomequq(<2 x i64> %a0, <2 x i64> %a1) ;
157 declare <2 x i64> @llvm.x86.xop.vpcomequq(<2 x i64>, <2 x i64>) nounwind readnone
159 define <8 x i16> @test_int_x86_xop_vpcomequw(<8 x i16> %a0, <8 x i16> %a1) {
160 ; CHECK-LABEL: test_int_x86_xop_vpcomequw:
162 ; CHECK-NEXT: vpcomeqw %xmm1, %xmm0, %xmm0
164 %res = call <8 x i16> @llvm.x86.xop.vpcomequw(<8 x i16> %a0, <8 x i16> %a1) ;
167 declare <8 x i16> @llvm.x86.xop.vpcomequw(<8 x i16>, <8 x i16>) nounwind readnone
169 define <16 x i8> @test_int_x86_xop_vpcomfalseb(<16 x i8> %a0, <16 x i8> %a1) {
170 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseb:
172 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
174 %res = call <16 x i8> @llvm.x86.xop.vpcomfalseb(<16 x i8> %a0, <16 x i8> %a1) ;
177 declare <16 x i8> @llvm.x86.xop.vpcomfalseb(<16 x i8>, <16 x i8>) nounwind readnone
179 define <4 x i32> @test_int_x86_xop_vpcomfalsed(<4 x i32> %a0, <4 x i32> %a1) {
180 ; CHECK-LABEL: test_int_x86_xop_vpcomfalsed:
182 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
184 %res = call <4 x i32> @llvm.x86.xop.vpcomfalsed(<4 x i32> %a0, <4 x i32> %a1) ;
187 declare <4 x i32> @llvm.x86.xop.vpcomfalsed(<4 x i32>, <4 x i32>) nounwind readnone
189 define <2 x i64> @test_int_x86_xop_vpcomfalseq(<2 x i64> %a0, <2 x i64> %a1) {
190 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseq:
192 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
194 %res = call <2 x i64> @llvm.x86.xop.vpcomfalseq(<2 x i64> %a0, <2 x i64> %a1) ;
197 declare <2 x i64> @llvm.x86.xop.vpcomfalseq(<2 x i64>, <2 x i64>) nounwind readnone
199 define <16 x i8> @test_int_x86_xop_vpcomfalseub(<16 x i8> %a0, <16 x i8> %a1) {
200 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseub:
202 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
204 %res = call <16 x i8> @llvm.x86.xop.vpcomfalseub(<16 x i8> %a0, <16 x i8> %a1) ;
207 declare <16 x i8> @llvm.x86.xop.vpcomfalseub(<16 x i8>, <16 x i8>) nounwind readnone
209 define <4 x i32> @test_int_x86_xop_vpcomfalseud(<4 x i32> %a0, <4 x i32> %a1) {
210 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseud:
212 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
214 %res = call <4 x i32> @llvm.x86.xop.vpcomfalseud(<4 x i32> %a0, <4 x i32> %a1) ;
217 declare <4 x i32> @llvm.x86.xop.vpcomfalseud(<4 x i32>, <4 x i32>) nounwind readnone
219 define <2 x i64> @test_int_x86_xop_vpcomfalseuq(<2 x i64> %a0, <2 x i64> %a1) {
220 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseuq:
222 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
224 %res = call <2 x i64> @llvm.x86.xop.vpcomfalseuq(<2 x i64> %a0, <2 x i64> %a1) ;
227 declare <2 x i64> @llvm.x86.xop.vpcomfalseuq(<2 x i64>, <2 x i64>) nounwind readnone
229 define <8 x i16> @test_int_x86_xop_vpcomfalseuw(<8 x i16> %a0, <8 x i16> %a1) {
230 ; CHECK-LABEL: test_int_x86_xop_vpcomfalseuw:
232 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
234 %res = call <8 x i16> @llvm.x86.xop.vpcomfalseuw(<8 x i16> %a0, <8 x i16> %a1) ;
237 declare <8 x i16> @llvm.x86.xop.vpcomfalseuw(<8 x i16>, <8 x i16>) nounwind readnone
239 define <8 x i16> @test_int_x86_xop_vpcomfalsew(<8 x i16> %a0, <8 x i16> %a1) {
240 ; CHECK-LABEL: test_int_x86_xop_vpcomfalsew:
242 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0
244 %res = call <8 x i16> @llvm.x86.xop.vpcomfalsew(<8 x i16> %a0, <8 x i16> %a1) ;
247 declare <8 x i16> @llvm.x86.xop.vpcomfalsew(<8 x i16>, <8 x i16>) nounwind readnone
249 define <16 x i8> @test_int_x86_xop_vpcomgeb(<16 x i8> %a0, <16 x i8> %a1) {
250 ; CHECK-LABEL: test_int_x86_xop_vpcomgeb:
252 ; CHECK-NEXT: vpcomgeb %xmm1, %xmm0, %xmm0
254 %res = call <16 x i8> @llvm.x86.xop.vpcomgeb(<16 x i8> %a0, <16 x i8> %a1) ;
257 declare <16 x i8> @llvm.x86.xop.vpcomgeb(<16 x i8>, <16 x i8>) nounwind readnone
259 define <4 x i32> @test_int_x86_xop_vpcomged(<4 x i32> %a0, <4 x i32> %a1) {
260 ; CHECK-LABEL: test_int_x86_xop_vpcomged:
262 ; CHECK-NEXT: vpcomged %xmm1, %xmm0, %xmm0
264 %res = call <4 x i32> @llvm.x86.xop.vpcomged(<4 x i32> %a0, <4 x i32> %a1) ;
267 declare <4 x i32> @llvm.x86.xop.vpcomged(<4 x i32>, <4 x i32>) nounwind readnone
269 define <2 x i64> @test_int_x86_xop_vpcomgeq(<2 x i64> %a0, <2 x i64> %a1) {
270 ; CHECK-LABEL: test_int_x86_xop_vpcomgeq:
272 ; CHECK-NEXT: vpcomgeq %xmm1, %xmm0, %xmm0
274 %res = call <2 x i64> @llvm.x86.xop.vpcomgeq(<2 x i64> %a0, <2 x i64> %a1) ;
277 declare <2 x i64> @llvm.x86.xop.vpcomgeq(<2 x i64>, <2 x i64>) nounwind readnone
279 define <16 x i8> @test_int_x86_xop_vpcomgeub(<16 x i8> %a0, <16 x i8> %a1) {
280 ; CHECK-LABEL: test_int_x86_xop_vpcomgeub:
282 ; CHECK-NEXT: vpcomgeub %xmm1, %xmm0, %xmm0
284 %res = call <16 x i8> @llvm.x86.xop.vpcomgeub(<16 x i8> %a0, <16 x i8> %a1) ;
287 declare <16 x i8> @llvm.x86.xop.vpcomgeub(<16 x i8>, <16 x i8>) nounwind readnone
289 define <4 x i32> @test_int_x86_xop_vpcomgeud(<4 x i32> %a0, <4 x i32> %a1) {
290 ; CHECK-LABEL: test_int_x86_xop_vpcomgeud:
292 ; CHECK-NEXT: vpcomgeud %xmm1, %xmm0, %xmm0
294 %res = call <4 x i32> @llvm.x86.xop.vpcomgeud(<4 x i32> %a0, <4 x i32> %a1) ;
297 declare <4 x i32> @llvm.x86.xop.vpcomgeud(<4 x i32>, <4 x i32>) nounwind readnone
299 define <2 x i64> @test_int_x86_xop_vpcomgeuq(<2 x i64> %a0, <2 x i64> %a1) {
300 ; CHECK-LABEL: test_int_x86_xop_vpcomgeuq:
302 ; CHECK-NEXT: vpcomgeuq %xmm1, %xmm0, %xmm0
304 %res = call <2 x i64> @llvm.x86.xop.vpcomgeuq(<2 x i64> %a0, <2 x i64> %a1) ;
307 declare <2 x i64> @llvm.x86.xop.vpcomgeuq(<2 x i64>, <2 x i64>) nounwind readnone
309 define <8 x i16> @test_int_x86_xop_vpcomgeuw(<8 x i16> %a0, <8 x i16> %a1) {
310 ; CHECK-LABEL: test_int_x86_xop_vpcomgeuw:
312 ; CHECK-NEXT: vpcomgeuw %xmm1, %xmm0, %xmm0
314 %res = call <8 x i16> @llvm.x86.xop.vpcomgeuw(<8 x i16> %a0, <8 x i16> %a1) ;
317 declare <8 x i16> @llvm.x86.xop.vpcomgeuw(<8 x i16>, <8 x i16>) nounwind readnone
319 define <8 x i16> @test_int_x86_xop_vpcomgew(<8 x i16> %a0, <8 x i16> %a1) {
320 ; CHECK-LABEL: test_int_x86_xop_vpcomgew:
322 ; CHECK-NEXT: vpcomgew %xmm1, %xmm0, %xmm0
324 %res = call <8 x i16> @llvm.x86.xop.vpcomgew(<8 x i16> %a0, <8 x i16> %a1) ;
327 declare <8 x i16> @llvm.x86.xop.vpcomgew(<8 x i16>, <8 x i16>) nounwind readnone
329 define <16 x i8> @test_int_x86_xop_vpcomgtb(<16 x i8> %a0, <16 x i8> %a1) {
330 ; CHECK-LABEL: test_int_x86_xop_vpcomgtb:
332 ; CHECK-NEXT: vpcomgtb %xmm1, %xmm0, %xmm0
334 %res = call <16 x i8> @llvm.x86.xop.vpcomgtb(<16 x i8> %a0, <16 x i8> %a1) ;
337 declare <16 x i8> @llvm.x86.xop.vpcomgtb(<16 x i8>, <16 x i8>) nounwind readnone
339 define <4 x i32> @test_int_x86_xop_vpcomgtd(<4 x i32> %a0, <4 x i32> %a1) {
340 ; CHECK-LABEL: test_int_x86_xop_vpcomgtd:
342 ; CHECK-NEXT: vpcomgtd %xmm1, %xmm0, %xmm0
344 %res = call <4 x i32> @llvm.x86.xop.vpcomgtd(<4 x i32> %a0, <4 x i32> %a1) ;
347 declare <4 x i32> @llvm.x86.xop.vpcomgtd(<4 x i32>, <4 x i32>) nounwind readnone
349 define <2 x i64> @test_int_x86_xop_vpcomgtq(<2 x i64> %a0, <2 x i64> %a1) {
350 ; CHECK-LABEL: test_int_x86_xop_vpcomgtq:
352 ; CHECK-NEXT: vpcomgtq %xmm1, %xmm0, %xmm0
354 %res = call <2 x i64> @llvm.x86.xop.vpcomgtq(<2 x i64> %a0, <2 x i64> %a1) ;
357 declare <2 x i64> @llvm.x86.xop.vpcomgtq(<2 x i64>, <2 x i64>) nounwind readnone
359 define <16 x i8> @test_int_x86_xop_vpcomgtub(<16 x i8> %a0, <16 x i8> %a1) {
360 ; CHECK-LABEL: test_int_x86_xop_vpcomgtub:
362 ; CHECK-NEXT: vpcomgtub %xmm1, %xmm0, %xmm0
364 %res = call <16 x i8> @llvm.x86.xop.vpcomgtub(<16 x i8> %a0, <16 x i8> %a1) ;
367 declare <16 x i8> @llvm.x86.xop.vpcomgtub(<16 x i8>, <16 x i8>) nounwind readnone
369 define <4 x i32> @test_int_x86_xop_vpcomgtud(<4 x i32> %a0, <4 x i32> %a1) {
370 ; CHECK-LABEL: test_int_x86_xop_vpcomgtud:
372 ; CHECK-NEXT: vpcomgtud %xmm1, %xmm0, %xmm0
374 %res = call <4 x i32> @llvm.x86.xop.vpcomgtud(<4 x i32> %a0, <4 x i32> %a1) ;
377 declare <4 x i32> @llvm.x86.xop.vpcomgtud(<4 x i32>, <4 x i32>) nounwind readnone
379 define <2 x i64> @test_int_x86_xop_vpcomgtuq(<2 x i64> %a0, <2 x i64> %a1) {
380 ; CHECK-LABEL: test_int_x86_xop_vpcomgtuq:
382 ; CHECK-NEXT: vpcomgtuq %xmm1, %xmm0, %xmm0
384 %res = call <2 x i64> @llvm.x86.xop.vpcomgtuq(<2 x i64> %a0, <2 x i64> %a1) ;
387 declare <2 x i64> @llvm.x86.xop.vpcomgtuq(<2 x i64>, <2 x i64>) nounwind readnone
389 define <8 x i16> @test_int_x86_xop_vpcomgtuw(<8 x i16> %a0, <8 x i16> %a1) {
390 ; CHECK-LABEL: test_int_x86_xop_vpcomgtuw:
392 ; CHECK-NEXT: vpcomgtuw %xmm1, %xmm0, %xmm0
394 %res = call <8 x i16> @llvm.x86.xop.vpcomgtuw(<8 x i16> %a0, <8 x i16> %a1) ;
397 declare <8 x i16> @llvm.x86.xop.vpcomgtuw(<8 x i16>, <8 x i16>) nounwind readnone
399 define <8 x i16> @test_int_x86_xop_vpcomgtw(<8 x i16> %a0, <8 x i16> %a1) {
400 ; CHECK-LABEL: test_int_x86_xop_vpcomgtw:
402 ; CHECK-NEXT: vpcomgtw %xmm1, %xmm0, %xmm0
404 %res = call <8 x i16> @llvm.x86.xop.vpcomgtw(<8 x i16> %a0, <8 x i16> %a1) ;
407 declare <8 x i16> @llvm.x86.xop.vpcomgtw(<8 x i16>, <8 x i16>) nounwind readnone
409 define <16 x i8> @test_int_x86_xop_vpcomleb(<16 x i8> %a0, <16 x i8> %a1) {
410 ; CHECK-LABEL: test_int_x86_xop_vpcomleb:
412 ; CHECK-NEXT: vpcomleb %xmm1, %xmm0, %xmm0
414 %res = call <16 x i8> @llvm.x86.xop.vpcomleb(<16 x i8> %a0, <16 x i8> %a1) ;
417 declare <16 x i8> @llvm.x86.xop.vpcomleb(<16 x i8>, <16 x i8>) nounwind readnone
419 define <4 x i32> @test_int_x86_xop_vpcomled(<4 x i32> %a0, <4 x i32> %a1) {
420 ; CHECK-LABEL: test_int_x86_xop_vpcomled:
422 ; CHECK-NEXT: vpcomled %xmm1, %xmm0, %xmm0
424 %res = call <4 x i32> @llvm.x86.xop.vpcomled(<4 x i32> %a0, <4 x i32> %a1) ;
427 declare <4 x i32> @llvm.x86.xop.vpcomled(<4 x i32>, <4 x i32>) nounwind readnone
429 define <2 x i64> @test_int_x86_xop_vpcomleq(<2 x i64> %a0, <2 x i64> %a1) {
430 ; CHECK-LABEL: test_int_x86_xop_vpcomleq:
432 ; CHECK-NEXT: vpcomleq %xmm1, %xmm0, %xmm0
434 %res = call <2 x i64> @llvm.x86.xop.vpcomleq(<2 x i64> %a0, <2 x i64> %a1) ;
437 declare <2 x i64> @llvm.x86.xop.vpcomleq(<2 x i64>, <2 x i64>) nounwind readnone
439 define <16 x i8> @test_int_x86_xop_vpcomleub(<16 x i8> %a0, <16 x i8> %a1) {
440 ; CHECK-LABEL: test_int_x86_xop_vpcomleub:
442 ; CHECK-NEXT: vpcomleub %xmm1, %xmm0, %xmm0
444 %res = call <16 x i8> @llvm.x86.xop.vpcomleub(<16 x i8> %a0, <16 x i8> %a1) ;
447 declare <16 x i8> @llvm.x86.xop.vpcomleub(<16 x i8>, <16 x i8>) nounwind readnone
449 define <4 x i32> @test_int_x86_xop_vpcomleud(<4 x i32> %a0, <4 x i32> %a1) {
450 ; CHECK-LABEL: test_int_x86_xop_vpcomleud:
452 ; CHECK-NEXT: vpcomleud %xmm1, %xmm0, %xmm0
454 %res = call <4 x i32> @llvm.x86.xop.vpcomleud(<4 x i32> %a0, <4 x i32> %a1) ;
457 declare <4 x i32> @llvm.x86.xop.vpcomleud(<4 x i32>, <4 x i32>) nounwind readnone
459 define <2 x i64> @test_int_x86_xop_vpcomleuq(<2 x i64> %a0, <2 x i64> %a1) {
460 ; CHECK-LABEL: test_int_x86_xop_vpcomleuq:
462 ; CHECK-NEXT: vpcomleuq %xmm1, %xmm0, %xmm0
464 %res = call <2 x i64> @llvm.x86.xop.vpcomleuq(<2 x i64> %a0, <2 x i64> %a1) ;
467 declare <2 x i64> @llvm.x86.xop.vpcomleuq(<2 x i64>, <2 x i64>) nounwind readnone
469 define <8 x i16> @test_int_x86_xop_vpcomleuw(<8 x i16> %a0, <8 x i16> %a1) {
470 ; CHECK-LABEL: test_int_x86_xop_vpcomleuw:
472 ; CHECK-NEXT: vpcomleuw %xmm1, %xmm0, %xmm0
474 %res = call <8 x i16> @llvm.x86.xop.vpcomleuw(<8 x i16> %a0, <8 x i16> %a1) ;
477 declare <8 x i16> @llvm.x86.xop.vpcomleuw(<8 x i16>, <8 x i16>) nounwind readnone
479 define <8 x i16> @test_int_x86_xop_vpcomlew(<8 x i16> %a0, <8 x i16> %a1) {
480 ; CHECK-LABEL: test_int_x86_xop_vpcomlew:
482 ; CHECK-NEXT: vpcomlew %xmm1, %xmm0, %xmm0
484 %res = call <8 x i16> @llvm.x86.xop.vpcomlew(<8 x i16> %a0, <8 x i16> %a1) ;
487 declare <8 x i16> @llvm.x86.xop.vpcomlew(<8 x i16>, <8 x i16>) nounwind readnone
489 define <16 x i8> @test_int_x86_xop_vpcomltb(<16 x i8> %a0, <16 x i8> %a1) {
490 ; CHECK-LABEL: test_int_x86_xop_vpcomltb:
492 ; CHECK-NEXT: vpcomltb %xmm1, %xmm0, %xmm0
494 %res = call <16 x i8> @llvm.x86.xop.vpcomltb(<16 x i8> %a0, <16 x i8> %a1) ;
497 declare <16 x i8> @llvm.x86.xop.vpcomltb(<16 x i8>, <16 x i8>) nounwind readnone
499 define <4 x i32> @test_int_x86_xop_vpcomltd(<4 x i32> %a0, <4 x i32> %a1) {
500 ; CHECK-LABEL: test_int_x86_xop_vpcomltd:
502 ; CHECK-NEXT: vpcomltd %xmm1, %xmm0, %xmm0
504 %res = call <4 x i32> @llvm.x86.xop.vpcomltd(<4 x i32> %a0, <4 x i32> %a1) ;
507 declare <4 x i32> @llvm.x86.xop.vpcomltd(<4 x i32>, <4 x i32>) nounwind readnone
509 define <2 x i64> @test_int_x86_xop_vpcomltq(<2 x i64> %a0, <2 x i64> %a1) {
510 ; CHECK-LABEL: test_int_x86_xop_vpcomltq:
512 ; CHECK-NEXT: vpcomltq %xmm1, %xmm0, %xmm0
514 %res = call <2 x i64> @llvm.x86.xop.vpcomltq(<2 x i64> %a0, <2 x i64> %a1) ;
517 declare <2 x i64> @llvm.x86.xop.vpcomltq(<2 x i64>, <2 x i64>) nounwind readnone
519 define <16 x i8> @test_int_x86_xop_vpcomltub(<16 x i8> %a0, <16 x i8> %a1) {
520 ; CHECK-LABEL: test_int_x86_xop_vpcomltub:
522 ; CHECK-NEXT: vpcomltub %xmm1, %xmm0, %xmm0
524 %res = call <16 x i8> @llvm.x86.xop.vpcomltub(<16 x i8> %a0, <16 x i8> %a1) ;
527 declare <16 x i8> @llvm.x86.xop.vpcomltub(<16 x i8>, <16 x i8>) nounwind readnone
529 define <4 x i32> @test_int_x86_xop_vpcomltud(<4 x i32> %a0, <4 x i32> %a1) {
530 ; CHECK-LABEL: test_int_x86_xop_vpcomltud:
532 ; CHECK-NEXT: vpcomltud %xmm1, %xmm0, %xmm0
534 %res = call <4 x i32> @llvm.x86.xop.vpcomltud(<4 x i32> %a0, <4 x i32> %a1) ;
537 declare <4 x i32> @llvm.x86.xop.vpcomltud(<4 x i32>, <4 x i32>) nounwind readnone
539 define <2 x i64> @test_int_x86_xop_vpcomltuq(<2 x i64> %a0, <2 x i64> %a1) {
540 ; CHECK-LABEL: test_int_x86_xop_vpcomltuq:
542 ; CHECK-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0
544 %res = call <2 x i64> @llvm.x86.xop.vpcomltuq(<2 x i64> %a0, <2 x i64> %a1) ;
547 declare <2 x i64> @llvm.x86.xop.vpcomltuq(<2 x i64>, <2 x i64>) nounwind readnone
549 define <8 x i16> @test_int_x86_xop_vpcomltuw(<8 x i16> %a0, <8 x i16> %a1) {
550 ; CHECK-LABEL: test_int_x86_xop_vpcomltuw:
552 ; CHECK-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0
554 %res = call <8 x i16> @llvm.x86.xop.vpcomltuw(<8 x i16> %a0, <8 x i16> %a1) ;
557 declare <8 x i16> @llvm.x86.xop.vpcomltuw(<8 x i16>, <8 x i16>) nounwind readnone
559 define <8 x i16> @test_int_x86_xop_vpcomltw(<8 x i16> %a0, <8 x i16> %a1) {
560 ; CHECK-LABEL: test_int_x86_xop_vpcomltw:
562 ; CHECK-NEXT: vpcomltw %xmm1, %xmm0, %xmm0
564 %res = call <8 x i16> @llvm.x86.xop.vpcomltw(<8 x i16> %a0, <8 x i16> %a1) ;
567 declare <8 x i16> @llvm.x86.xop.vpcomltw(<8 x i16>, <8 x i16>) nounwind readnone
569 define <16 x i8> @test_int_x86_xop_vpcomneb(<16 x i8> %a0, <16 x i8> %a1) {
570 ; CHECK-LABEL: test_int_x86_xop_vpcomneb:
572 ; CHECK-NEXT: vpcomneqb %xmm1, %xmm0, %xmm0
574 %res = call <16 x i8> @llvm.x86.xop.vpcomneb(<16 x i8> %a0, <16 x i8> %a1) ;
577 declare <16 x i8> @llvm.x86.xop.vpcomneb(<16 x i8>, <16 x i8>) nounwind readnone
579 define <4 x i32> @test_int_x86_xop_vpcomned(<4 x i32> %a0, <4 x i32> %a1) {
580 ; CHECK-LABEL: test_int_x86_xop_vpcomned:
582 ; CHECK-NEXT: vpcomneqd %xmm1, %xmm0, %xmm0
584 %res = call <4 x i32> @llvm.x86.xop.vpcomned(<4 x i32> %a0, <4 x i32> %a1) ;
587 declare <4 x i32> @llvm.x86.xop.vpcomned(<4 x i32>, <4 x i32>) nounwind readnone
589 define <2 x i64> @test_int_x86_xop_vpcomneq(<2 x i64> %a0, <2 x i64> %a1) {
590 ; CHECK-LABEL: test_int_x86_xop_vpcomneq:
592 ; CHECK-NEXT: vpcomneqq %xmm1, %xmm0, %xmm0
594 %res = call <2 x i64> @llvm.x86.xop.vpcomneq(<2 x i64> %a0, <2 x i64> %a1) ;
597 declare <2 x i64> @llvm.x86.xop.vpcomneq(<2 x i64>, <2 x i64>) nounwind readnone
599 define <16 x i8> @test_int_x86_xop_vpcomneub(<16 x i8> %a0, <16 x i8> %a1) {
600 ; CHECK-LABEL: test_int_x86_xop_vpcomneub:
602 ; CHECK-NEXT: vpcomneqb %xmm1, %xmm0, %xmm0
604 %res = call <16 x i8> @llvm.x86.xop.vpcomneub(<16 x i8> %a0, <16 x i8> %a1) ;
607 declare <16 x i8> @llvm.x86.xop.vpcomneub(<16 x i8>, <16 x i8>) nounwind readnone
609 define <4 x i32> @test_int_x86_xop_vpcomneud(<4 x i32> %a0, <4 x i32> %a1) {
610 ; CHECK-LABEL: test_int_x86_xop_vpcomneud:
612 ; CHECK-NEXT: vpcomneqd %xmm1, %xmm0, %xmm0
614 %res = call <4 x i32> @llvm.x86.xop.vpcomneud(<4 x i32> %a0, <4 x i32> %a1) ;
617 declare <4 x i32> @llvm.x86.xop.vpcomneud(<4 x i32>, <4 x i32>) nounwind readnone
619 define <2 x i64> @test_int_x86_xop_vpcomneuq(<2 x i64> %a0, <2 x i64> %a1) {
620 ; CHECK-LABEL: test_int_x86_xop_vpcomneuq:
622 ; CHECK-NEXT: vpcomneqq %xmm1, %xmm0, %xmm0
624 %res = call <2 x i64> @llvm.x86.xop.vpcomneuq(<2 x i64> %a0, <2 x i64> %a1) ;
627 declare <2 x i64> @llvm.x86.xop.vpcomneuq(<2 x i64>, <2 x i64>) nounwind readnone
629 define <8 x i16> @test_int_x86_xop_vpcomneuw(<8 x i16> %a0, <8 x i16> %a1) {
630 ; CHECK-LABEL: test_int_x86_xop_vpcomneuw:
632 ; CHECK-NEXT: vpcomneqw %xmm1, %xmm0, %xmm0
634 %res = call <8 x i16> @llvm.x86.xop.vpcomneuw(<8 x i16> %a0, <8 x i16> %a1) ;
637 declare <8 x i16> @llvm.x86.xop.vpcomneuw(<8 x i16>, <8 x i16>) nounwind readnone
639 define <8 x i16> @test_int_x86_xop_vpcomnew(<8 x i16> %a0, <8 x i16> %a1) {
640 ; CHECK-LABEL: test_int_x86_xop_vpcomnew:
642 ; CHECK-NEXT: vpcomneqw %xmm1, %xmm0, %xmm0
644 %res = call <8 x i16> @llvm.x86.xop.vpcomnew(<8 x i16> %a0, <8 x i16> %a1) ;
647 declare <8 x i16> @llvm.x86.xop.vpcomnew(<8 x i16>, <8 x i16>) nounwind readnone
649 define <16 x i8> @test_int_x86_xop_vpcomtrueb(<16 x i8> %a0, <16 x i8> %a1) {
650 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueb:
652 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
654 %res = call <16 x i8> @llvm.x86.xop.vpcomtrueb(<16 x i8> %a0, <16 x i8> %a1) ;
657 declare <16 x i8> @llvm.x86.xop.vpcomtrueb(<16 x i8>, <16 x i8>) nounwind readnone
659 define <4 x i32> @test_int_x86_xop_vpcomtrued(<4 x i32> %a0, <4 x i32> %a1) {
660 ; CHECK-LABEL: test_int_x86_xop_vpcomtrued:
662 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
664 %res = call <4 x i32> @llvm.x86.xop.vpcomtrued(<4 x i32> %a0, <4 x i32> %a1) ;
667 declare <4 x i32> @llvm.x86.xop.vpcomtrued(<4 x i32>, <4 x i32>) nounwind readnone
669 define <2 x i64> @test_int_x86_xop_vpcomtrueq(<2 x i64> %a0, <2 x i64> %a1) {
670 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueq:
672 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
674 %res = call <2 x i64> @llvm.x86.xop.vpcomtrueq(<2 x i64> %a0, <2 x i64> %a1) ;
677 declare <2 x i64> @llvm.x86.xop.vpcomtrueq(<2 x i64>, <2 x i64>) nounwind readnone
679 define <16 x i8> @test_int_x86_xop_vpcomtrueub(<16 x i8> %a0, <16 x i8> %a1) {
680 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueub:
682 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
684 %res = call <16 x i8> @llvm.x86.xop.vpcomtrueub(<16 x i8> %a0, <16 x i8> %a1) ;
687 declare <16 x i8> @llvm.x86.xop.vpcomtrueub(<16 x i8>, <16 x i8>) nounwind readnone
689 define <4 x i32> @test_int_x86_xop_vpcomtrueud(<4 x i32> %a0, <4 x i32> %a1) {
690 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueud:
692 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
694 %res = call <4 x i32> @llvm.x86.xop.vpcomtrueud(<4 x i32> %a0, <4 x i32> %a1) ;
697 declare <4 x i32> @llvm.x86.xop.vpcomtrueud(<4 x i32>, <4 x i32>) nounwind readnone
699 define <2 x i64> @test_int_x86_xop_vpcomtrueuq(<2 x i64> %a0, <2 x i64> %a1) {
700 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueuq:
702 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
704 %res = call <2 x i64> @llvm.x86.xop.vpcomtrueuq(<2 x i64> %a0, <2 x i64> %a1) ;
707 declare <2 x i64> @llvm.x86.xop.vpcomtrueuq(<2 x i64>, <2 x i64>) nounwind readnone
709 define <8 x i16> @test_int_x86_xop_vpcomtrueuw(<8 x i16> %a0, <8 x i16> %a1) {
710 ; CHECK-LABEL: test_int_x86_xop_vpcomtrueuw:
712 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
714 %res = call <8 x i16> @llvm.x86.xop.vpcomtrueuw(<8 x i16> %a0, <8 x i16> %a1) ;
717 declare <8 x i16> @llvm.x86.xop.vpcomtrueuw(<8 x i16>, <8 x i16>) nounwind readnone
719 define <8 x i16> @test_int_x86_xop_vpcomtruew(<8 x i16> %a0, <8 x i16> %a1) {
720 ; CHECK-LABEL: test_int_x86_xop_vpcomtruew:
722 ; CHECK-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
724 %res = call <8 x i16> @llvm.x86.xop.vpcomtruew(<8 x i16> %a0, <8 x i16> %a1) ;
727 declare <8 x i16> @llvm.x86.xop.vpcomtruew(<8 x i16>, <8 x i16>) nounwind readnone
729 define <16 x i8> @test_int_x86_xop_vpcomb(<16 x i8> %a0, <16 x i8> %a1) {
730 ; CHECK-LABEL: test_int_x86_xop_vpcomb:
732 ; CHECK-NEXT: vpcomltb %xmm1, %xmm0, %xmm0
734 %res = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0) ;
737 declare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone
739 define <8 x i16> @test_int_x86_xop_vpcomw(<8 x i16> %a0, <8 x i16> %a1) {
740 ; CHECK-LABEL: test_int_x86_xop_vpcomw:
742 ; CHECK-NEXT: vpcomltw %xmm1, %xmm0, %xmm0
744 %res = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ;
747 declare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone
749 define <4 x i32> @test_int_x86_xop_vpcomd(<4 x i32> %a0, <4 x i32> %a1) {
750 ; CHECK-LABEL: test_int_x86_xop_vpcomd:
752 ; CHECK-NEXT: vpcomltd %xmm1, %xmm0, %xmm0
754 %res = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0) ;
757 declare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone
759 define <2 x i64> @test_int_x86_xop_vpcomq(<2 x i64> %a0, <2 x i64> %a1) {
760 ; CHECK-LABEL: test_int_x86_xop_vpcomq:
762 ; CHECK-NEXT: vpcomltq %xmm1, %xmm0, %xmm0
764 %res = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ;
767 declare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone
769 define <16 x i8> @test_int_x86_xop_vpcomub(<16 x i8> %a0, <16 x i8> %a1) {
770 ; CHECK-LABEL: test_int_x86_xop_vpcomub:
772 ; CHECK-NEXT: vpcomltub %xmm1, %xmm0, %xmm0
774 %res = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0) ;
777 declare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone
779 define <8 x i16> @test_int_x86_xop_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) {
780 ; CHECK-LABEL: test_int_x86_xop_vpcomuw:
782 ; CHECK-NEXT: vpcomltuw %xmm1, %xmm0, %xmm0
784 %res = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ;
787 declare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone
789 define <4 x i32> @test_int_x86_xop_vpcomud(<4 x i32> %a0, <4 x i32> %a1) {
790 ; CHECK-LABEL: test_int_x86_xop_vpcomud:
792 ; CHECK-NEXT: vpcomltud %xmm1, %xmm0, %xmm0
794 %res = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0) ;
797 declare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone
799 define <2 x i64> @test_int_x86_xop_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) {
800 ; CHECK-LABEL: test_int_x86_xop_vpcomuq:
802 ; CHECK-NEXT: vpcomltuq %xmm1, %xmm0, %xmm0
804 %res = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ;
807 declare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone
809 define <2 x i64> @test_int_x86_xop_vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {
810 ; CHECK-LABEL: test_int_x86_xop_vpcmov:
812 ; CHECK-NEXT: vpcmov %xmm2, %xmm1, %xmm0, %xmm0
814 %res = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) ;
817 declare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone
819 define <4 x i64> @test_int_x86_xop_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {
820 ; CHECK-LABEL: test_int_x86_xop_vpcmov_256:
822 ; CHECK-NEXT: vpcmov %ymm2, %ymm1, %ymm0, %ymm0
824 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) ;
827 define <4 x i64> @test_int_x86_xop_vpcmov_256_mr(<4 x i64> %a0, ptr %a1, <4 x i64> %a2) {
828 ; CHECK-LABEL: test_int_x86_xop_vpcmov_256_mr:
830 ; CHECK-NEXT: vpcmov %ymm1, (%rdi), %ymm0, %ymm0
832 %vec = load <4 x i64>, ptr %a1
833 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %vec, <4 x i64> %a2) ;
836 define <4 x i64> @test_int_x86_xop_vpcmov_256_rm(<4 x i64> %a0, <4 x i64> %a1, ptr %a2) {
837 ; CHECK-LABEL: test_int_x86_xop_vpcmov_256_rm:
839 ; CHECK-NEXT: vpcmov (%rdi), %ymm1, %ymm0, %ymm0
841 %vec = load <4 x i64>, ptr %a2
842 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %vec) ;
845 declare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone
847 define <16 x i8> @test_int_x86_xop_vprotb(<16 x i8> %a0, <16 x i8> %a1) {
848 ; CHECK-LABEL: test_int_x86_xop_vprotb:
850 ; CHECK-NEXT: vprotb %xmm1, %xmm0, %xmm0
852 %res = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1) ;
855 declare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone
857 define <4 x i32> @test_int_x86_xop_vprotd(<4 x i32> %a0, <4 x i32> %a1) {
858 ; CHECK-LABEL: test_int_x86_xop_vprotd:
860 ; CHECK-NEXT: vprotd %xmm1, %xmm0, %xmm0
862 %res = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1) ;
865 declare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone
867 define <2 x i64> @test_int_x86_xop_vprotq(<2 x i64> %a0, <2 x i64> %a1) {
868 ; CHECK-LABEL: test_int_x86_xop_vprotq:
870 ; CHECK-NEXT: vprotq %xmm1, %xmm0, %xmm0
872 %res = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1) ;
875 declare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone
877 define <8 x i16> @test_int_x86_xop_vprotw(<8 x i16> %a0, <8 x i16> %a1) {
878 ; CHECK-LABEL: test_int_x86_xop_vprotw:
880 ; CHECK-NEXT: vprotw %xmm1, %xmm0, %xmm0
882 %res = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1) ;
885 declare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone
887 define <16 x i8> @test_int_x86_xop_vprotbi(<16 x i8> %a0) {
888 ; CHECK-LABEL: test_int_x86_xop_vprotbi:
890 ; CHECK-NEXT: vprotb $1, %xmm0, %xmm0
892 %res = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 1) ;
895 declare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone
897 define <4 x i32> @test_int_x86_xop_vprotdi(<4 x i32> %a0) {
898 ; CHECK-LABEL: test_int_x86_xop_vprotdi:
900 ; CHECK-NEXT: vprotd $30, %xmm0, %xmm0
902 %res = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 -2) ;
905 declare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone
907 define <2 x i64> @test_int_x86_xop_vprotqi(<2 x i64> %a0) {
908 ; CHECK-LABEL: test_int_x86_xop_vprotqi:
910 ; CHECK-NEXT: vprotq $3, %xmm0, %xmm0
912 %res = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 3) ;
915 declare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone
917 define <8 x i16> @test_int_x86_xop_vprotwi(<8 x i16> %a0) {
918 ; CHECK-LABEL: test_int_x86_xop_vprotwi:
920 ; CHECK-NEXT: vprotw $12, %xmm0, %xmm0
922 %res = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 -4) ;
925 declare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone