1*67e74705SXin Li // REQUIRES: systemz-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
3*67e74705SXin Li // RUN: -O -fzvector -fno-lax-vector-conversions \
4*67e74705SXin Li // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
5*67e74705SXin Li
6*67e74705SXin Li #include <vecintrin.h>
7*67e74705SXin Li
8*67e74705SXin Li volatile vector signed char vsc;
9*67e74705SXin Li volatile vector signed short vss;
10*67e74705SXin Li volatile vector signed int vsi;
11*67e74705SXin Li volatile vector signed long long vsl;
12*67e74705SXin Li volatile vector unsigned char vuc;
13*67e74705SXin Li volatile vector unsigned short vus;
14*67e74705SXin Li volatile vector unsigned int vui;
15*67e74705SXin Li volatile vector unsigned long long vul;
16*67e74705SXin Li volatile vector bool char vbc;
17*67e74705SXin Li volatile vector bool short vbs;
18*67e74705SXin Li volatile vector bool int vbi;
19*67e74705SXin Li volatile vector bool long long vbl;
20*67e74705SXin Li volatile vector double vd;
21*67e74705SXin Li
22*67e74705SXin Li volatile signed char sc;
23*67e74705SXin Li volatile signed short ss;
24*67e74705SXin Li volatile signed int si;
25*67e74705SXin Li volatile signed long long sl;
26*67e74705SXin Li volatile unsigned char uc;
27*67e74705SXin Li volatile unsigned short us;
28*67e74705SXin Li volatile unsigned int ui;
29*67e74705SXin Li volatile unsigned long long ul;
30*67e74705SXin Li volatile double d;
31*67e74705SXin Li
32*67e74705SXin Li const void * volatile cptr;
33*67e74705SXin Li const signed char * volatile cptrsc;
34*67e74705SXin Li const signed short * volatile cptrss;
35*67e74705SXin Li const signed int * volatile cptrsi;
36*67e74705SXin Li const signed long long * volatile cptrsl;
37*67e74705SXin Li const unsigned char * volatile cptruc;
38*67e74705SXin Li const unsigned short * volatile cptrus;
39*67e74705SXin Li const unsigned int * volatile cptrui;
40*67e74705SXin Li const unsigned long long * volatile cptrul;
41*67e74705SXin Li const float * volatile cptrf;
42*67e74705SXin Li const double * volatile cptrd;
43*67e74705SXin Li
44*67e74705SXin Li void * volatile ptr;
45*67e74705SXin Li signed char * volatile ptrsc;
46*67e74705SXin Li signed short * volatile ptrss;
47*67e74705SXin Li signed int * volatile ptrsi;
48*67e74705SXin Li signed long long * volatile ptrsl;
49*67e74705SXin Li unsigned char * volatile ptruc;
50*67e74705SXin Li unsigned short * volatile ptrus;
51*67e74705SXin Li unsigned int * volatile ptrui;
52*67e74705SXin Li unsigned long long * volatile ptrul;
53*67e74705SXin Li float * volatile ptrf;
54*67e74705SXin Li double * volatile ptrd;
55*67e74705SXin Li
56*67e74705SXin Li volatile unsigned int len;
57*67e74705SXin Li volatile int idx;
58*67e74705SXin Li int cc;
59*67e74705SXin Li
test_core(void)60*67e74705SXin Li void test_core(void) {
61*67e74705SXin Li len = __lcbb(cptr, 64);
62*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 0)
63*67e74705SXin Li len = __lcbb(cptr, 128);
64*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 1)
65*67e74705SXin Li len = __lcbb(cptr, 256);
66*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 2)
67*67e74705SXin Li len = __lcbb(cptr, 512);
68*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 3)
69*67e74705SXin Li len = __lcbb(cptr, 1024);
70*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 4)
71*67e74705SXin Li len = __lcbb(cptr, 2048);
72*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 5)
73*67e74705SXin Li len = __lcbb(cptr, 4096);
74*67e74705SXin Li // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 6)
75*67e74705SXin Li
76*67e74705SXin Li sc = vec_extract(vsc, idx);
77*67e74705SXin Li // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
78*67e74705SXin Li uc = vec_extract(vuc, idx);
79*67e74705SXin Li // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
80*67e74705SXin Li uc = vec_extract(vbc, idx);
81*67e74705SXin Li // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
82*67e74705SXin Li ss = vec_extract(vss, idx);
83*67e74705SXin Li // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
84*67e74705SXin Li us = vec_extract(vus, idx);
85*67e74705SXin Li // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
86*67e74705SXin Li us = vec_extract(vbs, idx);
87*67e74705SXin Li // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
88*67e74705SXin Li si = vec_extract(vsi, idx);
89*67e74705SXin Li // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
90*67e74705SXin Li ui = vec_extract(vui, idx);
91*67e74705SXin Li // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
92*67e74705SXin Li ui = vec_extract(vbi, idx);
93*67e74705SXin Li // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
94*67e74705SXin Li sl = vec_extract(vsl, idx);
95*67e74705SXin Li // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
96*67e74705SXin Li ul = vec_extract(vul, idx);
97*67e74705SXin Li // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
98*67e74705SXin Li ul = vec_extract(vbl, idx);
99*67e74705SXin Li // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
100*67e74705SXin Li d = vec_extract(vd, idx);
101*67e74705SXin Li // CHECK: extractelement <2 x double> %{{.*}}, i32 %{{.*}}
102*67e74705SXin Li
103*67e74705SXin Li vsc = vec_insert(sc, vsc, idx);
104*67e74705SXin Li // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
105*67e74705SXin Li vuc = vec_insert(uc, vuc, idx);
106*67e74705SXin Li // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
107*67e74705SXin Li vuc = vec_insert(uc, vbc, idx);
108*67e74705SXin Li // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
109*67e74705SXin Li vss = vec_insert(ss, vss, idx);
110*67e74705SXin Li // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
111*67e74705SXin Li vus = vec_insert(us, vus, idx);
112*67e74705SXin Li // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
113*67e74705SXin Li vus = vec_insert(us, vbs, idx);
114*67e74705SXin Li // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
115*67e74705SXin Li vsi = vec_insert(si, vsi, idx);
116*67e74705SXin Li // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
117*67e74705SXin Li vui = vec_insert(ui, vui, idx);
118*67e74705SXin Li // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
119*67e74705SXin Li vui = vec_insert(ui, vbi, idx);
120*67e74705SXin Li // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
121*67e74705SXin Li vsl = vec_insert(sl, vsl, idx);
122*67e74705SXin Li // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
123*67e74705SXin Li vul = vec_insert(ul, vul, idx);
124*67e74705SXin Li // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
125*67e74705SXin Li vul = vec_insert(ul, vbl, idx);
126*67e74705SXin Li // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
127*67e74705SXin Li vd = vec_insert(d, vd, idx);
128*67e74705SXin Li // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 %{{.*}}
129*67e74705SXin Li
130*67e74705SXin Li vsc = vec_promote(sc, idx);
131*67e74705SXin Li // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}}
132*67e74705SXin Li vuc = vec_promote(uc, idx);
133*67e74705SXin Li // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}}
134*67e74705SXin Li vss = vec_promote(ss, idx);
135*67e74705SXin Li // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}}
136*67e74705SXin Li vus = vec_promote(us, idx);
137*67e74705SXin Li // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}}
138*67e74705SXin Li vsi = vec_promote(si, idx);
139*67e74705SXin Li // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}}
140*67e74705SXin Li vui = vec_promote(ui, idx);
141*67e74705SXin Li // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}}
142*67e74705SXin Li vsl = vec_promote(sl, idx);
143*67e74705SXin Li // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}}
144*67e74705SXin Li vul = vec_promote(ul, idx);
145*67e74705SXin Li // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}}
146*67e74705SXin Li vd = vec_promote(d, idx);
147*67e74705SXin Li // CHECK: insertelement <2 x double> undef, double %{{.*}}, i32 %{{.*}}
148*67e74705SXin Li
149*67e74705SXin Li vsc = vec_insert_and_zero(cptrsc);
150*67e74705SXin Li // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7
151*67e74705SXin Li vuc = vec_insert_and_zero(cptruc);
152*67e74705SXin Li // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7
153*67e74705SXin Li vss = vec_insert_and_zero(cptrss);
154*67e74705SXin Li // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3
155*67e74705SXin Li vus = vec_insert_and_zero(cptrus);
156*67e74705SXin Li // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3
157*67e74705SXin Li vsi = vec_insert_and_zero(cptrsi);
158*67e74705SXin Li // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1
159*67e74705SXin Li vui = vec_insert_and_zero(cptrui);
160*67e74705SXin Li // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1
161*67e74705SXin Li vsl = vec_insert_and_zero(cptrsl);
162*67e74705SXin Li // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0
163*67e74705SXin Li vul = vec_insert_and_zero(cptrul);
164*67e74705SXin Li // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0
165*67e74705SXin Li vd = vec_insert_and_zero(cptrd);
166*67e74705SXin Li // CHECK: insertelement <2 x double> <double undef, double 0.000000e+00>, double %{{.*}}, i32 0
167*67e74705SXin Li
168*67e74705SXin Li vsc = vec_perm(vsc, vsc, vuc);
169*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
170*67e74705SXin Li vuc = vec_perm(vuc, vuc, vuc);
171*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
172*67e74705SXin Li vbc = vec_perm(vbc, vbc, vuc);
173*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
174*67e74705SXin Li vss = vec_perm(vss, vss, vuc);
175*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
176*67e74705SXin Li vus = vec_perm(vus, vus, vuc);
177*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
178*67e74705SXin Li vbs = vec_perm(vbs, vbs, vuc);
179*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
180*67e74705SXin Li vsi = vec_perm(vsi, vsi, vuc);
181*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
182*67e74705SXin Li vui = vec_perm(vui, vui, vuc);
183*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
184*67e74705SXin Li vbi = vec_perm(vbi, vbi, vuc);
185*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
186*67e74705SXin Li vsl = vec_perm(vsl, vsl, vuc);
187*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
188*67e74705SXin Li vul = vec_perm(vul, vul, vuc);
189*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
190*67e74705SXin Li vbl = vec_perm(vbl, vbl, vuc);
191*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
192*67e74705SXin Li vd = vec_perm(vd, vd, vuc);
193*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
194*67e74705SXin Li
195*67e74705SXin Li vsl = vec_permi(vsl, vsl, 0);
196*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
197*67e74705SXin Li vsl = vec_permi(vsl, vsl, 1);
198*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
199*67e74705SXin Li vsl = vec_permi(vsl, vsl, 2);
200*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
201*67e74705SXin Li vsl = vec_permi(vsl, vsl, 3);
202*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
203*67e74705SXin Li vul = vec_permi(vul, vul, 0);
204*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
205*67e74705SXin Li vul = vec_permi(vul, vul, 1);
206*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
207*67e74705SXin Li vul = vec_permi(vul, vul, 2);
208*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
209*67e74705SXin Li vul = vec_permi(vul, vul, 3);
210*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
211*67e74705SXin Li vbl = vec_permi(vbl, vbl, 0);
212*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
213*67e74705SXin Li vbl = vec_permi(vbl, vbl, 1);
214*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
215*67e74705SXin Li vbl = vec_permi(vbl, vbl, 2);
216*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
217*67e74705SXin Li vbl = vec_permi(vbl, vbl, 3);
218*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
219*67e74705SXin Li vd = vec_permi(vd, vd, 0);
220*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
221*67e74705SXin Li vd = vec_permi(vd, vd, 1);
222*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
223*67e74705SXin Li vd = vec_permi(vd, vd, 2);
224*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
225*67e74705SXin Li vd = vec_permi(vd, vd, 3);
226*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
227*67e74705SXin Li
228*67e74705SXin Li vsc = vec_sel(vsc, vsc, vuc);
229*67e74705SXin Li vsc = vec_sel(vsc, vsc, vbc);
230*67e74705SXin Li vuc = vec_sel(vuc, vuc, vuc);
231*67e74705SXin Li vuc = vec_sel(vuc, vuc, vbc);
232*67e74705SXin Li vbc = vec_sel(vbc, vbc, vuc);
233*67e74705SXin Li vbc = vec_sel(vbc, vbc, vbc);
234*67e74705SXin Li vss = vec_sel(vss, vss, vus);
235*67e74705SXin Li vss = vec_sel(vss, vss, vbs);
236*67e74705SXin Li vus = vec_sel(vus, vus, vus);
237*67e74705SXin Li vus = vec_sel(vus, vus, vbs);
238*67e74705SXin Li vbs = vec_sel(vbs, vbs, vus);
239*67e74705SXin Li vbs = vec_sel(vbs, vbs, vbs);
240*67e74705SXin Li vsi = vec_sel(vsi, vsi, vui);
241*67e74705SXin Li vsi = vec_sel(vsi, vsi, vbi);
242*67e74705SXin Li vui = vec_sel(vui, vui, vui);
243*67e74705SXin Li vui = vec_sel(vui, vui, vbi);
244*67e74705SXin Li vbi = vec_sel(vbi, vbi, vui);
245*67e74705SXin Li vbi = vec_sel(vbi, vbi, vbi);
246*67e74705SXin Li vsl = vec_sel(vsl, vsl, vul);
247*67e74705SXin Li vsl = vec_sel(vsl, vsl, vbl);
248*67e74705SXin Li vul = vec_sel(vul, vul, vul);
249*67e74705SXin Li vul = vec_sel(vul, vul, vbl);
250*67e74705SXin Li vbl = vec_sel(vbl, vbl, vul);
251*67e74705SXin Li vbl = vec_sel(vbl, vbl, vbl);
252*67e74705SXin Li vd = vec_sel(vd, vd, vul);
253*67e74705SXin Li vd = vec_sel(vd, vd, vbl);
254*67e74705SXin Li
255*67e74705SXin Li vsi = vec_gather_element(vsi, vui, cptrsi, 0);
256*67e74705SXin Li vsi = vec_gather_element(vsi, vui, cptrsi, 1);
257*67e74705SXin Li vsi = vec_gather_element(vsi, vui, cptrsi, 2);
258*67e74705SXin Li vsi = vec_gather_element(vsi, vui, cptrsi, 3);
259*67e74705SXin Li vui = vec_gather_element(vui, vui, cptrui, 0);
260*67e74705SXin Li vui = vec_gather_element(vui, vui, cptrui, 1);
261*67e74705SXin Li vui = vec_gather_element(vui, vui, cptrui, 2);
262*67e74705SXin Li vui = vec_gather_element(vui, vui, cptrui, 3);
263*67e74705SXin Li vbi = vec_gather_element(vbi, vui, cptrui, 0);
264*67e74705SXin Li vbi = vec_gather_element(vbi, vui, cptrui, 1);
265*67e74705SXin Li vbi = vec_gather_element(vbi, vui, cptrui, 2);
266*67e74705SXin Li vbi = vec_gather_element(vbi, vui, cptrui, 3);
267*67e74705SXin Li vsl = vec_gather_element(vsl, vul, cptrsl, 0);
268*67e74705SXin Li vsl = vec_gather_element(vsl, vul, cptrsl, 1);
269*67e74705SXin Li vul = vec_gather_element(vul, vul, cptrul, 0);
270*67e74705SXin Li vul = vec_gather_element(vul, vul, cptrul, 1);
271*67e74705SXin Li vbl = vec_gather_element(vbl, vul, cptrul, 0);
272*67e74705SXin Li vbl = vec_gather_element(vbl, vul, cptrul, 1);
273*67e74705SXin Li vd = vec_gather_element(vd, vul, cptrd, 0);
274*67e74705SXin Li vd = vec_gather_element(vd, vul, cptrd, 1);
275*67e74705SXin Li
276*67e74705SXin Li vec_scatter_element(vsi, vui, ptrsi, 0);
277*67e74705SXin Li vec_scatter_element(vsi, vui, ptrsi, 1);
278*67e74705SXin Li vec_scatter_element(vsi, vui, ptrsi, 2);
279*67e74705SXin Li vec_scatter_element(vsi, vui, ptrsi, 3);
280*67e74705SXin Li vec_scatter_element(vui, vui, ptrui, 0);
281*67e74705SXin Li vec_scatter_element(vui, vui, ptrui, 1);
282*67e74705SXin Li vec_scatter_element(vui, vui, ptrui, 2);
283*67e74705SXin Li vec_scatter_element(vui, vui, ptrui, 3);
284*67e74705SXin Li vec_scatter_element(vbi, vui, ptrui, 0);
285*67e74705SXin Li vec_scatter_element(vbi, vui, ptrui, 1);
286*67e74705SXin Li vec_scatter_element(vbi, vui, ptrui, 2);
287*67e74705SXin Li vec_scatter_element(vbi, vui, ptrui, 3);
288*67e74705SXin Li vec_scatter_element(vsl, vul, ptrsl, 0);
289*67e74705SXin Li vec_scatter_element(vsl, vul, ptrsl, 1);
290*67e74705SXin Li vec_scatter_element(vul, vul, ptrul, 0);
291*67e74705SXin Li vec_scatter_element(vul, vul, ptrul, 1);
292*67e74705SXin Li vec_scatter_element(vbl, vul, ptrul, 0);
293*67e74705SXin Li vec_scatter_element(vbl, vul, ptrul, 1);
294*67e74705SXin Li vec_scatter_element(vd, vul, ptrd, 0);
295*67e74705SXin Li vec_scatter_element(vd, vul, ptrd, 1);
296*67e74705SXin Li
297*67e74705SXin Li vsc = vec_xld2(idx, cptrsc);
298*67e74705SXin Li vuc = vec_xld2(idx, cptruc);
299*67e74705SXin Li vss = vec_xld2(idx, cptrss);
300*67e74705SXin Li vus = vec_xld2(idx, cptrus);
301*67e74705SXin Li vsi = vec_xld2(idx, cptrsi);
302*67e74705SXin Li vui = vec_xld2(idx, cptrui);
303*67e74705SXin Li vsl = vec_xld2(idx, cptrsl);
304*67e74705SXin Li vul = vec_xld2(idx, cptrul);
305*67e74705SXin Li vd = vec_xld2(idx, cptrd);
306*67e74705SXin Li
307*67e74705SXin Li vsc = vec_xlw4(idx, cptrsc);
308*67e74705SXin Li vuc = vec_xlw4(idx, cptruc);
309*67e74705SXin Li vss = vec_xlw4(idx, cptrss);
310*67e74705SXin Li vus = vec_xlw4(idx, cptrus);
311*67e74705SXin Li vsi = vec_xlw4(idx, cptrsi);
312*67e74705SXin Li vui = vec_xlw4(idx, cptrui);
313*67e74705SXin Li
314*67e74705SXin Li vec_xstd2(vsc, idx, ptrsc);
315*67e74705SXin Li vec_xstd2(vuc, idx, ptruc);
316*67e74705SXin Li vec_xstd2(vss, idx, ptrss);
317*67e74705SXin Li vec_xstd2(vus, idx, ptrus);
318*67e74705SXin Li vec_xstd2(vsi, idx, ptrsi);
319*67e74705SXin Li vec_xstd2(vui, idx, ptrui);
320*67e74705SXin Li vec_xstd2(vsl, idx, ptrsl);
321*67e74705SXin Li vec_xstd2(vul, idx, ptrul);
322*67e74705SXin Li vec_xstd2(vd, idx, ptrd);
323*67e74705SXin Li
324*67e74705SXin Li vec_xstw4(vsc, idx, ptrsc);
325*67e74705SXin Li vec_xstw4(vuc, idx, ptruc);
326*67e74705SXin Li vec_xstw4(vss, idx, ptrss);
327*67e74705SXin Li vec_xstw4(vus, idx, ptrus);
328*67e74705SXin Li vec_xstw4(vsi, idx, ptrsi);
329*67e74705SXin Li vec_xstw4(vui, idx, ptrui);
330*67e74705SXin Li
331*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 64);
332*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
333*67e74705SXin Li vuc = vec_load_bndry(cptruc, 64);
334*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
335*67e74705SXin Li vss = vec_load_bndry(cptrss, 64);
336*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
337*67e74705SXin Li vus = vec_load_bndry(cptrus, 64);
338*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
339*67e74705SXin Li vsi = vec_load_bndry(cptrsi, 64);
340*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
341*67e74705SXin Li vui = vec_load_bndry(cptrui, 64);
342*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
343*67e74705SXin Li vsl = vec_load_bndry(cptrsl, 64);
344*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
345*67e74705SXin Li vul = vec_load_bndry(cptrul, 64);
346*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
347*67e74705SXin Li vd = vec_load_bndry(cptrd, 64);
348*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
349*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 128);
350*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 1)
351*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 256);
352*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 2)
353*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 512);
354*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 3)
355*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 1024);
356*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 4)
357*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 2048);
358*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 5)
359*67e74705SXin Li vsc = vec_load_bndry(cptrsc, 4096);
360*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 6)
361*67e74705SXin Li
362*67e74705SXin Li vsc = vec_load_len(cptrsc, idx);
363*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
364*67e74705SXin Li vuc = vec_load_len(cptruc, idx);
365*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
366*67e74705SXin Li vss = vec_load_len(cptrss, idx);
367*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
368*67e74705SXin Li vus = vec_load_len(cptrus, idx);
369*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
370*67e74705SXin Li vsi = vec_load_len(cptrsi, idx);
371*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
372*67e74705SXin Li vui = vec_load_len(cptrui, idx);
373*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
374*67e74705SXin Li vsl = vec_load_len(cptrsl, idx);
375*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
376*67e74705SXin Li vul = vec_load_len(cptrul, idx);
377*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
378*67e74705SXin Li vd = vec_load_len(cptrd, idx);
379*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
380*67e74705SXin Li
381*67e74705SXin Li vec_store_len(vsc, ptrsc, idx);
382*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
383*67e74705SXin Li vec_store_len(vuc, ptruc, idx);
384*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
385*67e74705SXin Li vec_store_len(vss, ptrss, idx);
386*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
387*67e74705SXin Li vec_store_len(vus, ptrus, idx);
388*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
389*67e74705SXin Li vec_store_len(vsi, ptrsi, idx);
390*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
391*67e74705SXin Li vec_store_len(vui, ptrui, idx);
392*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
393*67e74705SXin Li vec_store_len(vsl, ptrsl, idx);
394*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
395*67e74705SXin Li vec_store_len(vul, ptrul, idx);
396*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
397*67e74705SXin Li vec_store_len(vd, ptrd, idx);
398*67e74705SXin Li // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
399*67e74705SXin Li
400*67e74705SXin Li vsl = vec_load_pair(sl, sl);
401*67e74705SXin Li vul = vec_load_pair(ul, ul);
402*67e74705SXin Li
403*67e74705SXin Li vuc = vec_genmask(0);
404*67e74705SXin Li // CHECK: <16 x i8> zeroinitializer
405*67e74705SXin Li vuc = vec_genmask(0x8000);
406*67e74705SXin Li // CHECK: <16 x i8> <i8 -1, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
407*67e74705SXin Li vuc = vec_genmask(0xffff);
408*67e74705SXin Li // CHECK: <16 x i8> <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>
409*67e74705SXin Li
410*67e74705SXin Li vuc = vec_genmasks_8(0, 7);
411*67e74705SXin Li // CHECK: <16 x i8> <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>
412*67e74705SXin Li vuc = vec_genmasks_8(1, 4);
413*67e74705SXin Li // CHECK: <16 x i8> <i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120>
414*67e74705SXin Li vuc = vec_genmasks_8(6, 2);
415*67e74705SXin Li // CHECK: <16 x i8> <i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29>
416*67e74705SXin Li vus = vec_genmasks_16(0, 15);
417*67e74705SXin Li // CHECK: <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
418*67e74705SXin Li vus = vec_genmasks_16(2, 11);
419*67e74705SXin Li // CHECK: <8 x i16> <i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368>
420*67e74705SXin Li vus = vec_genmasks_16(9, 2);
421*67e74705SXin Li // CHECK: <8 x i16> <i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065>
422*67e74705SXin Li vui = vec_genmasks_32(0, 31);
423*67e74705SXin Li // CHECK: <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
424*67e74705SXin Li vui = vec_genmasks_32(7, 20);
425*67e74705SXin Li // CHECK: <4 x i32> <i32 33552384, i32 33552384, i32 33552384, i32 33552384>
426*67e74705SXin Li vui = vec_genmasks_32(25, 4);
427*67e74705SXin Li // CHECK: <4 x i32> <i32 -134217601, i32 -134217601, i32 -134217601, i32 -134217601>
428*67e74705SXin Li vul = vec_genmasks_64(0, 63);
429*67e74705SXin Li // CHECK: <2 x i64> <i64 -1, i64 -1>
430*67e74705SXin Li vul = vec_genmasks_64(3, 40);
431*67e74705SXin Li // CHECK: <2 x i64> <i64 2305843009205305344, i64 2305843009205305344>
432*67e74705SXin Li vul = vec_genmasks_64(30, 11);
433*67e74705SXin Li // CHECK: <2 x i64> <i64 -4503582447501313, i64 -4503582447501313>
434*67e74705SXin Li
435*67e74705SXin Li vsc = vec_splat(vsc, 0);
436*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
437*67e74705SXin Li vsc = vec_splat(vsc, 15);
438*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
439*67e74705SXin Li vuc = vec_splat(vuc, 0);
440*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
441*67e74705SXin Li vuc = vec_splat(vuc, 15);
442*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
443*67e74705SXin Li vbc = vec_splat(vbc, 0);
444*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
445*67e74705SXin Li vbc = vec_splat(vbc, 15);
446*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
447*67e74705SXin Li vss = vec_splat(vss, 0);
448*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
449*67e74705SXin Li vss = vec_splat(vss, 7);
450*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
451*67e74705SXin Li vus = vec_splat(vus, 0);
452*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
453*67e74705SXin Li vus = vec_splat(vus, 7);
454*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
455*67e74705SXin Li vbs = vec_splat(vbs, 0);
456*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
457*67e74705SXin Li vbs = vec_splat(vbs, 7);
458*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
459*67e74705SXin Li vsi = vec_splat(vsi, 0);
460*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
461*67e74705SXin Li vsi = vec_splat(vsi, 3);
462*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
463*67e74705SXin Li vui = vec_splat(vui, 0);
464*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
465*67e74705SXin Li vui = vec_splat(vui, 3);
466*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
467*67e74705SXin Li vbi = vec_splat(vbi, 0);
468*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
469*67e74705SXin Li vbi = vec_splat(vbi, 3);
470*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
471*67e74705SXin Li vsl = vec_splat(vsl, 0);
472*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
473*67e74705SXin Li vsl = vec_splat(vsl, 1);
474*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
475*67e74705SXin Li vul = vec_splat(vul, 0);
476*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
477*67e74705SXin Li vul = vec_splat(vul, 1);
478*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
479*67e74705SXin Li vbl = vec_splat(vbl, 0);
480*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
481*67e74705SXin Li vbl = vec_splat(vbl, 1);
482*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
483*67e74705SXin Li vd = vec_splat(vd, 0);
484*67e74705SXin Li // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer
485*67e74705SXin Li vd = vec_splat(vd, 1);
486*67e74705SXin Li // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 1>
487*67e74705SXin Li
488*67e74705SXin Li vsc = vec_splat_s8(-128);
489*67e74705SXin Li // CHECK: <16 x i8> <i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128>
490*67e74705SXin Li vsc = vec_splat_s8(127);
491*67e74705SXin Li // CHECK: <16 x i8> <i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127>
492*67e74705SXin Li vuc = vec_splat_u8(1);
493*67e74705SXin Li // CHECK: <16 x i8> <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>
494*67e74705SXin Li vuc = vec_splat_u8(254);
495*67e74705SXin Li // CHECK: <16 x i8> <i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2>
496*67e74705SXin Li vss = vec_splat_s16(-32768);
497*67e74705SXin Li // CHECK: <8 x i16> <i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768>
498*67e74705SXin Li vss = vec_splat_s16(32767);
499*67e74705SXin Li // CHECK: <8 x i16> <i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767>
500*67e74705SXin Li vus = vec_splat_u16(1);
501*67e74705SXin Li // CHECK: <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
502*67e74705SXin Li vus = vec_splat_u16(65534);
503*67e74705SXin Li // CHECK: <8 x i16> <i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2>
504*67e74705SXin Li vsi = vec_splat_s32(-32768);
505*67e74705SXin Li // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
506*67e74705SXin Li vsi = vec_splat_s32(32767);
507*67e74705SXin Li // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
508*67e74705SXin Li vui = vec_splat_u32(-32768);
509*67e74705SXin Li // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
510*67e74705SXin Li vui = vec_splat_u32(32767);
511*67e74705SXin Li // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
512*67e74705SXin Li vsl = vec_splat_s64(-32768);
513*67e74705SXin Li // CHECK: <2 x i64> <i64 -32768, i64 -32768>
514*67e74705SXin Li vsl = vec_splat_s64(32767);
515*67e74705SXin Li // CHECK: <2 x i64> <i64 32767, i64 32767>
516*67e74705SXin Li vul = vec_splat_u64(-32768);
517*67e74705SXin Li // CHECK: <2 x i64> <i64 -32768, i64 -32768>
518*67e74705SXin Li vul = vec_splat_u64(32767);
519*67e74705SXin Li // CHECK: <2 x i64> <i64 32767, i64 32767>
520*67e74705SXin Li
521*67e74705SXin Li vsc = vec_splats(sc);
522*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
523*67e74705SXin Li vuc = vec_splats(uc);
524*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
525*67e74705SXin Li vss = vec_splats(ss);
526*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
527*67e74705SXin Li vus = vec_splats(us);
528*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
529*67e74705SXin Li vsi = vec_splats(si);
530*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
531*67e74705SXin Li vui = vec_splats(ui);
532*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
533*67e74705SXin Li vsl = vec_splats(sl);
534*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
535*67e74705SXin Li vul = vec_splats(ul);
536*67e74705SXin Li // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
537*67e74705SXin Li vd = vec_splats(d);
538*67e74705SXin Li // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer
539*67e74705SXin Li
540*67e74705SXin Li vsl = vec_extend_s64(vsc);
541*67e74705SXin Li vsl = vec_extend_s64(vss);
542*67e74705SXin Li vsl = vec_extend_s64(vsi);
543*67e74705SXin Li
544*67e74705SXin Li vsc = vec_mergeh(vsc, vsc);
545*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
546*67e74705SXin Li vuc = vec_mergeh(vuc, vuc);
547*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
548*67e74705SXin Li vbc = vec_mergeh(vbc, vbc);
549*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
550*67e74705SXin Li vss = vec_mergeh(vss, vss);
551*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
552*67e74705SXin Li vus = vec_mergeh(vus, vus);
553*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
554*67e74705SXin Li vbs = vec_mergeh(vbs, vbs);
555*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
556*67e74705SXin Li vsi = vec_mergeh(vsi, vsi);
557*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
558*67e74705SXin Li vui = vec_mergeh(vui, vui);
559*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
560*67e74705SXin Li vbi = vec_mergeh(vbi, vbi);
561*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
562*67e74705SXin Li vsl = vec_mergeh(vsl, vsl);
563*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
564*67e74705SXin Li vul = vec_mergeh(vul, vul);
565*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
566*67e74705SXin Li vbl = vec_mergeh(vbl, vbl);
567*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
568*67e74705SXin Li vd = vec_mergeh(vd, vd);
569*67e74705SXin Li // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
570*67e74705SXin Li
571*67e74705SXin Li vsc = vec_mergel(vsc, vsc);
572*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
573*67e74705SXin Li vuc = vec_mergel(vuc, vuc);
574*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
575*67e74705SXin Li vbc = vec_mergel(vbc, vbc);
576*67e74705SXin Li // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
577*67e74705SXin Li vss = vec_mergel(vss, vss);
578*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
579*67e74705SXin Li vus = vec_mergel(vus, vus);
580*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
581*67e74705SXin Li vbs = vec_mergel(vbs, vbs);
582*67e74705SXin Li // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
583*67e74705SXin Li vsi = vec_mergel(vsi, vsi);
584*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
585*67e74705SXin Li vui = vec_mergel(vui, vui);
586*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
587*67e74705SXin Li vbi = vec_mergel(vbi, vbi);
588*67e74705SXin Li // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
589*67e74705SXin Li vsl = vec_mergel(vsl, vsl);
590*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
591*67e74705SXin Li vul = vec_mergel(vul, vul);
592*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
593*67e74705SXin Li vbl = vec_mergel(vbl, vbl);
594*67e74705SXin Li // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
595*67e74705SXin Li vd = vec_mergel(vd, vd);
596*67e74705SXin Li // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <i32 1, i32 3>
597*67e74705SXin Li
598*67e74705SXin Li vsc = vec_pack(vss, vss);
599*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
600*67e74705SXin Li vuc = vec_pack(vus, vus);
601*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
602*67e74705SXin Li vbc = vec_pack(vbs, vbs);
603*67e74705SXin Li // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
604*67e74705SXin Li vss = vec_pack(vsi, vsi);
605*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
606*67e74705SXin Li vus = vec_pack(vui, vui);
607*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
608*67e74705SXin Li vbs = vec_pack(vbi, vbi);
609*67e74705SXin Li // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
610*67e74705SXin Li vsi = vec_pack(vsl, vsl);
611*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
612*67e74705SXin Li vui = vec_pack(vul, vul);
613*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
614*67e74705SXin Li vbi = vec_pack(vbl, vbl);
615*67e74705SXin Li // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
616*67e74705SXin Li
617*67e74705SXin Li vsc = vec_packs(vss, vss);
618*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vpksh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
619*67e74705SXin Li vuc = vec_packs(vus, vus);
620*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
621*67e74705SXin Li vss = vec_packs(vsi, vsi);
622*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vpksf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
623*67e74705SXin Li vus = vec_packs(vui, vui);
624*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
625*67e74705SXin Li vsi = vec_packs(vsl, vsl);
626*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vpksg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
627*67e74705SXin Li vui = vec_packs(vul, vul);
628*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
629*67e74705SXin Li
630*67e74705SXin Li vsc = vec_packs_cc(vss, vss, &cc);
631*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpkshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
632*67e74705SXin Li vuc = vec_packs_cc(vus, vus, &cc);
633*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
634*67e74705SXin Li vss = vec_packs_cc(vsi, vsi, &cc);
635*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpksfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
636*67e74705SXin Li vus = vec_packs_cc(vui, vui, &cc);
637*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
638*67e74705SXin Li vsi = vec_packs_cc(vsl, vsl, &cc);
639*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpksgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
640*67e74705SXin Li vui = vec_packs_cc(vul, vul, &cc);
641*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
642*67e74705SXin Li
643*67e74705SXin Li vuc = vec_packsu(vss, vss);
644*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
645*67e74705SXin Li vuc = vec_packsu(vus, vus);
646*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
647*67e74705SXin Li vus = vec_packsu(vsi, vsi);
648*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
649*67e74705SXin Li vus = vec_packsu(vui, vui);
650*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
651*67e74705SXin Li vui = vec_packsu(vsl, vsl);
652*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
653*67e74705SXin Li vui = vec_packsu(vul, vul);
654*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
655*67e74705SXin Li
656*67e74705SXin Li vuc = vec_packsu_cc(vus, vus, &cc);
657*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
658*67e74705SXin Li vus = vec_packsu_cc(vui, vui, &cc);
659*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
660*67e74705SXin Li vui = vec_packsu_cc(vul, vul, &cc);
661*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
662*67e74705SXin Li
663*67e74705SXin Li vss = vec_unpackh(vsc);
664*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
665*67e74705SXin Li vus = vec_unpackh(vuc);
666*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vuplhb(<16 x i8> %{{.*}})
667*67e74705SXin Li vbs = vec_unpackh(vbc);
668*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
669*67e74705SXin Li vsi = vec_unpackh(vss);
670*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
671*67e74705SXin Li vui = vec_unpackh(vus);
672*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vuplhh(<8 x i16> %{{.*}})
673*67e74705SXin Li vbi = vec_unpackh(vbs);
674*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
675*67e74705SXin Li vsl = vec_unpackh(vsi);
676*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
677*67e74705SXin Li vul = vec_unpackh(vui);
678*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vuplhf(<4 x i32> %{{.*}})
679*67e74705SXin Li vbl = vec_unpackh(vbi);
680*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
681*67e74705SXin Li
682*67e74705SXin Li vss = vec_unpackl(vsc);
683*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
684*67e74705SXin Li vus = vec_unpackl(vuc);
685*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vupllb(<16 x i8> %{{.*}})
686*67e74705SXin Li vbs = vec_unpackl(vbc);
687*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
688*67e74705SXin Li vsi = vec_unpackl(vss);
689*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
690*67e74705SXin Li vui = vec_unpackl(vus);
691*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vupllh(<8 x i16> %{{.*}})
692*67e74705SXin Li vbi = vec_unpackl(vbs);
693*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
694*67e74705SXin Li vsl = vec_unpackl(vsi);
695*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
696*67e74705SXin Li vul = vec_unpackl(vui);
697*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vupllf(<4 x i32> %{{.*}})
698*67e74705SXin Li vbl = vec_unpackl(vbi);
699*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
700*67e74705SXin Li }
701*67e74705SXin Li
test_compare(void)702*67e74705SXin Li void test_compare(void) {
703*67e74705SXin Li vbc = vec_cmpeq(vsc, vsc);
704*67e74705SXin Li // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
705*67e74705SXin Li vbc = vec_cmpeq(vuc, vuc);
706*67e74705SXin Li // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
707*67e74705SXin Li vbc = vec_cmpeq(vbc, vbc);
708*67e74705SXin Li // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
709*67e74705SXin Li vbs = vec_cmpeq(vss, vss);
710*67e74705SXin Li // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
711*67e74705SXin Li vbs = vec_cmpeq(vus, vus);
712*67e74705SXin Li // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
713*67e74705SXin Li vbs = vec_cmpeq(vbs, vbs);
714*67e74705SXin Li // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
715*67e74705SXin Li vbi = vec_cmpeq(vsi, vsi);
716*67e74705SXin Li // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
717*67e74705SXin Li vbi = vec_cmpeq(vui, vui);
718*67e74705SXin Li // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
719*67e74705SXin Li vbi = vec_cmpeq(vbi, vbi);
720*67e74705SXin Li // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
721*67e74705SXin Li vbl = vec_cmpeq(vsl, vsl);
722*67e74705SXin Li // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
723*67e74705SXin Li vbl = vec_cmpeq(vul, vul);
724*67e74705SXin Li // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
725*67e74705SXin Li vbl = vec_cmpeq(vbl, vbl);
726*67e74705SXin Li // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
727*67e74705SXin Li vbl = vec_cmpeq(vd, vd);
728*67e74705SXin Li // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
729*67e74705SXin Li
730*67e74705SXin Li vbc = vec_cmpge(vsc, vsc);
731*67e74705SXin Li // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
732*67e74705SXin Li vbc = vec_cmpge(vuc, vuc);
733*67e74705SXin Li // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
734*67e74705SXin Li vbs = vec_cmpge(vss, vss);
735*67e74705SXin Li // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
736*67e74705SXin Li vbs = vec_cmpge(vus, vus);
737*67e74705SXin Li // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
738*67e74705SXin Li vbi = vec_cmpge(vsi, vsi);
739*67e74705SXin Li // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
740*67e74705SXin Li vbi = vec_cmpge(vui, vui);
741*67e74705SXin Li // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
742*67e74705SXin Li vbl = vec_cmpge(vsl, vsl);
743*67e74705SXin Li // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
744*67e74705SXin Li vbl = vec_cmpge(vul, vul);
745*67e74705SXin Li // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
746*67e74705SXin Li vbl = vec_cmpge(vd, vd);
747*67e74705SXin Li // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
748*67e74705SXin Li
749*67e74705SXin Li vbc = vec_cmpgt(vsc, vsc);
750*67e74705SXin Li // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
751*67e74705SXin Li vbc = vec_cmpgt(vuc, vuc);
752*67e74705SXin Li // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
753*67e74705SXin Li vbs = vec_cmpgt(vss, vss);
754*67e74705SXin Li // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
755*67e74705SXin Li vbs = vec_cmpgt(vus, vus);
756*67e74705SXin Li // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
757*67e74705SXin Li vbi = vec_cmpgt(vsi, vsi);
758*67e74705SXin Li // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
759*67e74705SXin Li vbi = vec_cmpgt(vui, vui);
760*67e74705SXin Li // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
761*67e74705SXin Li vbl = vec_cmpgt(vsl, vsl);
762*67e74705SXin Li // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
763*67e74705SXin Li vbl = vec_cmpgt(vul, vul);
764*67e74705SXin Li // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
765*67e74705SXin Li vbl = vec_cmpgt(vd, vd);
766*67e74705SXin Li // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
767*67e74705SXin Li
768*67e74705SXin Li vbc = vec_cmple(vsc, vsc);
769*67e74705SXin Li // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
770*67e74705SXin Li vbc = vec_cmple(vuc, vuc);
771*67e74705SXin Li // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
772*67e74705SXin Li vbs = vec_cmple(vss, vss);
773*67e74705SXin Li // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
774*67e74705SXin Li vbs = vec_cmple(vus, vus);
775*67e74705SXin Li // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
776*67e74705SXin Li vbi = vec_cmple(vsi, vsi);
777*67e74705SXin Li // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
778*67e74705SXin Li vbi = vec_cmple(vui, vui);
779*67e74705SXin Li // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
780*67e74705SXin Li vbl = vec_cmple(vsl, vsl);
781*67e74705SXin Li // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
782*67e74705SXin Li vbl = vec_cmple(vul, vul);
783*67e74705SXin Li // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
784*67e74705SXin Li vbl = vec_cmple(vd, vd);
785*67e74705SXin Li // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
786*67e74705SXin Li
787*67e74705SXin Li vbc = vec_cmplt(vsc, vsc);
788*67e74705SXin Li // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
789*67e74705SXin Li vbc = vec_cmplt(vuc, vuc);
790*67e74705SXin Li // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
791*67e74705SXin Li vbs = vec_cmplt(vss, vss);
792*67e74705SXin Li // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
793*67e74705SXin Li vbs = vec_cmplt(vus, vus);
794*67e74705SXin Li // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
795*67e74705SXin Li vbi = vec_cmplt(vsi, vsi);
796*67e74705SXin Li // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
797*67e74705SXin Li vbi = vec_cmplt(vui, vui);
798*67e74705SXin Li // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
799*67e74705SXin Li vbl = vec_cmplt(vsl, vsl);
800*67e74705SXin Li // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
801*67e74705SXin Li vbl = vec_cmplt(vul, vul);
802*67e74705SXin Li // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
803*67e74705SXin Li vbl = vec_cmplt(vd, vd);
804*67e74705SXin Li // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
805*67e74705SXin Li
806*67e74705SXin Li idx = vec_all_eq(vsc, vsc);
807*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
808*67e74705SXin Li idx = vec_all_eq(vsc, vbc);
809*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
810*67e74705SXin Li idx = vec_all_eq(vbc, vsc);
811*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
812*67e74705SXin Li idx = vec_all_eq(vuc, vuc);
813*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
814*67e74705SXin Li idx = vec_all_eq(vuc, vbc);
815*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
816*67e74705SXin Li idx = vec_all_eq(vbc, vuc);
817*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
818*67e74705SXin Li idx = vec_all_eq(vbc, vbc);
819*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
820*67e74705SXin Li idx = vec_all_eq(vss, vss);
821*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
822*67e74705SXin Li idx = vec_all_eq(vss, vbs);
823*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
824*67e74705SXin Li idx = vec_all_eq(vbs, vss);
825*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
826*67e74705SXin Li idx = vec_all_eq(vus, vus);
827*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
828*67e74705SXin Li idx = vec_all_eq(vus, vbs);
829*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
830*67e74705SXin Li idx = vec_all_eq(vbs, vus);
831*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
832*67e74705SXin Li idx = vec_all_eq(vbs, vbs);
833*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
834*67e74705SXin Li idx = vec_all_eq(vsi, vsi);
835*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
836*67e74705SXin Li idx = vec_all_eq(vsi, vbi);
837*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
838*67e74705SXin Li idx = vec_all_eq(vbi, vsi);
839*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
840*67e74705SXin Li idx = vec_all_eq(vui, vui);
841*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
842*67e74705SXin Li idx = vec_all_eq(vui, vbi);
843*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
844*67e74705SXin Li idx = vec_all_eq(vbi, vui);
845*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
846*67e74705SXin Li idx = vec_all_eq(vbi, vbi);
847*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
848*67e74705SXin Li idx = vec_all_eq(vsl, vsl);
849*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
850*67e74705SXin Li idx = vec_all_eq(vsl, vbl);
851*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
852*67e74705SXin Li idx = vec_all_eq(vbl, vsl);
853*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
854*67e74705SXin Li idx = vec_all_eq(vul, vul);
855*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
856*67e74705SXin Li idx = vec_all_eq(vul, vbl);
857*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
858*67e74705SXin Li idx = vec_all_eq(vbl, vul);
859*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
860*67e74705SXin Li idx = vec_all_eq(vbl, vbl);
861*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
862*67e74705SXin Li idx = vec_all_eq(vd, vd);
863*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
864*67e74705SXin Li
865*67e74705SXin Li idx = vec_all_ne(vsc, vsc);
866*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
867*67e74705SXin Li idx = vec_all_ne(vsc, vbc);
868*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
869*67e74705SXin Li idx = vec_all_ne(vbc, vsc);
870*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
871*67e74705SXin Li idx = vec_all_ne(vuc, vuc);
872*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
873*67e74705SXin Li idx = vec_all_ne(vuc, vbc);
874*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
875*67e74705SXin Li idx = vec_all_ne(vbc, vuc);
876*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
877*67e74705SXin Li idx = vec_all_ne(vbc, vbc);
878*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
879*67e74705SXin Li idx = vec_all_ne(vss, vss);
880*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
881*67e74705SXin Li idx = vec_all_ne(vss, vbs);
882*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
883*67e74705SXin Li idx = vec_all_ne(vbs, vss);
884*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
885*67e74705SXin Li idx = vec_all_ne(vus, vus);
886*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
887*67e74705SXin Li idx = vec_all_ne(vus, vbs);
888*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
889*67e74705SXin Li idx = vec_all_ne(vbs, vus);
890*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
891*67e74705SXin Li idx = vec_all_ne(vbs, vbs);
892*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
893*67e74705SXin Li idx = vec_all_ne(vsi, vsi);
894*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
895*67e74705SXin Li idx = vec_all_ne(vsi, vbi);
896*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
897*67e74705SXin Li idx = vec_all_ne(vbi, vsi);
898*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
899*67e74705SXin Li idx = vec_all_ne(vui, vui);
900*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
901*67e74705SXin Li idx = vec_all_ne(vui, vbi);
902*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
903*67e74705SXin Li idx = vec_all_ne(vbi, vui);
904*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
905*67e74705SXin Li idx = vec_all_ne(vbi, vbi);
906*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
907*67e74705SXin Li idx = vec_all_ne(vsl, vsl);
908*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
909*67e74705SXin Li idx = vec_all_ne(vsl, vbl);
910*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
911*67e74705SXin Li idx = vec_all_ne(vbl, vsl);
912*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
913*67e74705SXin Li idx = vec_all_ne(vul, vul);
914*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
915*67e74705SXin Li idx = vec_all_ne(vul, vbl);
916*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
917*67e74705SXin Li idx = vec_all_ne(vbl, vul);
918*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
919*67e74705SXin Li idx = vec_all_ne(vbl, vbl);
920*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
921*67e74705SXin Li idx = vec_all_ne(vd, vd);
922*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
923*67e74705SXin Li
924*67e74705SXin Li idx = vec_all_ge(vsc, vsc);
925*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
926*67e74705SXin Li idx = vec_all_ge(vsc, vbc);
927*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
928*67e74705SXin Li idx = vec_all_ge(vbc, vsc);
929*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
930*67e74705SXin Li idx = vec_all_ge(vuc, vuc);
931*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
932*67e74705SXin Li idx = vec_all_ge(vuc, vbc);
933*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
934*67e74705SXin Li idx = vec_all_ge(vbc, vuc);
935*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
936*67e74705SXin Li idx = vec_all_ge(vbc, vbc);
937*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
938*67e74705SXin Li idx = vec_all_ge(vss, vss);
939*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
940*67e74705SXin Li idx = vec_all_ge(vss, vbs);
941*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
942*67e74705SXin Li idx = vec_all_ge(vbs, vss);
943*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
944*67e74705SXin Li idx = vec_all_ge(vus, vus);
945*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
946*67e74705SXin Li idx = vec_all_ge(vus, vbs);
947*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
948*67e74705SXin Li idx = vec_all_ge(vbs, vus);
949*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
950*67e74705SXin Li idx = vec_all_ge(vbs, vbs);
951*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
952*67e74705SXin Li idx = vec_all_ge(vsi, vsi);
953*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
954*67e74705SXin Li idx = vec_all_ge(vsi, vbi);
955*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
956*67e74705SXin Li idx = vec_all_ge(vbi, vsi);
957*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
958*67e74705SXin Li idx = vec_all_ge(vui, vui);
959*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
960*67e74705SXin Li idx = vec_all_ge(vui, vbi);
961*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
962*67e74705SXin Li idx = vec_all_ge(vbi, vui);
963*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
964*67e74705SXin Li idx = vec_all_ge(vbi, vbi);
965*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
966*67e74705SXin Li idx = vec_all_ge(vsl, vsl);
967*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
968*67e74705SXin Li idx = vec_all_ge(vsl, vbl);
969*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
970*67e74705SXin Li idx = vec_all_ge(vbl, vsl);
971*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
972*67e74705SXin Li idx = vec_all_ge(vul, vul);
973*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
974*67e74705SXin Li idx = vec_all_ge(vul, vbl);
975*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
976*67e74705SXin Li idx = vec_all_ge(vbl, vul);
977*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
978*67e74705SXin Li idx = vec_all_ge(vbl, vbl);
979*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
980*67e74705SXin Li idx = vec_all_ge(vd, vd);
981*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
982*67e74705SXin Li
983*67e74705SXin Li idx = vec_all_gt(vsc, vsc);
984*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
985*67e74705SXin Li idx = vec_all_gt(vsc, vbc);
986*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
987*67e74705SXin Li idx = vec_all_gt(vbc, vsc);
988*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
989*67e74705SXin Li idx = vec_all_gt(vuc, vuc);
990*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
991*67e74705SXin Li idx = vec_all_gt(vuc, vbc);
992*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
993*67e74705SXin Li idx = vec_all_gt(vbc, vuc);
994*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
995*67e74705SXin Li idx = vec_all_gt(vbc, vbc);
996*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
997*67e74705SXin Li idx = vec_all_gt(vss, vss);
998*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
999*67e74705SXin Li idx = vec_all_gt(vss, vbs);
1000*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1001*67e74705SXin Li idx = vec_all_gt(vbs, vss);
1002*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1003*67e74705SXin Li idx = vec_all_gt(vus, vus);
1004*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1005*67e74705SXin Li idx = vec_all_gt(vus, vbs);
1006*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1007*67e74705SXin Li idx = vec_all_gt(vbs, vus);
1008*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1009*67e74705SXin Li idx = vec_all_gt(vbs, vbs);
1010*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1011*67e74705SXin Li idx = vec_all_gt(vsi, vsi);
1012*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1013*67e74705SXin Li idx = vec_all_gt(vsi, vbi);
1014*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1015*67e74705SXin Li idx = vec_all_gt(vbi, vsi);
1016*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1017*67e74705SXin Li idx = vec_all_gt(vui, vui);
1018*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1019*67e74705SXin Li idx = vec_all_gt(vui, vbi);
1020*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1021*67e74705SXin Li idx = vec_all_gt(vbi, vui);
1022*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1023*67e74705SXin Li idx = vec_all_gt(vbi, vbi);
1024*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1025*67e74705SXin Li idx = vec_all_gt(vsl, vsl);
1026*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1027*67e74705SXin Li idx = vec_all_gt(vsl, vbl);
1028*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1029*67e74705SXin Li idx = vec_all_gt(vbl, vsl);
1030*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1031*67e74705SXin Li idx = vec_all_gt(vul, vul);
1032*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1033*67e74705SXin Li idx = vec_all_gt(vul, vbl);
1034*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1035*67e74705SXin Li idx = vec_all_gt(vbl, vul);
1036*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1037*67e74705SXin Li idx = vec_all_gt(vbl, vbl);
1038*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1039*67e74705SXin Li idx = vec_all_gt(vd, vd);
1040*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1041*67e74705SXin Li
1042*67e74705SXin Li idx = vec_all_le(vsc, vsc);
1043*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1044*67e74705SXin Li idx = vec_all_le(vsc, vbc);
1045*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1046*67e74705SXin Li idx = vec_all_le(vbc, vsc);
1047*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1048*67e74705SXin Li idx = vec_all_le(vuc, vuc);
1049*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1050*67e74705SXin Li idx = vec_all_le(vuc, vbc);
1051*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1052*67e74705SXin Li idx = vec_all_le(vbc, vuc);
1053*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1054*67e74705SXin Li idx = vec_all_le(vbc, vbc);
1055*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1056*67e74705SXin Li idx = vec_all_le(vss, vss);
1057*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1058*67e74705SXin Li idx = vec_all_le(vss, vbs);
1059*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1060*67e74705SXin Li idx = vec_all_le(vbs, vss);
1061*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1062*67e74705SXin Li idx = vec_all_le(vus, vus);
1063*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1064*67e74705SXin Li idx = vec_all_le(vus, vbs);
1065*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1066*67e74705SXin Li idx = vec_all_le(vbs, vus);
1067*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1068*67e74705SXin Li idx = vec_all_le(vbs, vbs);
1069*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1070*67e74705SXin Li idx = vec_all_le(vsi, vsi);
1071*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1072*67e74705SXin Li idx = vec_all_le(vsi, vbi);
1073*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1074*67e74705SXin Li idx = vec_all_le(vbi, vsi);
1075*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1076*67e74705SXin Li idx = vec_all_le(vui, vui);
1077*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1078*67e74705SXin Li idx = vec_all_le(vui, vbi);
1079*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1080*67e74705SXin Li idx = vec_all_le(vbi, vui);
1081*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1082*67e74705SXin Li idx = vec_all_le(vbi, vbi);
1083*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1084*67e74705SXin Li idx = vec_all_le(vsl, vsl);
1085*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1086*67e74705SXin Li idx = vec_all_le(vsl, vbl);
1087*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1088*67e74705SXin Li idx = vec_all_le(vbl, vsl);
1089*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1090*67e74705SXin Li idx = vec_all_le(vul, vul);
1091*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1092*67e74705SXin Li idx = vec_all_le(vul, vbl);
1093*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1094*67e74705SXin Li idx = vec_all_le(vbl, vul);
1095*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1096*67e74705SXin Li idx = vec_all_le(vbl, vbl);
1097*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1098*67e74705SXin Li idx = vec_all_le(vd, vd);
1099*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1100*67e74705SXin Li
1101*67e74705SXin Li idx = vec_all_lt(vsc, vsc);
1102*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1103*67e74705SXin Li idx = vec_all_lt(vsc, vbc);
1104*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1105*67e74705SXin Li idx = vec_all_lt(vbc, vsc);
1106*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1107*67e74705SXin Li idx = vec_all_lt(vuc, vuc);
1108*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1109*67e74705SXin Li idx = vec_all_lt(vuc, vbc);
1110*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1111*67e74705SXin Li idx = vec_all_lt(vbc, vuc);
1112*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1113*67e74705SXin Li idx = vec_all_lt(vbc, vbc);
1114*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1115*67e74705SXin Li idx = vec_all_lt(vss, vss);
1116*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1117*67e74705SXin Li idx = vec_all_lt(vss, vbs);
1118*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1119*67e74705SXin Li idx = vec_all_lt(vbs, vss);
1120*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1121*67e74705SXin Li idx = vec_all_lt(vus, vus);
1122*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1123*67e74705SXin Li idx = vec_all_lt(vus, vbs);
1124*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1125*67e74705SXin Li idx = vec_all_lt(vbs, vus);
1126*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1127*67e74705SXin Li idx = vec_all_lt(vbs, vbs);
1128*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1129*67e74705SXin Li idx = vec_all_lt(vsi, vsi);
1130*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1131*67e74705SXin Li idx = vec_all_lt(vsi, vbi);
1132*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1133*67e74705SXin Li idx = vec_all_lt(vbi, vsi);
1134*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1135*67e74705SXin Li idx = vec_all_lt(vui, vui);
1136*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1137*67e74705SXin Li idx = vec_all_lt(vui, vbi);
1138*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1139*67e74705SXin Li idx = vec_all_lt(vbi, vui);
1140*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1141*67e74705SXin Li idx = vec_all_lt(vbi, vbi);
1142*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1143*67e74705SXin Li idx = vec_all_lt(vsl, vsl);
1144*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1145*67e74705SXin Li idx = vec_all_lt(vsl, vbl);
1146*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1147*67e74705SXin Li idx = vec_all_lt(vbl, vsl);
1148*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1149*67e74705SXin Li idx = vec_all_lt(vul, vul);
1150*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1151*67e74705SXin Li idx = vec_all_lt(vul, vbl);
1152*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1153*67e74705SXin Li idx = vec_all_lt(vbl, vul);
1154*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1155*67e74705SXin Li idx = vec_all_lt(vbl, vbl);
1156*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1157*67e74705SXin Li idx = vec_all_lt(vd, vd);
1158*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1159*67e74705SXin Li
1160*67e74705SXin Li idx = vec_all_nge(vd, vd);
1161*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1162*67e74705SXin Li idx = vec_all_ngt(vd, vd);
1163*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1164*67e74705SXin Li idx = vec_all_nle(vd, vd);
1165*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1166*67e74705SXin Li idx = vec_all_nlt(vd, vd);
1167*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1168*67e74705SXin Li
1169*67e74705SXin Li idx = vec_all_nan(vd);
1170*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1171*67e74705SXin Li idx = vec_all_numeric(vd);
1172*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1173*67e74705SXin Li
1174*67e74705SXin Li idx = vec_any_eq(vsc, vsc);
1175*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1176*67e74705SXin Li idx = vec_any_eq(vsc, vbc);
1177*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1178*67e74705SXin Li idx = vec_any_eq(vbc, vsc);
1179*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1180*67e74705SXin Li idx = vec_any_eq(vuc, vuc);
1181*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1182*67e74705SXin Li idx = vec_any_eq(vuc, vbc);
1183*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1184*67e74705SXin Li idx = vec_any_eq(vbc, vuc);
1185*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1186*67e74705SXin Li idx = vec_any_eq(vbc, vbc);
1187*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1188*67e74705SXin Li idx = vec_any_eq(vss, vss);
1189*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1190*67e74705SXin Li idx = vec_any_eq(vss, vbs);
1191*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1192*67e74705SXin Li idx = vec_any_eq(vbs, vss);
1193*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1194*67e74705SXin Li idx = vec_any_eq(vus, vus);
1195*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1196*67e74705SXin Li idx = vec_any_eq(vus, vbs);
1197*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1198*67e74705SXin Li idx = vec_any_eq(vbs, vus);
1199*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1200*67e74705SXin Li idx = vec_any_eq(vbs, vbs);
1201*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1202*67e74705SXin Li idx = vec_any_eq(vsi, vsi);
1203*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1204*67e74705SXin Li idx = vec_any_eq(vsi, vbi);
1205*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1206*67e74705SXin Li idx = vec_any_eq(vbi, vsi);
1207*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1208*67e74705SXin Li idx = vec_any_eq(vui, vui);
1209*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1210*67e74705SXin Li idx = vec_any_eq(vui, vbi);
1211*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1212*67e74705SXin Li idx = vec_any_eq(vbi, vui);
1213*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1214*67e74705SXin Li idx = vec_any_eq(vbi, vbi);
1215*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1216*67e74705SXin Li idx = vec_any_eq(vsl, vsl);
1217*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1218*67e74705SXin Li idx = vec_any_eq(vsl, vbl);
1219*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1220*67e74705SXin Li idx = vec_any_eq(vbl, vsl);
1221*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1222*67e74705SXin Li idx = vec_any_eq(vul, vul);
1223*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1224*67e74705SXin Li idx = vec_any_eq(vul, vbl);
1225*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1226*67e74705SXin Li idx = vec_any_eq(vbl, vul);
1227*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1228*67e74705SXin Li idx = vec_any_eq(vbl, vbl);
1229*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1230*67e74705SXin Li idx = vec_any_eq(vd, vd);
1231*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1232*67e74705SXin Li
1233*67e74705SXin Li idx = vec_any_ne(vsc, vsc);
1234*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1235*67e74705SXin Li idx = vec_any_ne(vsc, vbc);
1236*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1237*67e74705SXin Li idx = vec_any_ne(vbc, vsc);
1238*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1239*67e74705SXin Li idx = vec_any_ne(vuc, vuc);
1240*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1241*67e74705SXin Li idx = vec_any_ne(vuc, vbc);
1242*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1243*67e74705SXin Li idx = vec_any_ne(vbc, vuc);
1244*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1245*67e74705SXin Li idx = vec_any_ne(vbc, vbc);
1246*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1247*67e74705SXin Li idx = vec_any_ne(vss, vss);
1248*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1249*67e74705SXin Li idx = vec_any_ne(vss, vbs);
1250*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1251*67e74705SXin Li idx = vec_any_ne(vbs, vss);
1252*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1253*67e74705SXin Li idx = vec_any_ne(vus, vus);
1254*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1255*67e74705SXin Li idx = vec_any_ne(vus, vbs);
1256*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1257*67e74705SXin Li idx = vec_any_ne(vbs, vus);
1258*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1259*67e74705SXin Li idx = vec_any_ne(vbs, vbs);
1260*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1261*67e74705SXin Li idx = vec_any_ne(vsi, vsi);
1262*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1263*67e74705SXin Li idx = vec_any_ne(vsi, vbi);
1264*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1265*67e74705SXin Li idx = vec_any_ne(vbi, vsi);
1266*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1267*67e74705SXin Li idx = vec_any_ne(vui, vui);
1268*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1269*67e74705SXin Li idx = vec_any_ne(vui, vbi);
1270*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1271*67e74705SXin Li idx = vec_any_ne(vbi, vui);
1272*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1273*67e74705SXin Li idx = vec_any_ne(vbi, vbi);
1274*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1275*67e74705SXin Li idx = vec_any_ne(vsl, vsl);
1276*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1277*67e74705SXin Li idx = vec_any_ne(vsl, vbl);
1278*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1279*67e74705SXin Li idx = vec_any_ne(vbl, vsl);
1280*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1281*67e74705SXin Li idx = vec_any_ne(vul, vul);
1282*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1283*67e74705SXin Li idx = vec_any_ne(vul, vbl);
1284*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1285*67e74705SXin Li idx = vec_any_ne(vbl, vul);
1286*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1287*67e74705SXin Li idx = vec_any_ne(vbl, vbl);
1288*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1289*67e74705SXin Li idx = vec_any_ne(vd, vd);
1290*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1291*67e74705SXin Li
1292*67e74705SXin Li idx = vec_any_ge(vsc, vsc);
1293*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1294*67e74705SXin Li idx = vec_any_ge(vsc, vbc);
1295*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1296*67e74705SXin Li idx = vec_any_ge(vbc, vsc);
1297*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1298*67e74705SXin Li idx = vec_any_ge(vuc, vuc);
1299*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1300*67e74705SXin Li idx = vec_any_ge(vuc, vbc);
1301*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1302*67e74705SXin Li idx = vec_any_ge(vbc, vuc);
1303*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1304*67e74705SXin Li idx = vec_any_ge(vbc, vbc);
1305*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1306*67e74705SXin Li idx = vec_any_ge(vss, vss);
1307*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1308*67e74705SXin Li idx = vec_any_ge(vss, vbs);
1309*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1310*67e74705SXin Li idx = vec_any_ge(vbs, vss);
1311*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1312*67e74705SXin Li idx = vec_any_ge(vus, vus);
1313*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1314*67e74705SXin Li idx = vec_any_ge(vus, vbs);
1315*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1316*67e74705SXin Li idx = vec_any_ge(vbs, vus);
1317*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1318*67e74705SXin Li idx = vec_any_ge(vbs, vbs);
1319*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1320*67e74705SXin Li idx = vec_any_ge(vsi, vsi);
1321*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1322*67e74705SXin Li idx = vec_any_ge(vsi, vbi);
1323*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1324*67e74705SXin Li idx = vec_any_ge(vbi, vsi);
1325*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1326*67e74705SXin Li idx = vec_any_ge(vui, vui);
1327*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1328*67e74705SXin Li idx = vec_any_ge(vui, vbi);
1329*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1330*67e74705SXin Li idx = vec_any_ge(vbi, vui);
1331*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1332*67e74705SXin Li idx = vec_any_ge(vbi, vbi);
1333*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1334*67e74705SXin Li idx = vec_any_ge(vsl, vsl);
1335*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1336*67e74705SXin Li idx = vec_any_ge(vsl, vbl);
1337*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1338*67e74705SXin Li idx = vec_any_ge(vbl, vsl);
1339*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1340*67e74705SXin Li idx = vec_any_ge(vul, vul);
1341*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1342*67e74705SXin Li idx = vec_any_ge(vul, vbl);
1343*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1344*67e74705SXin Li idx = vec_any_ge(vbl, vul);
1345*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1346*67e74705SXin Li idx = vec_any_ge(vbl, vbl);
1347*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1348*67e74705SXin Li idx = vec_any_ge(vd, vd);
1349*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1350*67e74705SXin Li
1351*67e74705SXin Li idx = vec_any_gt(vsc, vsc);
1352*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1353*67e74705SXin Li idx = vec_any_gt(vsc, vbc);
1354*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1355*67e74705SXin Li idx = vec_any_gt(vbc, vsc);
1356*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1357*67e74705SXin Li idx = vec_any_gt(vuc, vuc);
1358*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1359*67e74705SXin Li idx = vec_any_gt(vuc, vbc);
1360*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1361*67e74705SXin Li idx = vec_any_gt(vbc, vuc);
1362*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1363*67e74705SXin Li idx = vec_any_gt(vbc, vbc);
1364*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1365*67e74705SXin Li idx = vec_any_gt(vss, vss);
1366*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1367*67e74705SXin Li idx = vec_any_gt(vss, vbs);
1368*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1369*67e74705SXin Li idx = vec_any_gt(vbs, vss);
1370*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1371*67e74705SXin Li idx = vec_any_gt(vus, vus);
1372*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1373*67e74705SXin Li idx = vec_any_gt(vus, vbs);
1374*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1375*67e74705SXin Li idx = vec_any_gt(vbs, vus);
1376*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1377*67e74705SXin Li idx = vec_any_gt(vbs, vbs);
1378*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1379*67e74705SXin Li idx = vec_any_gt(vsi, vsi);
1380*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1381*67e74705SXin Li idx = vec_any_gt(vsi, vbi);
1382*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1383*67e74705SXin Li idx = vec_any_gt(vbi, vsi);
1384*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1385*67e74705SXin Li idx = vec_any_gt(vui, vui);
1386*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1387*67e74705SXin Li idx = vec_any_gt(vui, vbi);
1388*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1389*67e74705SXin Li idx = vec_any_gt(vbi, vui);
1390*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1391*67e74705SXin Li idx = vec_any_gt(vbi, vbi);
1392*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1393*67e74705SXin Li idx = vec_any_gt(vsl, vsl);
1394*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1395*67e74705SXin Li idx = vec_any_gt(vsl, vbl);
1396*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1397*67e74705SXin Li idx = vec_any_gt(vbl, vsl);
1398*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1399*67e74705SXin Li idx = vec_any_gt(vul, vul);
1400*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1401*67e74705SXin Li idx = vec_any_gt(vul, vbl);
1402*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1403*67e74705SXin Li idx = vec_any_gt(vbl, vul);
1404*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1405*67e74705SXin Li idx = vec_any_gt(vbl, vbl);
1406*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1407*67e74705SXin Li idx = vec_any_gt(vd, vd);
1408*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1409*67e74705SXin Li
1410*67e74705SXin Li idx = vec_any_le(vsc, vsc);
1411*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1412*67e74705SXin Li idx = vec_any_le(vsc, vbc);
1413*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1414*67e74705SXin Li idx = vec_any_le(vbc, vsc);
1415*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1416*67e74705SXin Li idx = vec_any_le(vuc, vuc);
1417*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1418*67e74705SXin Li idx = vec_any_le(vuc, vbc);
1419*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1420*67e74705SXin Li idx = vec_any_le(vbc, vuc);
1421*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1422*67e74705SXin Li idx = vec_any_le(vbc, vbc);
1423*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1424*67e74705SXin Li idx = vec_any_le(vss, vss);
1425*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1426*67e74705SXin Li idx = vec_any_le(vss, vbs);
1427*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1428*67e74705SXin Li idx = vec_any_le(vbs, vss);
1429*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1430*67e74705SXin Li idx = vec_any_le(vus, vus);
1431*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1432*67e74705SXin Li idx = vec_any_le(vus, vbs);
1433*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1434*67e74705SXin Li idx = vec_any_le(vbs, vus);
1435*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1436*67e74705SXin Li idx = vec_any_le(vbs, vbs);
1437*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1438*67e74705SXin Li idx = vec_any_le(vsi, vsi);
1439*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1440*67e74705SXin Li idx = vec_any_le(vsi, vbi);
1441*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1442*67e74705SXin Li idx = vec_any_le(vbi, vsi);
1443*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1444*67e74705SXin Li idx = vec_any_le(vui, vui);
1445*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1446*67e74705SXin Li idx = vec_any_le(vui, vbi);
1447*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1448*67e74705SXin Li idx = vec_any_le(vbi, vui);
1449*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1450*67e74705SXin Li idx = vec_any_le(vbi, vbi);
1451*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1452*67e74705SXin Li idx = vec_any_le(vsl, vsl);
1453*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1454*67e74705SXin Li idx = vec_any_le(vsl, vbl);
1455*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1456*67e74705SXin Li idx = vec_any_le(vbl, vsl);
1457*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1458*67e74705SXin Li idx = vec_any_le(vul, vul);
1459*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1460*67e74705SXin Li idx = vec_any_le(vul, vbl);
1461*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1462*67e74705SXin Li idx = vec_any_le(vbl, vul);
1463*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1464*67e74705SXin Li idx = vec_any_le(vbl, vbl);
1465*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1466*67e74705SXin Li idx = vec_any_le(vd, vd);
1467*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1468*67e74705SXin Li
1469*67e74705SXin Li idx = vec_any_lt(vsc, vsc);
1470*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1471*67e74705SXin Li idx = vec_any_lt(vsc, vbc);
1472*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1473*67e74705SXin Li idx = vec_any_lt(vbc, vsc);
1474*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1475*67e74705SXin Li idx = vec_any_lt(vuc, vuc);
1476*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1477*67e74705SXin Li idx = vec_any_lt(vuc, vbc);
1478*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1479*67e74705SXin Li idx = vec_any_lt(vbc, vuc);
1480*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1481*67e74705SXin Li idx = vec_any_lt(vbc, vbc);
1482*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1483*67e74705SXin Li idx = vec_any_lt(vss, vss);
1484*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1485*67e74705SXin Li idx = vec_any_lt(vss, vbs);
1486*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1487*67e74705SXin Li idx = vec_any_lt(vbs, vss);
1488*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1489*67e74705SXin Li idx = vec_any_lt(vus, vus);
1490*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1491*67e74705SXin Li idx = vec_any_lt(vus, vbs);
1492*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1493*67e74705SXin Li idx = vec_any_lt(vbs, vus);
1494*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1495*67e74705SXin Li idx = vec_any_lt(vbs, vbs);
1496*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1497*67e74705SXin Li idx = vec_any_lt(vsi, vsi);
1498*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1499*67e74705SXin Li idx = vec_any_lt(vsi, vbi);
1500*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1501*67e74705SXin Li idx = vec_any_lt(vbi, vsi);
1502*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1503*67e74705SXin Li idx = vec_any_lt(vui, vui);
1504*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1505*67e74705SXin Li idx = vec_any_lt(vui, vbi);
1506*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1507*67e74705SXin Li idx = vec_any_lt(vbi, vui);
1508*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1509*67e74705SXin Li idx = vec_any_lt(vbi, vbi);
1510*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1511*67e74705SXin Li idx = vec_any_lt(vsl, vsl);
1512*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1513*67e74705SXin Li idx = vec_any_lt(vsl, vbl);
1514*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1515*67e74705SXin Li idx = vec_any_lt(vbl, vsl);
1516*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1517*67e74705SXin Li idx = vec_any_lt(vul, vul);
1518*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1519*67e74705SXin Li idx = vec_any_lt(vul, vbl);
1520*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1521*67e74705SXin Li idx = vec_any_lt(vbl, vul);
1522*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1523*67e74705SXin Li idx = vec_any_lt(vbl, vbl);
1524*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1525*67e74705SXin Li idx = vec_any_lt(vd, vd);
1526*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1527*67e74705SXin Li
1528*67e74705SXin Li idx = vec_any_nge(vd, vd);
1529*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1530*67e74705SXin Li idx = vec_any_ngt(vd, vd);
1531*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1532*67e74705SXin Li idx = vec_any_nle(vd, vd);
1533*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1534*67e74705SXin Li idx = vec_any_nlt(vd, vd);
1535*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1536*67e74705SXin Li
1537*67e74705SXin Li idx = vec_any_nan(vd);
1538*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1539*67e74705SXin Li idx = vec_any_numeric(vd);
1540*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1541*67e74705SXin Li }
1542*67e74705SXin Li
test_integer(void)1543*67e74705SXin Li void test_integer(void) {
1544*67e74705SXin Li vsc = vec_andc(vsc, vsc);
1545*67e74705SXin Li vsc = vec_andc(vsc, vbc);
1546*67e74705SXin Li vsc = vec_andc(vbc, vsc);
1547*67e74705SXin Li vuc = vec_andc(vuc, vuc);
1548*67e74705SXin Li vuc = vec_andc(vuc, vbc);
1549*67e74705SXin Li vuc = vec_andc(vbc, vuc);
1550*67e74705SXin Li vbc = vec_andc(vbc, vbc);
1551*67e74705SXin Li vss = vec_andc(vss, vss);
1552*67e74705SXin Li vss = vec_andc(vss, vbs);
1553*67e74705SXin Li vss = vec_andc(vbs, vss);
1554*67e74705SXin Li vus = vec_andc(vus, vus);
1555*67e74705SXin Li vus = vec_andc(vus, vbs);
1556*67e74705SXin Li vus = vec_andc(vbs, vus);
1557*67e74705SXin Li vbs = vec_andc(vbs, vbs);
1558*67e74705SXin Li vsi = vec_andc(vsi, vsi);
1559*67e74705SXin Li vsi = vec_andc(vsi, vbi);
1560*67e74705SXin Li vsi = vec_andc(vbi, vsi);
1561*67e74705SXin Li vui = vec_andc(vui, vui);
1562*67e74705SXin Li vui = vec_andc(vui, vbi);
1563*67e74705SXin Li vui = vec_andc(vbi, vui);
1564*67e74705SXin Li vbi = vec_andc(vbi, vbi);
1565*67e74705SXin Li vsl = vec_andc(vsl, vsl);
1566*67e74705SXin Li vsl = vec_andc(vsl, vbl);
1567*67e74705SXin Li vsl = vec_andc(vbl, vsl);
1568*67e74705SXin Li vul = vec_andc(vul, vul);
1569*67e74705SXin Li vul = vec_andc(vul, vbl);
1570*67e74705SXin Li vul = vec_andc(vbl, vul);
1571*67e74705SXin Li vbl = vec_andc(vbl, vbl);
1572*67e74705SXin Li vd = vec_andc(vd, vd);
1573*67e74705SXin Li vd = vec_andc(vd, vbl);
1574*67e74705SXin Li vd = vec_andc(vbl, vd);
1575*67e74705SXin Li
1576*67e74705SXin Li vsc = vec_nor(vsc, vsc);
1577*67e74705SXin Li vsc = vec_nor(vsc, vbc);
1578*67e74705SXin Li vsc = vec_nor(vbc, vsc);
1579*67e74705SXin Li vuc = vec_nor(vuc, vuc);
1580*67e74705SXin Li vuc = vec_nor(vuc, vbc);
1581*67e74705SXin Li vuc = vec_nor(vbc, vuc);
1582*67e74705SXin Li vbc = vec_nor(vbc, vbc);
1583*67e74705SXin Li vss = vec_nor(vss, vss);
1584*67e74705SXin Li vss = vec_nor(vss, vbs);
1585*67e74705SXin Li vss = vec_nor(vbs, vss);
1586*67e74705SXin Li vus = vec_nor(vus, vus);
1587*67e74705SXin Li vus = vec_nor(vus, vbs);
1588*67e74705SXin Li vus = vec_nor(vbs, vus);
1589*67e74705SXin Li vbs = vec_nor(vbs, vbs);
1590*67e74705SXin Li vsi = vec_nor(vsi, vsi);
1591*67e74705SXin Li vsi = vec_nor(vsi, vbi);
1592*67e74705SXin Li vsi = vec_nor(vbi, vsi);
1593*67e74705SXin Li vui = vec_nor(vui, vui);
1594*67e74705SXin Li vui = vec_nor(vui, vbi);
1595*67e74705SXin Li vui = vec_nor(vbi, vui);
1596*67e74705SXin Li vbi = vec_nor(vbi, vbi);
1597*67e74705SXin Li vsl = vec_nor(vsl, vsl);
1598*67e74705SXin Li vsl = vec_nor(vsl, vbl);
1599*67e74705SXin Li vsl = vec_nor(vbl, vsl);
1600*67e74705SXin Li vul = vec_nor(vul, vul);
1601*67e74705SXin Li vul = vec_nor(vul, vbl);
1602*67e74705SXin Li vul = vec_nor(vbl, vul);
1603*67e74705SXin Li vbl = vec_nor(vbl, vbl);
1604*67e74705SXin Li vd = vec_nor(vd, vd);
1605*67e74705SXin Li vd = vec_nor(vd, vbl);
1606*67e74705SXin Li vd = vec_nor(vbl, vd);
1607*67e74705SXin Li
1608*67e74705SXin Li vuc = vec_cntlz(vsc);
1609*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
1610*67e74705SXin Li vuc = vec_cntlz(vuc);
1611*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
1612*67e74705SXin Li vus = vec_cntlz(vss);
1613*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
1614*67e74705SXin Li vus = vec_cntlz(vus);
1615*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
1616*67e74705SXin Li vui = vec_cntlz(vsi);
1617*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
1618*67e74705SXin Li vui = vec_cntlz(vui);
1619*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
1620*67e74705SXin Li vul = vec_cntlz(vsl);
1621*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
1622*67e74705SXin Li vul = vec_cntlz(vul);
1623*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
1624*67e74705SXin Li
1625*67e74705SXin Li vuc = vec_cnttz(vsc);
1626*67e74705SXin Li // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
1627*67e74705SXin Li vuc = vec_cnttz(vuc);
1628*67e74705SXin Li // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
1629*67e74705SXin Li vus = vec_cnttz(vss);
1630*67e74705SXin Li // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
1631*67e74705SXin Li vus = vec_cnttz(vus);
1632*67e74705SXin Li // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
1633*67e74705SXin Li vui = vec_cnttz(vsi);
1634*67e74705SXin Li // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
1635*67e74705SXin Li vui = vec_cnttz(vui);
1636*67e74705SXin Li // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
1637*67e74705SXin Li vul = vec_cnttz(vsl);
1638*67e74705SXin Li // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
1639*67e74705SXin Li vul = vec_cnttz(vul);
1640*67e74705SXin Li // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
1641*67e74705SXin Li
1642*67e74705SXin Li vuc = vec_popcnt(vsc);
1643*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
1644*67e74705SXin Li vuc = vec_popcnt(vuc);
1645*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
1646*67e74705SXin Li vus = vec_popcnt(vss);
1647*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
1648*67e74705SXin Li vus = vec_popcnt(vus);
1649*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
1650*67e74705SXin Li vui = vec_popcnt(vsi);
1651*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
1652*67e74705SXin Li vui = vec_popcnt(vui);
1653*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
1654*67e74705SXin Li vul = vec_popcnt(vsl);
1655*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
1656*67e74705SXin Li vul = vec_popcnt(vul);
1657*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
1658*67e74705SXin Li
1659*67e74705SXin Li vsc = vec_rl(vsc, vuc);
1660*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1661*67e74705SXin Li vuc = vec_rl(vuc, vuc);
1662*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1663*67e74705SXin Li vss = vec_rl(vss, vus);
1664*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1665*67e74705SXin Li vus = vec_rl(vus, vus);
1666*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1667*67e74705SXin Li vsi = vec_rl(vsi, vui);
1668*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1669*67e74705SXin Li vui = vec_rl(vui, vui);
1670*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1671*67e74705SXin Li vsl = vec_rl(vsl, vul);
1672*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1673*67e74705SXin Li vul = vec_rl(vul, vul);
1674*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1675*67e74705SXin Li
1676*67e74705SXin Li vsc = vec_rli(vsc, ul);
1677*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
1678*67e74705SXin Li vuc = vec_rli(vuc, ul);
1679*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
1680*67e74705SXin Li vss = vec_rli(vss, ul);
1681*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
1682*67e74705SXin Li vus = vec_rli(vus, ul);
1683*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
1684*67e74705SXin Li vsi = vec_rli(vsi, ul);
1685*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
1686*67e74705SXin Li vui = vec_rli(vui, ul);
1687*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
1688*67e74705SXin Li vsl = vec_rli(vsl, ul);
1689*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
1690*67e74705SXin Li vul = vec_rli(vul, ul);
1691*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
1692*67e74705SXin Li
1693*67e74705SXin Li vsc = vec_rl_mask(vsc, vuc, 0);
1694*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1695*67e74705SXin Li vsc = vec_rl_mask(vsc, vuc, 255);
1696*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
1697*67e74705SXin Li vuc = vec_rl_mask(vuc, vuc, 0);
1698*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1699*67e74705SXin Li vuc = vec_rl_mask(vuc, vuc, 255);
1700*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
1701*67e74705SXin Li vss = vec_rl_mask(vss, vus, 0);
1702*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
1703*67e74705SXin Li vss = vec_rl_mask(vss, vus, 255);
1704*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
1705*67e74705SXin Li vus = vec_rl_mask(vus, vus, 0);
1706*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
1707*67e74705SXin Li vus = vec_rl_mask(vus, vus, 255);
1708*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
1709*67e74705SXin Li vsi = vec_rl_mask(vsi, vui, 0);
1710*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
1711*67e74705SXin Li vsi = vec_rl_mask(vsi, vui, 255);
1712*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
1713*67e74705SXin Li vui = vec_rl_mask(vui, vui, 0);
1714*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
1715*67e74705SXin Li vui = vec_rl_mask(vui, vui, 255);
1716*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
1717*67e74705SXin Li vsl = vec_rl_mask(vsl, vul, 0);
1718*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
1719*67e74705SXin Li vsl = vec_rl_mask(vsl, vul, 255);
1720*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
1721*67e74705SXin Li vul = vec_rl_mask(vul, vul, 0);
1722*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
1723*67e74705SXin Li vul = vec_rl_mask(vul, vul, 255);
1724*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
1725*67e74705SXin Li
1726*67e74705SXin Li vsc = vec_sll(vsc, vuc);
1727*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1728*67e74705SXin Li vsc = vec_sll(vsc, vus);
1729*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1730*67e74705SXin Li vsc = vec_sll(vsc, vui);
1731*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1732*67e74705SXin Li vuc = vec_sll(vuc, vuc);
1733*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1734*67e74705SXin Li vuc = vec_sll(vuc, vus);
1735*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1736*67e74705SXin Li vuc = vec_sll(vuc, vui);
1737*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1738*67e74705SXin Li vbc = vec_sll(vbc, vuc);
1739*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1740*67e74705SXin Li vbc = vec_sll(vbc, vus);
1741*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1742*67e74705SXin Li vbc = vec_sll(vbc, vui);
1743*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1744*67e74705SXin Li vss = vec_sll(vss, vuc);
1745*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1746*67e74705SXin Li vss = vec_sll(vss, vus);
1747*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1748*67e74705SXin Li vss = vec_sll(vss, vui);
1749*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1750*67e74705SXin Li vus = vec_sll(vus, vuc);
1751*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1752*67e74705SXin Li vus = vec_sll(vus, vus);
1753*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1754*67e74705SXin Li vus = vec_sll(vus, vui);
1755*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1756*67e74705SXin Li vbs = vec_sll(vbs, vuc);
1757*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1758*67e74705SXin Li vbs = vec_sll(vbs, vus);
1759*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1760*67e74705SXin Li vbs = vec_sll(vbs, vui);
1761*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1762*67e74705SXin Li vsi = vec_sll(vsi, vuc);
1763*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1764*67e74705SXin Li vsi = vec_sll(vsi, vus);
1765*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1766*67e74705SXin Li vsi = vec_sll(vsi, vui);
1767*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1768*67e74705SXin Li vui = vec_sll(vui, vuc);
1769*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1770*67e74705SXin Li vui = vec_sll(vui, vus);
1771*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1772*67e74705SXin Li vui = vec_sll(vui, vui);
1773*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1774*67e74705SXin Li vbi = vec_sll(vbi, vuc);
1775*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1776*67e74705SXin Li vbi = vec_sll(vbi, vus);
1777*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1778*67e74705SXin Li vbi = vec_sll(vbi, vui);
1779*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1780*67e74705SXin Li vsl = vec_sll(vsl, vuc);
1781*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1782*67e74705SXin Li vsl = vec_sll(vsl, vus);
1783*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1784*67e74705SXin Li vsl = vec_sll(vsl, vui);
1785*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1786*67e74705SXin Li vul = vec_sll(vul, vuc);
1787*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1788*67e74705SXin Li vul = vec_sll(vul, vus);
1789*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1790*67e74705SXin Li vul = vec_sll(vul, vui);
1791*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1792*67e74705SXin Li vbl = vec_sll(vbl, vuc);
1793*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1794*67e74705SXin Li vbl = vec_sll(vbl, vus);
1795*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1796*67e74705SXin Li vbl = vec_sll(vbl, vui);
1797*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1798*67e74705SXin Li
1799*67e74705SXin Li vsc = vec_slb(vsc, vsc);
1800*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1801*67e74705SXin Li vsc = vec_slb(vsc, vuc);
1802*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1803*67e74705SXin Li vuc = vec_slb(vuc, vsc);
1804*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1805*67e74705SXin Li vuc = vec_slb(vuc, vuc);
1806*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1807*67e74705SXin Li vss = vec_slb(vss, vss);
1808*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1809*67e74705SXin Li vss = vec_slb(vss, vus);
1810*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1811*67e74705SXin Li vus = vec_slb(vus, vss);
1812*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1813*67e74705SXin Li vus = vec_slb(vus, vus);
1814*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1815*67e74705SXin Li vsi = vec_slb(vsi, vsi);
1816*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1817*67e74705SXin Li vsi = vec_slb(vsi, vui);
1818*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1819*67e74705SXin Li vui = vec_slb(vui, vsi);
1820*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1821*67e74705SXin Li vui = vec_slb(vui, vui);
1822*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1823*67e74705SXin Li vsl = vec_slb(vsl, vsl);
1824*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1825*67e74705SXin Li vsl = vec_slb(vsl, vul);
1826*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1827*67e74705SXin Li vul = vec_slb(vul, vsl);
1828*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1829*67e74705SXin Li vul = vec_slb(vul, vul);
1830*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1831*67e74705SXin Li vd = vec_slb(vd, vsl);
1832*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1833*67e74705SXin Li vd = vec_slb(vd, vul);
1834*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1835*67e74705SXin Li
1836*67e74705SXin Li vsc = vec_sld(vsc, vsc, 0);
1837*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1838*67e74705SXin Li vsc = vec_sld(vsc, vsc, 15);
1839*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1840*67e74705SXin Li vuc = vec_sld(vuc, vuc, 0);
1841*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1842*67e74705SXin Li vuc = vec_sld(vuc, vuc, 15);
1843*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1844*67e74705SXin Li vss = vec_sld(vss, vss, 0);
1845*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1846*67e74705SXin Li vss = vec_sld(vss, vss, 15);
1847*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1848*67e74705SXin Li vus = vec_sld(vus, vus, 0);
1849*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1850*67e74705SXin Li vus = vec_sld(vus, vus, 15);
1851*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1852*67e74705SXin Li vsi = vec_sld(vsi, vsi, 0);
1853*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1854*67e74705SXin Li vsi = vec_sld(vsi, vsi, 15);
1855*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1856*67e74705SXin Li vui = vec_sld(vui, vui, 0);
1857*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1858*67e74705SXin Li vui = vec_sld(vui, vui, 15);
1859*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1860*67e74705SXin Li vsl = vec_sld(vsl, vsl, 0);
1861*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1862*67e74705SXin Li vsl = vec_sld(vsl, vsl, 15);
1863*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1864*67e74705SXin Li vul = vec_sld(vul, vul, 0);
1865*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1866*67e74705SXin Li vul = vec_sld(vul, vul, 15);
1867*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1868*67e74705SXin Li vd = vec_sld(vd, vd, 0);
1869*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1870*67e74705SXin Li vd = vec_sld(vd, vd, 15);
1871*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
1872*67e74705SXin Li
1873*67e74705SXin Li vsc = vec_sldw(vsc, vsc, 0);
1874*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1875*67e74705SXin Li vsc = vec_sldw(vsc, vsc, 3);
1876*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1877*67e74705SXin Li vuc = vec_sldw(vuc, vuc, 0);
1878*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1879*67e74705SXin Li vuc = vec_sldw(vuc, vuc, 3);
1880*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1881*67e74705SXin Li vss = vec_sldw(vss, vss, 0);
1882*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1883*67e74705SXin Li vss = vec_sldw(vss, vss, 3);
1884*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1885*67e74705SXin Li vus = vec_sldw(vus, vus, 0);
1886*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1887*67e74705SXin Li vus = vec_sldw(vus, vus, 3);
1888*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1889*67e74705SXin Li vsi = vec_sldw(vsi, vsi, 0);
1890*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1891*67e74705SXin Li vsi = vec_sldw(vsi, vsi, 3);
1892*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1893*67e74705SXin Li vui = vec_sldw(vui, vui, 0);
1894*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1895*67e74705SXin Li vui = vec_sldw(vui, vui, 3);
1896*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1897*67e74705SXin Li vsl = vec_sldw(vsl, vsl, 0);
1898*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1899*67e74705SXin Li vsl = vec_sldw(vsl, vsl, 3);
1900*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1901*67e74705SXin Li vul = vec_sldw(vul, vul, 0);
1902*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1903*67e74705SXin Li vul = vec_sldw(vul, vul, 3);
1904*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1905*67e74705SXin Li vd = vec_sldw(vd, vd, 0);
1906*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
1907*67e74705SXin Li vd = vec_sldw(vd, vd, 3);
1908*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
1909*67e74705SXin Li
1910*67e74705SXin Li vsc = vec_sral(vsc, vuc);
1911*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1912*67e74705SXin Li vsc = vec_sral(vsc, vus);
1913*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1914*67e74705SXin Li vsc = vec_sral(vsc, vui);
1915*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1916*67e74705SXin Li vuc = vec_sral(vuc, vuc);
1917*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1918*67e74705SXin Li vuc = vec_sral(vuc, vus);
1919*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1920*67e74705SXin Li vuc = vec_sral(vuc, vui);
1921*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1922*67e74705SXin Li vbc = vec_sral(vbc, vuc);
1923*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1924*67e74705SXin Li vbc = vec_sral(vbc, vus);
1925*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1926*67e74705SXin Li vbc = vec_sral(vbc, vui);
1927*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1928*67e74705SXin Li vss = vec_sral(vss, vuc);
1929*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1930*67e74705SXin Li vss = vec_sral(vss, vus);
1931*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1932*67e74705SXin Li vss = vec_sral(vss, vui);
1933*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1934*67e74705SXin Li vus = vec_sral(vus, vuc);
1935*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1936*67e74705SXin Li vus = vec_sral(vus, vus);
1937*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1938*67e74705SXin Li vus = vec_sral(vus, vui);
1939*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1940*67e74705SXin Li vbs = vec_sral(vbs, vuc);
1941*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1942*67e74705SXin Li vbs = vec_sral(vbs, vus);
1943*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1944*67e74705SXin Li vbs = vec_sral(vbs, vui);
1945*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1946*67e74705SXin Li vsi = vec_sral(vsi, vuc);
1947*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1948*67e74705SXin Li vsi = vec_sral(vsi, vus);
1949*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1950*67e74705SXin Li vsi = vec_sral(vsi, vui);
1951*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1952*67e74705SXin Li vui = vec_sral(vui, vuc);
1953*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1954*67e74705SXin Li vui = vec_sral(vui, vus);
1955*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1956*67e74705SXin Li vui = vec_sral(vui, vui);
1957*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1958*67e74705SXin Li vbi = vec_sral(vbi, vuc);
1959*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1960*67e74705SXin Li vbi = vec_sral(vbi, vus);
1961*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1962*67e74705SXin Li vbi = vec_sral(vbi, vui);
1963*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1964*67e74705SXin Li vsl = vec_sral(vsl, vuc);
1965*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1966*67e74705SXin Li vsl = vec_sral(vsl, vus);
1967*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1968*67e74705SXin Li vsl = vec_sral(vsl, vui);
1969*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1970*67e74705SXin Li vul = vec_sral(vul, vuc);
1971*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1972*67e74705SXin Li vul = vec_sral(vul, vus);
1973*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1974*67e74705SXin Li vul = vec_sral(vul, vui);
1975*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1976*67e74705SXin Li vbl = vec_sral(vbl, vuc);
1977*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1978*67e74705SXin Li vbl = vec_sral(vbl, vus);
1979*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1980*67e74705SXin Li vbl = vec_sral(vbl, vui);
1981*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1982*67e74705SXin Li
1983*67e74705SXin Li vsc = vec_srab(vsc, vsc);
1984*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1985*67e74705SXin Li vsc = vec_srab(vsc, vuc);
1986*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1987*67e74705SXin Li vuc = vec_srab(vuc, vsc);
1988*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1989*67e74705SXin Li vuc = vec_srab(vuc, vuc);
1990*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1991*67e74705SXin Li vss = vec_srab(vss, vss);
1992*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1993*67e74705SXin Li vss = vec_srab(vss, vus);
1994*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1995*67e74705SXin Li vus = vec_srab(vus, vss);
1996*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1997*67e74705SXin Li vus = vec_srab(vus, vus);
1998*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1999*67e74705SXin Li vsi = vec_srab(vsi, vsi);
2000*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2001*67e74705SXin Li vsi = vec_srab(vsi, vui);
2002*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2003*67e74705SXin Li vui = vec_srab(vui, vsi);
2004*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2005*67e74705SXin Li vui = vec_srab(vui, vui);
2006*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2007*67e74705SXin Li vsl = vec_srab(vsl, vsl);
2008*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2009*67e74705SXin Li vsl = vec_srab(vsl, vul);
2010*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2011*67e74705SXin Li vul = vec_srab(vul, vsl);
2012*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2013*67e74705SXin Li vul = vec_srab(vul, vul);
2014*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2015*67e74705SXin Li vd = vec_srab(vd, vsl);
2016*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2017*67e74705SXin Li vd = vec_srab(vd, vul);
2018*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2019*67e74705SXin Li
2020*67e74705SXin Li vsc = vec_srl(vsc, vuc);
2021*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2022*67e74705SXin Li vsc = vec_srl(vsc, vus);
2023*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2024*67e74705SXin Li vsc = vec_srl(vsc, vui);
2025*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2026*67e74705SXin Li vuc = vec_srl(vuc, vuc);
2027*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2028*67e74705SXin Li vuc = vec_srl(vuc, vus);
2029*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2030*67e74705SXin Li vuc = vec_srl(vuc, vui);
2031*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2032*67e74705SXin Li vbc = vec_srl(vbc, vuc);
2033*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2034*67e74705SXin Li vbc = vec_srl(vbc, vus);
2035*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2036*67e74705SXin Li vbc = vec_srl(vbc, vui);
2037*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2038*67e74705SXin Li vss = vec_srl(vss, vuc);
2039*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2040*67e74705SXin Li vss = vec_srl(vss, vus);
2041*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2042*67e74705SXin Li vss = vec_srl(vss, vui);
2043*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2044*67e74705SXin Li vus = vec_srl(vus, vuc);
2045*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2046*67e74705SXin Li vus = vec_srl(vus, vus);
2047*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2048*67e74705SXin Li vus = vec_srl(vus, vui);
2049*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2050*67e74705SXin Li vbs = vec_srl(vbs, vuc);
2051*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2052*67e74705SXin Li vbs = vec_srl(vbs, vus);
2053*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2054*67e74705SXin Li vbs = vec_srl(vbs, vui);
2055*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2056*67e74705SXin Li vsi = vec_srl(vsi, vuc);
2057*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2058*67e74705SXin Li vsi = vec_srl(vsi, vus);
2059*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2060*67e74705SXin Li vsi = vec_srl(vsi, vui);
2061*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2062*67e74705SXin Li vui = vec_srl(vui, vuc);
2063*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2064*67e74705SXin Li vui = vec_srl(vui, vus);
2065*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2066*67e74705SXin Li vui = vec_srl(vui, vui);
2067*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2068*67e74705SXin Li vbi = vec_srl(vbi, vuc);
2069*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2070*67e74705SXin Li vbi = vec_srl(vbi, vus);
2071*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2072*67e74705SXin Li vbi = vec_srl(vbi, vui);
2073*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2074*67e74705SXin Li vsl = vec_srl(vsl, vuc);
2075*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2076*67e74705SXin Li vsl = vec_srl(vsl, vus);
2077*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2078*67e74705SXin Li vsl = vec_srl(vsl, vui);
2079*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2080*67e74705SXin Li vul = vec_srl(vul, vuc);
2081*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2082*67e74705SXin Li vul = vec_srl(vul, vus);
2083*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2084*67e74705SXin Li vul = vec_srl(vul, vui);
2085*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2086*67e74705SXin Li vbl = vec_srl(vbl, vuc);
2087*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2088*67e74705SXin Li vbl = vec_srl(vbl, vus);
2089*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2090*67e74705SXin Li vbl = vec_srl(vbl, vui);
2091*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2092*67e74705SXin Li
2093*67e74705SXin Li vsc = vec_srb(vsc, vsc);
2094*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2095*67e74705SXin Li vsc = vec_srb(vsc, vuc);
2096*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2097*67e74705SXin Li vuc = vec_srb(vuc, vsc);
2098*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2099*67e74705SXin Li vuc = vec_srb(vuc, vuc);
2100*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2101*67e74705SXin Li vss = vec_srb(vss, vss);
2102*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2103*67e74705SXin Li vss = vec_srb(vss, vus);
2104*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2105*67e74705SXin Li vus = vec_srb(vus, vss);
2106*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2107*67e74705SXin Li vus = vec_srb(vus, vus);
2108*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2109*67e74705SXin Li vsi = vec_srb(vsi, vsi);
2110*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2111*67e74705SXin Li vsi = vec_srb(vsi, vui);
2112*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2113*67e74705SXin Li vui = vec_srb(vui, vsi);
2114*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2115*67e74705SXin Li vui = vec_srb(vui, vui);
2116*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2117*67e74705SXin Li vsl = vec_srb(vsl, vsl);
2118*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2119*67e74705SXin Li vsl = vec_srb(vsl, vul);
2120*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2121*67e74705SXin Li vul = vec_srb(vul, vsl);
2122*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2123*67e74705SXin Li vul = vec_srb(vul, vul);
2124*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2125*67e74705SXin Li vd = vec_srb(vd, vsl);
2126*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2127*67e74705SXin Li vd = vec_srb(vd, vul);
2128*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2129*67e74705SXin Li
2130*67e74705SXin Li vsc = vec_abs(vsc);
2131*67e74705SXin Li vss = vec_abs(vss);
2132*67e74705SXin Li vsi = vec_abs(vsi);
2133*67e74705SXin Li vsl = vec_abs(vsl);
2134*67e74705SXin Li
2135*67e74705SXin Li vsc = vec_max(vsc, vsc);
2136*67e74705SXin Li vsc = vec_max(vsc, vbc);
2137*67e74705SXin Li vsc = vec_max(vbc, vsc);
2138*67e74705SXin Li vuc = vec_max(vuc, vuc);
2139*67e74705SXin Li vuc = vec_max(vuc, vbc);
2140*67e74705SXin Li vuc = vec_max(vbc, vuc);
2141*67e74705SXin Li vss = vec_max(vss, vss);
2142*67e74705SXin Li vss = vec_max(vss, vbs);
2143*67e74705SXin Li vss = vec_max(vbs, vss);
2144*67e74705SXin Li vus = vec_max(vus, vus);
2145*67e74705SXin Li vus = vec_max(vus, vbs);
2146*67e74705SXin Li vus = vec_max(vbs, vus);
2147*67e74705SXin Li vsi = vec_max(vsi, vsi);
2148*67e74705SXin Li vsi = vec_max(vsi, vbi);
2149*67e74705SXin Li vsi = vec_max(vbi, vsi);
2150*67e74705SXin Li vui = vec_max(vui, vui);
2151*67e74705SXin Li vui = vec_max(vui, vbi);
2152*67e74705SXin Li vui = vec_max(vbi, vui);
2153*67e74705SXin Li vsl = vec_max(vsl, vsl);
2154*67e74705SXin Li vsl = vec_max(vsl, vbl);
2155*67e74705SXin Li vsl = vec_max(vbl, vsl);
2156*67e74705SXin Li vul = vec_max(vul, vul);
2157*67e74705SXin Li vul = vec_max(vul, vbl);
2158*67e74705SXin Li vul = vec_max(vbl, vul);
2159*67e74705SXin Li vd = vec_max(vd, vd);
2160*67e74705SXin Li
2161*67e74705SXin Li vsc = vec_min(vsc, vsc);
2162*67e74705SXin Li vsc = vec_min(vsc, vbc);
2163*67e74705SXin Li vsc = vec_min(vbc, vsc);
2164*67e74705SXin Li vuc = vec_min(vuc, vuc);
2165*67e74705SXin Li vuc = vec_min(vuc, vbc);
2166*67e74705SXin Li vuc = vec_min(vbc, vuc);
2167*67e74705SXin Li vss = vec_min(vss, vss);
2168*67e74705SXin Li vss = vec_min(vss, vbs);
2169*67e74705SXin Li vss = vec_min(vbs, vss);
2170*67e74705SXin Li vus = vec_min(vus, vus);
2171*67e74705SXin Li vus = vec_min(vus, vbs);
2172*67e74705SXin Li vus = vec_min(vbs, vus);
2173*67e74705SXin Li vsi = vec_min(vsi, vsi);
2174*67e74705SXin Li vsi = vec_min(vsi, vbi);
2175*67e74705SXin Li vsi = vec_min(vbi, vsi);
2176*67e74705SXin Li vui = vec_min(vui, vui);
2177*67e74705SXin Li vui = vec_min(vui, vbi);
2178*67e74705SXin Li vui = vec_min(vbi, vui);
2179*67e74705SXin Li vsl = vec_min(vsl, vsl);
2180*67e74705SXin Li vsl = vec_min(vsl, vbl);
2181*67e74705SXin Li vsl = vec_min(vbl, vsl);
2182*67e74705SXin Li vul = vec_min(vul, vul);
2183*67e74705SXin Li vul = vec_min(vul, vbl);
2184*67e74705SXin Li vul = vec_min(vbl, vul);
2185*67e74705SXin Li vd = vec_min(vd, vd);
2186*67e74705SXin Li
2187*67e74705SXin Li vuc = vec_addc(vuc, vuc);
2188*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vaccb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2189*67e74705SXin Li vus = vec_addc(vus, vus);
2190*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vacch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2191*67e74705SXin Li vui = vec_addc(vui, vui);
2192*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vaccf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2193*67e74705SXin Li vul = vec_addc(vul, vul);
2194*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vaccg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2195*67e74705SXin Li
2196*67e74705SXin Li vuc = vec_add_u128(vuc, vuc);
2197*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vaq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2198*67e74705SXin Li vuc = vec_addc_u128(vuc, vuc);
2199*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vaccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2200*67e74705SXin Li vuc = vec_adde_u128(vuc, vuc, vuc);
2201*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vacq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2202*67e74705SXin Li vuc = vec_addec_u128(vuc, vuc, vuc);
2203*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vacccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2204*67e74705SXin Li
2205*67e74705SXin Li vsc = vec_avg(vsc, vsc);
2206*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vavgb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2207*67e74705SXin Li vuc = vec_avg(vuc, vuc);
2208*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vavglb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2209*67e74705SXin Li vss = vec_avg(vss, vss);
2210*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vavgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2211*67e74705SXin Li vus = vec_avg(vus, vus);
2212*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vavglh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2213*67e74705SXin Li vsi = vec_avg(vsi, vsi);
2214*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vavgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2215*67e74705SXin Li vui = vec_avg(vui, vui);
2216*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vavglf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2217*67e74705SXin Li vsl = vec_avg(vsl, vsl);
2218*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vavgg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2219*67e74705SXin Li vul = vec_avg(vul, vul);
2220*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vavglg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2221*67e74705SXin Li
2222*67e74705SXin Li vui = vec_checksum(vui, vui);
2223*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vcksm(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2224*67e74705SXin Li
2225*67e74705SXin Li vus = vec_gfmsum(vuc, vuc);
2226*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vgfmb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2227*67e74705SXin Li vui = vec_gfmsum(vus, vus);
2228*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vgfmh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2229*67e74705SXin Li vul = vec_gfmsum(vui, vui);
2230*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vgfmf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2231*67e74705SXin Li vuc = vec_gfmsum_128(vul, vul);
2232*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vgfmg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2233*67e74705SXin Li
2234*67e74705SXin Li vus = vec_gfmsum_accum(vuc, vuc, vus);
2235*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vgfmab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
2236*67e74705SXin Li vui = vec_gfmsum_accum(vus, vus, vui);
2237*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vgfmah(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
2238*67e74705SXin Li vul = vec_gfmsum_accum(vui, vui, vul);
2239*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vgfmaf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
2240*67e74705SXin Li vuc = vec_gfmsum_accum_128(vul, vul, vuc);
2241*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vgfmag(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <16 x i8> %{{.*}})
2242*67e74705SXin Li
2243*67e74705SXin Li vsc = vec_mladd(vsc, vsc, vsc);
2244*67e74705SXin Li vsc = vec_mladd(vuc, vsc, vsc);
2245*67e74705SXin Li vsc = vec_mladd(vsc, vuc, vuc);
2246*67e74705SXin Li vuc = vec_mladd(vuc, vuc, vuc);
2247*67e74705SXin Li vss = vec_mladd(vss, vss, vss);
2248*67e74705SXin Li vss = vec_mladd(vus, vss, vss);
2249*67e74705SXin Li vss = vec_mladd(vss, vus, vus);
2250*67e74705SXin Li vus = vec_mladd(vus, vus, vus);
2251*67e74705SXin Li vsi = vec_mladd(vsi, vsi, vsi);
2252*67e74705SXin Li vsi = vec_mladd(vui, vsi, vsi);
2253*67e74705SXin Li vsi = vec_mladd(vsi, vui, vui);
2254*67e74705SXin Li vui = vec_mladd(vui, vui, vui);
2255*67e74705SXin Li
2256*67e74705SXin Li vsc = vec_mhadd(vsc, vsc, vsc);
2257*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vmahb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2258*67e74705SXin Li vuc = vec_mhadd(vuc, vuc, vuc);
2259*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vmalhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2260*67e74705SXin Li vss = vec_mhadd(vss, vss, vss);
2261*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmahh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2262*67e74705SXin Li vus = vec_mhadd(vus, vus, vus);
2263*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmalhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2264*67e74705SXin Li vsi = vec_mhadd(vsi, vsi, vsi);
2265*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmahf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2266*67e74705SXin Li vui = vec_mhadd(vui, vui, vui);
2267*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmalhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2268*67e74705SXin Li
2269*67e74705SXin Li vss = vec_meadd(vsc, vsc, vss);
2270*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
2271*67e74705SXin Li vus = vec_meadd(vuc, vuc, vus);
2272*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmaleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
2273*67e74705SXin Li vsi = vec_meadd(vss, vss, vsi);
2274*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
2275*67e74705SXin Li vui = vec_meadd(vus, vus, vui);
2276*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmaleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
2277*67e74705SXin Li vsl = vec_meadd(vsi, vsi, vsl);
2278*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
2279*67e74705SXin Li vul = vec_meadd(vui, vui, vul);
2280*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmalef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
2281*67e74705SXin Li
2282*67e74705SXin Li vss = vec_moadd(vsc, vsc, vss);
2283*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmaob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
2284*67e74705SXin Li vus = vec_moadd(vuc, vuc, vus);
2285*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmalob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
2286*67e74705SXin Li vsi = vec_moadd(vss, vss, vsi);
2287*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmaoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
2288*67e74705SXin Li vui = vec_moadd(vus, vus, vui);
2289*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmaloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
2290*67e74705SXin Li vsl = vec_moadd(vsi, vsi, vsl);
2291*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmaof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
2292*67e74705SXin Li vul = vec_moadd(vui, vui, vul);
2293*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmalof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
2294*67e74705SXin Li
2295*67e74705SXin Li vsc = vec_mulh(vsc, vsc);
2296*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vmhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2297*67e74705SXin Li vuc = vec_mulh(vuc, vuc);
2298*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vmlhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2299*67e74705SXin Li vss = vec_mulh(vss, vss);
2300*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2301*67e74705SXin Li vus = vec_mulh(vus, vus);
2302*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmlhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2303*67e74705SXin Li vsi = vec_mulh(vsi, vsi);
2304*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2305*67e74705SXin Li vui = vec_mulh(vui, vui);
2306*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmlhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2307*67e74705SXin Li
2308*67e74705SXin Li vss = vec_mule(vsc, vsc);
2309*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2310*67e74705SXin Li vus = vec_mule(vuc, vuc);
2311*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2312*67e74705SXin Li vsi = vec_mule(vss, vss);
2313*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2314*67e74705SXin Li vui = vec_mule(vus, vus);
2315*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2316*67e74705SXin Li vsl = vec_mule(vsi, vsi);
2317*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2318*67e74705SXin Li vul = vec_mule(vui, vui);
2319*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmlef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2320*67e74705SXin Li
2321*67e74705SXin Li vss = vec_mulo(vsc, vsc);
2322*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2323*67e74705SXin Li vus = vec_mulo(vuc, vuc);
2324*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vmlob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2325*67e74705SXin Li vsi = vec_mulo(vss, vss);
2326*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2327*67e74705SXin Li vui = vec_mulo(vus, vus);
2328*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vmloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2329*67e74705SXin Li vsl = vec_mulo(vsi, vsi);
2330*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2331*67e74705SXin Li vul = vec_mulo(vui, vui);
2332*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vmlof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2333*67e74705SXin Li
2334*67e74705SXin Li vuc = vec_subc(vuc, vuc);
2335*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vscbib(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2336*67e74705SXin Li vus = vec_subc(vus, vus);
2337*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vscbih(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2338*67e74705SXin Li vui = vec_subc(vui, vui);
2339*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vscbif(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2340*67e74705SXin Li vul = vec_subc(vul, vul);
2341*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vscbig(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2342*67e74705SXin Li
2343*67e74705SXin Li vuc = vec_sub_u128(vuc, vuc);
2344*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2345*67e74705SXin Li vuc = vec_subc_u128(vuc, vuc);
2346*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vscbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2347*67e74705SXin Li vuc = vec_sube_u128(vuc, vuc, vuc);
2348*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2349*67e74705SXin Li vuc = vec_subec_u128(vuc, vuc, vuc);
2350*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsbcbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2351*67e74705SXin Li
2352*67e74705SXin Li vui = vec_sum4(vuc, vuc);
2353*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vsumb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2354*67e74705SXin Li vui = vec_sum4(vus, vus);
2355*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vsumh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2356*67e74705SXin Li vul = vec_sum2(vus, vus);
2357*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vsumgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2358*67e74705SXin Li vul = vec_sum2(vui, vui);
2359*67e74705SXin Li // CHECK: call <2 x i64> @llvm.s390.vsumgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2360*67e74705SXin Li vuc = vec_sum_u128(vui, vui);
2361*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsumqf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2362*67e74705SXin Li vuc = vec_sum_u128(vul, vul);
2363*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vsumqg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2364*67e74705SXin Li
2365*67e74705SXin Li idx = vec_test_mask(vsc, vuc);
2366*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2367*67e74705SXin Li idx = vec_test_mask(vuc, vuc);
2368*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2369*67e74705SXin Li idx = vec_test_mask(vss, vus);
2370*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2371*67e74705SXin Li idx = vec_test_mask(vus, vus);
2372*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2373*67e74705SXin Li idx = vec_test_mask(vsi, vui);
2374*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2375*67e74705SXin Li idx = vec_test_mask(vui, vui);
2376*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2377*67e74705SXin Li idx = vec_test_mask(vsl, vul);
2378*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2379*67e74705SXin Li idx = vec_test_mask(vul, vul);
2380*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2381*67e74705SXin Li idx = vec_test_mask(vd, vul);
2382*67e74705SXin Li // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2383*67e74705SXin Li }
2384*67e74705SXin Li
test_string(void)2385*67e74705SXin Li void test_string(void) {
2386*67e74705SXin Li vsc = vec_cp_until_zero(vsc);
2387*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
2388*67e74705SXin Li vuc = vec_cp_until_zero(vuc);
2389*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
2390*67e74705SXin Li vbc = vec_cp_until_zero(vbc);
2391*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
2392*67e74705SXin Li vss = vec_cp_until_zero(vss);
2393*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
2394*67e74705SXin Li vus = vec_cp_until_zero(vus);
2395*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
2396*67e74705SXin Li vbs = vec_cp_until_zero(vbs);
2397*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
2398*67e74705SXin Li vsi = vec_cp_until_zero(vsi);
2399*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
2400*67e74705SXin Li vui = vec_cp_until_zero(vui);
2401*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
2402*67e74705SXin Li vbi = vec_cp_until_zero(vbi);
2403*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
2404*67e74705SXin Li
2405*67e74705SXin Li vsc = vec_cp_until_zero_cc(vsc, &cc);
2406*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
2407*67e74705SXin Li vuc = vec_cp_until_zero_cc(vuc, &cc);
2408*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
2409*67e74705SXin Li vbc = vec_cp_until_zero_cc(vbc, &cc);
2410*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
2411*67e74705SXin Li vss = vec_cp_until_zero_cc(vss, &cc);
2412*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
2413*67e74705SXin Li vus = vec_cp_until_zero_cc(vus, &cc);
2414*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
2415*67e74705SXin Li vbs = vec_cp_until_zero_cc(vbs, &cc);
2416*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
2417*67e74705SXin Li vsi = vec_cp_until_zero_cc(vsi, &cc);
2418*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
2419*67e74705SXin Li vui = vec_cp_until_zero_cc(vui, &cc);
2420*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
2421*67e74705SXin Li vbi = vec_cp_until_zero_cc(vbi, &cc);
2422*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
2423*67e74705SXin Li
2424*67e74705SXin Li vsc = vec_cmpeq_idx(vsc, vsc);
2425*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2426*67e74705SXin Li vuc = vec_cmpeq_idx(vuc, vuc);
2427*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2428*67e74705SXin Li vuc = vec_cmpeq_idx(vbc, vbc);
2429*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2430*67e74705SXin Li vss = vec_cmpeq_idx(vss, vss);
2431*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2432*67e74705SXin Li vus = vec_cmpeq_idx(vus, vus);
2433*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2434*67e74705SXin Li vus = vec_cmpeq_idx(vbs, vbs);
2435*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2436*67e74705SXin Li vsi = vec_cmpeq_idx(vsi, vsi);
2437*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2438*67e74705SXin Li vui = vec_cmpeq_idx(vui, vui);
2439*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2440*67e74705SXin Li vui = vec_cmpeq_idx(vbi, vbi);
2441*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2442*67e74705SXin Li
2443*67e74705SXin Li vsc = vec_cmpeq_idx_cc(vsc, vsc, &cc);
2444*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2445*67e74705SXin Li vuc = vec_cmpeq_idx_cc(vuc, vuc, &cc);
2446*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2447*67e74705SXin Li vuc = vec_cmpeq_idx_cc(vbc, vbc, &cc);
2448*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2449*67e74705SXin Li vss = vec_cmpeq_idx_cc(vss, vss, &cc);
2450*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2451*67e74705SXin Li vus = vec_cmpeq_idx_cc(vus, vus, &cc);
2452*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2453*67e74705SXin Li vus = vec_cmpeq_idx_cc(vbs, vbs, &cc);
2454*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2455*67e74705SXin Li vsi = vec_cmpeq_idx_cc(vsi, vsi, &cc);
2456*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2457*67e74705SXin Li vui = vec_cmpeq_idx_cc(vui, vui, &cc);
2458*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2459*67e74705SXin Li vui = vec_cmpeq_idx_cc(vbi, vbi, &cc);
2460*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2461*67e74705SXin Li
2462*67e74705SXin Li vsc = vec_cmpeq_or_0_idx(vsc, vsc);
2463*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2464*67e74705SXin Li vuc = vec_cmpeq_or_0_idx(vuc, vuc);
2465*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2466*67e74705SXin Li vuc = vec_cmpeq_or_0_idx(vbc, vbc);
2467*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2468*67e74705SXin Li vss = vec_cmpeq_or_0_idx(vss, vss);
2469*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2470*67e74705SXin Li vus = vec_cmpeq_or_0_idx(vus, vus);
2471*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2472*67e74705SXin Li vus = vec_cmpeq_or_0_idx(vbs, vbs);
2473*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2474*67e74705SXin Li vsi = vec_cmpeq_or_0_idx(vsi, vsi);
2475*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2476*67e74705SXin Li vui = vec_cmpeq_or_0_idx(vui, vui);
2477*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2478*67e74705SXin Li vui = vec_cmpeq_or_0_idx(vbi, vbi);
2479*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2480*67e74705SXin Li
2481*67e74705SXin Li vsc = vec_cmpeq_or_0_idx_cc(vsc, vsc, &cc);
2482*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2483*67e74705SXin Li vuc = vec_cmpeq_or_0_idx_cc(vuc, vuc, &cc);
2484*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2485*67e74705SXin Li vuc = vec_cmpeq_or_0_idx_cc(vbc, vbc, &cc);
2486*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2487*67e74705SXin Li vss = vec_cmpeq_or_0_idx_cc(vss, vss, &cc);
2488*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2489*67e74705SXin Li vus = vec_cmpeq_or_0_idx_cc(vus, vus, &cc);
2490*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2491*67e74705SXin Li vus = vec_cmpeq_or_0_idx_cc(vbs, vbs, &cc);
2492*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2493*67e74705SXin Li vsi = vec_cmpeq_or_0_idx_cc(vsi, vsi, &cc);
2494*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2495*67e74705SXin Li vui = vec_cmpeq_or_0_idx_cc(vui, vui, &cc);
2496*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2497*67e74705SXin Li vui = vec_cmpeq_or_0_idx_cc(vbi, vbi, &cc);
2498*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2499*67e74705SXin Li
2500*67e74705SXin Li vsc = vec_cmpne_idx(vsc, vsc);
2501*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2502*67e74705SXin Li vuc = vec_cmpne_idx(vuc, vuc);
2503*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2504*67e74705SXin Li vuc = vec_cmpne_idx(vbc, vbc);
2505*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2506*67e74705SXin Li vss = vec_cmpne_idx(vss, vss);
2507*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2508*67e74705SXin Li vus = vec_cmpne_idx(vus, vus);
2509*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2510*67e74705SXin Li vus = vec_cmpne_idx(vbs, vbs);
2511*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2512*67e74705SXin Li vsi = vec_cmpne_idx(vsi, vsi);
2513*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2514*67e74705SXin Li vui = vec_cmpne_idx(vui, vui);
2515*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2516*67e74705SXin Li vui = vec_cmpne_idx(vbi, vbi);
2517*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2518*67e74705SXin Li
2519*67e74705SXin Li vsc = vec_cmpne_idx_cc(vsc, vsc, &cc);
2520*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2521*67e74705SXin Li vuc = vec_cmpne_idx_cc(vuc, vuc, &cc);
2522*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2523*67e74705SXin Li vuc = vec_cmpne_idx_cc(vbc, vbc, &cc);
2524*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2525*67e74705SXin Li vss = vec_cmpne_idx_cc(vss, vss, &cc);
2526*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2527*67e74705SXin Li vus = vec_cmpne_idx_cc(vus, vus, &cc);
2528*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2529*67e74705SXin Li vus = vec_cmpne_idx_cc(vbs, vbs, &cc);
2530*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2531*67e74705SXin Li vsi = vec_cmpne_idx_cc(vsi, vsi, &cc);
2532*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2533*67e74705SXin Li vui = vec_cmpne_idx_cc(vui, vui, &cc);
2534*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2535*67e74705SXin Li vui = vec_cmpne_idx_cc(vbi, vbi, &cc);
2536*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2537*67e74705SXin Li
2538*67e74705SXin Li vsc = vec_cmpne_or_0_idx(vsc, vsc);
2539*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2540*67e74705SXin Li vuc = vec_cmpne_or_0_idx(vuc, vuc);
2541*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2542*67e74705SXin Li vuc = vec_cmpne_or_0_idx(vbc, vbc);
2543*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2544*67e74705SXin Li vss = vec_cmpne_or_0_idx(vss, vss);
2545*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2546*67e74705SXin Li vus = vec_cmpne_or_0_idx(vus, vus);
2547*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2548*67e74705SXin Li vus = vec_cmpne_or_0_idx(vbs, vbs);
2549*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2550*67e74705SXin Li vsi = vec_cmpne_or_0_idx(vsi, vsi);
2551*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2552*67e74705SXin Li vui = vec_cmpne_or_0_idx(vui, vui);
2553*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2554*67e74705SXin Li vui = vec_cmpne_or_0_idx(vbi, vbi);
2555*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2556*67e74705SXin Li
2557*67e74705SXin Li vsc = vec_cmpne_or_0_idx_cc(vsc, vsc, &cc);
2558*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2559*67e74705SXin Li vuc = vec_cmpne_or_0_idx_cc(vuc, vuc, &cc);
2560*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2561*67e74705SXin Li vuc = vec_cmpne_or_0_idx_cc(vbc, vbc, &cc);
2562*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2563*67e74705SXin Li vss = vec_cmpne_or_0_idx_cc(vss, vss, &cc);
2564*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2565*67e74705SXin Li vus = vec_cmpne_or_0_idx_cc(vus, vus, &cc);
2566*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2567*67e74705SXin Li vus = vec_cmpne_or_0_idx_cc(vbs, vbs, &cc);
2568*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2569*67e74705SXin Li vsi = vec_cmpne_or_0_idx_cc(vsi, vsi, &cc);
2570*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2571*67e74705SXin Li vui = vec_cmpne_or_0_idx_cc(vui, vui, &cc);
2572*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2573*67e74705SXin Li vui = vec_cmpne_or_0_idx_cc(vbi, vbi, &cc);
2574*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2575*67e74705SXin Li
2576*67e74705SXin Li vbc = vec_cmprg(vuc, vuc, vuc);
2577*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2578*67e74705SXin Li vbs = vec_cmprg(vus, vus, vus);
2579*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2580*67e74705SXin Li vbi = vec_cmprg(vui, vui, vui);
2581*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2582*67e74705SXin Li
2583*67e74705SXin Li vbc = vec_cmprg_cc(vuc, vuc, vuc, &cc);
2584*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2585*67e74705SXin Li vbs = vec_cmprg_cc(vus, vus, vus, &cc);
2586*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2587*67e74705SXin Li vbi = vec_cmprg_cc(vui, vui, vui, &cc);
2588*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2589*67e74705SXin Li
2590*67e74705SXin Li vuc = vec_cmprg_idx(vuc, vuc, vuc);
2591*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2592*67e74705SXin Li vus = vec_cmprg_idx(vus, vus, vus);
2593*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2594*67e74705SXin Li vui = vec_cmprg_idx(vui, vui, vui);
2595*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2596*67e74705SXin Li
2597*67e74705SXin Li vuc = vec_cmprg_idx_cc(vuc, vuc, vuc, &cc);
2598*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2599*67e74705SXin Li vus = vec_cmprg_idx_cc(vus, vus, vus, &cc);
2600*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2601*67e74705SXin Li vui = vec_cmprg_idx_cc(vui, vui, vui, &cc);
2602*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2603*67e74705SXin Li
2604*67e74705SXin Li vuc = vec_cmprg_or_0_idx(vuc, vuc, vuc);
2605*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2606*67e74705SXin Li vus = vec_cmprg_or_0_idx(vus, vus, vus);
2607*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2608*67e74705SXin Li vui = vec_cmprg_or_0_idx(vui, vui, vui);
2609*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2610*67e74705SXin Li
2611*67e74705SXin Li vuc = vec_cmprg_or_0_idx_cc(vuc, vuc, vuc, &cc);
2612*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2613*67e74705SXin Li vus = vec_cmprg_or_0_idx_cc(vus, vus, vus, &cc);
2614*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2615*67e74705SXin Li vui = vec_cmprg_or_0_idx_cc(vui, vui, vui, &cc);
2616*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2617*67e74705SXin Li
2618*67e74705SXin Li vbc = vec_cmpnrg(vuc, vuc, vuc);
2619*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2620*67e74705SXin Li vbs = vec_cmpnrg(vus, vus, vus);
2621*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2622*67e74705SXin Li vbi = vec_cmpnrg(vui, vui, vui);
2623*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2624*67e74705SXin Li
2625*67e74705SXin Li vbc = vec_cmpnrg_cc(vuc, vuc, vuc, &cc);
2626*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2627*67e74705SXin Li vbs = vec_cmpnrg_cc(vus, vus, vus, &cc);
2628*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2629*67e74705SXin Li vbi = vec_cmpnrg_cc(vui, vui, vui, &cc);
2630*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2631*67e74705SXin Li
2632*67e74705SXin Li vuc = vec_cmpnrg_idx(vuc, vuc, vuc);
2633*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2634*67e74705SXin Li vus = vec_cmpnrg_idx(vus, vus, vus);
2635*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2636*67e74705SXin Li vui = vec_cmpnrg_idx(vui, vui, vui);
2637*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2638*67e74705SXin Li
2639*67e74705SXin Li vuc = vec_cmpnrg_idx_cc(vuc, vuc, vuc, &cc);
2640*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2641*67e74705SXin Li vus = vec_cmpnrg_idx_cc(vus, vus, vus, &cc);
2642*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2643*67e74705SXin Li vui = vec_cmpnrg_idx_cc(vui, vui, vui, &cc);
2644*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2645*67e74705SXin Li
2646*67e74705SXin Li vuc = vec_cmpnrg_or_0_idx(vuc, vuc, vuc);
2647*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2648*67e74705SXin Li vus = vec_cmpnrg_or_0_idx(vus, vus, vus);
2649*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2650*67e74705SXin Li vui = vec_cmpnrg_or_0_idx(vui, vui, vui);
2651*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2652*67e74705SXin Li
2653*67e74705SXin Li vuc = vec_cmpnrg_or_0_idx_cc(vuc, vuc, vuc, &cc);
2654*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2655*67e74705SXin Li vus = vec_cmpnrg_or_0_idx_cc(vus, vus, vus, &cc);
2656*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2657*67e74705SXin Li vui = vec_cmpnrg_or_0_idx_cc(vui, vui, vui, &cc);
2658*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2659*67e74705SXin Li
2660*67e74705SXin Li vbc = vec_find_any_eq(vsc, vsc);
2661*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2662*67e74705SXin Li vbc = vec_find_any_eq(vuc, vuc);
2663*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2664*67e74705SXin Li vbc = vec_find_any_eq(vbc, vbc);
2665*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2666*67e74705SXin Li vbs = vec_find_any_eq(vss, vss);
2667*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2668*67e74705SXin Li vbs = vec_find_any_eq(vus, vus);
2669*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2670*67e74705SXin Li vbs = vec_find_any_eq(vbs, vbs);
2671*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2672*67e74705SXin Li vbi = vec_find_any_eq(vsi, vsi);
2673*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2674*67e74705SXin Li vbi = vec_find_any_eq(vui, vui);
2675*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2676*67e74705SXin Li vbi = vec_find_any_eq(vbi, vbi);
2677*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2678*67e74705SXin Li
2679*67e74705SXin Li vbc = vec_find_any_eq_cc(vsc, vsc, &cc);
2680*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2681*67e74705SXin Li vbc = vec_find_any_eq_cc(vuc, vuc, &cc);
2682*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2683*67e74705SXin Li vbc = vec_find_any_eq_cc(vbc, vbc, &cc);
2684*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
2685*67e74705SXin Li vbs = vec_find_any_eq_cc(vss, vss, &cc);
2686*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2687*67e74705SXin Li vbs = vec_find_any_eq_cc(vus, vus, &cc);
2688*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2689*67e74705SXin Li vbs = vec_find_any_eq_cc(vbs, vbs, &cc);
2690*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
2691*67e74705SXin Li vbi = vec_find_any_eq_cc(vsi, vsi, &cc);
2692*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2693*67e74705SXin Li vbi = vec_find_any_eq_cc(vui, vui, &cc);
2694*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2695*67e74705SXin Li vbi = vec_find_any_eq_cc(vbi, vbi, &cc);
2696*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
2697*67e74705SXin Li
2698*67e74705SXin Li vsc = vec_find_any_eq_idx(vsc, vsc);
2699*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2700*67e74705SXin Li vuc = vec_find_any_eq_idx(vuc, vuc);
2701*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2702*67e74705SXin Li vuc = vec_find_any_eq_idx(vbc, vbc);
2703*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2704*67e74705SXin Li vss = vec_find_any_eq_idx(vss, vss);
2705*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2706*67e74705SXin Li vus = vec_find_any_eq_idx(vus, vus);
2707*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2708*67e74705SXin Li vus = vec_find_any_eq_idx(vbs, vbs);
2709*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2710*67e74705SXin Li vsi = vec_find_any_eq_idx(vsi, vsi);
2711*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2712*67e74705SXin Li vui = vec_find_any_eq_idx(vui, vui);
2713*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2714*67e74705SXin Li vui = vec_find_any_eq_idx(vbi, vbi);
2715*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2716*67e74705SXin Li
2717*67e74705SXin Li vsc = vec_find_any_eq_idx_cc(vsc, vsc, &cc);
2718*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2719*67e74705SXin Li vuc = vec_find_any_eq_idx_cc(vuc, vuc, &cc);
2720*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2721*67e74705SXin Li vuc = vec_find_any_eq_idx_cc(vbc, vbc, &cc);
2722*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2723*67e74705SXin Li vss = vec_find_any_eq_idx_cc(vss, vss, &cc);
2724*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2725*67e74705SXin Li vus = vec_find_any_eq_idx_cc(vus, vus, &cc);
2726*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2727*67e74705SXin Li vus = vec_find_any_eq_idx_cc(vbs, vbs, &cc);
2728*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2729*67e74705SXin Li vsi = vec_find_any_eq_idx_cc(vsi, vsi, &cc);
2730*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2731*67e74705SXin Li vui = vec_find_any_eq_idx_cc(vui, vui, &cc);
2732*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2733*67e74705SXin Li vui = vec_find_any_eq_idx_cc(vbi, vbi, &cc);
2734*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2735*67e74705SXin Li
2736*67e74705SXin Li vsc = vec_find_any_eq_or_0_idx(vsc, vsc);
2737*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2738*67e74705SXin Li vuc = vec_find_any_eq_or_0_idx(vuc, vuc);
2739*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2740*67e74705SXin Li vuc = vec_find_any_eq_or_0_idx(vbc, vbc);
2741*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2742*67e74705SXin Li vss = vec_find_any_eq_or_0_idx(vss, vss);
2743*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2744*67e74705SXin Li vus = vec_find_any_eq_or_0_idx(vus, vus);
2745*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2746*67e74705SXin Li vus = vec_find_any_eq_or_0_idx(vbs, vbs);
2747*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2748*67e74705SXin Li vsi = vec_find_any_eq_or_0_idx(vsi, vsi);
2749*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2750*67e74705SXin Li vui = vec_find_any_eq_or_0_idx(vui, vui);
2751*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2752*67e74705SXin Li vui = vec_find_any_eq_or_0_idx(vbi, vbi);
2753*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2754*67e74705SXin Li
2755*67e74705SXin Li vsc = vec_find_any_eq_or_0_idx_cc(vsc, vsc, &cc);
2756*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2757*67e74705SXin Li vuc = vec_find_any_eq_or_0_idx_cc(vuc, vuc, &cc);
2758*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2759*67e74705SXin Li vuc = vec_find_any_eq_or_0_idx_cc(vbc, vbc, &cc);
2760*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2761*67e74705SXin Li vss = vec_find_any_eq_or_0_idx_cc(vss, vss, &cc);
2762*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2763*67e74705SXin Li vus = vec_find_any_eq_or_0_idx_cc(vus, vus, &cc);
2764*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2765*67e74705SXin Li vus = vec_find_any_eq_or_0_idx_cc(vbs, vbs, &cc);
2766*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2767*67e74705SXin Li vsi = vec_find_any_eq_or_0_idx_cc(vsi, vsi, &cc);
2768*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2769*67e74705SXin Li vui = vec_find_any_eq_or_0_idx_cc(vui, vui, &cc);
2770*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2771*67e74705SXin Li vui = vec_find_any_eq_or_0_idx_cc(vbi, vbi, &cc);
2772*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2773*67e74705SXin Li
2774*67e74705SXin Li vbc = vec_find_any_ne(vsc, vsc);
2775*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2776*67e74705SXin Li vbc = vec_find_any_ne(vuc, vuc);
2777*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2778*67e74705SXin Li vbc = vec_find_any_ne(vbc, vbc);
2779*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2780*67e74705SXin Li vbs = vec_find_any_ne(vss, vss);
2781*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2782*67e74705SXin Li vbs = vec_find_any_ne(vus, vus);
2783*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2784*67e74705SXin Li vbs = vec_find_any_ne(vbs, vbs);
2785*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2786*67e74705SXin Li vbi = vec_find_any_ne(vsi, vsi);
2787*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2788*67e74705SXin Li vbi = vec_find_any_ne(vui, vui);
2789*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2790*67e74705SXin Li vbi = vec_find_any_ne(vbi, vbi);
2791*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2792*67e74705SXin Li
2793*67e74705SXin Li vbc = vec_find_any_ne_cc(vsc, vsc, &cc);
2794*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2795*67e74705SXin Li vbc = vec_find_any_ne_cc(vuc, vuc, &cc);
2796*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2797*67e74705SXin Li vbc = vec_find_any_ne_cc(vbc, vbc, &cc);
2798*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2799*67e74705SXin Li vbs = vec_find_any_ne_cc(vss, vss, &cc);
2800*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2801*67e74705SXin Li vbs = vec_find_any_ne_cc(vus, vus, &cc);
2802*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2803*67e74705SXin Li vbs = vec_find_any_ne_cc(vbs, vbs, &cc);
2804*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
2805*67e74705SXin Li vbi = vec_find_any_ne_cc(vsi, vsi, &cc);
2806*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2807*67e74705SXin Li vbi = vec_find_any_ne_cc(vui, vui, &cc);
2808*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2809*67e74705SXin Li vbi = vec_find_any_ne_cc(vbi, vbi, &cc);
2810*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
2811*67e74705SXin Li
2812*67e74705SXin Li vsc = vec_find_any_ne_idx(vsc, vsc);
2813*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2814*67e74705SXin Li vuc = vec_find_any_ne_idx(vuc, vuc);
2815*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2816*67e74705SXin Li vuc = vec_find_any_ne_idx(vbc, vbc);
2817*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2818*67e74705SXin Li vss = vec_find_any_ne_idx(vss, vss);
2819*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2820*67e74705SXin Li vus = vec_find_any_ne_idx(vus, vus);
2821*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2822*67e74705SXin Li vus = vec_find_any_ne_idx(vbs, vbs);
2823*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2824*67e74705SXin Li vsi = vec_find_any_ne_idx(vsi, vsi);
2825*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2826*67e74705SXin Li vui = vec_find_any_ne_idx(vui, vui);
2827*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2828*67e74705SXin Li vui = vec_find_any_ne_idx(vbi, vbi);
2829*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2830*67e74705SXin Li
2831*67e74705SXin Li vsc = vec_find_any_ne_idx_cc(vsc, vsc, &cc);
2832*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2833*67e74705SXin Li vuc = vec_find_any_ne_idx_cc(vuc, vuc, &cc);
2834*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2835*67e74705SXin Li vuc = vec_find_any_ne_idx_cc(vbc, vbc, &cc);
2836*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2837*67e74705SXin Li vss = vec_find_any_ne_idx_cc(vss, vss, &cc);
2838*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2839*67e74705SXin Li vus = vec_find_any_ne_idx_cc(vus, vus, &cc);
2840*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2841*67e74705SXin Li vus = vec_find_any_ne_idx_cc(vbs, vbs, &cc);
2842*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2843*67e74705SXin Li vsi = vec_find_any_ne_idx_cc(vsi, vsi, &cc);
2844*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2845*67e74705SXin Li vui = vec_find_any_ne_idx_cc(vui, vui, &cc);
2846*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2847*67e74705SXin Li vui = vec_find_any_ne_idx_cc(vbi, vbi, &cc);
2848*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2849*67e74705SXin Li
2850*67e74705SXin Li vsc = vec_find_any_ne_or_0_idx(vsc, vsc);
2851*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2852*67e74705SXin Li vuc = vec_find_any_ne_or_0_idx(vuc, vuc);
2853*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2854*67e74705SXin Li vuc = vec_find_any_ne_or_0_idx(vbc, vbc);
2855*67e74705SXin Li // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2856*67e74705SXin Li vss = vec_find_any_ne_or_0_idx(vss, vss);
2857*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2858*67e74705SXin Li vus = vec_find_any_ne_or_0_idx(vus, vus);
2859*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2860*67e74705SXin Li vus = vec_find_any_ne_or_0_idx(vbs, vbs);
2861*67e74705SXin Li // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2862*67e74705SXin Li vsi = vec_find_any_ne_or_0_idx(vsi, vsi);
2863*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2864*67e74705SXin Li vui = vec_find_any_ne_or_0_idx(vui, vui);
2865*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2866*67e74705SXin Li vui = vec_find_any_ne_or_0_idx(vbi, vbi);
2867*67e74705SXin Li // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2868*67e74705SXin Li
2869*67e74705SXin Li vsc = vec_find_any_ne_or_0_idx_cc(vsc, vsc, &cc);
2870*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2871*67e74705SXin Li vuc = vec_find_any_ne_or_0_idx_cc(vuc, vuc, &cc);
2872*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2873*67e74705SXin Li vuc = vec_find_any_ne_or_0_idx_cc(vbc, vbc, &cc);
2874*67e74705SXin Li // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
2875*67e74705SXin Li vss = vec_find_any_ne_or_0_idx_cc(vss, vss, &cc);
2876*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2877*67e74705SXin Li vus = vec_find_any_ne_or_0_idx_cc(vus, vus, &cc);
2878*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2879*67e74705SXin Li vus = vec_find_any_ne_or_0_idx_cc(vbs, vbs, &cc);
2880*67e74705SXin Li // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
2881*67e74705SXin Li vsi = vec_find_any_ne_or_0_idx_cc(vsi, vsi, &cc);
2882*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2883*67e74705SXin Li vui = vec_find_any_ne_or_0_idx_cc(vui, vui, &cc);
2884*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2885*67e74705SXin Li vui = vec_find_any_ne_or_0_idx_cc(vbi, vbi, &cc);
2886*67e74705SXin Li // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
2887*67e74705SXin Li }
2888*67e74705SXin Li
test_float(void)2889*67e74705SXin Li void test_float(void) {
2890*67e74705SXin Li vd = vec_abs(vd);
2891*67e74705SXin Li // CHECK: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
2892*67e74705SXin Li
2893*67e74705SXin Li vd = vec_nabs(vd);
2894*67e74705SXin Li // CHECK: [[ABS:%[^ ]+]] = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
2895*67e74705SXin Li // CHECK-NEXT: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ABS]]
2896*67e74705SXin Li
2897*67e74705SXin Li vd = vec_madd(vd, vd, vd);
2898*67e74705SXin Li // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
2899*67e74705SXin Li vd = vec_msub(vd, vd, vd);
2900*67e74705SXin Li // CHECK: [[NEG:%[^ ]+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
2901*67e74705SXin Li // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])
2902*67e74705SXin Li vd = vec_sqrt(vd);
2903*67e74705SXin Li // CHECK: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}})
2904*67e74705SXin Li
2905*67e74705SXin Li vd = vec_ld2f(cptrf);
2906*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = load <2 x float>, <2 x float>* %{{.*}}
2907*67e74705SXin Li // CHECK: fpext <2 x float> [[VAL]] to <2 x double>
2908*67e74705SXin Li vec_st2f(vd, ptrf);
2909*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = fptrunc <2 x double> %{{.*}} to <2 x float>
2910*67e74705SXin Li // CHECK: store <2 x float> [[VAL]], <2 x float>* %{{.*}}
2911*67e74705SXin Li
2912*67e74705SXin Li vd = vec_ctd(vsl, 0);
2913*67e74705SXin Li // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
2914*67e74705SXin Li vd = vec_ctd(vul, 0);
2915*67e74705SXin Li // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
2916*67e74705SXin Li vd = vec_ctd(vsl, 1);
2917*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
2918*67e74705SXin Li // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
2919*67e74705SXin Li vd = vec_ctd(vul, 1);
2920*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
2921*67e74705SXin Li // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
2922*67e74705SXin Li vd = vec_ctd(vsl, 31);
2923*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
2924*67e74705SXin Li // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
2925*67e74705SXin Li vd = vec_ctd(vul, 31);
2926*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
2927*67e74705SXin Li // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
2928*67e74705SXin Li
2929*67e74705SXin Li vsl = vec_ctsl(vd, 0);
2930*67e74705SXin Li // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64>
2931*67e74705SXin Li vul = vec_ctul(vd, 0);
2932*67e74705SXin Li // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64>
2933*67e74705SXin Li vsl = vec_ctsl(vd, 1);
2934*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
2935*67e74705SXin Li // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
2936*67e74705SXin Li vul = vec_ctul(vd, 1);
2937*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
2938*67e74705SXin Li // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
2939*67e74705SXin Li vsl = vec_ctsl(vd, 31);
2940*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
2941*67e74705SXin Li // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
2942*67e74705SXin Li vul = vec_ctul(vd, 31);
2943*67e74705SXin Li // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
2944*67e74705SXin Li // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
2945*67e74705SXin Li
2946*67e74705SXin Li vd = vec_roundp(vd);
2947*67e74705SXin Li // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
2948*67e74705SXin Li vd = vec_ceil(vd);
2949*67e74705SXin Li // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
2950*67e74705SXin Li vd = vec_roundm(vd);
2951*67e74705SXin Li // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
2952*67e74705SXin Li vd = vec_floor(vd);
2953*67e74705SXin Li // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
2954*67e74705SXin Li vd = vec_roundz(vd);
2955*67e74705SXin Li // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
2956*67e74705SXin Li vd = vec_trunc(vd);
2957*67e74705SXin Li // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
2958*67e74705SXin Li vd = vec_roundc(vd);
2959*67e74705SXin Li // CHECK: call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %{{.*}})
2960*67e74705SXin Li vd = vec_round(vd);
2961*67e74705SXin Li // CHECK: call <2 x double> @llvm.s390.vfidb(<2 x double> %{{.*}}, i32 4, i32 4)
2962*67e74705SXin Li
2963*67e74705SXin Li vbl = vec_fp_test_data_class(vd, 0, &cc);
2964*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 0)
2965*67e74705SXin Li vbl = vec_fp_test_data_class(vd, 4095, &cc);
2966*67e74705SXin Li // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4095)
2967*67e74705SXin Li }
2968