• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3
4define <2 x double> @test_int_x86_xop_vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2) {
5; CHECK-LABEL: test_int_x86_xop_vpermil2pd:
6; CHECK:       # BB#0:
7; CHECK-NEXT:    vpermil2pd $1, %xmm2, %xmm1, %xmm0, %xmm0
8; CHECK-NEXT:    retq
9  %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %a2, i8 1) ;  [#uses=1]
10  ret <2 x double> %res
11}
12define <2 x double> @test_int_x86_xop_vpermil2pd_mr(<2 x double> %a0, <2 x double>* %a1, <2 x i64> %a2) {
13; CHECK-LABEL: test_int_x86_xop_vpermil2pd_mr:
14; CHECK:       # BB#0:
15; CHECK-NEXT:    vpermil2pd $1, %xmm1, (%rdi), %xmm0, %xmm0
16; CHECK-NEXT:    retq
17  %vec = load <2 x double>, <2 x double>* %a1
18  %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %vec, <2 x i64> %a2, i8 1) ;  [#uses=1]
19  ret <2 x double> %res
20}
21define <2 x double> @test_int_x86_xop_vpermil2pd_rm(<2 x double> %a0, <2 x double> %a1, <2 x i64>* %a2) {
22; CHECK-LABEL: test_int_x86_xop_vpermil2pd_rm:
23; CHECK:       # BB#0:
24; CHECK-NEXT:    vpermil2pd $1, (%rdi), %xmm1, %xmm0, %xmm0
25; CHECK-NEXT:    retq
26  %vec = load <2 x i64>, <2 x i64>* %a2
27  %res = call <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double> %a0, <2 x double> %a1, <2 x i64> %vec, i8 1) ;  [#uses=1]
28  ret <2 x double> %res
29}
30declare <2 x double> @llvm.x86.xop.vpermil2pd(<2 x double>, <2 x double>, <2 x i64>, i8) nounwind readnone
31
32define <4 x double> @test_int_x86_xop_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2) {
33; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256:
34; CHECK:       # BB#0:
35; CHECK-NEXT:    vpermil2pd $2, %ymm2, %ymm1, %ymm0, %ymm0
36; CHECK-NEXT:    retq
37  %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %a2, i8 2) ;
38  ret <4 x double> %res
39}
40define <4 x double> @test_int_x86_xop_vpermil2pd_256_mr(<4 x double> %a0, <4 x double>* %a1, <4 x i64> %a2) {
41; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_mr:
42; CHECK:       # BB#0:
43; CHECK-NEXT:    vpermil2pd $2, %ymm1, (%rdi), %ymm0, %ymm0
44; CHECK-NEXT:    retq
45  %vec = load <4 x double>, <4 x double>* %a1
46  %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %vec, <4 x i64> %a2, i8 2) ;
47  ret <4 x double> %res
48}
49define <4 x double> @test_int_x86_xop_vpermil2pd_256_rm(<4 x double> %a0, <4 x double> %a1, <4 x i64>* %a2) {
50; CHECK-LABEL: test_int_x86_xop_vpermil2pd_256_rm:
51; CHECK:       # BB#0:
52; CHECK-NEXT:    vpermil2pd $2, (%rdi), %ymm1, %ymm0, %ymm0
53; CHECK-NEXT:    retq
54  %vec = load <4 x i64>, <4 x i64>* %a2
55  %res = call <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double> %a0, <4 x double> %a1, <4 x i64> %vec, i8 2) ;
56  ret <4 x double> %res
57}
58declare <4 x double> @llvm.x86.xop.vpermil2pd.256(<4 x double>, <4 x double>, <4 x i64>, i8) nounwind readnone
59
60define <4 x float> @test_int_x86_xop_vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2) {
61; CHECK-LABEL: test_int_x86_xop_vpermil2ps:
62; CHECK:       # BB#0:
63; CHECK-NEXT:    vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0
64; CHECK-NEXT:    retq
65  %res = call <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float> %a0, <4 x float> %a1, <4 x i32> %a2, i8 3) ;
66  ret <4 x float> %res
67}
68declare <4 x float> @llvm.x86.xop.vpermil2ps(<4 x float>, <4 x float>, <4 x i32>, i8) nounwind readnone
69
70define <8 x float> @test_int_x86_xop_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2) {
71; CHECK-LABEL: test_int_x86_xop_vpermil2ps_256:
72; CHECK:       # BB#0:
73; CHECK-NEXT:    vpermil2ps $4, %ymm2, %ymm1, %ymm0, %ymm0
74; CHECK-NEXT:    retq
75  %res = call <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float> %a0, <8 x float> %a1, <8 x i32> %a2, i8 4) ;
76  ret <8 x float> %res
77}
78declare <8 x float> @llvm.x86.xop.vpermil2ps.256(<8 x float>, <8 x float>, <8 x i32>, i8) nounwind readnone
79
80define <2 x i64> @test_int_x86_xop_vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) {
81; CHECK-LABEL: test_int_x86_xop_vpcmov:
82; CHECK:       # BB#0:
83; CHECK-NEXT:    vpcmov %xmm2, %xmm1, %xmm0, %xmm0
84; CHECK-NEXT:    retq
85  %res = call <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2) ;
86  ret <2 x i64> %res
87}
88declare <2 x i64> @llvm.x86.xop.vpcmov(<2 x i64>, <2 x i64>, <2 x i64>) nounwind readnone
89
90define <4 x i64> @test_int_x86_xop_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) {
91; CHECK-LABEL: test_int_x86_xop_vpcmov_256:
92; CHECK:       # BB#0:
93; CHECK-NEXT:    vpcmov %ymm2, %ymm1, %ymm0, %ymm0
94; CHECK-NEXT:    retq
95  %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2) ;
96  ret <4 x i64> %res
97}
98define <4 x i64> @test_int_x86_xop_vpcmov_256_mr(<4 x i64> %a0, <4 x i64>* %a1, <4 x i64> %a2) {
99; CHECK-LABEL: test_int_x86_xop_vpcmov_256_mr:
100; CHECK:       # BB#0:
101; CHECK-NEXT:    vpcmov %ymm1, (%rdi), %ymm0, %ymm0
102; CHECK-NEXT:    retq
103  %vec = load <4 x i64>, <4 x i64>* %a1
104  %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %vec, <4 x i64> %a2) ;
105  ret <4 x i64> %res
106}
107define <4 x i64> @test_int_x86_xop_vpcmov_256_rm(<4 x i64> %a0, <4 x i64> %a1, <4 x i64>* %a2) {
108; CHECK-LABEL: test_int_x86_xop_vpcmov_256_rm:
109; CHECK:       # BB#0:
110; CHECK-NEXT:    vpcmov (%rdi), %ymm1, %ymm0, %ymm0
111; CHECK-NEXT:    retq
112 %vec = load <4 x i64>, <4 x i64>* %a2
113 %res = call <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %vec) ;
114  ret <4 x i64> %res
115}
116declare <4 x i64> @llvm.x86.xop.vpcmov.256(<4 x i64>, <4 x i64>, <4 x i64>) nounwind readnone
117
118define <4 x i32> @test_int_x86_xop_vphaddbd(<16 x i8> %a0) {
119; CHECK-LABEL: test_int_x86_xop_vphaddbd:
120; CHECK:       # BB#0:
121; CHECK-NEXT:    vphaddbd %xmm0, %xmm0
122; CHECK-NEXT:    retq
123  %res = call <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8> %a0) ;
124  ret <4 x i32> %res
125}
126declare <4 x i32> @llvm.x86.xop.vphaddbd(<16 x i8>) nounwind readnone
127
128define <2 x i64> @test_int_x86_xop_vphaddbq(<16 x i8> %a0) {
129; CHECK-LABEL: test_int_x86_xop_vphaddbq:
130; CHECK:       # BB#0:
131; CHECK-NEXT:    vphaddbq %xmm0, %xmm0
132; CHECK-NEXT:    retq
133  %res = call <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8> %a0) ;
134  ret <2 x i64> %res
135}
136declare <2 x i64> @llvm.x86.xop.vphaddbq(<16 x i8>) nounwind readnone
137
138define <8 x i16> @test_int_x86_xop_vphaddbw(<16 x i8> %a0) {
139; CHECK-LABEL: test_int_x86_xop_vphaddbw:
140; CHECK:       # BB#0:
141; CHECK-NEXT:    vphaddbw %xmm0, %xmm0
142; CHECK-NEXT:    retq
143  %res = call <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8> %a0) ;
144  ret <8 x i16> %res
145}
146declare <8 x i16> @llvm.x86.xop.vphaddbw(<16 x i8>) nounwind readnone
147
148define <2 x i64> @test_int_x86_xop_vphadddq(<4 x i32> %a0) {
149; CHECK-LABEL: test_int_x86_xop_vphadddq:
150; CHECK:       # BB#0:
151; CHECK-NEXT:    vphadddq %xmm0, %xmm0
152; CHECK-NEXT:    retq
153  %res = call <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32> %a0) ;
154  ret <2 x i64> %res
155}
156declare <2 x i64> @llvm.x86.xop.vphadddq(<4 x i32>) nounwind readnone
157
158define <4 x i32> @test_int_x86_xop_vphaddubd(<16 x i8> %a0) {
159; CHECK-LABEL: test_int_x86_xop_vphaddubd:
160; CHECK:       # BB#0:
161; CHECK-NEXT:    vphaddubd %xmm0, %xmm0
162; CHECK-NEXT:    retq
163  %res = call <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8> %a0) ;
164  ret <4 x i32> %res
165}
166declare <4 x i32> @llvm.x86.xop.vphaddubd(<16 x i8>) nounwind readnone
167
168define <2 x i64> @test_int_x86_xop_vphaddubq(<16 x i8> %a0) {
169; CHECK-LABEL: test_int_x86_xop_vphaddubq:
170; CHECK:       # BB#0:
171; CHECK-NEXT:    vphaddubq %xmm0, %xmm0
172; CHECK-NEXT:    retq
173  %res = call <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8> %a0) ;
174  ret <2 x i64> %res
175}
176declare <2 x i64> @llvm.x86.xop.vphaddubq(<16 x i8>) nounwind readnone
177
178define <8 x i16> @test_int_x86_xop_vphaddubw(<16 x i8> %a0) {
179; CHECK-LABEL: test_int_x86_xop_vphaddubw:
180; CHECK:       # BB#0:
181; CHECK-NEXT:    vphaddubw %xmm0, %xmm0
182; CHECK-NEXT:    retq
183  %res = call <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8> %a0) ;
184  ret <8 x i16> %res
185}
186declare <8 x i16> @llvm.x86.xop.vphaddubw(<16 x i8>) nounwind readnone
187
188define <2 x i64> @test_int_x86_xop_vphaddudq(<4 x i32> %a0) {
189; CHECK-LABEL: test_int_x86_xop_vphaddudq:
190; CHECK:       # BB#0:
191; CHECK-NEXT:    vphaddudq %xmm0, %xmm0
192; CHECK-NEXT:    retq
193  %res = call <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32> %a0) ;
194  ret <2 x i64> %res
195}
196declare <2 x i64> @llvm.x86.xop.vphaddudq(<4 x i32>) nounwind readnone
197
198define <4 x i32> @test_int_x86_xop_vphadduwd(<8 x i16> %a0) {
199; CHECK-LABEL: test_int_x86_xop_vphadduwd:
200; CHECK:       # BB#0:
201; CHECK-NEXT:    vphadduwd %xmm0, %xmm0
202; CHECK-NEXT:    retq
203  %res = call <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16> %a0) ;
204  ret <4 x i32> %res
205}
206declare <4 x i32> @llvm.x86.xop.vphadduwd(<8 x i16>) nounwind readnone
207
208define <2 x i64> @test_int_x86_xop_vphadduwq(<8 x i16> %a0) {
209; CHECK-LABEL: test_int_x86_xop_vphadduwq:
210; CHECK:       # BB#0:
211; CHECK-NEXT:    vphadduwq %xmm0, %xmm0
212; CHECK-NEXT:    retq
213  %res = call <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16> %a0) ;
214  ret <2 x i64> %res
215}
216declare <2 x i64> @llvm.x86.xop.vphadduwq(<8 x i16>) nounwind readnone
217
218define <4 x i32> @test_int_x86_xop_vphaddwd(<8 x i16> %a0) {
219; CHECK-LABEL: test_int_x86_xop_vphaddwd:
220; CHECK:       # BB#0:
221; CHECK-NEXT:    vphaddwd %xmm0, %xmm0
222; CHECK-NEXT:    retq
223  %res = call <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16> %a0) ;
224  ret <4 x i32> %res
225}
226declare <4 x i32> @llvm.x86.xop.vphaddwd(<8 x i16>) nounwind readnone
227
228define <2 x i64> @test_int_x86_xop_vphaddwq(<8 x i16> %a0) {
229; CHECK-LABEL: test_int_x86_xop_vphaddwq:
230; CHECK:       # BB#0:
231; CHECK-NEXT:    vphaddwq %xmm0, %xmm0
232; CHECK-NEXT:    retq
233  %res = call <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16> %a0) ;
234  ret <2 x i64> %res
235}
236declare <2 x i64> @llvm.x86.xop.vphaddwq(<8 x i16>) nounwind readnone
237
238define <8 x i16> @test_int_x86_xop_vphsubbw(<16 x i8> %a0) {
239; CHECK-LABEL: test_int_x86_xop_vphsubbw:
240; CHECK:       # BB#0:
241; CHECK-NEXT:    vphsubbw %xmm0, %xmm0
242; CHECK-NEXT:    retq
243  %res = call <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8> %a0) ;
244  ret <8 x i16> %res
245}
246declare <8 x i16> @llvm.x86.xop.vphsubbw(<16 x i8>) nounwind readnone
247
248define <2 x i64> @test_int_x86_xop_vphsubdq(<4 x i32> %a0) {
249; CHECK-LABEL: test_int_x86_xop_vphsubdq:
250; CHECK:       # BB#0:
251; CHECK-NEXT:    vphsubdq %xmm0, %xmm0
252; CHECK-NEXT:    retq
253  %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %a0) ;
254  ret <2 x i64> %res
255}
256define <2 x i64> @test_int_x86_xop_vphsubdq_mem(<4 x i32>* %a0) {
257; CHECK-LABEL: test_int_x86_xop_vphsubdq_mem:
258; CHECK:       # BB#0:
259; CHECK-NEXT:    vphsubdq (%rdi), %xmm0
260; CHECK-NEXT:    retq
261  %vec = load <4 x i32>, <4 x i32>* %a0
262  %res = call <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32> %vec) ;
263  ret <2 x i64> %res
264}
265declare <2 x i64> @llvm.x86.xop.vphsubdq(<4 x i32>) nounwind readnone
266
267define <4 x i32> @test_int_x86_xop_vphsubwd(<8 x i16> %a0) {
268; CHECK-LABEL: test_int_x86_xop_vphsubwd:
269; CHECK:       # BB#0:
270; CHECK-NEXT:    vphsubwd %xmm0, %xmm0
271; CHECK-NEXT:    retq
272  %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %a0) ;
273  ret <4 x i32> %res
274}
275define <4 x i32> @test_int_x86_xop_vphsubwd_mem(<8 x i16>* %a0) {
276; CHECK-LABEL: test_int_x86_xop_vphsubwd_mem:
277; CHECK:       # BB#0:
278; CHECK-NEXT:    vphsubwd (%rdi), %xmm0
279; CHECK-NEXT:    retq
280  %vec = load <8 x i16>, <8 x i16>* %a0
281  %res = call <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16> %vec) ;
282  ret <4 x i32> %res
283}
284declare <4 x i32> @llvm.x86.xop.vphsubwd(<8 x i16>) nounwind readnone
285
286define <4 x i32> @test_int_x86_xop_vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {
287; CHECK-LABEL: test_int_x86_xop_vpmacsdd:
288; CHECK:       # BB#0:
289; CHECK-NEXT:    vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0
290; CHECK-NEXT:    retq
291  %res = call <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ;
292  ret <4 x i32> %res
293}
294declare <4 x i32> @llvm.x86.xop.vpmacsdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone
295
296define <2 x i64> @test_int_x86_xop_vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
297; CHECK-LABEL: test_int_x86_xop_vpmacsdqh:
298; CHECK:       # BB#0:
299; CHECK-NEXT:    vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0
300; CHECK-NEXT:    retq
301  %res = call <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ;
302  ret <2 x i64> %res
303}
304declare <2 x i64> @llvm.x86.xop.vpmacsdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
305
306define <2 x i64> @test_int_x86_xop_vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
307; CHECK-LABEL: test_int_x86_xop_vpmacsdql:
308; CHECK:       # BB#0:
309; CHECK-NEXT:    vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0
310; CHECK-NEXT:    retq
311  %res = call <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ;
312  ret <2 x i64> %res
313}
314declare <2 x i64> @llvm.x86.xop.vpmacsdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
315
316define <4 x i32> @test_int_x86_xop_vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) {
317; CHECK-LABEL: test_int_x86_xop_vpmacssdd:
318; CHECK:       # BB#0:
319; CHECK-NEXT:    vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0
320; CHECK-NEXT:    retq
321  %res = call <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32> %a0, <4 x i32> %a1, <4 x i32> %a2) ;
322  ret <4 x i32> %res
323}
324declare <4 x i32> @llvm.x86.xop.vpmacssdd(<4 x i32>, <4 x i32>, <4 x i32>) nounwind readnone
325
326define <2 x i64> @test_int_x86_xop_vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
327; CHECK-LABEL: test_int_x86_xop_vpmacssdqh:
328; CHECK:       # BB#0:
329; CHECK-NEXT:    vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0
330; CHECK-NEXT:    retq
331  %res = call <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ;
332  ret <2 x i64> %res
333}
334declare <2 x i64> @llvm.x86.xop.vpmacssdqh(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
335
336define <2 x i64> @test_int_x86_xop_vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) {
337; CHECK-LABEL: test_int_x86_xop_vpmacssdql:
338; CHECK:       # BB#0:
339; CHECK-NEXT:    vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0
340; CHECK-NEXT:    retq
341  %res = call <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32> %a0, <4 x i32> %a1, <2 x i64> %a2) ;
342  ret <2 x i64> %res
343}
344declare <2 x i64> @llvm.x86.xop.vpmacssdql(<4 x i32>, <4 x i32>, <2 x i64>) nounwind readnone
345
346define <4 x i32> @test_int_x86_xop_vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
347; CHECK-LABEL: test_int_x86_xop_vpmacsswd:
348; CHECK:       # BB#0:
349; CHECK-NEXT:    vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0
350; CHECK-NEXT:    retq
351  %res = call <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ;
352  ret <4 x i32> %res
353}
354declare <4 x i32> @llvm.x86.xop.vpmacsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
355
356define <8 x i16> @test_int_x86_xop_vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {
357; CHECK-LABEL: test_int_x86_xop_vpmacssww:
358; CHECK:       # BB#0:
359; CHECK-NEXT:    vpmacssww %xmm2, %xmm1, %xmm0, %xmm0
360; CHECK-NEXT:    retq
361  %res = call <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ;
362  ret <8 x i16> %res
363}
364declare <8 x i16> @llvm.x86.xop.vpmacssww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone
365
366define <4 x i32> @test_int_x86_xop_vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
367; CHECK-LABEL: test_int_x86_xop_vpmacswd:
368; CHECK:       # BB#0:
369; CHECK-NEXT:    vpmacswd %xmm2, %xmm1, %xmm0, %xmm0
370; CHECK-NEXT:    retq
371  %res = call <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ;
372  ret <4 x i32> %res
373}
374declare <4 x i32> @llvm.x86.xop.vpmacswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
375
376define <8 x i16> @test_int_x86_xop_vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) {
377; CHECK-LABEL: test_int_x86_xop_vpmacsww:
378; CHECK:       # BB#0:
379; CHECK-NEXT:    vpmacsww %xmm2, %xmm1, %xmm0, %xmm0
380; CHECK-NEXT:    retq
381  %res = call <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16> %a0, <8 x i16> %a1, <8 x i16> %a2) ;
382  ret <8 x i16> %res
383}
384declare <8 x i16> @llvm.x86.xop.vpmacsww(<8 x i16>, <8 x i16>, <8 x i16>) nounwind readnone
385
386define <4 x i32> @test_int_x86_xop_vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
387; CHECK-LABEL: test_int_x86_xop_vpmadcsswd:
388; CHECK:       # BB#0:
389; CHECK-NEXT:    vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0
390; CHECK-NEXT:    retq
391  %res = call <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ;
392  ret <4 x i32> %res
393}
394declare <4 x i32> @llvm.x86.xop.vpmadcsswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
395
396define <4 x i32> @test_int_x86_xop_vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) {
397; CHECK-LABEL: test_int_x86_xop_vpmadcswd:
398; CHECK:       # BB#0:
399; CHECK-NEXT:    vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0
400; CHECK-NEXT:    retq
401  %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %a1, <4 x i32> %a2) ;
402  ret <4 x i32> %res
403}
404define <4 x i32> @test_int_x86_xop_vpmadcswd_mem(<8 x i16> %a0, <8 x i16>* %a1, <4 x i32> %a2) {
405; CHECK-LABEL: test_int_x86_xop_vpmadcswd_mem:
406; CHECK:       # BB#0:
407; CHECK-NEXT:    vpmadcswd %xmm1, (%rdi), %xmm0, %xmm0
408; CHECK-NEXT:    retq
409  %vec = load <8 x i16>, <8 x i16>* %a1
410  %res = call <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16> %a0, <8 x i16> %vec, <4 x i32> %a2) ;
411  ret <4 x i32> %res
412}
413declare <4 x i32> @llvm.x86.xop.vpmadcswd(<8 x i16>, <8 x i16>, <4 x i32>) nounwind readnone
414
415define <16 x i8> @test_int_x86_xop_vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {
416; CHECK-LABEL: test_int_x86_xop_vpperm:
417; CHECK:       # BB#0:
418; CHECK-NEXT:    vpperm %xmm2, %xmm1, %xmm0, %xmm0
419; CHECK-NEXT:    retq
420  %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) ;
421  ret <16 x i8> %res
422}
423define <16 x i8> @test_int_x86_xop_vpperm_rm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8>* %a2) {
424; CHECK-LABEL: test_int_x86_xop_vpperm_rm:
425; CHECK:       # BB#0:
426; CHECK-NEXT:    vpperm (%rdi), %xmm1, %xmm0, %xmm0
427; CHECK-NEXT:    retq
428  %vec = load <16 x i8>, <16 x i8>* %a2
429  %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %vec) ;
430  ret <16 x i8> %res
431}
432define <16 x i8> @test_int_x86_xop_vpperm_mr(<16 x i8> %a0, <16 x i8>* %a1, <16 x i8> %a2) {
433; CHECK-LABEL: test_int_x86_xop_vpperm_mr:
434; CHECK:       # BB#0:
435; CHECK-NEXT:    vpperm %xmm1, (%rdi), %xmm0, %xmm0
436; CHECK-NEXT:    retq
437  %vec = load <16 x i8>, <16 x i8>* %a1
438  %res = call <16 x i8> @llvm.x86.xop.vpperm(<16 x i8> %a0, <16 x i8> %vec, <16 x i8> %a2) ;
439  ret <16 x i8> %res
440}
441declare <16 x i8> @llvm.x86.xop.vpperm(<16 x i8>, <16 x i8>, <16 x i8>) nounwind readnone
442
443define <16 x i8> @test_int_x86_xop_vprotb(<16 x i8> %a0, <16 x i8> %a1) {
444; CHECK-LABEL: test_int_x86_xop_vprotb:
445; CHECK:       # BB#0:
446; CHECK-NEXT:    vprotb %xmm1, %xmm0, %xmm0
447; CHECK-NEXT:    retq
448  %res = call <16 x i8> @llvm.x86.xop.vprotb(<16 x i8> %a0, <16 x i8> %a1) ;
449  ret <16 x i8> %res
450}
451declare <16 x i8> @llvm.x86.xop.vprotb(<16 x i8>, <16 x i8>) nounwind readnone
452
453define <4 x i32> @test_int_x86_xop_vprotd(<4 x i32> %a0, <4 x i32> %a1) {
454; CHECK-LABEL: test_int_x86_xop_vprotd:
455; CHECK:       # BB#0:
456; CHECK-NEXT:    vprotd %xmm1, %xmm0, %xmm0
457; CHECK-NEXT:    retq
458  %res = call <4 x i32> @llvm.x86.xop.vprotd(<4 x i32> %a0, <4 x i32> %a1) ;
459  ret <4 x i32> %res
460}
461declare <4 x i32> @llvm.x86.xop.vprotd(<4 x i32>, <4 x i32>) nounwind readnone
462
463define <2 x i64> @test_int_x86_xop_vprotq(<2 x i64> %a0, <2 x i64> %a1) {
464; CHECK-LABEL: test_int_x86_xop_vprotq:
465; CHECK:       # BB#0:
466; CHECK-NEXT:    vprotq %xmm1, %xmm0, %xmm0
467; CHECK-NEXT:    retq
468  %res = call <2 x i64> @llvm.x86.xop.vprotq(<2 x i64> %a0, <2 x i64> %a1) ;
469  ret <2 x i64> %res
470}
471declare <2 x i64> @llvm.x86.xop.vprotq(<2 x i64>, <2 x i64>) nounwind readnone
472
473define <8 x i16> @test_int_x86_xop_vprotw(<8 x i16> %a0, <8 x i16> %a1) {
474; CHECK-LABEL: test_int_x86_xop_vprotw:
475; CHECK:       # BB#0:
476; CHECK-NEXT:    vprotw %xmm1, %xmm0, %xmm0
477; CHECK-NEXT:    retq
478  %res = call <8 x i16> @llvm.x86.xop.vprotw(<8 x i16> %a0, <8 x i16> %a1) ;
479  ret <8 x i16> %res
480}
481declare <8 x i16> @llvm.x86.xop.vprotw(<8 x i16>, <8 x i16>) nounwind readnone
482
483define <16 x i8> @test_int_x86_xop_vprotbi(<16 x i8> %a0) {
484; CHECK-LABEL: test_int_x86_xop_vprotbi:
485; CHECK:       # BB#0:
486; CHECK-NEXT:    vprotb $1, %xmm0, %xmm0
487; CHECK-NEXT:    retq
488  %res = call <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8> %a0, i8 1) ;
489  ret <16 x i8> %res
490}
491declare <16 x i8> @llvm.x86.xop.vprotbi(<16 x i8>, i8) nounwind readnone
492
493define <4 x i32> @test_int_x86_xop_vprotdi(<4 x i32> %a0) {
494; CHECK-LABEL: test_int_x86_xop_vprotdi:
495; CHECK:       # BB#0:
496; CHECK-NEXT:    vprotd $254, %xmm0, %xmm0
497; CHECK-NEXT:    retq
498  %res = call <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32> %a0, i8 -2) ;
499  ret <4 x i32> %res
500}
501declare <4 x i32> @llvm.x86.xop.vprotdi(<4 x i32>, i8) nounwind readnone
502
503define <2 x i64> @test_int_x86_xop_vprotqi(<2 x i64> %a0) {
504; CHECK-LABEL: test_int_x86_xop_vprotqi:
505; CHECK:       # BB#0:
506; CHECK-NEXT:    vprotq $3, %xmm0, %xmm0
507; CHECK-NEXT:    retq
508  %res = call <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64> %a0, i8 3) ;
509  ret <2 x i64> %res
510}
511declare <2 x i64> @llvm.x86.xop.vprotqi(<2 x i64>, i8) nounwind readnone
512
513define <8 x i16> @test_int_x86_xop_vprotwi(<8 x i16> %a0) {
514; CHECK-LABEL: test_int_x86_xop_vprotwi:
515; CHECK:       # BB#0:
516; CHECK-NEXT:    vprotw $252, %xmm0, %xmm0
517; CHECK-NEXT:    retq
518  %res = call <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16> %a0, i8 -4) ;
519  ret <8 x i16> %res
520}
521declare <8 x i16> @llvm.x86.xop.vprotwi(<8 x i16>, i8) nounwind readnone
522
523define <16 x i8> @test_int_x86_xop_vpshab(<16 x i8> %a0, <16 x i8> %a1) {
524; CHECK-LABEL: test_int_x86_xop_vpshab:
525; CHECK:       # BB#0:
526; CHECK-NEXT:    vpshab %xmm1, %xmm0, %xmm0
527; CHECK-NEXT:    retq
528  %res = call <16 x i8> @llvm.x86.xop.vpshab(<16 x i8> %a0, <16 x i8> %a1) ;
529  ret <16 x i8> %res
530}
531declare <16 x i8> @llvm.x86.xop.vpshab(<16 x i8>, <16 x i8>) nounwind readnone
532
533define <4 x i32> @test_int_x86_xop_vpshad(<4 x i32> %a0, <4 x i32> %a1) {
534; CHECK-LABEL: test_int_x86_xop_vpshad:
535; CHECK:       # BB#0:
536; CHECK-NEXT:    vpshad %xmm1, %xmm0, %xmm0
537; CHECK-NEXT:    retq
538  %res = call <4 x i32> @llvm.x86.xop.vpshad(<4 x i32> %a0, <4 x i32> %a1) ;
539  ret <4 x i32> %res
540}
541declare <4 x i32> @llvm.x86.xop.vpshad(<4 x i32>, <4 x i32>) nounwind readnone
542
543define <2 x i64> @test_int_x86_xop_vpshaq(<2 x i64> %a0, <2 x i64> %a1) {
544; CHECK-LABEL: test_int_x86_xop_vpshaq:
545; CHECK:       # BB#0:
546; CHECK-NEXT:    vpshaq %xmm1, %xmm0, %xmm0
547; CHECK-NEXT:    retq
548  %res = call <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64> %a0, <2 x i64> %a1) ;
549  ret <2 x i64> %res
550}
551declare <2 x i64> @llvm.x86.xop.vpshaq(<2 x i64>, <2 x i64>) nounwind readnone
552
553define <8 x i16> @test_int_x86_xop_vpshaw(<8 x i16> %a0, <8 x i16> %a1) {
554; CHECK-LABEL: test_int_x86_xop_vpshaw:
555; CHECK:       # BB#0:
556; CHECK-NEXT:    vpshaw %xmm1, %xmm0, %xmm0
557; CHECK-NEXT:    retq
558  %res = call <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16> %a0, <8 x i16> %a1) ;
559  ret <8 x i16> %res
560}
561declare <8 x i16> @llvm.x86.xop.vpshaw(<8 x i16>, <8 x i16>) nounwind readnone
562
563define <16 x i8> @test_int_x86_xop_vpshlb(<16 x i8> %a0, <16 x i8> %a1) {
564; CHECK-LABEL: test_int_x86_xop_vpshlb:
565; CHECK:       # BB#0:
566; CHECK-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
567; CHECK-NEXT:    retq
568  %res = call <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8> %a0, <16 x i8> %a1) ;
569  ret <16 x i8> %res
570}
571declare <16 x i8> @llvm.x86.xop.vpshlb(<16 x i8>, <16 x i8>) nounwind readnone
572
573define <4 x i32> @test_int_x86_xop_vpshld(<4 x i32> %a0, <4 x i32> %a1) {
574; CHECK-LABEL: test_int_x86_xop_vpshld:
575; CHECK:       # BB#0:
576; CHECK-NEXT:    vpshld %xmm1, %xmm0, %xmm0
577; CHECK-NEXT:    retq
578  %res = call <4 x i32> @llvm.x86.xop.vpshld(<4 x i32> %a0, <4 x i32> %a1) ;
579  ret <4 x i32> %res
580}
581declare <4 x i32> @llvm.x86.xop.vpshld(<4 x i32>, <4 x i32>) nounwind readnone
582
583define <2 x i64> @test_int_x86_xop_vpshlq(<2 x i64> %a0, <2 x i64> %a1) {
584; CHECK-LABEL: test_int_x86_xop_vpshlq:
585; CHECK:       # BB#0:
586; CHECK-NEXT:    vpshlq %xmm1, %xmm0, %xmm0
587; CHECK-NEXT:    retq
588  %res = call <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64> %a0, <2 x i64> %a1) ;
589  ret <2 x i64> %res
590}
591declare <2 x i64> @llvm.x86.xop.vpshlq(<2 x i64>, <2 x i64>) nounwind readnone
592
593define <8 x i16> @test_int_x86_xop_vpshlw(<8 x i16> %a0, <8 x i16> %a1) {
594; CHECK-LABEL: test_int_x86_xop_vpshlw:
595; CHECK:       # BB#0:
596; CHECK-NEXT:    vpshlw %xmm1, %xmm0, %xmm0
597; CHECK-NEXT:    retq
598  %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %a1) ;
599  ret <8 x i16> %res
600}
601define <8 x i16> @test_int_x86_xop_vpshlw_rm(<8 x i16> %a0, <8 x i16>* %a1) {
602; CHECK-LABEL: test_int_x86_xop_vpshlw_rm:
603; CHECK:       # BB#0:
604; CHECK-NEXT:    vpshlw (%rdi), %xmm0, %xmm0
605; CHECK-NEXT:    retq
606  %vec = load <8 x i16>, <8 x i16>* %a1
607  %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %a0, <8 x i16> %vec) ;
608  ret <8 x i16> %res
609}
610define <8 x i16> @test_int_x86_xop_vpshlw_mr(<8 x i16>* %a0, <8 x i16> %a1) {
611; CHECK-LABEL: test_int_x86_xop_vpshlw_mr:
612; CHECK:       # BB#0:
613; CHECK-NEXT:    vpshlw %xmm0, (%rdi), %xmm0
614; CHECK-NEXT:    retq
615  %vec = load <8 x i16>, <8 x i16>* %a0
616  %res = call <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16> %vec, <8 x i16> %a1) ;
617  ret <8 x i16> %res
618}
619declare <8 x i16> @llvm.x86.xop.vpshlw(<8 x i16>, <8 x i16>) nounwind readnone
620
621define <4 x float> @test_int_x86_xop_vfrcz_ss(<4 x float> %a0) {
622; CHECK-LABEL: test_int_x86_xop_vfrcz_ss:
623; CHECK:       # BB#0:
624; CHECK-NEXT:    vfrczss %xmm0, %xmm0
625; CHECK-NEXT:    retq
626  %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %a0) ;
627  ret <4 x float> %res
628}
629define <4 x float> @test_int_x86_xop_vfrcz_ss_mem(float* %a0) {
630; CHECK-LABEL: test_int_x86_xop_vfrcz_ss_mem:
631; CHECK:       # BB#0:
632; CHECK-NEXT:    vfrczss (%rdi), %xmm0
633; CHECK-NEXT:    retq
634  %elem = load float, float* %a0
635  %vec = insertelement <4 x float> undef, float %elem, i32 0
636  %res = call <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float> %vec) ;
637  ret <4 x float> %res
638}
639declare <4 x float> @llvm.x86.xop.vfrcz.ss(<4 x float>) nounwind readnone
640
641define <2 x double> @test_int_x86_xop_vfrcz_sd(<2 x double> %a0) {
642; CHECK-LABEL: test_int_x86_xop_vfrcz_sd:
643; CHECK:       # BB#0:
644; CHECK-NEXT:    vfrczsd %xmm0, %xmm0
645; CHECK-NEXT:    retq
646  %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %a0) ;
647  ret <2 x double> %res
648}
649define <2 x double> @test_int_x86_xop_vfrcz_sd_mem(double* %a0) {
650; CHECK-LABEL: test_int_x86_xop_vfrcz_sd_mem:
651; CHECK:       # BB#0:
652; CHECK-NEXT:    vfrczsd (%rdi), %xmm0
653; CHECK-NEXT:    retq
654  %elem = load double, double* %a0
655  %vec = insertelement <2 x double> undef, double %elem, i32 0
656  %res = call <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double> %vec) ;
657  ret <2 x double> %res
658}
659declare <2 x double> @llvm.x86.xop.vfrcz.sd(<2 x double>) nounwind readnone
660
661define <2 x double> @test_int_x86_xop_vfrcz_pd(<2 x double> %a0) {
662; CHECK-LABEL: test_int_x86_xop_vfrcz_pd:
663; CHECK:       # BB#0:
664; CHECK-NEXT:    vfrczpd %xmm0, %xmm0
665; CHECK-NEXT:    retq
666  %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %a0) ;
667  ret <2 x double> %res
668}
669define <2 x double> @test_int_x86_xop_vfrcz_pd_mem(<2 x double>* %a0) {
670; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_mem:
671; CHECK:       # BB#0:
672; CHECK-NEXT:    vfrczpd (%rdi), %xmm0
673; CHECK-NEXT:    retq
674  %vec = load <2 x double>, <2 x double>* %a0
675  %res = call <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double> %vec) ;
676  ret <2 x double> %res
677}
678declare <2 x double> @llvm.x86.xop.vfrcz.pd(<2 x double>) nounwind readnone
679
680define <4 x double> @test_int_x86_xop_vfrcz_pd_256(<4 x double> %a0) {
681; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256:
682; CHECK:       # BB#0:
683; CHECK-NEXT:    vfrczpd %ymm0, %ymm0
684; CHECK-NEXT:    retq
685  %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %a0) ;
686  ret <4 x double> %res
687}
688define <4 x double> @test_int_x86_xop_vfrcz_pd_256_mem(<4 x double>* %a0) {
689; CHECK-LABEL: test_int_x86_xop_vfrcz_pd_256_mem:
690; CHECK:       # BB#0:
691; CHECK-NEXT:    vfrczpd (%rdi), %ymm0
692; CHECK-NEXT:    retq
693  %vec = load <4 x double>, <4 x double>* %a0
694  %res = call <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double> %vec) ;
695  ret <4 x double> %res
696}
697declare <4 x double> @llvm.x86.xop.vfrcz.pd.256(<4 x double>) nounwind readnone
698
699define <4 x float> @test_int_x86_xop_vfrcz_ps(<4 x float> %a0) {
700; CHECK-LABEL: test_int_x86_xop_vfrcz_ps:
701; CHECK:       # BB#0:
702; CHECK-NEXT:    vfrczps %xmm0, %xmm0
703; CHECK-NEXT:    retq
704  %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %a0) ;
705  ret <4 x float> %res
706}
707define <4 x float> @test_int_x86_xop_vfrcz_ps_mem(<4 x float>* %a0) {
708; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_mem:
709; CHECK:       # BB#0:
710; CHECK-NEXT:    vfrczps (%rdi), %xmm0
711; CHECK-NEXT:    retq
712  %vec = load <4 x float>, <4 x float>* %a0
713  %res = call <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float> %vec) ;
714  ret <4 x float> %res
715}
716declare <4 x float> @llvm.x86.xop.vfrcz.ps(<4 x float>) nounwind readnone
717
718define <8 x float> @test_int_x86_xop_vfrcz_ps_256(<8 x float> %a0) {
719; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256:
720; CHECK:       # BB#0:
721; CHECK-NEXT:    vfrczps %ymm0, %ymm0
722; CHECK-NEXT:    retq
723  %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %a0) ;
724  ret <8 x float> %res
725}
726define <8 x float> @test_int_x86_xop_vfrcz_ps_256_mem(<8 x float>* %a0) {
727; CHECK-LABEL: test_int_x86_xop_vfrcz_ps_256_mem:
728; CHECK:       # BB#0:
729; CHECK-NEXT:    vfrczps (%rdi), %ymm0
730; CHECK-NEXT:    retq
731  %vec = load <8 x float>, <8 x float>* %a0
732  %res = call <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float> %vec) ;
733  ret <8 x float> %res
734}
735declare <8 x float> @llvm.x86.xop.vfrcz.ps.256(<8 x float>) nounwind readnone
736
737define <16 x i8> @test_int_x86_xop_vpcomb(<16 x i8> %a0, <16 x i8> %a1) {
738; CHECK-LABEL: test_int_x86_xop_vpcomb:
739; CHECK:       # BB#0:
740; CHECK-NEXT:    vpcomltb %xmm1, %xmm0, %xmm0
741; CHECK-NEXT:    retq
742  %res = call <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8> %a0, <16 x i8> %a1, i8 0) ;
743  ret <16 x i8> %res
744}
745declare <16 x i8> @llvm.x86.xop.vpcomb(<16 x i8>, <16 x i8>, i8) nounwind readnone
746
747define <8 x i16> @test_int_x86_xop_vpcomw(<8 x i16> %a0, <8 x i16> %a1) {
748; CHECK-LABEL: test_int_x86_xop_vpcomw:
749; CHECK:       # BB#0:
750; CHECK-NEXT:    vpcomltw %xmm1, %xmm0, %xmm0
751; CHECK-NEXT:    retq
752  %res = call <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ;
753  ret <8 x i16> %res
754}
755declare <8 x i16> @llvm.x86.xop.vpcomw(<8 x i16>, <8 x i16>, i8) nounwind readnone
756
757define <4 x i32> @test_int_x86_xop_vpcomd(<4 x i32> %a0, <4 x i32> %a1) {
758; CHECK-LABEL: test_int_x86_xop_vpcomd:
759; CHECK:       # BB#0:
760; CHECK-NEXT:    vpcomltd %xmm1, %xmm0, %xmm0
761; CHECK-NEXT:    retq
762  %res = call <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32> %a0, <4 x i32> %a1, i8 0) ;
763  ret <4 x i32> %res
764}
765declare <4 x i32> @llvm.x86.xop.vpcomd(<4 x i32>, <4 x i32>, i8) nounwind readnone
766
767define <2 x i64> @test_int_x86_xop_vpcomq(<2 x i64> %a0, <2 x i64> %a1) {
768; CHECK-LABEL: test_int_x86_xop_vpcomq:
769; CHECK:       # BB#0:
770; CHECK-NEXT:    vpcomltq %xmm1, %xmm0, %xmm0
771; CHECK-NEXT:    retq
772  %res = call <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ;
773  ret <2 x i64> %res
774}
775declare <2 x i64> @llvm.x86.xop.vpcomq(<2 x i64>, <2 x i64>, i8) nounwind readnone
776
777define <16 x i8> @test_int_x86_xop_vpcomub(<16 x i8> %a0, <16 x i8> %a1) {
778; CHECK-LABEL: test_int_x86_xop_vpcomub:
779; CHECK:       # BB#0:
780; CHECK-NEXT:    vpcomltub %xmm1, %xmm0, %xmm0
781; CHECK-NEXT:    retq
782  %res = call <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8> %a0, <16 x i8> %a1, i8 0) ;
783  ret <16 x i8> %res
784}
785declare <16 x i8> @llvm.x86.xop.vpcomub(<16 x i8>, <16 x i8>, i8) nounwind readnone
786
787define <8 x i16> @test_int_x86_xop_vpcomuw(<8 x i16> %a0, <8 x i16> %a1) {
788; CHECK-LABEL: test_int_x86_xop_vpcomuw:
789; CHECK:       # BB#0:
790; CHECK-NEXT:    vpcomltuw %xmm1, %xmm0, %xmm0
791; CHECK-NEXT:    retq
792  %res = call <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16> %a0, <8 x i16> %a1, i8 0) ;
793  ret <8 x i16> %res
794}
795declare <8 x i16> @llvm.x86.xop.vpcomuw(<8 x i16>, <8 x i16>, i8) nounwind readnone
796
797define <4 x i32> @test_int_x86_xop_vpcomud(<4 x i32> %a0, <4 x i32> %a1) {
798; CHECK-LABEL: test_int_x86_xop_vpcomud:
799; CHECK:       # BB#0:
800; CHECK-NEXT:    vpcomltud %xmm1, %xmm0, %xmm0
801; CHECK-NEXT:    retq
802  %res = call <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32> %a0, <4 x i32> %a1, i8 0) ;
803  ret <4 x i32> %res
804}
805declare <4 x i32> @llvm.x86.xop.vpcomud(<4 x i32>, <4 x i32>, i8) nounwind readnone
806
807define <2 x i64> @test_int_x86_xop_vpcomuq(<2 x i64> %a0, <2 x i64> %a1) {
808; CHECK-LABEL: test_int_x86_xop_vpcomuq:
809; CHECK:       # BB#0:
810; CHECK-NEXT:    vpcomltuq %xmm1, %xmm0, %xmm0
811; CHECK-NEXT:    retq
812  %res = call <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64> %a0, <2 x i64> %a1, i8 0) ;
813  ret <2 x i64> %res
814}
815declare <2 x i64> @llvm.x86.xop.vpcomuq(<2 x i64>, <2 x i64>, i8) nounwind readnone
816
817