xref: /aosp_15_r20/external/clang/test/CodeGen/builtins-systemz-zvector.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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