1 // REQUIRES: systemz-registered-target
2 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
3 // RUN: -O2 -fzvector -flax-vector-conversions=none \
4 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
5 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
6 // RUN: -O2 -fzvector -flax-vector-conversions=none \
7 // RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM
11 volatile vector
signed char vsc
;
12 volatile vector
signed short vss
;
13 volatile vector
signed int vsi
;
14 volatile vector
signed long long vsl
;
15 volatile vector
unsigned char vuc
;
16 volatile vector
unsigned short vus
;
17 volatile vector
unsigned int vui
;
18 volatile vector
unsigned long long vul
;
19 volatile vector
bool char vbc
;
20 volatile vector
bool short vbs
;
21 volatile vector
bool int vbi
;
22 volatile vector
bool long long vbl
;
23 volatile vector
double vd
;
25 volatile signed char sc
;
26 volatile signed short ss
;
27 volatile signed int si
;
28 volatile signed long long sl
;
29 volatile unsigned char uc
;
30 volatile unsigned short us
;
31 volatile unsigned int ui
;
32 volatile unsigned long long ul
;
35 const void * volatile cptr
;
36 const signed char * volatile cptrsc
;
37 const signed short * volatile cptrss
;
38 const signed int * volatile cptrsi
;
39 const signed long long * volatile cptrsl
;
40 const unsigned char * volatile cptruc
;
41 const unsigned short * volatile cptrus
;
42 const unsigned int * volatile cptrui
;
43 const unsigned long long * volatile cptrul
;
44 const float * volatile cptrf
;
45 const double * volatile cptrd
;
48 signed char * volatile ptrsc
;
49 signed short * volatile ptrss
;
50 signed int * volatile ptrsi
;
51 signed long long * volatile ptrsl
;
52 unsigned char * volatile ptruc
;
53 unsigned short * volatile ptrus
;
54 unsigned int * volatile ptrui
;
55 unsigned long long * volatile ptrul
;
56 float * volatile ptrf
;
57 double * volatile ptrd
;
59 volatile unsigned int len
;
63 void test_core(void) {
64 // CHECK-ASM-LABEL: test_core
66 len
= __lcbb(cptr
, 64);
67 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 0)
69 len
= __lcbb(cptr
, 128);
70 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 1)
72 len
= __lcbb(cptr
, 256);
73 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 2)
75 len
= __lcbb(cptr
, 512);
76 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 3)
78 len
= __lcbb(cptr
, 1024);
79 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 4)
81 len
= __lcbb(cptr
, 2048);
82 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 5)
84 len
= __lcbb(cptr
, 4096);
85 // CHECK: call i32 @llvm.s390.lcbb(ptr %{{.*}}, i32 6)
88 sc
= vec_extract(vsc
, idx
);
89 // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
91 uc
= vec_extract(vuc
, idx
);
92 // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
94 uc
= vec_extract(vbc
, idx
);
95 // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
97 ss
= vec_extract(vss
, idx
);
98 // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
100 us
= vec_extract(vus
, idx
);
101 // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
103 us
= vec_extract(vbs
, idx
);
104 // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
106 si
= vec_extract(vsi
, idx
);
107 // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
109 ui
= vec_extract(vui
, idx
);
110 // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
112 ui
= vec_extract(vbi
, idx
);
113 // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
115 sl
= vec_extract(vsl
, idx
);
116 // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
118 ul
= vec_extract(vul
, idx
);
119 // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
121 ul
= vec_extract(vbl
, idx
);
122 // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
124 d
= vec_extract(vd
, idx
);
125 // CHECK: extractelement <2 x double> %{{.*}}, i32 %{{.*}}
128 vsc
= vec_insert(sc
, vsc
, idx
);
129 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
131 vuc
= vec_insert(uc
, vuc
, idx
);
132 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
134 vuc
= vec_insert(uc
, vbc
, idx
);
135 // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
137 vss
= vec_insert(ss
, vss
, idx
);
138 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
140 vus
= vec_insert(us
, vus
, idx
);
141 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
143 vus
= vec_insert(us
, vbs
, idx
);
144 // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
146 vsi
= vec_insert(si
, vsi
, idx
);
147 // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
149 vui
= vec_insert(ui
, vui
, idx
);
150 // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
152 vui
= vec_insert(ui
, vbi
, idx
);
153 // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
155 vsl
= vec_insert(sl
, vsl
, idx
);
156 // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
158 vul
= vec_insert(ul
, vul
, idx
);
159 // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
161 vul
= vec_insert(ul
, vbl
, idx
);
162 // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
164 vd
= vec_insert(d
, vd
, idx
);
165 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 %{{.*}}
168 vsc
= vec_promote(sc
, idx
);
169 // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 %{{.*}}
171 vuc
= vec_promote(uc
, idx
);
172 // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 %{{.*}}
174 vss
= vec_promote(ss
, idx
);
175 // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 %{{.*}}
177 vus
= vec_promote(us
, idx
);
178 // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 %{{.*}}
180 vsi
= vec_promote(si
, idx
);
181 // CHECK: insertelement <4 x i32> poison, i32 %{{.*}}, i32 %{{.*}}
183 vui
= vec_promote(ui
, idx
);
184 // CHECK: insertelement <4 x i32> poison, i32 %{{.*}}, i32 %{{.*}}
186 vsl
= vec_promote(sl
, idx
);
187 // CHECK: insertelement <2 x i64> poison, i64 %{{.*}}, i32 %{{.*}}
189 vul
= vec_promote(ul
, idx
);
190 // CHECK: insertelement <2 x i64> poison, i64 %{{.*}}, i32 %{{.*}}
192 vd
= vec_promote(d
, idx
);
193 // CHECK: insertelement <2 x double> poison, double %{{.*}}, i32 %{{.*}}
196 vsc
= vec_insert_and_zero(cptrsc
);
197 // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 poison, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i64 7
199 vuc
= vec_insert_and_zero(cptruc
);
200 // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 poison, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i64 7
202 vss
= vec_insert_and_zero(cptrss
);
203 // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 poison, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i64 3
205 vus
= vec_insert_and_zero(cptrus
);
206 // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 poison, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i64 3
208 vsi
= vec_insert_and_zero(cptrsi
);
209 // CHECK: insertelement <4 x i32> <i32 0, i32 poison, i32 0, i32 0>, i32 %{{.*}}, i64 1
211 vui
= vec_insert_and_zero(cptrui
);
212 // CHECK: insertelement <4 x i32> <i32 0, i32 poison, i32 0, i32 0>, i32 %{{.*}}, i64 1
214 vsl
= vec_insert_and_zero(cptrsl
);
215 // CHECK: insertelement <2 x i64> <i64 poison, i64 0>, i64 %{{.*}}, i64 0
217 vul
= vec_insert_and_zero(cptrul
);
218 // CHECK: insertelement <2 x i64> <i64 poison, i64 0>, i64 %{{.*}}, i64 0
220 vd
= vec_insert_and_zero(cptrd
);
221 // CHECK: insertelement <2 x double> <double poison, double 0.000000e+00>, double %{{.*}}, i64 0
224 vsc
= vec_perm(vsc
, vsc
, vuc
);
225 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
227 vuc
= vec_perm(vuc
, vuc
, vuc
);
228 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
230 vbc
= vec_perm(vbc
, vbc
, vuc
);
231 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
233 vss
= vec_perm(vss
, vss
, vuc
);
234 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
236 vus
= vec_perm(vus
, vus
, vuc
);
237 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
239 vbs
= vec_perm(vbs
, vbs
, vuc
);
240 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
242 vsi
= vec_perm(vsi
, vsi
, vuc
);
243 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
245 vui
= vec_perm(vui
, vui
, vuc
);
246 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
248 vbi
= vec_perm(vbi
, vbi
, vuc
);
249 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
251 vsl
= vec_perm(vsl
, vsl
, vuc
);
252 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
254 vul
= vec_perm(vul
, vul
, vuc
);
255 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
257 vbl
= vec_perm(vbl
, vbl
, vuc
);
258 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
260 vd
= vec_perm(vd
, vd
, vuc
);
261 // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
264 vsl
= vec_permi(vsl
, vsl
, 0);
265 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
267 vsl
= vec_permi(vsl
, vsl
, 1);
268 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
270 vsl
= vec_permi(vsl
, vsl
, 2);
271 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
273 vsl
= vec_permi(vsl
, vsl
, 3);
274 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
276 vul
= vec_permi(vul
, vul
, 0);
277 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
279 vul
= vec_permi(vul
, vul
, 1);
280 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
282 vul
= vec_permi(vul
, vul
, 2);
283 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
285 vul
= vec_permi(vul
, vul
, 3);
286 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
288 vbl
= vec_permi(vbl
, vbl
, 0);
289 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
291 vbl
= vec_permi(vbl
, vbl
, 1);
292 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
294 vbl
= vec_permi(vbl
, vbl
, 2);
295 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
297 vbl
= vec_permi(vbl
, vbl
, 3);
298 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
300 vd
= vec_permi(vd
, vd
, 0);
301 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
303 vd
= vec_permi(vd
, vd
, 1);
304 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
306 vd
= vec_permi(vd
, vd
, 2);
307 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
309 vd
= vec_permi(vd
, vd
, 3);
310 // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
347 // CHECK-ASM: {{vperm|vpdi}}
349 // CHECK-ASM: {{vperm|vpdi}}
351 // CHECK-ASM: {{vperm|vpdi}}
353 // CHECK-ASM: {{vperm|vpdi}}
355 vsc
= vec_sel(vsc
, vsc
, vuc
);
357 vsc
= vec_sel(vsc
, vsc
, vbc
);
359 vuc
= vec_sel(vuc
, vuc
, vuc
);
361 vuc
= vec_sel(vuc
, vuc
, vbc
);
363 vbc
= vec_sel(vbc
, vbc
, vuc
);
365 vbc
= vec_sel(vbc
, vbc
, vbc
);
367 vss
= vec_sel(vss
, vss
, vus
);
369 vss
= vec_sel(vss
, vss
, vbs
);
371 vus
= vec_sel(vus
, vus
, vus
);
373 vus
= vec_sel(vus
, vus
, vbs
);
375 vbs
= vec_sel(vbs
, vbs
, vus
);
377 vbs
= vec_sel(vbs
, vbs
, vbs
);
379 vsi
= vec_sel(vsi
, vsi
, vui
);
381 vsi
= vec_sel(vsi
, vsi
, vbi
);
383 vui
= vec_sel(vui
, vui
, vui
);
385 vui
= vec_sel(vui
, vui
, vbi
);
387 vbi
= vec_sel(vbi
, vbi
, vui
);
389 vbi
= vec_sel(vbi
, vbi
, vbi
);
391 vsl
= vec_sel(vsl
, vsl
, vul
);
393 vsl
= vec_sel(vsl
, vsl
, vbl
);
395 vul
= vec_sel(vul
, vul
, vul
);
397 vul
= vec_sel(vul
, vul
, vbl
);
399 vbl
= vec_sel(vbl
, vbl
, vul
);
401 vbl
= vec_sel(vbl
, vbl
, vbl
);
403 vd
= vec_sel(vd
, vd
, vul
);
405 vd
= vec_sel(vd
, vd
, vbl
);
408 vsi
= vec_gather_element(vsi
, vui
, cptrsi
, 0);
409 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
410 vsi
= vec_gather_element(vsi
, vui
, cptrsi
, 1);
411 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
412 vsi
= vec_gather_element(vsi
, vui
, cptrsi
, 2);
413 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
414 vsi
= vec_gather_element(vsi
, vui
, cptrsi
, 3);
415 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
416 vui
= vec_gather_element(vui
, vui
, cptrui
, 0);
417 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
418 vui
= vec_gather_element(vui
, vui
, cptrui
, 1);
419 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
420 vui
= vec_gather_element(vui
, vui
, cptrui
, 2);
421 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
422 vui
= vec_gather_element(vui
, vui
, cptrui
, 3);
423 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
424 vbi
= vec_gather_element(vbi
, vui
, cptrui
, 0);
425 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
426 vbi
= vec_gather_element(vbi
, vui
, cptrui
, 1);
427 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
428 vbi
= vec_gather_element(vbi
, vui
, cptrui
, 2);
429 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
430 vbi
= vec_gather_element(vbi
, vui
, cptrui
, 3);
431 // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
432 vsl
= vec_gather_element(vsl
, vul
, cptrsl
, 0);
433 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
434 vsl
= vec_gather_element(vsl
, vul
, cptrsl
, 1);
435 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
436 vul
= vec_gather_element(vul
, vul
, cptrul
, 0);
437 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
438 vul
= vec_gather_element(vul
, vul
, cptrul
, 1);
439 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
440 vbl
= vec_gather_element(vbl
, vul
, cptrul
, 0);
441 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
442 vbl
= vec_gather_element(vbl
, vul
, cptrul
, 1);
443 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
444 vd
= vec_gather_element(vd
, vul
, cptrd
, 0);
445 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
446 vd
= vec_gather_element(vd
, vul
, cptrd
, 1);
447 // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
449 vec_scatter_element(vsi
, vui
, ptrsi
, 0);
450 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
451 vec_scatter_element(vsi
, vui
, ptrsi
, 1);
452 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
453 vec_scatter_element(vsi
, vui
, ptrsi
, 2);
454 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
455 vec_scatter_element(vsi
, vui
, ptrsi
, 3);
456 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
457 vec_scatter_element(vui
, vui
, ptrui
, 0);
458 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
459 vec_scatter_element(vui
, vui
, ptrui
, 1);
460 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
461 vec_scatter_element(vui
, vui
, ptrui
, 2);
462 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
463 vec_scatter_element(vui
, vui
, ptrui
, 3);
464 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
465 vec_scatter_element(vbi
, vui
, ptrui
, 0);
466 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0
467 vec_scatter_element(vbi
, vui
, ptrui
, 1);
468 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1
469 vec_scatter_element(vbi
, vui
, ptrui
, 2);
470 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2
471 vec_scatter_element(vbi
, vui
, ptrui
, 3);
472 // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3
473 vec_scatter_element(vsl
, vul
, ptrsl
, 0);
474 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
475 vec_scatter_element(vsl
, vul
, ptrsl
, 1);
476 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
477 vec_scatter_element(vul
, vul
, ptrul
, 0);
478 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
479 vec_scatter_element(vul
, vul
, ptrul
, 1);
480 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
481 vec_scatter_element(vbl
, vul
, ptrul
, 0);
482 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
483 vec_scatter_element(vbl
, vul
, ptrul
, 1);
484 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
485 vec_scatter_element(vd
, vul
, ptrd
, 0);
486 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0
487 vec_scatter_element(vd
, vul
, ptrd
, 1);
488 // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1
490 vsc
= vec_xl(idx
, cptrsc
);
492 vuc
= vec_xl(idx
, cptruc
);
494 vss
= vec_xl(idx
, cptrss
);
496 vus
= vec_xl(idx
, cptrus
);
498 vsi
= vec_xl(idx
, cptrsi
);
500 vui
= vec_xl(idx
, cptrui
);
502 vsl
= vec_xl(idx
, cptrsl
);
504 vul
= vec_xl(idx
, cptrul
);
506 vd
= vec_xl(idx
, cptrd
);
509 vsc
= vec_xld2(idx
, cptrsc
);
511 vuc
= vec_xld2(idx
, cptruc
);
513 vss
= vec_xld2(idx
, cptrss
);
515 vus
= vec_xld2(idx
, cptrus
);
517 vsi
= vec_xld2(idx
, cptrsi
);
519 vui
= vec_xld2(idx
, cptrui
);
521 vsl
= vec_xld2(idx
, cptrsl
);
523 vul
= vec_xld2(idx
, cptrul
);
525 vd
= vec_xld2(idx
, cptrd
);
528 vsc
= vec_xlw4(idx
, cptrsc
);
530 vuc
= vec_xlw4(idx
, cptruc
);
532 vss
= vec_xlw4(idx
, cptrss
);
534 vus
= vec_xlw4(idx
, cptrus
);
536 vsi
= vec_xlw4(idx
, cptrsi
);
538 vui
= vec_xlw4(idx
, cptrui
);
541 vec_xst(vsc
, idx
, ptrsc
);
543 vec_xst(vuc
, idx
, ptruc
);
545 vec_xst(vss
, idx
, ptrss
);
547 vec_xst(vus
, idx
, ptrus
);
549 vec_xst(vsi
, idx
, ptrsi
);
551 vec_xst(vui
, idx
, ptrui
);
553 vec_xst(vsl
, idx
, ptrsl
);
555 vec_xst(vul
, idx
, ptrul
);
557 vec_xst(vd
, idx
, ptrd
);
560 vec_xstd2(vsc
, idx
, ptrsc
);
562 vec_xstd2(vuc
, idx
, ptruc
);
564 vec_xstd2(vss
, idx
, ptrss
);
566 vec_xstd2(vus
, idx
, ptrus
);
568 vec_xstd2(vsi
, idx
, ptrsi
);
570 vec_xstd2(vui
, idx
, ptrui
);
572 vec_xstd2(vsl
, idx
, ptrsl
);
574 vec_xstd2(vul
, idx
, ptrul
);
576 vec_xstd2(vd
, idx
, ptrd
);
579 vec_xstw4(vsc
, idx
, ptrsc
);
581 vec_xstw4(vuc
, idx
, ptruc
);
583 vec_xstw4(vss
, idx
, ptrss
);
585 vec_xstw4(vus
, idx
, ptrus
);
587 vec_xstw4(vsi
, idx
, ptrsi
);
589 vec_xstw4(vui
, idx
, ptrui
);
592 vsc
= vec_load_bndry(cptrsc
, 64);
593 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
595 vuc
= vec_load_bndry(cptruc
, 64);
596 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
598 vss
= vec_load_bndry(cptrss
, 64);
599 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
601 vus
= vec_load_bndry(cptrus
, 64);
602 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
604 vsi
= vec_load_bndry(cptrsi
, 64);
605 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
607 vui
= vec_load_bndry(cptrui
, 64);
608 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
610 vsl
= vec_load_bndry(cptrsl
, 64);
611 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
613 vul
= vec_load_bndry(cptrul
, 64);
614 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
616 vd
= vec_load_bndry(cptrd
, 64);
617 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 0)
619 vsc
= vec_load_bndry(cptrsc
, 128);
620 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 1)
622 vsc
= vec_load_bndry(cptrsc
, 256);
623 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 2)
625 vsc
= vec_load_bndry(cptrsc
, 512);
626 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 3)
628 vsc
= vec_load_bndry(cptrsc
, 1024);
629 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 4)
631 vsc
= vec_load_bndry(cptrsc
, 2048);
632 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 5)
634 vsc
= vec_load_bndry(cptrsc
, 4096);
635 // CHECK: call <16 x i8> @llvm.s390.vlbb(ptr %{{.*}}, i32 6)
638 vsc
= vec_load_len(cptrsc
, idx
);
639 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
641 vuc
= vec_load_len(cptruc
, idx
);
642 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
644 vss
= vec_load_len(cptrss
, idx
);
645 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
647 vus
= vec_load_len(cptrus
, idx
);
648 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
650 vsi
= vec_load_len(cptrsi
, idx
);
651 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
653 vui
= vec_load_len(cptrui
, idx
);
654 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
656 vsl
= vec_load_len(cptrsl
, idx
);
657 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
659 vul
= vec_load_len(cptrul
, idx
);
660 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
662 vd
= vec_load_len(cptrd
, idx
);
663 // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, ptr %{{.*}})
666 vec_store_len(vsc
, ptrsc
, idx
);
667 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
669 vec_store_len(vuc
, ptruc
, idx
);
670 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
672 vec_store_len(vss
, ptrss
, idx
);
673 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
675 vec_store_len(vus
, ptrus
, idx
);
676 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
678 vec_store_len(vsi
, ptrsi
, idx
);
679 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
681 vec_store_len(vui
, ptrui
, idx
);
682 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
684 vec_store_len(vsl
, ptrsl
, idx
);
685 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
687 vec_store_len(vul
, ptrul
, idx
);
688 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
690 vec_store_len(vd
, ptrd
, idx
);
691 // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, ptr %{{.*}})
694 vsl
= vec_load_pair(sl
+ 1, sl
- 1);
696 vul
= vec_load_pair(ul
+ 1, ul
- 1);
699 vuc
= vec_genmask(0);
700 // CHECK: <16 x i8> zeroinitializer
701 vuc
= vec_genmask(0x8000);
702 // 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>
703 vuc
= vec_genmask(0xffff);
704 // 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>
706 vuc
= vec_genmasks_8(0, 7);
707 // 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>
708 vuc
= vec_genmasks_8(1, 4);
709 // 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>
710 vuc
= vec_genmasks_8(6, 2);
711 // 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>
712 vus
= vec_genmasks_16(0, 15);
713 // CHECK: <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
714 vus
= vec_genmasks_16(2, 11);
715 // CHECK: <8 x i16> <i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368>
716 vus
= vec_genmasks_16(9, 2);
717 // CHECK: <8 x i16> <i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065>
718 vui
= vec_genmasks_32(0, 31);
719 // CHECK: <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
720 vui
= vec_genmasks_32(7, 20);
721 // CHECK: <4 x i32> <i32 33552384, i32 33552384, i32 33552384, i32 33552384>
722 vui
= vec_genmasks_32(25, 4);
723 // CHECK: <4 x i32> <i32 -134217601, i32 -134217601, i32 -134217601, i32 -134217601>
724 vul
= vec_genmasks_64(0, 63);
725 // CHECK: <2 x i64> <i64 -1, i64 -1>
726 vul
= vec_genmasks_64(3, 40);
727 // CHECK: <2 x i64> <i64 2305843009205305344, i64 2305843009205305344>
728 vul
= vec_genmasks_64(30, 11);
729 // CHECK: <2 x i64> <i64 -4503582447501313, i64 -4503582447501313>
731 vsc
= vec_splat(vsc
, 0);
732 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> poison, <16 x i32> zeroinitializer
734 vsc
= vec_splat(vsc
, 15);
735 // 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>
737 vuc
= vec_splat(vuc
, 0);
738 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> poison, <16 x i32> zeroinitializer
740 vuc
= vec_splat(vuc
, 15);
741 // 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>
743 vbc
= vec_splat(vbc
, 0);
744 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> poison, <16 x i32> zeroinitializer
746 vbc
= vec_splat(vbc
, 15);
747 // 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>
749 vss
= vec_splat(vss
, 0);
750 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> zeroinitializer
752 vss
= vec_splat(vss
, 7);
753 // 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>
755 vus
= vec_splat(vus
, 0);
756 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> zeroinitializer
758 vus
= vec_splat(vus
, 7);
759 // 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>
761 vbs
= vec_splat(vbs
, 0);
762 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> zeroinitializer
764 vbs
= vec_splat(vbs
, 7);
765 // 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>
767 vsi
= vec_splat(vsi
, 0);
768 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> zeroinitializer
770 vsi
= vec_splat(vsi
, 3);
771 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
773 vui
= vec_splat(vui
, 0);
774 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> zeroinitializer
776 vui
= vec_splat(vui
, 3);
777 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
779 vbi
= vec_splat(vbi
, 0);
780 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> zeroinitializer
782 vbi
= vec_splat(vbi
, 3);
783 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
785 vsl
= vec_splat(vsl
, 0);
786 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> poison, <2 x i32> zeroinitializer
788 vsl
= vec_splat(vsl
, 1);
789 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
791 vul
= vec_splat(vul
, 0);
792 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> poison, <2 x i32> zeroinitializer
794 vul
= vec_splat(vul
, 1);
795 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
797 vbl
= vec_splat(vbl
, 0);
798 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> poison, <2 x i32> zeroinitializer
800 vbl
= vec_splat(vbl
, 1);
801 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
803 vd
= vec_splat(vd
, 0);
804 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> poison, <2 x i32> zeroinitializer
806 vd
= vec_splat(vd
, 1);
807 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 1>
810 vsc
= vec_splat_s8(-128);
811 // 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>
812 vsc
= vec_splat_s8(127);
813 // 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>
814 vuc
= vec_splat_u8(1);
815 // 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>
816 vuc
= vec_splat_u8(254);
817 // 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>
818 vss
= vec_splat_s16(-32768);
819 // CHECK: <8 x i16> <i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768>
820 vss
= vec_splat_s16(32767);
821 // CHECK: <8 x i16> <i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767>
822 vus
= vec_splat_u16(1);
823 // CHECK: <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
824 vus
= vec_splat_u16(65534);
825 // CHECK: <8 x i16> <i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2>
826 vsi
= vec_splat_s32(-32768);
827 // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
828 vsi
= vec_splat_s32(32767);
829 // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
830 vui
= vec_splat_u32(-32768);
831 // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
832 vui
= vec_splat_u32(32767);
833 // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
834 vsl
= vec_splat_s64(-32768);
835 // CHECK: <2 x i64> <i64 -32768, i64 -32768>
836 vsl
= vec_splat_s64(32767);
837 // CHECK: <2 x i64> <i64 32767, i64 32767>
838 vul
= vec_splat_u64(-32768);
839 // CHECK: <2 x i64> <i64 -32768, i64 -32768>
840 vul
= vec_splat_u64(32767);
841 // CHECK: <2 x i64> <i64 32767, i64 32767>
843 vsc
= vec_splats(sc
);
844 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> poison, <16 x i32> zeroinitializer
846 vuc
= vec_splats(uc
);
847 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> poison, <16 x i32> zeroinitializer
849 vss
= vec_splats(ss
);
850 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> zeroinitializer
852 vus
= vec_splats(us
);
853 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> zeroinitializer
855 vsi
= vec_splats(si
);
856 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> zeroinitializer
858 vui
= vec_splats(ui
);
859 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> zeroinitializer
861 vsl
= vec_splats(sl
);
862 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> poison, <2 x i32> zeroinitializer
864 vul
= vec_splats(ul
);
865 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> poison, <2 x i32> zeroinitializer
868 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> poison, <2 x i32> zeroinitializer
871 vsl
= vec_extend_s64(vsc
);
873 vsl
= vec_extend_s64(vss
);
875 vsl
= vec_extend_s64(vsi
);
878 vsc
= vec_mergeh(vsc
, vsc
);
879 // 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>
881 vuc
= vec_mergeh(vuc
, vuc
);
882 // 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>
884 vbc
= vec_mergeh(vbc
, vbc
);
885 // 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>
887 vss
= vec_mergeh(vss
, vss
);
888 // 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>
890 vus
= vec_mergeh(vus
, vus
);
891 // 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>
893 vbs
= vec_mergeh(vbs
, vbs
);
894 // 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>
896 vsi
= vec_mergeh(vsi
, vsi
);
897 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
899 vui
= vec_mergeh(vui
, vui
);
900 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
902 vbi
= vec_mergeh(vbi
, vbi
);
903 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
905 vsl
= vec_mergeh(vsl
, vsl
);
906 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
908 vul
= vec_mergeh(vul
, vul
);
909 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
911 vbl
= vec_mergeh(vbl
, vbl
);
912 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
914 vd
= vec_mergeh(vd
, vd
);
915 // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
918 vsc
= vec_mergel(vsc
, vsc
);
919 // 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>
921 vuc
= vec_mergel(vuc
, vuc
);
922 // 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>
924 vbc
= vec_mergel(vbc
, vbc
);
925 // 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>
927 vss
= vec_mergel(vss
, vss
);
928 // 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>
930 vus
= vec_mergel(vus
, vus
);
931 // 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>
933 vbs
= vec_mergel(vbs
, vbs
);
934 // 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>
936 vsi
= vec_mergel(vsi
, vsi
);
937 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
939 vui
= vec_mergel(vui
, vui
);
940 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
942 vbi
= vec_mergel(vbi
, vbi
);
943 // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
945 vsl
= vec_mergel(vsl
, vsl
);
946 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
948 vul
= vec_mergel(vul
, vul
);
949 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
951 vbl
= vec_mergel(vbl
, vbl
);
952 // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
954 vd
= vec_mergel(vd
, vd
);
955 // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <i32 1, i32 3>
958 vsc
= vec_pack(vss
, vss
);
959 // 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>
961 vuc
= vec_pack(vus
, vus
);
962 // 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>
964 vbc
= vec_pack(vbs
, vbs
);
965 // 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>
967 vss
= vec_pack(vsi
, vsi
);
968 // 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>
970 vus
= vec_pack(vui
, vui
);
971 // 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>
973 vbs
= vec_pack(vbi
, vbi
);
974 // 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>
976 vsi
= vec_pack(vsl
, vsl
);
977 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
979 vui
= vec_pack(vul
, vul
);
980 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
982 vbi
= vec_pack(vbl
, vbl
);
983 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
986 vsc
= vec_packs(vss
, vss
);
987 // CHECK: call <16 x i8> @llvm.s390.vpksh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
989 vuc
= vec_packs(vus
, vus
);
990 // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
992 vss
= vec_packs(vsi
, vsi
);
993 // CHECK: call <8 x i16> @llvm.s390.vpksf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
995 vus
= vec_packs(vui
, vui
);
996 // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
998 vsi
= vec_packs(vsl
, vsl
);
999 // CHECK: call <4 x i32> @llvm.s390.vpksg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1001 vui
= vec_packs(vul
, vul
);
1002 // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1003 // CHECK-ASM: vpklsg
1005 vsc
= vec_packs_cc(vss
, vss
, &cc
);
1006 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpkshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1007 // CHECK-ASM: vpkshs
1008 vuc
= vec_packs_cc(vus
, vus
, &cc
);
1009 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1010 // CHECK-ASM: vpklshs
1011 vss
= vec_packs_cc(vsi
, vsi
, &cc
);
1012 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpksfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1013 // CHECK-ASM: vpksfs
1014 vus
= vec_packs_cc(vui
, vui
, &cc
);
1015 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1016 // CHECK-ASM: vpklsfs
1017 vsi
= vec_packs_cc(vsl
, vsl
, &cc
);
1018 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpksgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1019 // CHECK-ASM: vpksgs
1020 vui
= vec_packs_cc(vul
, vul
, &cc
);
1021 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1022 // CHECK-ASM: vpklsgs
1024 vuc
= vec_packsu(vss
, vss
);
1025 // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1026 // CHECK-ASM: vpklsh
1027 vuc
= vec_packsu(vus
, vus
);
1028 // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1029 // CHECK-ASM: vpklsh
1030 vus
= vec_packsu(vsi
, vsi
);
1031 // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1032 // CHECK-ASM: vpklsf
1033 vus
= vec_packsu(vui
, vui
);
1034 // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1035 // CHECK-ASM: vpklsf
1036 vui
= vec_packsu(vsl
, vsl
);
1037 // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1038 // CHECK-ASM: vpklsg
1039 vui
= vec_packsu(vul
, vul
);
1040 // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1041 // CHECK-ASM: vpklsg
1043 vuc
= vec_packsu_cc(vus
, vus
, &cc
);
1044 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1045 // CHECK-ASM: vpklshs
1046 vus
= vec_packsu_cc(vui
, vui
, &cc
);
1047 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1048 // CHECK-ASM: vpklsfs
1049 vui
= vec_packsu_cc(vul
, vul
, &cc
);
1050 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1051 // CHECK-ASM: vpklsgs
1053 vss
= vec_unpackh(vsc
);
1054 // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
1056 vus
= vec_unpackh(vuc
);
1057 // CHECK: call <8 x i16> @llvm.s390.vuplhb(<16 x i8> %{{.*}})
1058 // CHECK-ASM: vuplhb
1059 vbs
= vec_unpackh(vbc
);
1060 // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
1062 vsi
= vec_unpackh(vss
);
1063 // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
1065 vui
= vec_unpackh(vus
);
1066 // CHECK: call <4 x i32> @llvm.s390.vuplhh(<8 x i16> %{{.*}})
1067 // CHECK-ASM: vuplhh
1068 vbi
= vec_unpackh(vbs
);
1069 // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
1071 vsl
= vec_unpackh(vsi
);
1072 // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
1074 vul
= vec_unpackh(vui
);
1075 // CHECK: call <2 x i64> @llvm.s390.vuplhf(<4 x i32> %{{.*}})
1076 // CHECK-ASM: vuplhf
1077 vbl
= vec_unpackh(vbi
);
1078 // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
1081 vss
= vec_unpackl(vsc
);
1082 // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
1084 vus
= vec_unpackl(vuc
);
1085 // CHECK: call <8 x i16> @llvm.s390.vupllb(<16 x i8> %{{.*}})
1086 // CHECK-ASM: vupllb
1087 vbs
= vec_unpackl(vbc
);
1088 // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
1090 vsi
= vec_unpackl(vss
);
1091 // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
1092 // CHECK-ASM: vuplhw
1093 vui
= vec_unpackl(vus
);
1094 // CHECK: call <4 x i32> @llvm.s390.vupllh(<8 x i16> %{{.*}})
1095 // CHECK-ASM: vupllh
1096 vbi
= vec_unpackl(vbs
);
1097 // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
1098 // CHECK-ASM: vuplhw
1099 vsl
= vec_unpackl(vsi
);
1100 // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
1102 vul
= vec_unpackl(vui
);
1103 // CHECK: call <2 x i64> @llvm.s390.vupllf(<4 x i32> %{{.*}})
1104 // CHECK-ASM: vupllf
1105 vbl
= vec_unpackl(vbi
);
1106 // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
1110 void test_compare(void) {
1111 // CHECK-ASM-LABEL: test_compare
1113 vbc
= vec_cmpeq(vsc
, vsc
);
1114 // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
1116 vbc
= vec_cmpeq(vuc
, vuc
);
1117 // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
1119 vbc
= vec_cmpeq(vbc
, vbc
);
1120 // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
1122 vbs
= vec_cmpeq(vss
, vss
);
1123 // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
1125 vbs
= vec_cmpeq(vus
, vus
);
1126 // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
1128 vbs
= vec_cmpeq(vbs
, vbs
);
1129 // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
1131 vbi
= vec_cmpeq(vsi
, vsi
);
1132 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
1134 vbi
= vec_cmpeq(vui
, vui
);
1135 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
1137 vbi
= vec_cmpeq(vbi
, vbi
);
1138 // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
1140 vbl
= vec_cmpeq(vsl
, vsl
);
1141 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
1143 vbl
= vec_cmpeq(vul
, vul
);
1144 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
1146 vbl
= vec_cmpeq(vbl
, vbl
);
1147 // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
1149 vbl
= vec_cmpeq(vd
, vd
);
1150 // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
1151 // CHECK-ASM: vfcedb
1153 vbc
= vec_cmpge(vsc
, vsc
);
1154 // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
1156 vbc
= vec_cmpge(vuc
, vuc
);
1157 // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
1159 vbs
= vec_cmpge(vss
, vss
);
1160 // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
1162 vbs
= vec_cmpge(vus
, vus
);
1163 // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
1165 vbi
= vec_cmpge(vsi
, vsi
);
1166 // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
1168 vbi
= vec_cmpge(vui
, vui
);
1169 // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
1171 vbl
= vec_cmpge(vsl
, vsl
);
1172 // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
1174 vbl
= vec_cmpge(vul
, vul
);
1175 // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
1177 vbl
= vec_cmpge(vd
, vd
);
1178 // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
1179 // CHECK-ASM: vfchedb
1181 vbc
= vec_cmpgt(vsc
, vsc
);
1182 // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
1184 vbc
= vec_cmpgt(vuc
, vuc
);
1185 // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
1187 vbs
= vec_cmpgt(vss
, vss
);
1188 // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
1190 vbs
= vec_cmpgt(vus
, vus
);
1191 // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
1193 vbi
= vec_cmpgt(vsi
, vsi
);
1194 // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
1196 vbi
= vec_cmpgt(vui
, vui
);
1197 // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
1199 vbl
= vec_cmpgt(vsl
, vsl
);
1200 // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
1202 vbl
= vec_cmpgt(vul
, vul
);
1203 // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
1205 vbl
= vec_cmpgt(vd
, vd
);
1206 // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
1207 // CHECK-ASM: vfchdb
1209 vbc
= vec_cmple(vsc
, vsc
);
1210 // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
1212 vbc
= vec_cmple(vuc
, vuc
);
1213 // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
1215 vbs
= vec_cmple(vss
, vss
);
1216 // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
1218 vbs
= vec_cmple(vus
, vus
);
1219 // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
1221 vbi
= vec_cmple(vsi
, vsi
);
1222 // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
1224 vbi
= vec_cmple(vui
, vui
);
1225 // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
1227 vbl
= vec_cmple(vsl
, vsl
);
1228 // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
1230 vbl
= vec_cmple(vul
, vul
);
1231 // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
1233 vbl
= vec_cmple(vd
, vd
);
1234 // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
1235 // CHECK-ASM: vfchedb
1237 vbc
= vec_cmplt(vsc
, vsc
);
1238 // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
1240 vbc
= vec_cmplt(vuc
, vuc
);
1241 // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
1243 vbs
= vec_cmplt(vss
, vss
);
1244 // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
1246 vbs
= vec_cmplt(vus
, vus
);
1247 // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
1249 vbi
= vec_cmplt(vsi
, vsi
);
1250 // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
1252 vbi
= vec_cmplt(vui
, vui
);
1253 // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
1255 vbl
= vec_cmplt(vsl
, vsl
);
1256 // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
1258 vbl
= vec_cmplt(vul
, vul
);
1259 // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
1261 vbl
= vec_cmplt(vd
, vd
);
1262 // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
1263 // CHECK-ASM: vfchdb
1265 idx
= vec_all_eq(vsc
, vsc
);
1266 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1267 // CHECK-ASM: vceqbs
1268 idx
= vec_all_eq(vsc
, vbc
);
1269 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1270 // CHECK-ASM: vceqbs
1271 idx
= vec_all_eq(vbc
, vsc
);
1272 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1273 // CHECK-ASM: vceqbs
1274 idx
= vec_all_eq(vuc
, vuc
);
1275 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1276 // CHECK-ASM: vceqbs
1277 idx
= vec_all_eq(vuc
, vbc
);
1278 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1279 // CHECK-ASM: vceqbs
1280 idx
= vec_all_eq(vbc
, vuc
);
1281 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1282 // CHECK-ASM: vceqbs
1283 idx
= vec_all_eq(vbc
, vbc
);
1284 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1285 // CHECK-ASM: vceqbs
1286 idx
= vec_all_eq(vss
, vss
);
1287 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1288 // CHECK-ASM: vceqhs
1289 idx
= vec_all_eq(vss
, vbs
);
1290 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1291 // CHECK-ASM: vceqhs
1292 idx
= vec_all_eq(vbs
, vss
);
1293 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1294 // CHECK-ASM: vceqhs
1295 idx
= vec_all_eq(vus
, vus
);
1296 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1297 // CHECK-ASM: vceqhs
1298 idx
= vec_all_eq(vus
, vbs
);
1299 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1300 // CHECK-ASM: vceqhs
1301 idx
= vec_all_eq(vbs
, vus
);
1302 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1303 // CHECK-ASM: vceqhs
1304 idx
= vec_all_eq(vbs
, vbs
);
1305 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1306 // CHECK-ASM: vceqhs
1307 idx
= vec_all_eq(vsi
, vsi
);
1308 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1309 // CHECK-ASM: vceqfs
1310 idx
= vec_all_eq(vsi
, vbi
);
1311 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1312 // CHECK-ASM: vceqfs
1313 idx
= vec_all_eq(vbi
, vsi
);
1314 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1315 // CHECK-ASM: vceqfs
1316 idx
= vec_all_eq(vui
, vui
);
1317 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1318 // CHECK-ASM: vceqfs
1319 idx
= vec_all_eq(vui
, vbi
);
1320 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1321 // CHECK-ASM: vceqfs
1322 idx
= vec_all_eq(vbi
, vui
);
1323 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1324 // CHECK-ASM: vceqfs
1325 idx
= vec_all_eq(vbi
, vbi
);
1326 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1327 // CHECK-ASM: vceqfs
1328 idx
= vec_all_eq(vsl
, vsl
);
1329 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1330 // CHECK-ASM: vceqgs
1331 idx
= vec_all_eq(vsl
, vbl
);
1332 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1333 // CHECK-ASM: vceqgs
1334 idx
= vec_all_eq(vbl
, vsl
);
1335 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1336 // CHECK-ASM: vceqgs
1337 idx
= vec_all_eq(vul
, vul
);
1338 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1339 // CHECK-ASM: vceqgs
1340 idx
= vec_all_eq(vul
, vbl
);
1341 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1342 // CHECK-ASM: vceqgs
1343 idx
= vec_all_eq(vbl
, vul
);
1344 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1345 // CHECK-ASM: vceqgs
1346 idx
= vec_all_eq(vbl
, vbl
);
1347 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1348 // CHECK-ASM: vceqgs
1349 idx
= vec_all_eq(vd
, vd
);
1350 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1351 // CHECK-ASM: vfcedbs
1353 idx
= vec_all_ne(vsc
, vsc
);
1354 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1355 // CHECK-ASM: vceqbs
1356 idx
= vec_all_ne(vsc
, vbc
);
1357 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1358 // CHECK-ASM: vceqbs
1359 idx
= vec_all_ne(vbc
, vsc
);
1360 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1361 // CHECK-ASM: vceqbs
1362 idx
= vec_all_ne(vuc
, vuc
);
1363 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1364 // CHECK-ASM: vceqbs
1365 idx
= vec_all_ne(vuc
, vbc
);
1366 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1367 // CHECK-ASM: vceqbs
1368 idx
= vec_all_ne(vbc
, vuc
);
1369 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1370 // CHECK-ASM: vceqbs
1371 idx
= vec_all_ne(vbc
, vbc
);
1372 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1373 // CHECK-ASM: vceqbs
1374 idx
= vec_all_ne(vss
, vss
);
1375 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1376 // CHECK-ASM: vceqhs
1377 idx
= vec_all_ne(vss
, vbs
);
1378 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1379 // CHECK-ASM: vceqhs
1380 idx
= vec_all_ne(vbs
, vss
);
1381 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1382 // CHECK-ASM: vceqhs
1383 idx
= vec_all_ne(vus
, vus
);
1384 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1385 // CHECK-ASM: vceqhs
1386 idx
= vec_all_ne(vus
, vbs
);
1387 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1388 // CHECK-ASM: vceqhs
1389 idx
= vec_all_ne(vbs
, vus
);
1390 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1391 // CHECK-ASM: vceqhs
1392 idx
= vec_all_ne(vbs
, vbs
);
1393 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1394 // CHECK-ASM: vceqhs
1395 idx
= vec_all_ne(vsi
, vsi
);
1396 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1397 // CHECK-ASM: vceqfs
1398 idx
= vec_all_ne(vsi
, vbi
);
1399 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1400 // CHECK-ASM: vceqfs
1401 idx
= vec_all_ne(vbi
, vsi
);
1402 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1403 // CHECK-ASM: vceqfs
1404 idx
= vec_all_ne(vui
, vui
);
1405 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1406 // CHECK-ASM: vceqfs
1407 idx
= vec_all_ne(vui
, vbi
);
1408 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1409 // CHECK-ASM: vceqfs
1410 idx
= vec_all_ne(vbi
, vui
);
1411 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1412 // CHECK-ASM: vceqfs
1413 idx
= vec_all_ne(vbi
, vbi
);
1414 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1415 // CHECK-ASM: vceqfs
1416 idx
= vec_all_ne(vsl
, vsl
);
1417 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1418 // CHECK-ASM: vceqgs
1419 idx
= vec_all_ne(vsl
, vbl
);
1420 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1421 // CHECK-ASM: vceqgs
1422 idx
= vec_all_ne(vbl
, vsl
);
1423 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1424 // CHECK-ASM: vceqgs
1425 idx
= vec_all_ne(vul
, vul
);
1426 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1427 // CHECK-ASM: vceqgs
1428 idx
= vec_all_ne(vul
, vbl
);
1429 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1430 // CHECK-ASM: vceqgs
1431 idx
= vec_all_ne(vbl
, vul
);
1432 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1433 // CHECK-ASM: vceqgs
1434 idx
= vec_all_ne(vbl
, vbl
);
1435 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1436 // CHECK-ASM: vceqgs
1437 idx
= vec_all_ne(vd
, vd
);
1438 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1439 // CHECK-ASM: vfcedbs
1441 idx
= vec_all_ge(vsc
, vsc
);
1442 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1444 idx
= vec_all_ge(vsc
, vbc
);
1445 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1447 idx
= vec_all_ge(vbc
, vsc
);
1448 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1450 idx
= vec_all_ge(vuc
, vuc
);
1451 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1452 // CHECK-ASM: vchlbs
1453 idx
= vec_all_ge(vuc
, vbc
);
1454 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1455 // CHECK-ASM: vchlbs
1456 idx
= vec_all_ge(vbc
, vuc
);
1457 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1458 // CHECK-ASM: vchlbs
1459 idx
= vec_all_ge(vbc
, vbc
);
1460 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1461 // CHECK-ASM: vchlbs
1462 idx
= vec_all_ge(vss
, vss
);
1463 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1465 idx
= vec_all_ge(vss
, vbs
);
1466 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1468 idx
= vec_all_ge(vbs
, vss
);
1469 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1471 idx
= vec_all_ge(vus
, vus
);
1472 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1473 // CHECK-ASM: vchlhs
1474 idx
= vec_all_ge(vus
, vbs
);
1475 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1476 // CHECK-ASM: vchlhs
1477 idx
= vec_all_ge(vbs
, vus
);
1478 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1479 // CHECK-ASM: vchlhs
1480 idx
= vec_all_ge(vbs
, vbs
);
1481 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1482 // CHECK-ASM: vchlhs
1483 idx
= vec_all_ge(vsi
, vsi
);
1484 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1486 idx
= vec_all_ge(vsi
, vbi
);
1487 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1489 idx
= vec_all_ge(vbi
, vsi
);
1490 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1492 idx
= vec_all_ge(vui
, vui
);
1493 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1494 // CHECK-ASM: vchlfs
1495 idx
= vec_all_ge(vui
, vbi
);
1496 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1497 // CHECK-ASM: vchlfs
1498 idx
= vec_all_ge(vbi
, vui
);
1499 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1500 // CHECK-ASM: vchlfs
1501 idx
= vec_all_ge(vbi
, vbi
);
1502 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1503 // CHECK-ASM: vchlfs
1504 idx
= vec_all_ge(vsl
, vsl
);
1505 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1507 idx
= vec_all_ge(vsl
, vbl
);
1508 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1510 idx
= vec_all_ge(vbl
, vsl
);
1511 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1513 idx
= vec_all_ge(vul
, vul
);
1514 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1515 // CHECK-ASM: vchlgs
1516 idx
= vec_all_ge(vul
, vbl
);
1517 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1518 // CHECK-ASM: vchlgs
1519 idx
= vec_all_ge(vbl
, vul
);
1520 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1521 // CHECK-ASM: vchlgs
1522 idx
= vec_all_ge(vbl
, vbl
);
1523 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1524 // CHECK-ASM: vchlgs
1525 idx
= vec_all_ge(vd
, vd
);
1526 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1527 // CHECK-ASM: vfchedbs
1529 idx
= vec_all_gt(vsc
, vsc
);
1530 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1532 idx
= vec_all_gt(vsc
, vbc
);
1533 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1535 idx
= vec_all_gt(vbc
, vsc
);
1536 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1538 idx
= vec_all_gt(vuc
, vuc
);
1539 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1540 // CHECK-ASM: vchlbs
1541 idx
= vec_all_gt(vuc
, vbc
);
1542 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1543 // CHECK-ASM: vchlbs
1544 idx
= vec_all_gt(vbc
, vuc
);
1545 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1546 // CHECK-ASM: vchlbs
1547 idx
= vec_all_gt(vbc
, vbc
);
1548 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1549 // CHECK-ASM: vchlbs
1550 idx
= vec_all_gt(vss
, vss
);
1551 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1553 idx
= vec_all_gt(vss
, vbs
);
1554 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1556 idx
= vec_all_gt(vbs
, vss
);
1557 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1559 idx
= vec_all_gt(vus
, vus
);
1560 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1561 // CHECK-ASM: vchlhs
1562 idx
= vec_all_gt(vus
, vbs
);
1563 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1564 // CHECK-ASM: vchlhs
1565 idx
= vec_all_gt(vbs
, vus
);
1566 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1567 // CHECK-ASM: vchlhs
1568 idx
= vec_all_gt(vbs
, vbs
);
1569 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1570 // CHECK-ASM: vchlhs
1571 idx
= vec_all_gt(vsi
, vsi
);
1572 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1574 idx
= vec_all_gt(vsi
, vbi
);
1575 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1577 idx
= vec_all_gt(vbi
, vsi
);
1578 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1580 idx
= vec_all_gt(vui
, vui
);
1581 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1582 // CHECK-ASM: vchlfs
1583 idx
= vec_all_gt(vui
, vbi
);
1584 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1585 // CHECK-ASM: vchlfs
1586 idx
= vec_all_gt(vbi
, vui
);
1587 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1588 // CHECK-ASM: vchlfs
1589 idx
= vec_all_gt(vbi
, vbi
);
1590 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1591 // CHECK-ASM: vchlfs
1592 idx
= vec_all_gt(vsl
, vsl
);
1593 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1595 idx
= vec_all_gt(vsl
, vbl
);
1596 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1598 idx
= vec_all_gt(vbl
, vsl
);
1599 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1601 idx
= vec_all_gt(vul
, vul
);
1602 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1603 // CHECK-ASM: vchlgs
1604 idx
= vec_all_gt(vul
, vbl
);
1605 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1606 // CHECK-ASM: vchlgs
1607 idx
= vec_all_gt(vbl
, vul
);
1608 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1609 // CHECK-ASM: vchlgs
1610 idx
= vec_all_gt(vbl
, vbl
);
1611 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1612 // CHECK-ASM: vchlgs
1613 idx
= vec_all_gt(vd
, vd
);
1614 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1615 // CHECK-ASM: vfchdbs
1617 idx
= vec_all_le(vsc
, vsc
);
1618 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1620 idx
= vec_all_le(vsc
, vbc
);
1621 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1623 idx
= vec_all_le(vbc
, vsc
);
1624 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1626 idx
= vec_all_le(vuc
, vuc
);
1627 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1628 // CHECK-ASM: vchlbs
1629 idx
= vec_all_le(vuc
, vbc
);
1630 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1631 // CHECK-ASM: vchlbs
1632 idx
= vec_all_le(vbc
, vuc
);
1633 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1634 // CHECK-ASM: vchlbs
1635 idx
= vec_all_le(vbc
, vbc
);
1636 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1637 // CHECK-ASM: vchlbs
1638 idx
= vec_all_le(vss
, vss
);
1639 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1641 idx
= vec_all_le(vss
, vbs
);
1642 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1644 idx
= vec_all_le(vbs
, vss
);
1645 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1647 idx
= vec_all_le(vus
, vus
);
1648 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1649 // CHECK-ASM: vchlhs
1650 idx
= vec_all_le(vus
, vbs
);
1651 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1652 // CHECK-ASM: vchlhs
1653 idx
= vec_all_le(vbs
, vus
);
1654 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1655 // CHECK-ASM: vchlhs
1656 idx
= vec_all_le(vbs
, vbs
);
1657 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1658 // CHECK-ASM: vchlhs
1659 idx
= vec_all_le(vsi
, vsi
);
1660 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1662 idx
= vec_all_le(vsi
, vbi
);
1663 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1665 idx
= vec_all_le(vbi
, vsi
);
1666 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1668 idx
= vec_all_le(vui
, vui
);
1669 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1670 // CHECK-ASM: vchlfs
1671 idx
= vec_all_le(vui
, vbi
);
1672 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1673 // CHECK-ASM: vchlfs
1674 idx
= vec_all_le(vbi
, vui
);
1675 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1676 // CHECK-ASM: vchlfs
1677 idx
= vec_all_le(vbi
, vbi
);
1678 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1679 // CHECK-ASM: vchlfs
1680 idx
= vec_all_le(vsl
, vsl
);
1681 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1683 idx
= vec_all_le(vsl
, vbl
);
1684 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1686 idx
= vec_all_le(vbl
, vsl
);
1687 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1689 idx
= vec_all_le(vul
, vul
);
1690 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1691 // CHECK-ASM: vchlgs
1692 idx
= vec_all_le(vul
, vbl
);
1693 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1694 // CHECK-ASM: vchlgs
1695 idx
= vec_all_le(vbl
, vul
);
1696 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1697 // CHECK-ASM: vchlgs
1698 idx
= vec_all_le(vbl
, vbl
);
1699 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1700 // CHECK-ASM: vchlgs
1701 idx
= vec_all_le(vd
, vd
);
1702 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1703 // CHECK-ASM: vfchedbs
1705 idx
= vec_all_lt(vsc
, vsc
);
1706 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1708 idx
= vec_all_lt(vsc
, vbc
);
1709 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1711 idx
= vec_all_lt(vbc
, vsc
);
1712 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1714 idx
= vec_all_lt(vuc
, vuc
);
1715 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1716 // CHECK-ASM: vchlbs
1717 idx
= vec_all_lt(vuc
, vbc
);
1718 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1719 // CHECK-ASM: vchlbs
1720 idx
= vec_all_lt(vbc
, vuc
);
1721 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1722 // CHECK-ASM: vchlbs
1723 idx
= vec_all_lt(vbc
, vbc
);
1724 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1725 // CHECK-ASM: vchlbs
1726 idx
= vec_all_lt(vss
, vss
);
1727 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1729 idx
= vec_all_lt(vss
, vbs
);
1730 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1732 idx
= vec_all_lt(vbs
, vss
);
1733 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1735 idx
= vec_all_lt(vus
, vus
);
1736 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1737 // CHECK-ASM: vchlhs
1738 idx
= vec_all_lt(vus
, vbs
);
1739 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1740 // CHECK-ASM: vchlhs
1741 idx
= vec_all_lt(vbs
, vus
);
1742 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1743 // CHECK-ASM: vchlhs
1744 idx
= vec_all_lt(vbs
, vbs
);
1745 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1746 // CHECK-ASM: vchlhs
1747 idx
= vec_all_lt(vsi
, vsi
);
1748 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1750 idx
= vec_all_lt(vsi
, vbi
);
1751 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1753 idx
= vec_all_lt(vbi
, vsi
);
1754 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1756 idx
= vec_all_lt(vui
, vui
);
1757 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1758 // CHECK-ASM: vchlfs
1759 idx
= vec_all_lt(vui
, vbi
);
1760 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1761 // CHECK-ASM: vchlfs
1762 idx
= vec_all_lt(vbi
, vui
);
1763 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1764 // CHECK-ASM: vchlfs
1765 idx
= vec_all_lt(vbi
, vbi
);
1766 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1767 // CHECK-ASM: vchlfs
1768 idx
= vec_all_lt(vsl
, vsl
);
1769 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1771 idx
= vec_all_lt(vsl
, vbl
);
1772 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1774 idx
= vec_all_lt(vbl
, vsl
);
1775 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1777 idx
= vec_all_lt(vul
, vul
);
1778 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1779 // CHECK-ASM: vchlgs
1780 idx
= vec_all_lt(vul
, vbl
);
1781 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1782 // CHECK-ASM: vchlgs
1783 idx
= vec_all_lt(vbl
, vul
);
1784 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1785 // CHECK-ASM: vchlgs
1786 idx
= vec_all_lt(vbl
, vbl
);
1787 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1788 // CHECK-ASM: vchlgs
1789 idx
= vec_all_lt(vd
, vd
);
1790 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1791 // CHECK-ASM: vfchdbs
1793 idx
= vec_all_nge(vd
, vd
);
1794 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1795 // CHECK-ASM: vfchedbs
1796 idx
= vec_all_ngt(vd
, vd
);
1797 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1798 // CHECK-ASM: vfchdbs
1799 idx
= vec_all_nle(vd
, vd
);
1800 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1801 // CHECK-ASM: vfchedbs
1802 idx
= vec_all_nlt(vd
, vd
);
1803 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1804 // CHECK-ASM: vfchdbs
1806 idx
= vec_all_nan(vd
);
1807 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1808 // CHECK-ASM: vftcidb
1809 idx
= vec_all_numeric(vd
);
1810 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
1811 // CHECK-ASM: vftcidb
1813 idx
= vec_any_eq(vsc
, vsc
);
1814 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1815 // CHECK-ASM: vceqbs
1816 idx
= vec_any_eq(vsc
, vbc
);
1817 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1818 // CHECK-ASM: vceqbs
1819 idx
= vec_any_eq(vbc
, vsc
);
1820 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1821 // CHECK-ASM: vceqbs
1822 idx
= vec_any_eq(vuc
, vuc
);
1823 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1824 // CHECK-ASM: vceqbs
1825 idx
= vec_any_eq(vuc
, vbc
);
1826 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1827 // CHECK-ASM: vceqbs
1828 idx
= vec_any_eq(vbc
, vuc
);
1829 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1830 // CHECK-ASM: vceqbs
1831 idx
= vec_any_eq(vbc
, vbc
);
1832 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1833 // CHECK-ASM: vceqbs
1834 idx
= vec_any_eq(vss
, vss
);
1835 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1836 // CHECK-ASM: vceqhs
1837 idx
= vec_any_eq(vss
, vbs
);
1838 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1839 // CHECK-ASM: vceqhs
1840 idx
= vec_any_eq(vbs
, vss
);
1841 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1842 // CHECK-ASM: vceqhs
1843 idx
= vec_any_eq(vus
, vus
);
1844 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1845 // CHECK-ASM: vceqhs
1846 idx
= vec_any_eq(vus
, vbs
);
1847 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1848 // CHECK-ASM: vceqhs
1849 idx
= vec_any_eq(vbs
, vus
);
1850 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1851 // CHECK-ASM: vceqhs
1852 idx
= vec_any_eq(vbs
, vbs
);
1853 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1854 // CHECK-ASM: vceqhs
1855 idx
= vec_any_eq(vsi
, vsi
);
1856 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1857 // CHECK-ASM: vceqfs
1858 idx
= vec_any_eq(vsi
, vbi
);
1859 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1860 // CHECK-ASM: vceqfs
1861 idx
= vec_any_eq(vbi
, vsi
);
1862 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1863 // CHECK-ASM: vceqfs
1864 idx
= vec_any_eq(vui
, vui
);
1865 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1866 // CHECK-ASM: vceqfs
1867 idx
= vec_any_eq(vui
, vbi
);
1868 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1869 // CHECK-ASM: vceqfs
1870 idx
= vec_any_eq(vbi
, vui
);
1871 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1872 // CHECK-ASM: vceqfs
1873 idx
= vec_any_eq(vbi
, vbi
);
1874 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1875 // CHECK-ASM: vceqfs
1876 idx
= vec_any_eq(vsl
, vsl
);
1877 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1878 // CHECK-ASM: vceqgs
1879 idx
= vec_any_eq(vsl
, vbl
);
1880 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1881 // CHECK-ASM: vceqgs
1882 idx
= vec_any_eq(vbl
, vsl
);
1883 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1884 // CHECK-ASM: vceqgs
1885 idx
= vec_any_eq(vul
, vul
);
1886 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1887 // CHECK-ASM: vceqgs
1888 idx
= vec_any_eq(vul
, vbl
);
1889 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1890 // CHECK-ASM: vceqgs
1891 idx
= vec_any_eq(vbl
, vul
);
1892 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1893 // CHECK-ASM: vceqgs
1894 idx
= vec_any_eq(vbl
, vbl
);
1895 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1896 // CHECK-ASM: vceqgs
1897 idx
= vec_any_eq(vd
, vd
);
1898 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1899 // CHECK-ASM: vfcedbs
1901 idx
= vec_any_ne(vsc
, vsc
);
1902 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1903 // CHECK-ASM: vceqbs
1904 idx
= vec_any_ne(vsc
, vbc
);
1905 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1906 // CHECK-ASM: vceqbs
1907 idx
= vec_any_ne(vbc
, vsc
);
1908 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1909 // CHECK-ASM: vceqbs
1910 idx
= vec_any_ne(vuc
, vuc
);
1911 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1912 // CHECK-ASM: vceqbs
1913 idx
= vec_any_ne(vuc
, vbc
);
1914 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1915 // CHECK-ASM: vceqbs
1916 idx
= vec_any_ne(vbc
, vuc
);
1917 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1918 // CHECK-ASM: vceqbs
1919 idx
= vec_any_ne(vbc
, vbc
);
1920 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1921 // CHECK-ASM: vceqbs
1922 idx
= vec_any_ne(vss
, vss
);
1923 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1924 // CHECK-ASM: vceqhs
1925 idx
= vec_any_ne(vss
, vbs
);
1926 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1927 // CHECK-ASM: vceqhs
1928 idx
= vec_any_ne(vbs
, vss
);
1929 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1930 // CHECK-ASM: vceqhs
1931 idx
= vec_any_ne(vus
, vus
);
1932 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1933 // CHECK-ASM: vceqhs
1934 idx
= vec_any_ne(vus
, vbs
);
1935 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1936 // CHECK-ASM: vceqhs
1937 idx
= vec_any_ne(vbs
, vus
);
1938 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1939 // CHECK-ASM: vceqhs
1940 idx
= vec_any_ne(vbs
, vbs
);
1941 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
1942 // CHECK-ASM: vceqhs
1943 idx
= vec_any_ne(vsi
, vsi
);
1944 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1945 // CHECK-ASM: vceqfs
1946 idx
= vec_any_ne(vsi
, vbi
);
1947 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1948 // CHECK-ASM: vceqfs
1949 idx
= vec_any_ne(vbi
, vsi
);
1950 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1951 // CHECK-ASM: vceqfs
1952 idx
= vec_any_ne(vui
, vui
);
1953 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1954 // CHECK-ASM: vceqfs
1955 idx
= vec_any_ne(vui
, vbi
);
1956 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1957 // CHECK-ASM: vceqfs
1958 idx
= vec_any_ne(vbi
, vui
);
1959 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1960 // CHECK-ASM: vceqfs
1961 idx
= vec_any_ne(vbi
, vbi
);
1962 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
1963 // CHECK-ASM: vceqfs
1964 idx
= vec_any_ne(vsl
, vsl
);
1965 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1966 // CHECK-ASM: vceqgs
1967 idx
= vec_any_ne(vsl
, vbl
);
1968 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1969 // CHECK-ASM: vceqgs
1970 idx
= vec_any_ne(vbl
, vsl
);
1971 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1972 // CHECK-ASM: vceqgs
1973 idx
= vec_any_ne(vul
, vul
);
1974 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1975 // CHECK-ASM: vceqgs
1976 idx
= vec_any_ne(vul
, vbl
);
1977 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1978 // CHECK-ASM: vceqgs
1979 idx
= vec_any_ne(vbl
, vul
);
1980 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1981 // CHECK-ASM: vceqgs
1982 idx
= vec_any_ne(vbl
, vbl
);
1983 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1984 // CHECK-ASM: vceqgs
1985 idx
= vec_any_ne(vd
, vd
);
1986 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
1987 // CHECK-ASM: vfcedbs
1989 idx
= vec_any_ge(vsc
, vsc
);
1990 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1992 idx
= vec_any_ge(vsc
, vbc
);
1993 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1995 idx
= vec_any_ge(vbc
, vsc
);
1996 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
1998 idx
= vec_any_ge(vuc
, vuc
);
1999 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2000 // CHECK-ASM: vchlbs
2001 idx
= vec_any_ge(vuc
, vbc
);
2002 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2003 // CHECK-ASM: vchlbs
2004 idx
= vec_any_ge(vbc
, vuc
);
2005 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2006 // CHECK-ASM: vchlbs
2007 idx
= vec_any_ge(vbc
, vbc
);
2008 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2009 // CHECK-ASM: vchlbs
2010 idx
= vec_any_ge(vss
, vss
);
2011 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2013 idx
= vec_any_ge(vss
, vbs
);
2014 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2016 idx
= vec_any_ge(vbs
, vss
);
2017 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2019 idx
= vec_any_ge(vus
, vus
);
2020 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2021 // CHECK-ASM: vchlhs
2022 idx
= vec_any_ge(vus
, vbs
);
2023 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2024 // CHECK-ASM: vchlhs
2025 idx
= vec_any_ge(vbs
, vus
);
2026 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2027 // CHECK-ASM: vchlhs
2028 idx
= vec_any_ge(vbs
, vbs
);
2029 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2030 // CHECK-ASM: vchlhs
2031 idx
= vec_any_ge(vsi
, vsi
);
2032 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2034 idx
= vec_any_ge(vsi
, vbi
);
2035 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2037 idx
= vec_any_ge(vbi
, vsi
);
2038 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2040 idx
= vec_any_ge(vui
, vui
);
2041 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2042 // CHECK-ASM: vchlfs
2043 idx
= vec_any_ge(vui
, vbi
);
2044 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2045 // CHECK-ASM: vchlfs
2046 idx
= vec_any_ge(vbi
, vui
);
2047 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2048 // CHECK-ASM: vchlfs
2049 idx
= vec_any_ge(vbi
, vbi
);
2050 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2051 // CHECK-ASM: vchlfs
2052 idx
= vec_any_ge(vsl
, vsl
);
2053 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2055 idx
= vec_any_ge(vsl
, vbl
);
2056 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2058 idx
= vec_any_ge(vbl
, vsl
);
2059 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2061 idx
= vec_any_ge(vul
, vul
);
2062 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2063 // CHECK-ASM: vchlgs
2064 idx
= vec_any_ge(vul
, vbl
);
2065 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2066 // CHECK-ASM: vchlgs
2067 idx
= vec_any_ge(vbl
, vul
);
2068 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2069 // CHECK-ASM: vchlgs
2070 idx
= vec_any_ge(vbl
, vbl
);
2071 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2072 // CHECK-ASM: vchlgs
2073 idx
= vec_any_ge(vd
, vd
);
2074 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2075 // CHECK-ASM: vfchedbs
2077 idx
= vec_any_gt(vsc
, vsc
);
2078 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2080 idx
= vec_any_gt(vsc
, vbc
);
2081 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2083 idx
= vec_any_gt(vbc
, vsc
);
2084 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2086 idx
= vec_any_gt(vuc
, vuc
);
2087 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2088 // CHECK-ASM: vchlbs
2089 idx
= vec_any_gt(vuc
, vbc
);
2090 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2091 // CHECK-ASM: vchlbs
2092 idx
= vec_any_gt(vbc
, vuc
);
2093 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2094 // CHECK-ASM: vchlbs
2095 idx
= vec_any_gt(vbc
, vbc
);
2096 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2097 // CHECK-ASM: vchlbs
2098 idx
= vec_any_gt(vss
, vss
);
2099 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2101 idx
= vec_any_gt(vss
, vbs
);
2102 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2104 idx
= vec_any_gt(vbs
, vss
);
2105 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2107 idx
= vec_any_gt(vus
, vus
);
2108 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2109 // CHECK-ASM: vchlhs
2110 idx
= vec_any_gt(vus
, vbs
);
2111 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2112 // CHECK-ASM: vchlhs
2113 idx
= vec_any_gt(vbs
, vus
);
2114 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2115 // CHECK-ASM: vchlhs
2116 idx
= vec_any_gt(vbs
, vbs
);
2117 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2118 // CHECK-ASM: vchlhs
2119 idx
= vec_any_gt(vsi
, vsi
);
2120 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2122 idx
= vec_any_gt(vsi
, vbi
);
2123 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2125 idx
= vec_any_gt(vbi
, vsi
);
2126 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2128 idx
= vec_any_gt(vui
, vui
);
2129 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2130 // CHECK-ASM: vchlfs
2131 idx
= vec_any_gt(vui
, vbi
);
2132 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2133 // CHECK-ASM: vchlfs
2134 idx
= vec_any_gt(vbi
, vui
);
2135 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2136 // CHECK-ASM: vchlfs
2137 idx
= vec_any_gt(vbi
, vbi
);
2138 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2139 // CHECK-ASM: vchlfs
2140 idx
= vec_any_gt(vsl
, vsl
);
2141 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2143 idx
= vec_any_gt(vsl
, vbl
);
2144 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2146 idx
= vec_any_gt(vbl
, vsl
);
2147 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2149 idx
= vec_any_gt(vul
, vul
);
2150 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2151 // CHECK-ASM: vchlgs
2152 idx
= vec_any_gt(vul
, vbl
);
2153 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2154 // CHECK-ASM: vchlgs
2155 idx
= vec_any_gt(vbl
, vul
);
2156 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2157 // CHECK-ASM: vchlgs
2158 idx
= vec_any_gt(vbl
, vbl
);
2159 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2160 // CHECK-ASM: vchlgs
2161 idx
= vec_any_gt(vd
, vd
);
2162 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2163 // CHECK-ASM: vfchdbs
2165 idx
= vec_any_le(vsc
, vsc
);
2166 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2168 idx
= vec_any_le(vsc
, vbc
);
2169 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2171 idx
= vec_any_le(vbc
, vsc
);
2172 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2174 idx
= vec_any_le(vuc
, vuc
);
2175 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2176 // CHECK-ASM: vchlbs
2177 idx
= vec_any_le(vuc
, vbc
);
2178 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2179 // CHECK-ASM: vchlbs
2180 idx
= vec_any_le(vbc
, vuc
);
2181 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2182 // CHECK-ASM: vchlbs
2183 idx
= vec_any_le(vbc
, vbc
);
2184 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2185 // CHECK-ASM: vchlbs
2186 idx
= vec_any_le(vss
, vss
);
2187 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2189 idx
= vec_any_le(vss
, vbs
);
2190 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2192 idx
= vec_any_le(vbs
, vss
);
2193 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2195 idx
= vec_any_le(vus
, vus
);
2196 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2197 // CHECK-ASM: vchlhs
2198 idx
= vec_any_le(vus
, vbs
);
2199 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2200 // CHECK-ASM: vchlhs
2201 idx
= vec_any_le(vbs
, vus
);
2202 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2203 // CHECK-ASM: vchlhs
2204 idx
= vec_any_le(vbs
, vbs
);
2205 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2206 // CHECK-ASM: vchlhs
2207 idx
= vec_any_le(vsi
, vsi
);
2208 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2210 idx
= vec_any_le(vsi
, vbi
);
2211 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2213 idx
= vec_any_le(vbi
, vsi
);
2214 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2216 idx
= vec_any_le(vui
, vui
);
2217 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2218 // CHECK-ASM: vchlfs
2219 idx
= vec_any_le(vui
, vbi
);
2220 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2221 // CHECK-ASM: vchlfs
2222 idx
= vec_any_le(vbi
, vui
);
2223 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2224 // CHECK-ASM: vchlfs
2225 idx
= vec_any_le(vbi
, vbi
);
2226 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2227 // CHECK-ASM: vchlfs
2228 idx
= vec_any_le(vsl
, vsl
);
2229 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2231 idx
= vec_any_le(vsl
, vbl
);
2232 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2234 idx
= vec_any_le(vbl
, vsl
);
2235 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2237 idx
= vec_any_le(vul
, vul
);
2238 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2239 // CHECK-ASM: vchlgs
2240 idx
= vec_any_le(vul
, vbl
);
2241 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2242 // CHECK-ASM: vchlgs
2243 idx
= vec_any_le(vbl
, vul
);
2244 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2245 // CHECK-ASM: vchlgs
2246 idx
= vec_any_le(vbl
, vbl
);
2247 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2248 // CHECK-ASM: vchlgs
2249 idx
= vec_any_le(vd
, vd
);
2250 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2251 // CHECK-ASM: vfchedbs
2253 idx
= vec_any_lt(vsc
, vsc
);
2254 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2256 idx
= vec_any_lt(vsc
, vbc
);
2257 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2259 idx
= vec_any_lt(vbc
, vsc
);
2260 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2262 idx
= vec_any_lt(vuc
, vuc
);
2263 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2264 // CHECK-ASM: vchlbs
2265 idx
= vec_any_lt(vuc
, vbc
);
2266 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2267 // CHECK-ASM: vchlbs
2268 idx
= vec_any_lt(vbc
, vuc
);
2269 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2270 // CHECK-ASM: vchlbs
2271 idx
= vec_any_lt(vbc
, vbc
);
2272 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2273 // CHECK-ASM: vchlbs
2274 idx
= vec_any_lt(vss
, vss
);
2275 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2277 idx
= vec_any_lt(vss
, vbs
);
2278 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2280 idx
= vec_any_lt(vbs
, vss
);
2281 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2283 idx
= vec_any_lt(vus
, vus
);
2284 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2285 // CHECK-ASM: vchlhs
2286 idx
= vec_any_lt(vus
, vbs
);
2287 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2288 // CHECK-ASM: vchlhs
2289 idx
= vec_any_lt(vbs
, vus
);
2290 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2291 // CHECK-ASM: vchlhs
2292 idx
= vec_any_lt(vbs
, vbs
);
2293 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2294 // CHECK-ASM: vchlhs
2295 idx
= vec_any_lt(vsi
, vsi
);
2296 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2298 idx
= vec_any_lt(vsi
, vbi
);
2299 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2301 idx
= vec_any_lt(vbi
, vsi
);
2302 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2304 idx
= vec_any_lt(vui
, vui
);
2305 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2306 // CHECK-ASM: vchlfs
2307 idx
= vec_any_lt(vui
, vbi
);
2308 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2309 // CHECK-ASM: vchlfs
2310 idx
= vec_any_lt(vbi
, vui
);
2311 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2312 // CHECK-ASM: vchlfs
2313 idx
= vec_any_lt(vbi
, vbi
);
2314 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2315 // CHECK-ASM: vchlfs
2316 idx
= vec_any_lt(vsl
, vsl
);
2317 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2319 idx
= vec_any_lt(vsl
, vbl
);
2320 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2322 idx
= vec_any_lt(vbl
, vsl
);
2323 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2325 idx
= vec_any_lt(vul
, vul
);
2326 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2327 // CHECK-ASM: vchlgs
2328 idx
= vec_any_lt(vul
, vbl
);
2329 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2330 // CHECK-ASM: vchlgs
2331 idx
= vec_any_lt(vbl
, vul
);
2332 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2333 // CHECK-ASM: vchlgs
2334 idx
= vec_any_lt(vbl
, vbl
);
2335 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2336 // CHECK-ASM: vchlgs
2337 idx
= vec_any_lt(vd
, vd
);
2338 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2339 // CHECK-ASM: vfchdbs
2341 idx
= vec_any_nge(vd
, vd
);
2342 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2343 // CHECK-ASM: vfchedbs
2344 idx
= vec_any_ngt(vd
, vd
);
2345 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2346 // CHECK-ASM: vfchdbs
2347 idx
= vec_any_nle(vd
, vd
);
2348 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2349 // CHECK-ASM: vfchedbs
2350 idx
= vec_any_nlt(vd
, vd
);
2351 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
2352 // CHECK-ASM: vfchdbs
2354 idx
= vec_any_nan(vd
);
2355 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
2356 // CHECK-ASM: vftcidb
2357 idx
= vec_any_numeric(vd
);
2358 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
2359 // CHECK-ASM: vftcidb
2362 void test_integer(void) {
2363 // CHECK-ASM-LABEL: test_integer
2365 vsc
= vec_andc(vsc
, vsc
);
2367 vsc
= vec_andc(vsc
, vbc
);
2369 vsc
= vec_andc(vbc
, vsc
);
2371 vuc
= vec_andc(vuc
, vuc
);
2373 vuc
= vec_andc(vuc
, vbc
);
2375 vuc
= vec_andc(vbc
, vuc
);
2377 vbc
= vec_andc(vbc
, vbc
);
2379 vss
= vec_andc(vss
, vss
);
2381 vss
= vec_andc(vss
, vbs
);
2383 vss
= vec_andc(vbs
, vss
);
2385 vus
= vec_andc(vus
, vus
);
2387 vus
= vec_andc(vus
, vbs
);
2389 vus
= vec_andc(vbs
, vus
);
2391 vbs
= vec_andc(vbs
, vbs
);
2393 vsi
= vec_andc(vsi
, vsi
);
2395 vsi
= vec_andc(vsi
, vbi
);
2397 vsi
= vec_andc(vbi
, vsi
);
2399 vui
= vec_andc(vui
, vui
);
2401 vui
= vec_andc(vui
, vbi
);
2403 vui
= vec_andc(vbi
, vui
);
2405 vbi
= vec_andc(vbi
, vbi
);
2407 vsl
= vec_andc(vsl
, vsl
);
2409 vsl
= vec_andc(vsl
, vbl
);
2411 vsl
= vec_andc(vbl
, vsl
);
2413 vul
= vec_andc(vul
, vul
);
2415 vul
= vec_andc(vul
, vbl
);
2417 vul
= vec_andc(vbl
, vul
);
2419 vbl
= vec_andc(vbl
, vbl
);
2421 vd
= vec_andc(vd
, vd
);
2423 vd
= vec_andc(vd
, vbl
);
2425 vd
= vec_andc(vbl
, vd
);
2428 vsc
= vec_nor(vsc
, vsc
);
2430 vsc
= vec_nor(vsc
, vbc
);
2432 vsc
= vec_nor(vbc
, vsc
);
2434 vuc
= vec_nor(vuc
, vuc
);
2436 vuc
= vec_nor(vuc
, vbc
);
2438 vuc
= vec_nor(vbc
, vuc
);
2440 vbc
= vec_nor(vbc
, vbc
);
2442 vss
= vec_nor(vss
, vss
);
2444 vss
= vec_nor(vss
, vbs
);
2446 vss
= vec_nor(vbs
, vss
);
2448 vus
= vec_nor(vus
, vus
);
2450 vus
= vec_nor(vus
, vbs
);
2452 vus
= vec_nor(vbs
, vus
);
2454 vbs
= vec_nor(vbs
, vbs
);
2456 vsi
= vec_nor(vsi
, vsi
);
2458 vsi
= vec_nor(vsi
, vbi
);
2460 vsi
= vec_nor(vbi
, vsi
);
2462 vui
= vec_nor(vui
, vui
);
2464 vui
= vec_nor(vui
, vbi
);
2466 vui
= vec_nor(vbi
, vui
);
2468 vbi
= vec_nor(vbi
, vbi
);
2470 vsl
= vec_nor(vsl
, vsl
);
2472 vsl
= vec_nor(vsl
, vbl
);
2474 vsl
= vec_nor(vbl
, vsl
);
2476 vul
= vec_nor(vul
, vul
);
2478 vul
= vec_nor(vul
, vbl
);
2480 vul
= vec_nor(vbl
, vul
);
2482 vbl
= vec_nor(vbl
, vbl
);
2484 vd
= vec_nor(vd
, vd
);
2486 vd
= vec_nor(vd
, vbl
);
2488 vd
= vec_nor(vbl
, vd
);
2491 vuc
= vec_cntlz(vsc
);
2492 // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
2494 vuc
= vec_cntlz(vuc
);
2495 // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
2497 vus
= vec_cntlz(vss
);
2498 // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
2500 vus
= vec_cntlz(vus
);
2501 // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
2503 vui
= vec_cntlz(vsi
);
2504 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
2506 vui
= vec_cntlz(vui
);
2507 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
2509 vul
= vec_cntlz(vsl
);
2510 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
2512 vul
= vec_cntlz(vul
);
2513 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
2516 vuc
= vec_cnttz(vsc
);
2517 // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
2519 vuc
= vec_cnttz(vuc
);
2520 // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
2522 vus
= vec_cnttz(vss
);
2523 // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
2525 vus
= vec_cnttz(vus
);
2526 // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
2528 vui
= vec_cnttz(vsi
);
2529 // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
2531 vui
= vec_cnttz(vui
);
2532 // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
2534 vul
= vec_cnttz(vsl
);
2535 // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
2537 vul
= vec_cnttz(vul
);
2538 // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
2541 vuc
= vec_popcnt(vsc
);
2542 // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
2543 // CHECK-ASM: vpopct
2544 vuc
= vec_popcnt(vuc
);
2545 // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
2546 // CHECK-ASM: vpopct
2547 vus
= vec_popcnt(vss
);
2548 // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
2550 vus
= vec_popcnt(vus
);
2551 // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
2553 vui
= vec_popcnt(vsi
);
2554 // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
2556 vui
= vec_popcnt(vui
);
2557 // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
2559 vul
= vec_popcnt(vsl
);
2560 // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
2562 vul
= vec_popcnt(vul
);
2563 // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
2566 vsc
= vec_rl(vsc
, vuc
);
2567 // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2568 // CHECK-ASM: verllvb
2569 vuc
= vec_rl(vuc
, vuc
);
2570 // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2571 // CHECK-ASM: verllvb
2572 vss
= vec_rl(vss
, vus
);
2573 // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2574 // CHECK-ASM: verllvh
2575 vus
= vec_rl(vus
, vus
);
2576 // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
2577 // CHECK-ASM: verllvh
2578 vsi
= vec_rl(vsi
, vui
);
2579 // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2580 // CHECK-ASM: verllvf
2581 vui
= vec_rl(vui
, vui
);
2582 // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
2583 // CHECK-ASM: verllvf
2584 vsl
= vec_rl(vsl
, vul
);
2585 // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2586 // CHECK-ASM: verllvg
2587 vul
= vec_rl(vul
, vul
);
2588 // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2589 // CHECK-ASM: verllvg
2591 vsc
= vec_rli(vsc
, ul
);
2592 // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
2593 // CHECK-ASM: verllb
2594 vuc
= vec_rli(vuc
, ul
);
2595 // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
2596 // CHECK-ASM: verllb
2597 vss
= vec_rli(vss
, ul
);
2598 // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
2599 // CHECK-ASM: verllh
2600 vus
= vec_rli(vus
, ul
);
2601 // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
2602 // CHECK-ASM: verllh
2603 vsi
= vec_rli(vsi
, ul
);
2604 // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
2605 // CHECK-ASM: verllf
2606 vui
= vec_rli(vui
, ul
);
2607 // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
2608 // CHECK-ASM: verllf
2609 vsl
= vec_rli(vsl
, ul
);
2610 // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
2611 // CHECK-ASM: verllg
2612 vul
= vec_rli(vul
, ul
);
2613 // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
2614 // CHECK-ASM: verllg
2616 vsc
= vec_rl_mask(vsc
, vuc
, 0);
2617 // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2618 // CHECK-ASM: verimb
2619 vsc
= vec_rl_mask(vsc
, vuc
, 255);
2620 // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
2621 // CHECK-ASM: verimb
2622 vuc
= vec_rl_mask(vuc
, vuc
, 0);
2623 // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2624 // CHECK-ASM: verimb
2625 vuc
= vec_rl_mask(vuc
, vuc
, 255);
2626 // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
2627 // CHECK-ASM: verimb
2628 vss
= vec_rl_mask(vss
, vus
, 0);
2629 // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2630 // CHECK-ASM: verimh
2631 vss
= vec_rl_mask(vss
, vus
, 255);
2632 // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
2633 // CHECK-ASM: verimh
2634 vus
= vec_rl_mask(vus
, vus
, 0);
2635 // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
2636 // CHECK-ASM: verimh
2637 vus
= vec_rl_mask(vus
, vus
, 255);
2638 // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
2639 // CHECK-ASM: verimh
2640 vsi
= vec_rl_mask(vsi
, vui
, 0);
2641 // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2642 // CHECK-ASM: verimf
2643 vsi
= vec_rl_mask(vsi
, vui
, 255);
2644 // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
2645 // CHECK-ASM: verimf
2646 vui
= vec_rl_mask(vui
, vui
, 0);
2647 // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
2648 // CHECK-ASM: verimf
2649 vui
= vec_rl_mask(vui
, vui
, 255);
2650 // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
2651 // CHECK-ASM: verimf
2652 vsl
= vec_rl_mask(vsl
, vul
, 0);
2653 // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
2654 // CHECK-ASM: verimg
2655 vsl
= vec_rl_mask(vsl
, vul
, 255);
2656 // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
2657 // CHECK-ASM: verimg
2658 vul
= vec_rl_mask(vul
, vul
, 0);
2659 // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
2660 // CHECK-ASM: verimg
2661 vul
= vec_rl_mask(vul
, vul
, 255);
2662 // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
2663 // CHECK-ASM: verimg
2665 vsc
= vec_sll(vsc
, vuc
);
2666 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2668 vsc
= vec_sll(vsc
, vus
);
2669 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2671 vsc
= vec_sll(vsc
, vui
);
2672 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2674 vuc
= vec_sll(vuc
, vuc
);
2675 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2677 vuc
= vec_sll(vuc
, vus
);
2678 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2680 vuc
= vec_sll(vuc
, vui
);
2681 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2683 vbc
= vec_sll(vbc
, vuc
);
2684 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2686 vbc
= vec_sll(vbc
, vus
);
2687 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2689 vbc
= vec_sll(vbc
, vui
);
2690 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2692 vss
= vec_sll(vss
, vuc
);
2693 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2695 vss
= vec_sll(vss
, vus
);
2696 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2698 vss
= vec_sll(vss
, vui
);
2699 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2701 vus
= vec_sll(vus
, vuc
);
2702 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2704 vus
= vec_sll(vus
, vus
);
2705 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2707 vus
= vec_sll(vus
, vui
);
2708 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2710 vbs
= vec_sll(vbs
, vuc
);
2711 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2713 vbs
= vec_sll(vbs
, vus
);
2714 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2716 vbs
= vec_sll(vbs
, vui
);
2717 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2719 vsi
= vec_sll(vsi
, vuc
);
2720 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2722 vsi
= vec_sll(vsi
, vus
);
2723 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2725 vsi
= vec_sll(vsi
, vui
);
2726 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2728 vui
= vec_sll(vui
, vuc
);
2729 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2731 vui
= vec_sll(vui
, vus
);
2732 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2734 vui
= vec_sll(vui
, vui
);
2735 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2737 vbi
= vec_sll(vbi
, vuc
);
2738 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2740 vbi
= vec_sll(vbi
, vus
);
2741 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2743 vbi
= vec_sll(vbi
, vui
);
2744 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2746 vsl
= vec_sll(vsl
, vuc
);
2747 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2749 vsl
= vec_sll(vsl
, vus
);
2750 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2752 vsl
= vec_sll(vsl
, vui
);
2753 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2755 vul
= vec_sll(vul
, vuc
);
2756 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2758 vul
= vec_sll(vul
, vus
);
2759 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2761 vul
= vec_sll(vul
, vui
);
2762 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2764 vbl
= vec_sll(vbl
, vuc
);
2765 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2767 vbl
= vec_sll(vbl
, vus
);
2768 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2770 vbl
= vec_sll(vbl
, vui
);
2771 // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2774 vsc
= vec_slb(vsc
, vsc
);
2775 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2777 vsc
= vec_slb(vsc
, vuc
);
2778 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2780 vuc
= vec_slb(vuc
, vsc
);
2781 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2783 vuc
= vec_slb(vuc
, vuc
);
2784 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2786 vss
= vec_slb(vss
, vss
);
2787 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2789 vss
= vec_slb(vss
, vus
);
2790 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2792 vus
= vec_slb(vus
, vss
);
2793 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2795 vus
= vec_slb(vus
, vus
);
2796 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2798 vsi
= vec_slb(vsi
, vsi
);
2799 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2801 vsi
= vec_slb(vsi
, vui
);
2802 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2804 vui
= vec_slb(vui
, vsi
);
2805 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2807 vui
= vec_slb(vui
, vui
);
2808 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2810 vsl
= vec_slb(vsl
, vsl
);
2811 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2813 vsl
= vec_slb(vsl
, vul
);
2814 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2816 vul
= vec_slb(vul
, vsl
);
2817 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2819 vul
= vec_slb(vul
, vul
);
2820 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2822 vd
= vec_slb(vd
, vsl
);
2823 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2825 vd
= vec_slb(vd
, vul
);
2826 // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2829 vsc
= vec_sld(vsc
, vsc
, 0);
2830 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2832 vsc
= vec_sld(vsc
, vsc
, 15);
2833 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2835 vuc
= vec_sld(vuc
, vuc
, 0);
2836 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2838 vuc
= vec_sld(vuc
, vuc
, 15);
2839 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2841 vbc
= vec_sld(vbc
, vbc
, 0);
2842 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2844 vbc
= vec_sld(vbc
, vbc
, 15);
2845 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2847 vss
= vec_sld(vss
, vss
, 0);
2848 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2850 vss
= vec_sld(vss
, vss
, 15);
2851 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2853 vus
= vec_sld(vus
, vus
, 0);
2854 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2856 vus
= vec_sld(vus
, vus
, 15);
2857 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2859 vbs
= vec_sld(vbs
, vbs
, 0);
2860 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2862 vbs
= vec_sld(vbs
, vbs
, 15);
2863 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2865 vsi
= vec_sld(vsi
, vsi
, 0);
2866 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2868 vsi
= vec_sld(vsi
, vsi
, 15);
2869 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2871 vui
= vec_sld(vui
, vui
, 0);
2872 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2874 vui
= vec_sld(vui
, vui
, 15);
2875 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2877 vbi
= vec_sld(vbi
, vbi
, 0);
2878 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2880 vbi
= vec_sld(vbi
, vbi
, 15);
2881 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2883 vsl
= vec_sld(vsl
, vsl
, 0);
2884 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2886 vsl
= vec_sld(vsl
, vsl
, 15);
2887 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2889 vul
= vec_sld(vul
, vul
, 0);
2890 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2892 vul
= vec_sld(vul
, vul
, 15);
2893 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2895 vbl
= vec_sld(vbl
, vbl
, 0);
2896 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2898 vbl
= vec_sld(vbl
, vbl
, 15);
2899 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2901 vd
= vec_sld(vd
, vd
, 0);
2902 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2904 vd
= vec_sld(vd
, vd
, 15);
2905 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
2908 vsc
= vec_sldw(vsc
, vsc
, 0);
2909 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2911 vsc
= vec_sldw(vsc
, vsc
, 3);
2912 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2914 vuc
= vec_sldw(vuc
, vuc
, 0);
2915 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2917 vuc
= vec_sldw(vuc
, vuc
, 3);
2918 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2920 vss
= vec_sldw(vss
, vss
, 0);
2921 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2923 vss
= vec_sldw(vss
, vss
, 3);
2924 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2926 vus
= vec_sldw(vus
, vus
, 0);
2927 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2929 vus
= vec_sldw(vus
, vus
, 3);
2930 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2932 vsi
= vec_sldw(vsi
, vsi
, 0);
2933 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2935 vsi
= vec_sldw(vsi
, vsi
, 3);
2936 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2938 vui
= vec_sldw(vui
, vui
, 0);
2939 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2941 vui
= vec_sldw(vui
, vui
, 3);
2942 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2944 vsl
= vec_sldw(vsl
, vsl
, 0);
2945 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2947 vsl
= vec_sldw(vsl
, vsl
, 3);
2948 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2950 vul
= vec_sldw(vul
, vul
, 0);
2951 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2953 vul
= vec_sldw(vul
, vul
, 3);
2954 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2956 vd
= vec_sldw(vd
, vd
, 0);
2957 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
2959 vd
= vec_sldw(vd
, vd
, 3);
2960 // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
2963 vsc
= vec_sral(vsc
, vuc
);
2964 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2966 vsc
= vec_sral(vsc
, vus
);
2967 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2969 vsc
= vec_sral(vsc
, vui
);
2970 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2972 vuc
= vec_sral(vuc
, vuc
);
2973 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2975 vuc
= vec_sral(vuc
, vus
);
2976 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2978 vuc
= vec_sral(vuc
, vui
);
2979 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2981 vbc
= vec_sral(vbc
, vuc
);
2982 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2984 vbc
= vec_sral(vbc
, vus
);
2985 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2987 vbc
= vec_sral(vbc
, vui
);
2988 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2990 vss
= vec_sral(vss
, vuc
);
2991 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2993 vss
= vec_sral(vss
, vus
);
2994 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2996 vss
= vec_sral(vss
, vui
);
2997 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
2999 vus
= vec_sral(vus
, vuc
);
3000 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3002 vus
= vec_sral(vus
, vus
);
3003 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3005 vus
= vec_sral(vus
, vui
);
3006 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3008 vbs
= vec_sral(vbs
, vuc
);
3009 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3011 vbs
= vec_sral(vbs
, vus
);
3012 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3014 vbs
= vec_sral(vbs
, vui
);
3015 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3017 vsi
= vec_sral(vsi
, vuc
);
3018 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3020 vsi
= vec_sral(vsi
, vus
);
3021 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3023 vsi
= vec_sral(vsi
, vui
);
3024 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3026 vui
= vec_sral(vui
, vuc
);
3027 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3029 vui
= vec_sral(vui
, vus
);
3030 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3032 vui
= vec_sral(vui
, vui
);
3033 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3035 vbi
= vec_sral(vbi
, vuc
);
3036 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3038 vbi
= vec_sral(vbi
, vus
);
3039 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3041 vbi
= vec_sral(vbi
, vui
);
3042 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3044 vsl
= vec_sral(vsl
, vuc
);
3045 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3047 vsl
= vec_sral(vsl
, vus
);
3048 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3050 vsl
= vec_sral(vsl
, vui
);
3051 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3053 vul
= vec_sral(vul
, vuc
);
3054 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3056 vul
= vec_sral(vul
, vus
);
3057 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3059 vul
= vec_sral(vul
, vui
);
3060 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3062 vbl
= vec_sral(vbl
, vuc
);
3063 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3065 vbl
= vec_sral(vbl
, vus
);
3066 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3068 vbl
= vec_sral(vbl
, vui
);
3069 // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3072 vsc
= vec_srab(vsc
, vsc
);
3073 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3075 vsc
= vec_srab(vsc
, vuc
);
3076 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3078 vuc
= vec_srab(vuc
, vsc
);
3079 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3081 vuc
= vec_srab(vuc
, vuc
);
3082 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3084 vss
= vec_srab(vss
, vss
);
3085 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3087 vss
= vec_srab(vss
, vus
);
3088 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3090 vus
= vec_srab(vus
, vss
);
3091 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3093 vus
= vec_srab(vus
, vus
);
3094 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3096 vsi
= vec_srab(vsi
, vsi
);
3097 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3099 vsi
= vec_srab(vsi
, vui
);
3100 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3102 vui
= vec_srab(vui
, vsi
);
3103 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3105 vui
= vec_srab(vui
, vui
);
3106 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3108 vsl
= vec_srab(vsl
, vsl
);
3109 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3111 vsl
= vec_srab(vsl
, vul
);
3112 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3114 vul
= vec_srab(vul
, vsl
);
3115 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3117 vul
= vec_srab(vul
, vul
);
3118 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3120 vd
= vec_srab(vd
, vsl
);
3121 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3123 vd
= vec_srab(vd
, vul
);
3124 // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3127 vsc
= vec_srl(vsc
, vuc
);
3128 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3130 vsc
= vec_srl(vsc
, vus
);
3131 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3133 vsc
= vec_srl(vsc
, vui
);
3134 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3136 vuc
= vec_srl(vuc
, vuc
);
3137 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3139 vuc
= vec_srl(vuc
, vus
);
3140 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3142 vuc
= vec_srl(vuc
, vui
);
3143 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3145 vbc
= vec_srl(vbc
, vuc
);
3146 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3148 vbc
= vec_srl(vbc
, vus
);
3149 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3151 vbc
= vec_srl(vbc
, vui
);
3152 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3154 vss
= vec_srl(vss
, vuc
);
3155 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3157 vss
= vec_srl(vss
, vus
);
3158 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3160 vss
= vec_srl(vss
, vui
);
3161 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3163 vus
= vec_srl(vus
, vuc
);
3164 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3166 vus
= vec_srl(vus
, vus
);
3167 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3169 vus
= vec_srl(vus
, vui
);
3170 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3172 vbs
= vec_srl(vbs
, vuc
);
3173 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3175 vbs
= vec_srl(vbs
, vus
);
3176 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3178 vbs
= vec_srl(vbs
, vui
);
3179 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3181 vsi
= vec_srl(vsi
, vuc
);
3182 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3184 vsi
= vec_srl(vsi
, vus
);
3185 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3187 vsi
= vec_srl(vsi
, vui
);
3188 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3190 vui
= vec_srl(vui
, vuc
);
3191 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3193 vui
= vec_srl(vui
, vus
);
3194 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3196 vui
= vec_srl(vui
, vui
);
3197 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3199 vbi
= vec_srl(vbi
, vuc
);
3200 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3202 vbi
= vec_srl(vbi
, vus
);
3203 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3205 vbi
= vec_srl(vbi
, vui
);
3206 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3208 vsl
= vec_srl(vsl
, vuc
);
3209 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3211 vsl
= vec_srl(vsl
, vus
);
3212 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3214 vsl
= vec_srl(vsl
, vui
);
3215 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3217 vul
= vec_srl(vul
, vuc
);
3218 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3220 vul
= vec_srl(vul
, vus
);
3221 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3223 vul
= vec_srl(vul
, vui
);
3224 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3226 vbl
= vec_srl(vbl
, vuc
);
3227 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3229 vbl
= vec_srl(vbl
, vus
);
3230 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3232 vbl
= vec_srl(vbl
, vui
);
3233 // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3236 vsc
= vec_srb(vsc
, vsc
);
3237 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3239 vsc
= vec_srb(vsc
, vuc
);
3240 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3242 vuc
= vec_srb(vuc
, vsc
);
3243 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3245 vuc
= vec_srb(vuc
, vuc
);
3246 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3248 vss
= vec_srb(vss
, vss
);
3249 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3251 vss
= vec_srb(vss
, vus
);
3252 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3254 vus
= vec_srb(vus
, vss
);
3255 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3257 vus
= vec_srb(vus
, vus
);
3258 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3260 vsi
= vec_srb(vsi
, vsi
);
3261 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3263 vsi
= vec_srb(vsi
, vui
);
3264 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3266 vui
= vec_srb(vui
, vsi
);
3267 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3269 vui
= vec_srb(vui
, vui
);
3270 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3272 vsl
= vec_srb(vsl
, vsl
);
3273 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3275 vsl
= vec_srb(vsl
, vul
);
3276 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3278 vul
= vec_srb(vul
, vsl
);
3279 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3281 vul
= vec_srb(vul
, vul
);
3282 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3284 vd
= vec_srb(vd
, vsl
);
3285 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3287 vd
= vec_srb(vd
, vul
);
3288 // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3300 vsc
= vec_max(vsc
, vsc
);
3302 vsc
= vec_max(vsc
, vbc
);
3304 vsc
= vec_max(vbc
, vsc
);
3306 vuc
= vec_max(vuc
, vuc
);
3308 vuc
= vec_max(vuc
, vbc
);
3310 vuc
= vec_max(vbc
, vuc
);
3312 vss
= vec_max(vss
, vss
);
3314 vss
= vec_max(vss
, vbs
);
3316 vss
= vec_max(vbs
, vss
);
3318 vus
= vec_max(vus
, vus
);
3320 vus
= vec_max(vus
, vbs
);
3322 vus
= vec_max(vbs
, vus
);
3324 vsi
= vec_max(vsi
, vsi
);
3326 vsi
= vec_max(vsi
, vbi
);
3328 vsi
= vec_max(vbi
, vsi
);
3330 vui
= vec_max(vui
, vui
);
3332 vui
= vec_max(vui
, vbi
);
3334 vui
= vec_max(vbi
, vui
);
3336 vsl
= vec_max(vsl
, vsl
);
3338 vsl
= vec_max(vsl
, vbl
);
3340 vsl
= vec_max(vbl
, vsl
);
3342 vul
= vec_max(vul
, vul
);
3344 vul
= vec_max(vul
, vbl
);
3346 vul
= vec_max(vbl
, vul
);
3348 vd
= vec_max(vd
, vd
);
3351 vsc
= vec_min(vsc
, vsc
);
3353 vsc
= vec_min(vsc
, vbc
);
3355 vsc
= vec_min(vbc
, vsc
);
3357 vuc
= vec_min(vuc
, vuc
);
3359 vuc
= vec_min(vuc
, vbc
);
3361 vuc
= vec_min(vbc
, vuc
);
3363 vss
= vec_min(vss
, vss
);
3365 vss
= vec_min(vss
, vbs
);
3367 vss
= vec_min(vbs
, vss
);
3369 vus
= vec_min(vus
, vus
);
3371 vus
= vec_min(vus
, vbs
);
3373 vus
= vec_min(vbs
, vus
);
3375 vsi
= vec_min(vsi
, vsi
);
3377 vsi
= vec_min(vsi
, vbi
);
3379 vsi
= vec_min(vbi
, vsi
);
3381 vui
= vec_min(vui
, vui
);
3383 vui
= vec_min(vui
, vbi
);
3385 vui
= vec_min(vbi
, vui
);
3387 vsl
= vec_min(vsl
, vsl
);
3389 vsl
= vec_min(vsl
, vbl
);
3391 vsl
= vec_min(vbl
, vsl
);
3393 vul
= vec_min(vul
, vul
);
3395 vul
= vec_min(vul
, vbl
);
3397 vul
= vec_min(vbl
, vul
);
3399 vd
= vec_min(vd
, vd
);
3402 vuc
= vec_addc(vuc
, vuc
);
3403 // CHECK: call <16 x i8> @llvm.s390.vaccb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3405 vus
= vec_addc(vus
, vus
);
3406 // CHECK: call <8 x i16> @llvm.s390.vacch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3408 vui
= vec_addc(vui
, vui
);
3409 // CHECK: call <4 x i32> @llvm.s390.vaccf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3411 vul
= vec_addc(vul
, vul
);
3412 // CHECK: call <2 x i64> @llvm.s390.vaccg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3415 vuc
= vec_add_u128(vuc
, vuc
);
3416 // CHECK: call <16 x i8> @llvm.s390.vaq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3418 vuc
= vec_addc_u128(vuc
, vuc
);
3419 // CHECK: call <16 x i8> @llvm.s390.vaccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3421 vuc
= vec_adde_u128(vuc
, vuc
, vuc
);
3422 // CHECK: call <16 x i8> @llvm.s390.vacq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3424 vuc
= vec_addec_u128(vuc
, vuc
, vuc
);
3425 // CHECK: call <16 x i8> @llvm.s390.vacccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3426 // CHECK-ASM: vacccq
3428 vsc
= vec_avg(vsc
, vsc
);
3429 // CHECK: call <16 x i8> @llvm.s390.vavgb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3431 vuc
= vec_avg(vuc
, vuc
);
3432 // CHECK: call <16 x i8> @llvm.s390.vavglb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3433 // CHECK-ASM: vavglb
3434 vss
= vec_avg(vss
, vss
);
3435 // CHECK: call <8 x i16> @llvm.s390.vavgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3437 vus
= vec_avg(vus
, vus
);
3438 // CHECK: call <8 x i16> @llvm.s390.vavglh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3439 // CHECK-ASM: vavglh
3440 vsi
= vec_avg(vsi
, vsi
);
3441 // CHECK: call <4 x i32> @llvm.s390.vavgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3443 vui
= vec_avg(vui
, vui
);
3444 // CHECK: call <4 x i32> @llvm.s390.vavglf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3445 // CHECK-ASM: vavglf
3446 vsl
= vec_avg(vsl
, vsl
);
3447 // CHECK: call <2 x i64> @llvm.s390.vavgg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3449 vul
= vec_avg(vul
, vul
);
3450 // CHECK: call <2 x i64> @llvm.s390.vavglg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3451 // CHECK-ASM: vavglg
3453 vui
= vec_checksum(vui
, vui
);
3454 // CHECK: call <4 x i32> @llvm.s390.vcksm(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3457 vus
= vec_gfmsum(vuc
, vuc
);
3458 // CHECK: call <8 x i16> @llvm.s390.vgfmb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3460 vui
= vec_gfmsum(vus
, vus
);
3461 // CHECK: call <4 x i32> @llvm.s390.vgfmh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3463 vul
= vec_gfmsum(vui
, vui
);
3464 // CHECK: call <2 x i64> @llvm.s390.vgfmf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3466 vuc
= vec_gfmsum_128(vul
, vul
);
3467 // CHECK: call <16 x i8> @llvm.s390.vgfmg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3470 vus
= vec_gfmsum_accum(vuc
, vuc
, vus
);
3471 // CHECK: call <8 x i16> @llvm.s390.vgfmab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
3472 // CHECK-ASM: vgfmab
3473 vui
= vec_gfmsum_accum(vus
, vus
, vui
);
3474 // CHECK: call <4 x i32> @llvm.s390.vgfmah(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
3475 // CHECK-ASM: vgfmah
3476 vul
= vec_gfmsum_accum(vui
, vui
, vul
);
3477 // CHECK: call <2 x i64> @llvm.s390.vgfmaf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
3478 // CHECK-ASM: vgfmaf
3479 vuc
= vec_gfmsum_accum_128(vul
, vul
, vuc
);
3480 // CHECK: call <16 x i8> @llvm.s390.vgfmag(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <16 x i8> %{{.*}})
3481 // CHECK-ASM: vgfmag
3483 vsc
= vec_mladd(vsc
, vsc
, vsc
);
3485 vsc
= vec_mladd(vuc
, vsc
, vsc
);
3487 vsc
= vec_mladd(vsc
, vuc
, vuc
);
3489 vuc
= vec_mladd(vuc
, vuc
, vuc
);
3491 vss
= vec_mladd(vss
, vss
, vss
);
3492 // CHECK-ASM: vmalhw
3493 vss
= vec_mladd(vus
, vss
, vss
);
3494 // CHECK-ASM: vmalhw
3495 vss
= vec_mladd(vss
, vus
, vus
);
3496 // CHECK-ASM: vmalhw
3497 vus
= vec_mladd(vus
, vus
, vus
);
3498 // CHECK-ASM: vmalhw
3499 vsi
= vec_mladd(vsi
, vsi
, vsi
);
3501 vsi
= vec_mladd(vui
, vsi
, vsi
);
3503 vsi
= vec_mladd(vsi
, vui
, vui
);
3505 vui
= vec_mladd(vui
, vui
, vui
);
3508 vsc
= vec_mhadd(vsc
, vsc
, vsc
);
3509 // CHECK: call <16 x i8> @llvm.s390.vmahb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3511 vuc
= vec_mhadd(vuc
, vuc
, vuc
);
3512 // CHECK: call <16 x i8> @llvm.s390.vmalhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3513 // CHECK-ASM: vmalhb
3514 vss
= vec_mhadd(vss
, vss
, vss
);
3515 // CHECK: call <8 x i16> @llvm.s390.vmahh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3517 vus
= vec_mhadd(vus
, vus
, vus
);
3518 // CHECK: call <8 x i16> @llvm.s390.vmalhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3519 // CHECK-ASM: vmalhh
3520 vsi
= vec_mhadd(vsi
, vsi
, vsi
);
3521 // CHECK: call <4 x i32> @llvm.s390.vmahf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3523 vui
= vec_mhadd(vui
, vui
, vui
);
3524 // CHECK: call <4 x i32> @llvm.s390.vmalhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3525 // CHECK-ASM: vmalhf
3527 vss
= vec_meadd(vsc
, vsc
, vss
);
3528 // CHECK: call <8 x i16> @llvm.s390.vmaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
3530 vus
= vec_meadd(vuc
, vuc
, vus
);
3531 // CHECK: call <8 x i16> @llvm.s390.vmaleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
3532 // CHECK-ASM: vmaleb
3533 vsi
= vec_meadd(vss
, vss
, vsi
);
3534 // CHECK: call <4 x i32> @llvm.s390.vmaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
3536 vui
= vec_meadd(vus
, vus
, vui
);
3537 // CHECK: call <4 x i32> @llvm.s390.vmaleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
3538 // CHECK-ASM: vmaleh
3539 vsl
= vec_meadd(vsi
, vsi
, vsl
);
3540 // CHECK: call <2 x i64> @llvm.s390.vmaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
3542 vul
= vec_meadd(vui
, vui
, vul
);
3543 // CHECK: call <2 x i64> @llvm.s390.vmalef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
3544 // CHECK-ASM: vmalef
3546 vss
= vec_moadd(vsc
, vsc
, vss
);
3547 // CHECK: call <8 x i16> @llvm.s390.vmaob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
3549 vus
= vec_moadd(vuc
, vuc
, vus
);
3550 // CHECK: call <8 x i16> @llvm.s390.vmalob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
3551 // CHECK-ASM: vmalob
3552 vsi
= vec_moadd(vss
, vss
, vsi
);
3553 // CHECK: call <4 x i32> @llvm.s390.vmaoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
3555 vui
= vec_moadd(vus
, vus
, vui
);
3556 // CHECK: call <4 x i32> @llvm.s390.vmaloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
3557 // CHECK-ASM: vmaloh
3558 vsl
= vec_moadd(vsi
, vsi
, vsl
);
3559 // CHECK: call <2 x i64> @llvm.s390.vmaof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
3561 vul
= vec_moadd(vui
, vui
, vul
);
3562 // CHECK: call <2 x i64> @llvm.s390.vmalof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
3563 // CHECK-ASM: vmalof
3565 vsc
= vec_mulh(vsc
, vsc
);
3566 // CHECK: call <16 x i8> @llvm.s390.vmhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3568 vuc
= vec_mulh(vuc
, vuc
);
3569 // CHECK: call <16 x i8> @llvm.s390.vmlhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3571 vss
= vec_mulh(vss
, vss
);
3572 // CHECK: call <8 x i16> @llvm.s390.vmhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3574 vus
= vec_mulh(vus
, vus
);
3575 // CHECK: call <8 x i16> @llvm.s390.vmlhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3577 vsi
= vec_mulh(vsi
, vsi
);
3578 // CHECK: call <4 x i32> @llvm.s390.vmhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3580 vui
= vec_mulh(vui
, vui
);
3581 // CHECK: call <4 x i32> @llvm.s390.vmlhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3584 vss
= vec_mule(vsc
, vsc
);
3585 // CHECK: call <8 x i16> @llvm.s390.vmeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3587 vus
= vec_mule(vuc
, vuc
);
3588 // CHECK: call <8 x i16> @llvm.s390.vmleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3590 vsi
= vec_mule(vss
, vss
);
3591 // CHECK: call <4 x i32> @llvm.s390.vmeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3593 vui
= vec_mule(vus
, vus
);
3594 // CHECK: call <4 x i32> @llvm.s390.vmleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3596 vsl
= vec_mule(vsi
, vsi
);
3597 // CHECK: call <2 x i64> @llvm.s390.vmef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3599 vul
= vec_mule(vui
, vui
);
3600 // CHECK: call <2 x i64> @llvm.s390.vmlef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3603 vss
= vec_mulo(vsc
, vsc
);
3604 // CHECK: call <8 x i16> @llvm.s390.vmob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3606 vus
= vec_mulo(vuc
, vuc
);
3607 // CHECK: call <8 x i16> @llvm.s390.vmlob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3609 vsi
= vec_mulo(vss
, vss
);
3610 // CHECK: call <4 x i32> @llvm.s390.vmoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3612 vui
= vec_mulo(vus
, vus
);
3613 // CHECK: call <4 x i32> @llvm.s390.vmloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3615 vsl
= vec_mulo(vsi
, vsi
);
3616 // CHECK: call <2 x i64> @llvm.s390.vmof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3618 vul
= vec_mulo(vui
, vui
);
3619 // CHECK: call <2 x i64> @llvm.s390.vmlof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3622 vuc
= vec_subc(vuc
, vuc
);
3623 // CHECK: call <16 x i8> @llvm.s390.vscbib(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3624 // CHECK-ASM: vscbib
3625 vus
= vec_subc(vus
, vus
);
3626 // CHECK: call <8 x i16> @llvm.s390.vscbih(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3627 // CHECK-ASM: vscbih
3628 vui
= vec_subc(vui
, vui
);
3629 // CHECK: call <4 x i32> @llvm.s390.vscbif(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3630 // CHECK-ASM: vscbif
3631 vul
= vec_subc(vul
, vul
);
3632 // CHECK: call <2 x i64> @llvm.s390.vscbig(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3633 // CHECK-ASM: vscbig
3635 vuc
= vec_sub_u128(vuc
, vuc
);
3636 // CHECK: call <16 x i8> @llvm.s390.vsq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3638 vuc
= vec_subc_u128(vuc
, vuc
);
3639 // CHECK: call <16 x i8> @llvm.s390.vscbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3640 // CHECK-ASM: vscbiq
3641 vuc
= vec_sube_u128(vuc
, vuc
, vuc
);
3642 // CHECK: call <16 x i8> @llvm.s390.vsbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3644 vuc
= vec_subec_u128(vuc
, vuc
, vuc
);
3645 // CHECK: call <16 x i8> @llvm.s390.vsbcbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3646 // CHECK-ASM: vsbcbiq
3648 vui
= vec_sum4(vuc
, vuc
);
3649 // CHECK: call <4 x i32> @llvm.s390.vsumb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3651 vui
= vec_sum4(vus
, vus
);
3652 // CHECK: call <4 x i32> @llvm.s390.vsumh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3654 vul
= vec_sum2(vus
, vus
);
3655 // CHECK: call <2 x i64> @llvm.s390.vsumgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3656 // CHECK-ASM: vsumgh
3657 vul
= vec_sum2(vui
, vui
);
3658 // CHECK: call <2 x i64> @llvm.s390.vsumgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3659 // CHECK-ASM: vsumgf
3660 vuc
= vec_sum_u128(vui
, vui
);
3661 // CHECK: call <16 x i8> @llvm.s390.vsumqf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3662 // CHECK-ASM: vsumqf
3663 vuc
= vec_sum_u128(vul
, vul
);
3664 // CHECK: call <16 x i8> @llvm.s390.vsumqg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3665 // CHECK-ASM: vsumqg
3667 idx
= vec_test_mask(vsc
, vuc
);
3668 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3670 idx
= vec_test_mask(vuc
, vuc
);
3671 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3673 idx
= vec_test_mask(vss
, vus
);
3674 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3676 idx
= vec_test_mask(vus
, vus
);
3677 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3679 idx
= vec_test_mask(vsi
, vui
);
3680 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3682 idx
= vec_test_mask(vui
, vui
);
3683 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3685 idx
= vec_test_mask(vsl
, vul
);
3686 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3688 idx
= vec_test_mask(vul
, vul
);
3689 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3691 idx
= vec_test_mask(vd
, vul
);
3692 // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3696 void test_string(void) {
3697 // CHECK-ASM-LABEL: test_string
3699 vsc
= vec_cp_until_zero(vsc
);
3700 // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
3701 // CHECK-ASM: vistrb
3702 vuc
= vec_cp_until_zero(vuc
);
3703 // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
3704 // CHECK-ASM: vistrb
3705 vbc
= vec_cp_until_zero(vbc
);
3706 // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
3707 // CHECK-ASM: vistrb
3708 vss
= vec_cp_until_zero(vss
);
3709 // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
3710 // CHECK-ASM: vistrh
3711 vus
= vec_cp_until_zero(vus
);
3712 // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
3713 // CHECK-ASM: vistrh
3714 vbs
= vec_cp_until_zero(vbs
);
3715 // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
3716 // CHECK-ASM: vistrh
3717 vsi
= vec_cp_until_zero(vsi
);
3718 // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
3719 // CHECK-ASM: vistrf
3720 vui
= vec_cp_until_zero(vui
);
3721 // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
3722 // CHECK-ASM: vistrf
3723 vbi
= vec_cp_until_zero(vbi
);
3724 // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
3725 // CHECK-ASM: vistrf
3727 vsc
= vec_cp_until_zero_cc(vsc
, &cc
);
3728 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
3729 // CHECK-ASM: vistrbs
3730 vuc
= vec_cp_until_zero_cc(vuc
, &cc
);
3731 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
3732 // CHECK-ASM: vistrbs
3733 vbc
= vec_cp_until_zero_cc(vbc
, &cc
);
3734 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
3735 // CHECK-ASM: vistrbs
3736 vss
= vec_cp_until_zero_cc(vss
, &cc
);
3737 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
3738 // CHECK-ASM: vistrhs
3739 vus
= vec_cp_until_zero_cc(vus
, &cc
);
3740 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
3741 // CHECK-ASM: vistrhs
3742 vbs
= vec_cp_until_zero_cc(vbs
, &cc
);
3743 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
3744 // CHECK-ASM: vistrhs
3745 vsi
= vec_cp_until_zero_cc(vsi
, &cc
);
3746 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
3747 // CHECK-ASM: vistrfs
3748 vui
= vec_cp_until_zero_cc(vui
, &cc
);
3749 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
3750 // CHECK-ASM: vistrfs
3751 vbi
= vec_cp_until_zero_cc(vbi
, &cc
);
3752 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
3753 // CHECK-ASM: vistrfs
3755 vsc
= vec_cmpeq_idx(vsc
, vsc
);
3756 // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3758 vuc
= vec_cmpeq_idx(vuc
, vuc
);
3759 // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3761 vuc
= vec_cmpeq_idx(vbc
, vbc
);
3762 // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3764 vss
= vec_cmpeq_idx(vss
, vss
);
3765 // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3767 vus
= vec_cmpeq_idx(vus
, vus
);
3768 // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3770 vus
= vec_cmpeq_idx(vbs
, vbs
);
3771 // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3773 vsi
= vec_cmpeq_idx(vsi
, vsi
);
3774 // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3776 vui
= vec_cmpeq_idx(vui
, vui
);
3777 // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3779 vui
= vec_cmpeq_idx(vbi
, vbi
);
3780 // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3783 vsc
= vec_cmpeq_idx_cc(vsc
, vsc
, &cc
);
3784 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3785 // CHECK-ASM: vfeebs
3786 vuc
= vec_cmpeq_idx_cc(vuc
, vuc
, &cc
);
3787 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3788 // CHECK-ASM: vfeebs
3789 vuc
= vec_cmpeq_idx_cc(vbc
, vbc
, &cc
);
3790 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3791 // CHECK-ASM: vfeebs
3792 vss
= vec_cmpeq_idx_cc(vss
, vss
, &cc
);
3793 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3794 // CHECK-ASM: vfeehs
3795 vus
= vec_cmpeq_idx_cc(vus
, vus
, &cc
);
3796 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3797 // CHECK-ASM: vfeehs
3798 vus
= vec_cmpeq_idx_cc(vbs
, vbs
, &cc
);
3799 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3800 // CHECK-ASM: vfeehs
3801 vsi
= vec_cmpeq_idx_cc(vsi
, vsi
, &cc
);
3802 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3803 // CHECK-ASM: vfeefs
3804 vui
= vec_cmpeq_idx_cc(vui
, vui
, &cc
);
3805 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3806 // CHECK-ASM: vfeefs
3807 vui
= vec_cmpeq_idx_cc(vbi
, vbi
, &cc
);
3808 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3809 // CHECK-ASM: vfeefs
3811 vsc
= vec_cmpeq_or_0_idx(vsc
, vsc
);
3812 // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3813 // CHECK-ASM: vfeezb
3814 vuc
= vec_cmpeq_or_0_idx(vuc
, vuc
);
3815 // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3816 // CHECK-ASM: vfeezb
3817 vuc
= vec_cmpeq_or_0_idx(vbc
, vbc
);
3818 // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3819 // CHECK-ASM: vfeezb
3820 vss
= vec_cmpeq_or_0_idx(vss
, vss
);
3821 // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3822 // CHECK-ASM: vfeezh
3823 vus
= vec_cmpeq_or_0_idx(vus
, vus
);
3824 // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3825 // CHECK-ASM: vfeezh
3826 vus
= vec_cmpeq_or_0_idx(vbs
, vbs
);
3827 // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3828 // CHECK-ASM: vfeezh
3829 vsi
= vec_cmpeq_or_0_idx(vsi
, vsi
);
3830 // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3831 // CHECK-ASM: vfeezf
3832 vui
= vec_cmpeq_or_0_idx(vui
, vui
);
3833 // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3834 // CHECK-ASM: vfeezf
3835 vui
= vec_cmpeq_or_0_idx(vbi
, vbi
);
3836 // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3837 // CHECK-ASM: vfeezf
3839 vsc
= vec_cmpeq_or_0_idx_cc(vsc
, vsc
, &cc
);
3840 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3841 // CHECK-ASM: vfeezbs
3842 vuc
= vec_cmpeq_or_0_idx_cc(vuc
, vuc
, &cc
);
3843 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3844 // CHECK-ASM: vfeezbs
3845 vuc
= vec_cmpeq_or_0_idx_cc(vbc
, vbc
, &cc
);
3846 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3847 // CHECK-ASM: vfeezbs
3848 vss
= vec_cmpeq_or_0_idx_cc(vss
, vss
, &cc
);
3849 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3850 // CHECK-ASM: vfeezhs
3851 vus
= vec_cmpeq_or_0_idx_cc(vus
, vus
, &cc
);
3852 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3853 // CHECK-ASM: vfeezhs
3854 vus
= vec_cmpeq_or_0_idx_cc(vbs
, vbs
, &cc
);
3855 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3856 // CHECK-ASM: vfeezhs
3857 vsi
= vec_cmpeq_or_0_idx_cc(vsi
, vsi
, &cc
);
3858 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3859 // CHECK-ASM: vfeezfs
3860 vui
= vec_cmpeq_or_0_idx_cc(vui
, vui
, &cc
);
3861 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3862 // CHECK-ASM: vfeezfs
3863 vui
= vec_cmpeq_or_0_idx_cc(vbi
, vbi
, &cc
);
3864 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3865 // CHECK-ASM: vfeezfs
3867 vsc
= vec_cmpne_idx(vsc
, vsc
);
3868 // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3869 // CHECK-ASM: vfeneb
3870 vuc
= vec_cmpne_idx(vuc
, vuc
);
3871 // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3872 // CHECK-ASM: vfeneb
3873 vuc
= vec_cmpne_idx(vbc
, vbc
);
3874 // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3875 // CHECK-ASM: vfeneb
3876 vss
= vec_cmpne_idx(vss
, vss
);
3877 // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3878 // CHECK-ASM: vfeneh
3879 vus
= vec_cmpne_idx(vus
, vus
);
3880 // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3881 // CHECK-ASM: vfeneh
3882 vus
= vec_cmpne_idx(vbs
, vbs
);
3883 // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3884 // CHECK-ASM: vfeneh
3885 vsi
= vec_cmpne_idx(vsi
, vsi
);
3886 // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3887 // CHECK-ASM: vfenef
3888 vui
= vec_cmpne_idx(vui
, vui
);
3889 // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3890 // CHECK-ASM: vfenef
3891 vui
= vec_cmpne_idx(vbi
, vbi
);
3892 // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3893 // CHECK-ASM: vfenef
3895 vsc
= vec_cmpne_idx_cc(vsc
, vsc
, &cc
);
3896 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3897 // CHECK-ASM: vfenebs
3898 vuc
= vec_cmpne_idx_cc(vuc
, vuc
, &cc
);
3899 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3900 // CHECK-ASM: vfenebs
3901 vuc
= vec_cmpne_idx_cc(vbc
, vbc
, &cc
);
3902 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3903 // CHECK-ASM: vfenebs
3904 vss
= vec_cmpne_idx_cc(vss
, vss
, &cc
);
3905 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3906 // CHECK-ASM: vfenehs
3907 vus
= vec_cmpne_idx_cc(vus
, vus
, &cc
);
3908 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3909 // CHECK-ASM: vfenehs
3910 vus
= vec_cmpne_idx_cc(vbs
, vbs
, &cc
);
3911 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3912 // CHECK-ASM: vfenehs
3913 vsi
= vec_cmpne_idx_cc(vsi
, vsi
, &cc
);
3914 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3915 // CHECK-ASM: vfenefs
3916 vui
= vec_cmpne_idx_cc(vui
, vui
, &cc
);
3917 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3918 // CHECK-ASM: vfenefs
3919 vui
= vec_cmpne_idx_cc(vbi
, vbi
, &cc
);
3920 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3921 // CHECK-ASM: vfenefs
3923 vsc
= vec_cmpne_or_0_idx(vsc
, vsc
);
3924 // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3925 // CHECK-ASM: vfenezb
3926 vuc
= vec_cmpne_or_0_idx(vuc
, vuc
);
3927 // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3928 // CHECK-ASM: vfenezb
3929 vuc
= vec_cmpne_or_0_idx(vbc
, vbc
);
3930 // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3931 // CHECK-ASM: vfenezb
3932 vss
= vec_cmpne_or_0_idx(vss
, vss
);
3933 // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3934 // CHECK-ASM: vfenezh
3935 vus
= vec_cmpne_or_0_idx(vus
, vus
);
3936 // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3937 // CHECK-ASM: vfenezh
3938 vus
= vec_cmpne_or_0_idx(vbs
, vbs
);
3939 // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3940 // CHECK-ASM: vfenezh
3941 vsi
= vec_cmpne_or_0_idx(vsi
, vsi
);
3942 // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3943 // CHECK-ASM: vfenezf
3944 vui
= vec_cmpne_or_0_idx(vui
, vui
);
3945 // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3946 // CHECK-ASM: vfenezf
3947 vui
= vec_cmpne_or_0_idx(vbi
, vbi
);
3948 // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3949 // CHECK-ASM: vfenezf
3951 vsc
= vec_cmpne_or_0_idx_cc(vsc
, vsc
, &cc
);
3952 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3953 // CHECK-ASM: vfenezbs
3954 vuc
= vec_cmpne_or_0_idx_cc(vuc
, vuc
, &cc
);
3955 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3956 // CHECK-ASM: vfenezbs
3957 vuc
= vec_cmpne_or_0_idx_cc(vbc
, vbc
, &cc
);
3958 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
3959 // CHECK-ASM: vfenezbs
3960 vss
= vec_cmpne_or_0_idx_cc(vss
, vss
, &cc
);
3961 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3962 // CHECK-ASM: vfenezhs
3963 vus
= vec_cmpne_or_0_idx_cc(vus
, vus
, &cc
);
3964 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3965 // CHECK-ASM: vfenezhs
3966 vus
= vec_cmpne_or_0_idx_cc(vbs
, vbs
, &cc
);
3967 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
3968 // CHECK-ASM: vfenezhs
3969 vsi
= vec_cmpne_or_0_idx_cc(vsi
, vsi
, &cc
);
3970 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3971 // CHECK-ASM: vfenezfs
3972 vui
= vec_cmpne_or_0_idx_cc(vui
, vui
, &cc
);
3973 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3974 // CHECK-ASM: vfenezfs
3975 vui
= vec_cmpne_or_0_idx_cc(vbi
, vbi
, &cc
);
3976 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
3977 // CHECK-ASM: vfenezfs
3979 vbc
= vec_cmprg(vuc
, vuc
, vuc
);
3980 // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
3981 // CHECK-ASM: vstrcb
3982 vbs
= vec_cmprg(vus
, vus
, vus
);
3983 // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
3984 // CHECK-ASM: vstrch
3985 vbi
= vec_cmprg(vui
, vui
, vui
);
3986 // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
3987 // CHECK-ASM: vstrcf
3989 vbc
= vec_cmprg_cc(vuc
, vuc
, vuc
, &cc
);
3990 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
3991 // CHECK-ASM: vstrcbs
3992 vbs
= vec_cmprg_cc(vus
, vus
, vus
, &cc
);
3993 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
3994 // CHECK-ASM: vstrchs
3995 vbi
= vec_cmprg_cc(vui
, vui
, vui
, &cc
);
3996 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
3997 // CHECK-ASM: vstrcfs
3999 vuc
= vec_cmprg_idx(vuc
, vuc
, vuc
);
4000 // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4001 // CHECK-ASM: vstrcb
4002 vus
= vec_cmprg_idx(vus
, vus
, vus
);
4003 // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4004 // CHECK-ASM: vstrch
4005 vui
= vec_cmprg_idx(vui
, vui
, vui
);
4006 // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4007 // CHECK-ASM: vstrcf
4009 vuc
= vec_cmprg_idx_cc(vuc
, vuc
, vuc
, &cc
);
4010 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4011 // CHECK-ASM: vstrcbs
4012 vus
= vec_cmprg_idx_cc(vus
, vus
, vus
, &cc
);
4013 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4014 // CHECK-ASM: vstrchs
4015 vui
= vec_cmprg_idx_cc(vui
, vui
, vui
, &cc
);
4016 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4017 // CHECK-ASM: vstrcfs
4019 vuc
= vec_cmprg_or_0_idx(vuc
, vuc
, vuc
);
4020 // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4021 // CHECK-ASM: vstrczb
4022 vus
= vec_cmprg_or_0_idx(vus
, vus
, vus
);
4023 // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4024 // CHECK-ASM: vstrczh
4025 vui
= vec_cmprg_or_0_idx(vui
, vui
, vui
);
4026 // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4027 // CHECK-ASM: vstrczf
4029 vuc
= vec_cmprg_or_0_idx_cc(vuc
, vuc
, vuc
, &cc
);
4030 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4031 // CHECK-ASM: vstrczbs
4032 vus
= vec_cmprg_or_0_idx_cc(vus
, vus
, vus
, &cc
);
4033 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4034 // CHECK-ASM: vstrczhs
4035 vui
= vec_cmprg_or_0_idx_cc(vui
, vui
, vui
, &cc
);
4036 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4037 // CHECK-ASM: vstrczfs
4039 vbc
= vec_cmpnrg(vuc
, vuc
, vuc
);
4040 // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4041 // CHECK-ASM: vstrcb
4042 vbs
= vec_cmpnrg(vus
, vus
, vus
);
4043 // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4044 // CHECK-ASM: vstrch
4045 vbi
= vec_cmpnrg(vui
, vui
, vui
);
4046 // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4047 // CHECK-ASM: vstrcf
4049 vbc
= vec_cmpnrg_cc(vuc
, vuc
, vuc
, &cc
);
4050 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4051 // CHECK-ASM: vstrcbs
4052 vbs
= vec_cmpnrg_cc(vus
, vus
, vus
, &cc
);
4053 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4054 // CHECK-ASM: vstrchs
4055 vbi
= vec_cmpnrg_cc(vui
, vui
, vui
, &cc
);
4056 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4057 // CHECK-ASM: vstrcfs
4059 vuc
= vec_cmpnrg_idx(vuc
, vuc
, vuc
);
4060 // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4061 // CHECK-ASM: vstrcb
4062 vus
= vec_cmpnrg_idx(vus
, vus
, vus
);
4063 // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4064 // CHECK-ASM: vstrch
4065 vui
= vec_cmpnrg_idx(vui
, vui
, vui
);
4066 // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4067 // CHECK-ASM: vstrcf
4069 vuc
= vec_cmpnrg_idx_cc(vuc
, vuc
, vuc
, &cc
);
4070 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4071 // CHECK-ASM: vstrcbs
4072 vus
= vec_cmpnrg_idx_cc(vus
, vus
, vus
, &cc
);
4073 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4074 // CHECK-ASM: vstrchs
4075 vui
= vec_cmpnrg_idx_cc(vui
, vui
, vui
, &cc
);
4076 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4077 // CHECK-ASM: vstrcfs
4079 vuc
= vec_cmpnrg_or_0_idx(vuc
, vuc
, vuc
);
4080 // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4081 // CHECK-ASM: vstrczb
4082 vus
= vec_cmpnrg_or_0_idx(vus
, vus
, vus
);
4083 // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4084 // CHECK-ASM: vstrczh
4085 vui
= vec_cmpnrg_or_0_idx(vui
, vui
, vui
);
4086 // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4087 // CHECK-ASM: vstrczf
4089 vuc
= vec_cmpnrg_or_0_idx_cc(vuc
, vuc
, vuc
, &cc
);
4090 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4091 // CHECK-ASM: vstrczbs
4092 vus
= vec_cmpnrg_or_0_idx_cc(vus
, vus
, vus
, &cc
);
4093 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4094 // CHECK-ASM: vstrczhs
4095 vui
= vec_cmpnrg_or_0_idx_cc(vui
, vui
, vui
, &cc
);
4096 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4097 // CHECK-ASM: vstrczfs
4099 vbc
= vec_find_any_eq(vsc
, vsc
);
4100 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4102 vbc
= vec_find_any_eq(vuc
, vuc
);
4103 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4105 vbc
= vec_find_any_eq(vbc
, vbc
);
4106 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4108 vbs
= vec_find_any_eq(vss
, vss
);
4109 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4111 vbs
= vec_find_any_eq(vus
, vus
);
4112 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4114 vbs
= vec_find_any_eq(vbs
, vbs
);
4115 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4117 vbi
= vec_find_any_eq(vsi
, vsi
);
4118 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4120 vbi
= vec_find_any_eq(vui
, vui
);
4121 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4123 vbi
= vec_find_any_eq(vbi
, vbi
);
4124 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4127 vbc
= vec_find_any_eq_cc(vsc
, vsc
, &cc
);
4128 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4129 // CHECK-ASM: vfaebs
4130 vbc
= vec_find_any_eq_cc(vuc
, vuc
, &cc
);
4131 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4132 // CHECK-ASM: vfaebs
4133 vbc
= vec_find_any_eq_cc(vbc
, vbc
, &cc
);
4134 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
4135 // CHECK-ASM: vfaebs
4136 vbs
= vec_find_any_eq_cc(vss
, vss
, &cc
);
4137 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4138 // CHECK-ASM: vfaehs
4139 vbs
= vec_find_any_eq_cc(vus
, vus
, &cc
);
4140 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4141 // CHECK-ASM: vfaehs
4142 vbs
= vec_find_any_eq_cc(vbs
, vbs
, &cc
);
4143 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
4144 // CHECK-ASM: vfaehs
4145 vbi
= vec_find_any_eq_cc(vsi
, vsi
, &cc
);
4146 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4147 // CHECK-ASM: vfaefs
4148 vbi
= vec_find_any_eq_cc(vui
, vui
, &cc
);
4149 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4150 // CHECK-ASM: vfaefs
4151 vbi
= vec_find_any_eq_cc(vbi
, vbi
, &cc
);
4152 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
4153 // CHECK-ASM: vfaefs
4155 vsc
= vec_find_any_eq_idx(vsc
, vsc
);
4156 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4158 vuc
= vec_find_any_eq_idx(vuc
, vuc
);
4159 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4161 vuc
= vec_find_any_eq_idx(vbc
, vbc
);
4162 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4164 vss
= vec_find_any_eq_idx(vss
, vss
);
4165 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4167 vus
= vec_find_any_eq_idx(vus
, vus
);
4168 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4170 vus
= vec_find_any_eq_idx(vbs
, vbs
);
4171 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4173 vsi
= vec_find_any_eq_idx(vsi
, vsi
);
4174 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4176 vui
= vec_find_any_eq_idx(vui
, vui
);
4177 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4179 vui
= vec_find_any_eq_idx(vbi
, vbi
);
4180 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4183 vsc
= vec_find_any_eq_idx_cc(vsc
, vsc
, &cc
);
4184 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4185 // CHECK-ASM: vfaebs
4186 vuc
= vec_find_any_eq_idx_cc(vuc
, vuc
, &cc
);
4187 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4188 // CHECK-ASM: vfaebs
4189 vuc
= vec_find_any_eq_idx_cc(vbc
, vbc
, &cc
);
4190 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4191 // CHECK-ASM: vfaebs
4192 vss
= vec_find_any_eq_idx_cc(vss
, vss
, &cc
);
4193 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4194 // CHECK-ASM: vfaehs
4195 vus
= vec_find_any_eq_idx_cc(vus
, vus
, &cc
);
4196 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4197 // CHECK-ASM: vfaehs
4198 vus
= vec_find_any_eq_idx_cc(vbs
, vbs
, &cc
);
4199 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4200 // CHECK-ASM: vfaehs
4201 vsi
= vec_find_any_eq_idx_cc(vsi
, vsi
, &cc
);
4202 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4203 // CHECK-ASM: vfaefs
4204 vui
= vec_find_any_eq_idx_cc(vui
, vui
, &cc
);
4205 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4206 // CHECK-ASM: vfaefs
4207 vui
= vec_find_any_eq_idx_cc(vbi
, vbi
, &cc
);
4208 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4209 // CHECK-ASM: vfaefs
4211 vsc
= vec_find_any_eq_or_0_idx(vsc
, vsc
);
4212 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4213 // CHECK-ASM: vfaezb
4214 vuc
= vec_find_any_eq_or_0_idx(vuc
, vuc
);
4215 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4216 // CHECK-ASM: vfaezb
4217 vuc
= vec_find_any_eq_or_0_idx(vbc
, vbc
);
4218 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4219 // CHECK-ASM: vfaezb
4220 vss
= vec_find_any_eq_or_0_idx(vss
, vss
);
4221 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4222 // CHECK-ASM: vfaezh
4223 vus
= vec_find_any_eq_or_0_idx(vus
, vus
);
4224 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4225 // CHECK-ASM: vfaezh
4226 vus
= vec_find_any_eq_or_0_idx(vbs
, vbs
);
4227 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4228 // CHECK-ASM: vfaezh
4229 vsi
= vec_find_any_eq_or_0_idx(vsi
, vsi
);
4230 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4231 // CHECK-ASM: vfaezf
4232 vui
= vec_find_any_eq_or_0_idx(vui
, vui
);
4233 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4234 // CHECK-ASM: vfaezf
4235 vui
= vec_find_any_eq_or_0_idx(vbi
, vbi
);
4236 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4237 // CHECK-ASM: vfaezf
4239 vsc
= vec_find_any_eq_or_0_idx_cc(vsc
, vsc
, &cc
);
4240 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4241 // CHECK-ASM: vfaezbs
4242 vuc
= vec_find_any_eq_or_0_idx_cc(vuc
, vuc
, &cc
);
4243 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4244 // CHECK-ASM: vfaezbs
4245 vuc
= vec_find_any_eq_or_0_idx_cc(vbc
, vbc
, &cc
);
4246 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
4247 // CHECK-ASM: vfaezbs
4248 vss
= vec_find_any_eq_or_0_idx_cc(vss
, vss
, &cc
);
4249 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4250 // CHECK-ASM: vfaezhs
4251 vus
= vec_find_any_eq_or_0_idx_cc(vus
, vus
, &cc
);
4252 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4253 // CHECK-ASM: vfaezhs
4254 vus
= vec_find_any_eq_or_0_idx_cc(vbs
, vbs
, &cc
);
4255 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
4256 // CHECK-ASM: vfaezhs
4257 vsi
= vec_find_any_eq_or_0_idx_cc(vsi
, vsi
, &cc
);
4258 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4259 // CHECK-ASM: vfaezfs
4260 vui
= vec_find_any_eq_or_0_idx_cc(vui
, vui
, &cc
);
4261 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4262 // CHECK-ASM: vfaezfs
4263 vui
= vec_find_any_eq_or_0_idx_cc(vbi
, vbi
, &cc
);
4264 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
4265 // CHECK-ASM: vfaezfs
4267 vbc
= vec_find_any_ne(vsc
, vsc
);
4268 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4270 vbc
= vec_find_any_ne(vuc
, vuc
);
4271 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4273 vbc
= vec_find_any_ne(vbc
, vbc
);
4274 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4276 vbs
= vec_find_any_ne(vss
, vss
);
4277 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4279 vbs
= vec_find_any_ne(vus
, vus
);
4280 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4282 vbs
= vec_find_any_ne(vbs
, vbs
);
4283 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4285 vbi
= vec_find_any_ne(vsi
, vsi
);
4286 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4288 vbi
= vec_find_any_ne(vui
, vui
);
4289 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4291 vbi
= vec_find_any_ne(vbi
, vbi
);
4292 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4295 vbc
= vec_find_any_ne_cc(vsc
, vsc
, &cc
);
4296 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4297 // CHECK-ASM: vfaebs
4298 vbc
= vec_find_any_ne_cc(vuc
, vuc
, &cc
);
4299 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4300 // CHECK-ASM: vfaebs
4301 vbc
= vec_find_any_ne_cc(vbc
, vbc
, &cc
);
4302 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
4303 // CHECK-ASM: vfaebs
4304 vbs
= vec_find_any_ne_cc(vss
, vss
, &cc
);
4305 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4306 // CHECK-ASM: vfaehs
4307 vbs
= vec_find_any_ne_cc(vus
, vus
, &cc
);
4308 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4309 // CHECK-ASM: vfaehs
4310 vbs
= vec_find_any_ne_cc(vbs
, vbs
, &cc
);
4311 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
4312 // CHECK-ASM: vfaehs
4313 vbi
= vec_find_any_ne_cc(vsi
, vsi
, &cc
);
4314 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4315 // CHECK-ASM: vfaefs
4316 vbi
= vec_find_any_ne_cc(vui
, vui
, &cc
);
4317 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4318 // CHECK-ASM: vfaefs
4319 vbi
= vec_find_any_ne_cc(vbi
, vbi
, &cc
);
4320 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
4321 // CHECK-ASM: vfaefs
4323 vsc
= vec_find_any_ne_idx(vsc
, vsc
);
4324 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4326 vuc
= vec_find_any_ne_idx(vuc
, vuc
);
4327 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4329 vuc
= vec_find_any_ne_idx(vbc
, vbc
);
4330 // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4332 vss
= vec_find_any_ne_idx(vss
, vss
);
4333 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4335 vus
= vec_find_any_ne_idx(vus
, vus
);
4336 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4338 vus
= vec_find_any_ne_idx(vbs
, vbs
);
4339 // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4341 vsi
= vec_find_any_ne_idx(vsi
, vsi
);
4342 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4344 vui
= vec_find_any_ne_idx(vui
, vui
);
4345 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4347 vui
= vec_find_any_ne_idx(vbi
, vbi
);
4348 // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4351 vsc
= vec_find_any_ne_idx_cc(vsc
, vsc
, &cc
);
4352 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4353 // CHECK-ASM: vfaebs
4354 vuc
= vec_find_any_ne_idx_cc(vuc
, vuc
, &cc
);
4355 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4356 // CHECK-ASM: vfaebs
4357 vuc
= vec_find_any_ne_idx_cc(vbc
, vbc
, &cc
);
4358 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4359 // CHECK-ASM: vfaebs
4360 vss
= vec_find_any_ne_idx_cc(vss
, vss
, &cc
);
4361 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4362 // CHECK-ASM: vfaehs
4363 vus
= vec_find_any_ne_idx_cc(vus
, vus
, &cc
);
4364 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4365 // CHECK-ASM: vfaehs
4366 vus
= vec_find_any_ne_idx_cc(vbs
, vbs
, &cc
);
4367 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4368 // CHECK-ASM: vfaehs
4369 vsi
= vec_find_any_ne_idx_cc(vsi
, vsi
, &cc
);
4370 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4371 // CHECK-ASM: vfaefs
4372 vui
= vec_find_any_ne_idx_cc(vui
, vui
, &cc
);
4373 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4374 // CHECK-ASM: vfaefs
4375 vui
= vec_find_any_ne_idx_cc(vbi
, vbi
, &cc
);
4376 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4377 // CHECK-ASM: vfaefs
4379 vsc
= vec_find_any_ne_or_0_idx(vsc
, vsc
);
4380 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4381 // CHECK-ASM: vfaezb
4382 vuc
= vec_find_any_ne_or_0_idx(vuc
, vuc
);
4383 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4384 // CHECK-ASM: vfaezb
4385 vuc
= vec_find_any_ne_or_0_idx(vbc
, vbc
);
4386 // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4387 // CHECK-ASM: vfaezb
4388 vss
= vec_find_any_ne_or_0_idx(vss
, vss
);
4389 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4390 // CHECK-ASM: vfaezh
4391 vus
= vec_find_any_ne_or_0_idx(vus
, vus
);
4392 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4393 // CHECK-ASM: vfaezh
4394 vus
= vec_find_any_ne_or_0_idx(vbs
, vbs
);
4395 // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4396 // CHECK-ASM: vfaezh
4397 vsi
= vec_find_any_ne_or_0_idx(vsi
, vsi
);
4398 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4399 // CHECK-ASM: vfaezf
4400 vui
= vec_find_any_ne_or_0_idx(vui
, vui
);
4401 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4402 // CHECK-ASM: vfaezf
4403 vui
= vec_find_any_ne_or_0_idx(vbi
, vbi
);
4404 // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4405 // CHECK-ASM: vfaezf
4407 vsc
= vec_find_any_ne_or_0_idx_cc(vsc
, vsc
, &cc
);
4408 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4409 // CHECK-ASM: vfaezbs
4410 vuc
= vec_find_any_ne_or_0_idx_cc(vuc
, vuc
, &cc
);
4411 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4412 // CHECK-ASM: vfaezbs
4413 vuc
= vec_find_any_ne_or_0_idx_cc(vbc
, vbc
, &cc
);
4414 // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
4415 // CHECK-ASM: vfaezbs
4416 vss
= vec_find_any_ne_or_0_idx_cc(vss
, vss
, &cc
);
4417 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4418 // CHECK-ASM: vfaezhs
4419 vus
= vec_find_any_ne_or_0_idx_cc(vus
, vus
, &cc
);
4420 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4421 // CHECK-ASM: vfaezhs
4422 vus
= vec_find_any_ne_or_0_idx_cc(vbs
, vbs
, &cc
);
4423 // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
4424 // CHECK-ASM: vfaezhs
4425 vsi
= vec_find_any_ne_or_0_idx_cc(vsi
, vsi
, &cc
);
4426 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4427 // CHECK-ASM: vfaezfs
4428 vui
= vec_find_any_ne_or_0_idx_cc(vui
, vui
, &cc
);
4429 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4430 // CHECK-ASM: vfaezfs
4431 vui
= vec_find_any_ne_or_0_idx_cc(vbi
, vbi
, &cc
);
4432 // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
4433 // CHECK-ASM: vfaezfs
4436 void test_float(void) {
4437 // CHECK-ASM-LABEL: test_float
4440 // CHECK: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
4441 // CHECK-ASM: vflpdb
4444 // CHECK: [[ABS:%[^ ]+]] = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
4445 // CHECK-NEXT: fneg <2 x double> [[ABS]]
4446 // CHECK-ASM: vflndb
4448 vd
= vec_madd(vd
, vd
, vd
);
4449 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
4450 // CHECK-ASM: vfmadb
4451 vd
= vec_msub(vd
, vd
, vd
);
4452 // CHECK: [[NEG:%[^ ]+]] = fneg <2 x double> %{{.*}}
4453 // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])
4454 // CHECK-ASM: vfmsdb
4456 // CHECK: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}})
4457 // CHECK-ASM: vfsqdb
4459 vd
= vec_ld2f(cptrf
);
4460 // CHECK: [[VAL:%[^ ]+]] = load <2 x float>, ptr %{{.*}}
4461 // CHECK: fpext <2 x float> [[VAL]] to <2 x double>
4464 // CHECK: [[VAL:%[^ ]+]] = fptrunc <2 x double> %{{.*}} to <2 x float>
4465 // CHECK: store <2 x float> [[VAL]], ptr %{{.*}}
4468 vd
= vec_ctd(vsl
, 0);
4469 // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
4471 vd
= vec_ctd(vul
, 0);
4472 // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
4474 vd
= vec_ctd(vsl
, 1);
4475 // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
4476 // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
4478 vd
= vec_ctd(vul
, 1);
4479 // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
4480 // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
4482 vd
= vec_ctd(vsl
, 31);
4483 // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
4484 // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
4486 vd
= vec_ctd(vul
, 31);
4487 // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
4488 // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
4491 vsl
= vec_ctsl(vd
, 0);
4492 // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64>
4494 vul
= vec_ctul(vd
, 0);
4495 // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64>
4497 vsl
= vec_ctsl(vd
, 1);
4498 // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
4499 // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
4501 vul
= vec_ctul(vd
, 1);
4502 // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
4503 // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
4505 vsl
= vec_ctsl(vd
, 31);
4506 // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
4507 // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
4509 vul
= vec_ctul(vd
, 31);
4510 // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
4511 // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
4514 vd
= vec_double(vsl
);
4515 // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
4517 vd
= vec_double(vul
);
4518 // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
4519 // CHECK-ASM: vcdlgb
4521 vsl
= vec_signed(vd
);
4522 // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64>
4524 vul
= vec_unsigned(vd
);
4525 // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64>
4526 // CHECK-ASM: vclgdb
4528 vd
= vec_roundp(vd
);
4529 // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
4530 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 6
4532 // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
4533 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 6
4534 vd
= vec_roundm(vd
);
4535 // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
4536 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 7
4538 // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
4539 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 7
4540 vd
= vec_roundz(vd
);
4541 // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
4542 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 5
4544 // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
4545 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 5
4546 vd
= vec_roundc(vd
);
4547 // CHECK: call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %{{.*}})
4548 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 0
4550 // CHECK: call <2 x double> @llvm.rint.v2f64(<2 x double> %{{.*}})
4551 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 0, 0
4553 // CHECK: call <2 x double> @llvm.s390.vfidb(<2 x double> %{{.*}}, i32 4, i32 4)
4554 // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 4
4556 vbl
= vec_fp_test_data_class(vd
, 0, &cc
);
4557 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 0)
4558 // CHECK-ASM: vftcidb
4559 vbl
= vec_fp_test_data_class(vd
, 4095, &cc
);
4560 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4095)
4561 // CHECK-ASM: vftcidb
4562 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_ZERO_P
, &cc
);
4563 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 2048)
4564 // CHECK-ASM: vftcidb
4565 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_ZERO_N
, &cc
);
4566 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 1024)
4567 // CHECK-ASM: vftcidb
4568 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_ZERO
, &cc
);
4569 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3072)
4570 // CHECK-ASM: vftcidb
4571 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_NORMAL_P
, &cc
);
4572 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 512)
4573 // CHECK-ASM: vftcidb
4574 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_NORMAL_N
, &cc
);
4575 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 256)
4576 // CHECK-ASM: vftcidb
4577 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_NORMAL
, &cc
);
4578 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 768)
4579 // CHECK-ASM: vftcidb
4580 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SUBNORMAL_P
, &cc
);
4581 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 128)
4582 // CHECK-ASM: vftcidb
4583 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SUBNORMAL_N
, &cc
);
4584 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 64)
4585 // CHECK-ASM: vftcidb
4586 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SUBNORMAL
, &cc
);
4587 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 192)
4588 // CHECK-ASM: vftcidb
4589 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_INFINITY_P
, &cc
);
4590 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 32)
4591 // CHECK-ASM: vftcidb
4592 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_INFINITY_N
, &cc
);
4593 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 16)
4594 // CHECK-ASM: vftcidb
4595 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_INFINITY
, &cc
);
4596 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 48)
4597 // CHECK-ASM: vftcidb
4598 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_QNAN_P
, &cc
);
4599 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 8)
4600 // CHECK-ASM: vftcidb
4601 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_QNAN_N
, &cc
);
4602 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4)
4603 // CHECK-ASM: vftcidb
4604 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_QNAN
, &cc
);
4605 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 12)
4606 // CHECK-ASM: vftcidb
4607 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SNAN_P
, &cc
);
4608 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 2)
4609 // CHECK-ASM: vftcidb
4610 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SNAN_N
, &cc
);
4611 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 1)
4612 // CHECK-ASM: vftcidb
4613 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_SNAN
, &cc
);
4614 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3)
4615 // CHECK-ASM: vftcidb
4616 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_NAN
, &cc
);
4617 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
4618 // CHECK-ASM: vftcidb
4619 vbl
= vec_fp_test_data_class(vd
, __VEC_CLASS_FP_NOT_NORMAL
, &cc
);
4620 // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3327)
4621 // CHECK-ASM: vftcidb