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