1 | // REQUIRES: systemz-registered-target |
2 | // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \ |
3 | // RUN: -O -fzvector -fno-lax-vector-conversions \ |
4 | // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s |
5 | // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \ |
6 | // RUN: -O -fzvector -fno-lax-vector-conversions \ |
7 | // RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM |
8 | |
9 | #include <vecintrin.h> |
10 | |
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; |
24 | |
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; |
33 | volatile double d; |
34 | |
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; |
46 | |
47 | void * volatile ptr; |
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; |
58 | |
59 | volatile unsigned int len; |
60 | volatile int idx; |
61 | int cc; |
62 | |
63 | void test_core(void) { |
64 | // CHECK-ASM-LABEL: test_core |
65 | |
66 | len = __lcbb(cptr, 64); |
67 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 0) |
68 | // CHECK-ASM: lcbb |
69 | len = __lcbb(cptr, 128); |
70 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 1) |
71 | // CHECK-ASM: lcbb |
72 | len = __lcbb(cptr, 256); |
73 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 2) |
74 | // CHECK-ASM: lcbb |
75 | len = __lcbb(cptr, 512); |
76 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 3) |
77 | // CHECK-ASM: lcbb |
78 | len = __lcbb(cptr, 1024); |
79 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 4) |
80 | // CHECK-ASM: lcbb |
81 | len = __lcbb(cptr, 2048); |
82 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 5) |
83 | // CHECK-ASM: lcbb |
84 | len = __lcbb(cptr, 4096); |
85 | // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 6) |
86 | // CHECK-ASM: lcbb |
87 | |
88 | sc = vec_extract(vsc, idx); |
89 | // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}} |
90 | // CHECK-ASM: vlgvb |
91 | uc = vec_extract(vuc, idx); |
92 | // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}} |
93 | // CHECK-ASM: vlgvb |
94 | uc = vec_extract(vbc, idx); |
95 | // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}} |
96 | // CHECK-ASM: vlgvb |
97 | ss = vec_extract(vss, idx); |
98 | // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}} |
99 | // CHECK-ASM: vlgvh |
100 | us = vec_extract(vus, idx); |
101 | // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}} |
102 | // CHECK-ASM: vlgvh |
103 | us = vec_extract(vbs, idx); |
104 | // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}} |
105 | // CHECK-ASM: vlgvh |
106 | si = vec_extract(vsi, idx); |
107 | // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}} |
108 | // CHECK-ASM: vlgvf |
109 | ui = vec_extract(vui, idx); |
110 | // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}} |
111 | // CHECK-ASM: vlgvf |
112 | ui = vec_extract(vbi, idx); |
113 | // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}} |
114 | // CHECK-ASM: vlgvf |
115 | sl = vec_extract(vsl, idx); |
116 | // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}} |
117 | // CHECK-ASM: vlgvg |
118 | ul = vec_extract(vul, idx); |
119 | // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}} |
120 | // CHECK-ASM: vlgvg |
121 | ul = vec_extract(vbl, idx); |
122 | // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}} |
123 | // CHECK-ASM: vlgvg |
124 | d = vec_extract(vd, idx); |
125 | // CHECK: extractelement <2 x double> %{{.*}}, i32 %{{.*}} |
126 | // CHECK-ASM: vlgvg |
127 | |
128 | vsc = vec_insert(sc, vsc, idx); |
129 | // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}} |
130 | // CHECK-ASM: vlvgb |
131 | vuc = vec_insert(uc, vuc, idx); |
132 | // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}} |
133 | // CHECK-ASM: vlvgb |
134 | vuc = vec_insert(uc, vbc, idx); |
135 | // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}} |
136 | // CHECK-ASM: vlvgb |
137 | vss = vec_insert(ss, vss, idx); |
138 | // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}} |
139 | // CHECK-ASM: vlvgh |
140 | vus = vec_insert(us, vus, idx); |
141 | // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}} |
142 | // CHECK-ASM: vlvgh |
143 | vus = vec_insert(us, vbs, idx); |
144 | // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}} |
145 | // CHECK-ASM: vlvgh |
146 | vsi = vec_insert(si, vsi, idx); |
147 | // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}} |
148 | // CHECK-ASM: vlvgf |
149 | vui = vec_insert(ui, vui, idx); |
150 | // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}} |
151 | // CHECK-ASM: vlvgf |
152 | vui = vec_insert(ui, vbi, idx); |
153 | // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}} |
154 | // CHECK-ASM: vlvgf |
155 | vsl = vec_insert(sl, vsl, idx); |
156 | // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}} |
157 | // CHECK-ASM: vlvgg |
158 | vul = vec_insert(ul, vul, idx); |
159 | // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}} |
160 | // CHECK-ASM: vlvgg |
161 | vul = vec_insert(ul, vbl, idx); |
162 | // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}} |
163 | // CHECK-ASM: vlvgg |
164 | vd = vec_insert(d, vd, idx); |
165 | // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 %{{.*}} |
166 | // CHECK-ASM: vlvgg |
167 | |
168 | vsc = vec_promote(sc, idx); |
169 | // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}} |
170 | // CHECK-ASM: vlvgb |
171 | vuc = vec_promote(uc, idx); |
172 | // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}} |
173 | // CHECK-ASM: vlvgb |
174 | vss = vec_promote(ss, idx); |
175 | // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}} |
176 | // CHECK-ASM: vlvgh |
177 | vus = vec_promote(us, idx); |
178 | // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}} |
179 | // CHECK-ASM: vlvgh |
180 | vsi = vec_promote(si, idx); |
181 | // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}} |
182 | // CHECK-ASM: vlvgf |
183 | vui = vec_promote(ui, idx); |
184 | // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}} |
185 | // CHECK-ASM: vlvgf |
186 | vsl = vec_promote(sl, idx); |
187 | // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}} |
188 | // CHECK-ASM: vlvgg |
189 | vul = vec_promote(ul, idx); |
190 | // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}} |
191 | // CHECK-ASM: vlvgg |
192 | vd = vec_promote(d, idx); |
193 | // CHECK: insertelement <2 x double> undef, double %{{.*}}, i32 %{{.*}} |
194 | // CHECK-ASM: vlvgg |
195 | |
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 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7 |
198 | // CHECK-ASM: vllezb |
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 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7 |
201 | // CHECK-ASM: vllezb |
202 | vss = vec_insert_and_zero(cptrss); |
203 | // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3 |
204 | // CHECK-ASM: vllezh |
205 | vus = vec_insert_and_zero(cptrus); |
206 | // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3 |
207 | // CHECK-ASM: vllezh |
208 | vsi = vec_insert_and_zero(cptrsi); |
209 | // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1 |
210 | // CHECK-ASM: vllezf |
211 | vui = vec_insert_and_zero(cptrui); |
212 | // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1 |
213 | // CHECK-ASM: vllezf |
214 | vsl = vec_insert_and_zero(cptrsl); |
215 | // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0 |
216 | // CHECK-ASM: vllezg |
217 | vul = vec_insert_and_zero(cptrul); |
218 | // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0 |
219 | // CHECK-ASM: vllezg |
220 | vd = vec_insert_and_zero(cptrd); |
221 | // CHECK: insertelement <2 x double> <double undef, double 0.000000e+00>, double %{{.*}}, i32 0 |
222 | // CHECK-ASM: vllezg |
223 | |
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> %{{.*}}) |
226 | // CHECK-ASM: vperm |
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> %{{.*}}) |
229 | // CHECK-ASM: vperm |
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> %{{.*}}) |
232 | // CHECK-ASM: vperm |
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> %{{.*}}) |
235 | // CHECK-ASM: vperm |
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> %{{.*}}) |
238 | // CHECK-ASM: vperm |
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> %{{.*}}) |
241 | // CHECK-ASM: vperm |
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> %{{.*}}) |
244 | // CHECK-ASM: vperm |
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> %{{.*}}) |
247 | // CHECK-ASM: vperm |
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> %{{.*}}) |
250 | // CHECK-ASM: vperm |
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> %{{.*}}) |
253 | // CHECK-ASM: vperm |
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> %{{.*}}) |
256 | // CHECK-ASM: vperm |
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> %{{.*}}) |
259 | // CHECK-ASM: vperm |
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> %{{.*}}) |
262 | // CHECK-ASM: vperm |
263 | |
264 | vsl = vec_permi(vsl, vsl, 0); |
265 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
266 | // CHECK-ASM: vpdi |
267 | vsl = vec_permi(vsl, vsl, 1); |
268 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1) |
269 | // CHECK-ASM: vpdi |
270 | vsl = vec_permi(vsl, vsl, 2); |
271 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4) |
272 | // CHECK-ASM: vpdi |
273 | vsl = vec_permi(vsl, vsl, 3); |
274 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5) |
275 | // CHECK-ASM: vpdi |
276 | vul = vec_permi(vul, vul, 0); |
277 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
278 | // CHECK-ASM: vpdi |
279 | vul = vec_permi(vul, vul, 1); |
280 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1) |
281 | // CHECK-ASM: vpdi |
282 | vul = vec_permi(vul, vul, 2); |
283 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4) |
284 | // CHECK-ASM: vpdi |
285 | vul = vec_permi(vul, vul, 3); |
286 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5) |
287 | // CHECK-ASM: vpdi |
288 | vbl = vec_permi(vbl, vbl, 0); |
289 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
290 | // CHECK-ASM: vpdi |
291 | vbl = vec_permi(vbl, vbl, 1); |
292 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1) |
293 | // CHECK-ASM: vpdi |
294 | vbl = vec_permi(vbl, vbl, 2); |
295 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4) |
296 | // CHECK-ASM: vpdi |
297 | vbl = vec_permi(vbl, vbl, 3); |
298 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5) |
299 | // CHECK-ASM: vpdi |
300 | vd = vec_permi(vd, vd, 0); |
301 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
302 | // CHECK-ASM: vpdi |
303 | vd = vec_permi(vd, vd, 1); |
304 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1) |
305 | // CHECK-ASM: vpdi |
306 | vd = vec_permi(vd, vd, 2); |
307 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4) |
308 | // CHECK-ASM: vpdi |
309 | vd = vec_permi(vd, vd, 3); |
310 | // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5) |
311 | // CHECK-ASM: vpdi |
312 | |
313 | vsc = vec_sel(vsc, vsc, vuc); |
314 | // CHECK-ASM: vsel |
315 | vsc = vec_sel(vsc, vsc, vbc); |
316 | // CHECK-ASM: vsel |
317 | vuc = vec_sel(vuc, vuc, vuc); |
318 | // CHECK-ASM: vsel |
319 | vuc = vec_sel(vuc, vuc, vbc); |
320 | // CHECK-ASM: vsel |
321 | vbc = vec_sel(vbc, vbc, vuc); |
322 | // CHECK-ASM: vsel |
323 | vbc = vec_sel(vbc, vbc, vbc); |
324 | // CHECK-ASM: vsel |
325 | vss = vec_sel(vss, vss, vus); |
326 | // CHECK-ASM: vsel |
327 | vss = vec_sel(vss, vss, vbs); |
328 | // CHECK-ASM: vsel |
329 | vus = vec_sel(vus, vus, vus); |
330 | // CHECK-ASM: vsel |
331 | vus = vec_sel(vus, vus, vbs); |
332 | // CHECK-ASM: vsel |
333 | vbs = vec_sel(vbs, vbs, vus); |
334 | // CHECK-ASM: vsel |
335 | vbs = vec_sel(vbs, vbs, vbs); |
336 | // CHECK-ASM: vsel |
337 | vsi = vec_sel(vsi, vsi, vui); |
338 | // CHECK-ASM: vsel |
339 | vsi = vec_sel(vsi, vsi, vbi); |
340 | // CHECK-ASM: vsel |
341 | vui = vec_sel(vui, vui, vui); |
342 | // CHECK-ASM: vsel |
343 | vui = vec_sel(vui, vui, vbi); |
344 | // CHECK-ASM: vsel |
345 | vbi = vec_sel(vbi, vbi, vui); |
346 | // CHECK-ASM: vsel |
347 | vbi = vec_sel(vbi, vbi, vbi); |
348 | // CHECK-ASM: vsel |
349 | vsl = vec_sel(vsl, vsl, vul); |
350 | // CHECK-ASM: vsel |
351 | vsl = vec_sel(vsl, vsl, vbl); |
352 | // CHECK-ASM: vsel |
353 | vul = vec_sel(vul, vul, vul); |
354 | // CHECK-ASM: vsel |
355 | vul = vec_sel(vul, vul, vbl); |
356 | // CHECK-ASM: vsel |
357 | vbl = vec_sel(vbl, vbl, vul); |
358 | // CHECK-ASM: vsel |
359 | vbl = vec_sel(vbl, vbl, vbl); |
360 | // CHECK-ASM: vsel |
361 | vd = vec_sel(vd, vd, vul); |
362 | // CHECK-ASM: vsel |
363 | vd = vec_sel(vd, vd, vbl); |
364 | // CHECK-ASM: vsel |
365 | |
366 | vsi = vec_gather_element(vsi, vui, cptrsi, 0); |
367 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
368 | vsi = vec_gather_element(vsi, vui, cptrsi, 1); |
369 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
370 | vsi = vec_gather_element(vsi, vui, cptrsi, 2); |
371 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
372 | vsi = vec_gather_element(vsi, vui, cptrsi, 3); |
373 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
374 | vui = vec_gather_element(vui, vui, cptrui, 0); |
375 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
376 | vui = vec_gather_element(vui, vui, cptrui, 1); |
377 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
378 | vui = vec_gather_element(vui, vui, cptrui, 2); |
379 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
380 | vui = vec_gather_element(vui, vui, cptrui, 3); |
381 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
382 | vbi = vec_gather_element(vbi, vui, cptrui, 0); |
383 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
384 | vbi = vec_gather_element(vbi, vui, cptrui, 1); |
385 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
386 | vbi = vec_gather_element(vbi, vui, cptrui, 2); |
387 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
388 | vbi = vec_gather_element(vbi, vui, cptrui, 3); |
389 | // CHECK-ASM: vgef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
390 | vsl = vec_gather_element(vsl, vul, cptrsl, 0); |
391 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
392 | vsl = vec_gather_element(vsl, vul, cptrsl, 1); |
393 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
394 | vul = vec_gather_element(vul, vul, cptrul, 0); |
395 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
396 | vul = vec_gather_element(vul, vul, cptrul, 1); |
397 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
398 | vbl = vec_gather_element(vbl, vul, cptrul, 0); |
399 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
400 | vbl = vec_gather_element(vbl, vul, cptrul, 1); |
401 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
402 | vd = vec_gather_element(vd, vul, cptrd, 0); |
403 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
404 | vd = vec_gather_element(vd, vul, cptrd, 1); |
405 | // CHECK-ASM: vgeg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
406 | |
407 | vec_scatter_element(vsi, vui, ptrsi, 0); |
408 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
409 | vec_scatter_element(vsi, vui, ptrsi, 1); |
410 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
411 | vec_scatter_element(vsi, vui, ptrsi, 2); |
412 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
413 | vec_scatter_element(vsi, vui, ptrsi, 3); |
414 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
415 | vec_scatter_element(vui, vui, ptrui, 0); |
416 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
417 | vec_scatter_element(vui, vui, ptrui, 1); |
418 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
419 | vec_scatter_element(vui, vui, ptrui, 2); |
420 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
421 | vec_scatter_element(vui, vui, ptrui, 3); |
422 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
423 | vec_scatter_element(vbi, vui, ptrui, 0); |
424 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
425 | vec_scatter_element(vbi, vui, ptrui, 1); |
426 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
427 | vec_scatter_element(vbi, vui, ptrui, 2); |
428 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 2 |
429 | vec_scatter_element(vbi, vui, ptrui, 3); |
430 | // CHECK-ASM: vscef %{{.*}}, 0(%{{.*}},%{{.*}}), 3 |
431 | vec_scatter_element(vsl, vul, ptrsl, 0); |
432 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
433 | vec_scatter_element(vsl, vul, ptrsl, 1); |
434 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
435 | vec_scatter_element(vul, vul, ptrul, 0); |
436 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
437 | vec_scatter_element(vul, vul, ptrul, 1); |
438 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
439 | vec_scatter_element(vbl, vul, ptrul, 0); |
440 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
441 | vec_scatter_element(vbl, vul, ptrul, 1); |
442 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
443 | vec_scatter_element(vd, vul, ptrd, 0); |
444 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 0 |
445 | vec_scatter_element(vd, vul, ptrd, 1); |
446 | // CHECK-ASM: vsceg %{{.*}}, 0(%{{.*}},%{{.*}}), 1 |
447 | |
448 | vsc = vec_xl(idx, cptrsc); |
449 | // CHECK-ASM: vl |
450 | vuc = vec_xl(idx, cptruc); |
451 | // CHECK-ASM: vl |
452 | vss = vec_xl(idx, cptrss); |
453 | // CHECK-ASM: vl |
454 | vus = vec_xl(idx, cptrus); |
455 | // CHECK-ASM: vl |
456 | vsi = vec_xl(idx, cptrsi); |
457 | // CHECK-ASM: vl |
458 | vui = vec_xl(idx, cptrui); |
459 | // CHECK-ASM: vl |
460 | vsl = vec_xl(idx, cptrsl); |
461 | // CHECK-ASM: vl |
462 | vul = vec_xl(idx, cptrul); |
463 | // CHECK-ASM: vl |
464 | vd = vec_xl(idx, cptrd); |
465 | // CHECK-ASM: vl |
466 | |
467 | vsc = vec_xld2(idx, cptrsc); |
468 | // CHECK-ASM: vl |
469 | vuc = vec_xld2(idx, cptruc); |
470 | // CHECK-ASM: vl |
471 | vss = vec_xld2(idx, cptrss); |
472 | // CHECK-ASM: vl |
473 | vus = vec_xld2(idx, cptrus); |
474 | // CHECK-ASM: vl |
475 | vsi = vec_xld2(idx, cptrsi); |
476 | // CHECK-ASM: vl |
477 | vui = vec_xld2(idx, cptrui); |
478 | // CHECK-ASM: vl |
479 | vsl = vec_xld2(idx, cptrsl); |
480 | // CHECK-ASM: vl |
481 | vul = vec_xld2(idx, cptrul); |
482 | // CHECK-ASM: vl |
483 | vd = vec_xld2(idx, cptrd); |
484 | // CHECK-ASM: vl |
485 | |
486 | vsc = vec_xlw4(idx, cptrsc); |
487 | // CHECK-ASM: vl |
488 | vuc = vec_xlw4(idx, cptruc); |
489 | // CHECK-ASM: vl |
490 | vss = vec_xlw4(idx, cptrss); |
491 | // CHECK-ASM: vl |
492 | vus = vec_xlw4(idx, cptrus); |
493 | // CHECK-ASM: vl |
494 | vsi = vec_xlw4(idx, cptrsi); |
495 | // CHECK-ASM: vl |
496 | vui = vec_xlw4(idx, cptrui); |
497 | // CHECK-ASM: vl |
498 | |
499 | vec_xst(vsc, idx, ptrsc); |
500 | // CHECK-ASM: vst |
501 | vec_xst(vuc, idx, ptruc); |
502 | // CHECK-ASM: vst |
503 | vec_xst(vss, idx, ptrss); |
504 | // CHECK-ASM: vst |
505 | vec_xst(vus, idx, ptrus); |
506 | // CHECK-ASM: vst |
507 | vec_xst(vsi, idx, ptrsi); |
508 | // CHECK-ASM: vst |
509 | vec_xst(vui, idx, ptrui); |
510 | // CHECK-ASM: vst |
511 | vec_xst(vsl, idx, ptrsl); |
512 | // CHECK-ASM: vst |
513 | vec_xst(vul, idx, ptrul); |
514 | // CHECK-ASM: vst |
515 | vec_xst(vd, idx, ptrd); |
516 | // CHECK-ASM: vst |
517 | |
518 | vec_xstd2(vsc, idx, ptrsc); |
519 | // CHECK-ASM: vst |
520 | vec_xstd2(vuc, idx, ptruc); |
521 | // CHECK-ASM: vst |
522 | vec_xstd2(vss, idx, ptrss); |
523 | // CHECK-ASM: vst |
524 | vec_xstd2(vus, idx, ptrus); |
525 | // CHECK-ASM: vst |
526 | vec_xstd2(vsi, idx, ptrsi); |
527 | // CHECK-ASM: vst |
528 | vec_xstd2(vui, idx, ptrui); |
529 | // CHECK-ASM: vst |
530 | vec_xstd2(vsl, idx, ptrsl); |
531 | // CHECK-ASM: vst |
532 | vec_xstd2(vul, idx, ptrul); |
533 | // CHECK-ASM: vst |
534 | vec_xstd2(vd, idx, ptrd); |
535 | // CHECK-ASM: vst |
536 | |
537 | vec_xstw4(vsc, idx, ptrsc); |
538 | // CHECK-ASM: vst |
539 | vec_xstw4(vuc, idx, ptruc); |
540 | // CHECK-ASM: vst |
541 | vec_xstw4(vss, idx, ptrss); |
542 | // CHECK-ASM: vst |
543 | vec_xstw4(vus, idx, ptrus); |
544 | // CHECK-ASM: vst |
545 | vec_xstw4(vsi, idx, ptrsi); |
546 | // CHECK-ASM: vst |
547 | vec_xstw4(vui, idx, ptrui); |
548 | // CHECK-ASM: vst |
549 | |
550 | vsc = vec_load_bndry(cptrsc, 64); |
551 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
552 | // CHECK-ASM: vlbb |
553 | vuc = vec_load_bndry(cptruc, 64); |
554 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
555 | // CHECK-ASM: vlbb |
556 | vss = vec_load_bndry(cptrss, 64); |
557 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
558 | // CHECK-ASM: vlbb |
559 | vus = vec_load_bndry(cptrus, 64); |
560 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
561 | // CHECK-ASM: vlbb |
562 | vsi = vec_load_bndry(cptrsi, 64); |
563 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
564 | // CHECK-ASM: vlbb |
565 | vui = vec_load_bndry(cptrui, 64); |
566 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
567 | // CHECK-ASM: vlbb |
568 | vsl = vec_load_bndry(cptrsl, 64); |
569 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
570 | // CHECK-ASM: vlbb |
571 | vul = vec_load_bndry(cptrul, 64); |
572 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
573 | // CHECK-ASM: vlbb |
574 | vd = vec_load_bndry(cptrd, 64); |
575 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0) |
576 | // CHECK-ASM: vlbb |
577 | vsc = vec_load_bndry(cptrsc, 128); |
578 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 1) |
579 | // CHECK-ASM: vlbb |
580 | vsc = vec_load_bndry(cptrsc, 256); |
581 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 2) |
582 | // CHECK-ASM: vlbb |
583 | vsc = vec_load_bndry(cptrsc, 512); |
584 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 3) |
585 | // CHECK-ASM: vlbb |
586 | vsc = vec_load_bndry(cptrsc, 1024); |
587 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 4) |
588 | // CHECK-ASM: vlbb |
589 | vsc = vec_load_bndry(cptrsc, 2048); |
590 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 5) |
591 | // CHECK-ASM: vlbb |
592 | vsc = vec_load_bndry(cptrsc, 4096); |
593 | // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 6) |
594 | // CHECK-ASM: vlbb |
595 | |
596 | vsc = vec_load_len(cptrsc, idx); |
597 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
598 | // CHECK-ASM: vll |
599 | vuc = vec_load_len(cptruc, idx); |
600 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
601 | // CHECK-ASM: vll |
602 | vss = vec_load_len(cptrss, idx); |
603 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
604 | // CHECK-ASM: vll |
605 | vus = vec_load_len(cptrus, idx); |
606 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
607 | // CHECK-ASM: vll |
608 | vsi = vec_load_len(cptrsi, idx); |
609 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
610 | // CHECK-ASM: vll |
611 | vui = vec_load_len(cptrui, idx); |
612 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
613 | // CHECK-ASM: vll |
614 | vsl = vec_load_len(cptrsl, idx); |
615 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
616 | // CHECK-ASM: vll |
617 | vul = vec_load_len(cptrul, idx); |
618 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
619 | // CHECK-ASM: vll |
620 | vd = vec_load_len(cptrd, idx); |
621 | // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}}) |
622 | // CHECK-ASM: vll |
623 | |
624 | vec_store_len(vsc, ptrsc, idx); |
625 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
626 | // CHECK-ASM: vstl |
627 | vec_store_len(vuc, ptruc, idx); |
628 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
629 | // CHECK-ASM: vstl |
630 | vec_store_len(vss, ptrss, idx); |
631 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
632 | // CHECK-ASM: vstl |
633 | vec_store_len(vus, ptrus, idx); |
634 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
635 | // CHECK-ASM: vstl |
636 | vec_store_len(vsi, ptrsi, idx); |
637 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
638 | // CHECK-ASM: vstl |
639 | vec_store_len(vui, ptrui, idx); |
640 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
641 | // CHECK-ASM: vstl |
642 | vec_store_len(vsl, ptrsl, idx); |
643 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
644 | // CHECK-ASM: vstl |
645 | vec_store_len(vul, ptrul, idx); |
646 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
647 | // CHECK-ASM: vstl |
648 | vec_store_len(vd, ptrd, idx); |
649 | // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}}) |
650 | // CHECK-ASM: vstl |
651 | |
652 | vsl = vec_load_pair(sl + 1, sl - 1); |
653 | // CHECK-ASM: vlvgp |
654 | vul = vec_load_pair(ul + 1, ul - 1); |
655 | // CHECK-ASM: vlvgp |
656 | |
657 | vuc = vec_genmask(0); |
658 | // CHECK: <16 x i8> zeroinitializer |
659 | vuc = vec_genmask(0x8000); |
660 | // 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> |
661 | vuc = vec_genmask(0xffff); |
662 | // 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> |
663 | |
664 | vuc = vec_genmasks_8(0, 7); |
665 | // 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> |
666 | vuc = vec_genmasks_8(1, 4); |
667 | // 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> |
668 | vuc = vec_genmasks_8(6, 2); |
669 | // 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> |
670 | vus = vec_genmasks_16(0, 15); |
671 | // CHECK: <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1> |
672 | vus = vec_genmasks_16(2, 11); |
673 | // CHECK: <8 x i16> <i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368> |
674 | vus = vec_genmasks_16(9, 2); |
675 | // CHECK: <8 x i16> <i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065> |
676 | vui = vec_genmasks_32(0, 31); |
677 | // CHECK: <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1> |
678 | vui = vec_genmasks_32(7, 20); |
679 | // CHECK: <4 x i32> <i32 33552384, i32 33552384, i32 33552384, i32 33552384> |
680 | vui = vec_genmasks_32(25, 4); |
681 | // CHECK: <4 x i32> <i32 -134217601, i32 -134217601, i32 -134217601, i32 -134217601> |
682 | vul = vec_genmasks_64(0, 63); |
683 | // CHECK: <2 x i64> <i64 -1, i64 -1> |
684 | vul = vec_genmasks_64(3, 40); |
685 | // CHECK: <2 x i64> <i64 2305843009205305344, i64 2305843009205305344> |
686 | vul = vec_genmasks_64(30, 11); |
687 | // CHECK: <2 x i64> <i64 -4503582447501313, i64 -4503582447501313> |
688 | |
689 | vsc = vec_splat(vsc, 0); |
690 | // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer |
691 | // CHECK-ASM: vrepb |
692 | vsc = vec_splat(vsc, 15); |
693 | // 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> |
694 | // CHECK-ASM: vrepb |
695 | vuc = vec_splat(vuc, 0); |
696 | // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer |
697 | // CHECK-ASM: vrepb |
698 | vuc = vec_splat(vuc, 15); |
699 | // 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> |
700 | // CHECK-ASM: vrepb |
701 | vbc = vec_splat(vbc, 0); |
702 | // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer |
703 | // CHECK-ASM: vrepb |
704 | vbc = vec_splat(vbc, 15); |
705 | // 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> |
706 | // CHECK-ASM: vrepb |
707 | vss = vec_splat(vss, 0); |
708 | // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer |
709 | // CHECK-ASM: vreph |
710 | vss = vec_splat(vss, 7); |
711 | // 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> |
712 | // CHECK-ASM: vreph |
713 | vus = vec_splat(vus, 0); |
714 | // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer |
715 | // CHECK-ASM: vreph |
716 | vus = vec_splat(vus, 7); |
717 | // 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> |
718 | // CHECK-ASM: vreph |
719 | vbs = vec_splat(vbs, 0); |
720 | // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer |
721 | // CHECK-ASM: vreph |
722 | vbs = vec_splat(vbs, 7); |
723 | // 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> |
724 | // CHECK-ASM: vreph |
725 | vsi = vec_splat(vsi, 0); |
726 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer |
727 | // CHECK-ASM: vrepf |
728 | vsi = vec_splat(vsi, 3); |
729 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3> |
730 | // CHECK-ASM: vrepf |
731 | vui = vec_splat(vui, 0); |
732 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer |
733 | // CHECK-ASM: vrepf |
734 | vui = vec_splat(vui, 3); |
735 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3> |
736 | // CHECK-ASM: vrepf |
737 | vbi = vec_splat(vbi, 0); |
738 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer |
739 | // CHECK-ASM: vrepf |
740 | vbi = vec_splat(vbi, 3); |
741 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3> |
742 | // CHECK-ASM: vrepf |
743 | vsl = vec_splat(vsl, 0); |
744 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer |
745 | // CHECK-ASM: vrepg |
746 | vsl = vec_splat(vsl, 1); |
747 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1> |
748 | // CHECK-ASM: vrepg |
749 | vul = vec_splat(vul, 0); |
750 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer |
751 | // CHECK-ASM: vrepg |
752 | vul = vec_splat(vul, 1); |
753 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1> |
754 | // CHECK-ASM: vrepg |
755 | vbl = vec_splat(vbl, 0); |
756 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer |
757 | // CHECK-ASM: vrepg |
758 | vbl = vec_splat(vbl, 1); |
759 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1> |
760 | // CHECK-ASM: vrepg |
761 | vd = vec_splat(vd, 0); |
762 | // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer |
763 | // CHECK-ASM: vrepg |
764 | vd = vec_splat(vd, 1); |
765 | // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 1> |
766 | // CHECK-ASM: vrepg |
767 | |
768 | vsc = vec_splat_s8(-128); |
769 | // 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> |
770 | vsc = vec_splat_s8(127); |
771 | // 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> |
772 | vuc = vec_splat_u8(1); |
773 | // 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> |
774 | vuc = vec_splat_u8(254); |
775 | // 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> |
776 | vss = vec_splat_s16(-32768); |
777 | // CHECK: <8 x i16> <i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768> |
778 | vss = vec_splat_s16(32767); |
779 | // CHECK: <8 x i16> <i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767> |
780 | vus = vec_splat_u16(1); |
781 | // CHECK: <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> |
782 | vus = vec_splat_u16(65534); |
783 | // CHECK: <8 x i16> <i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2> |
784 | vsi = vec_splat_s32(-32768); |
785 | // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768> |
786 | vsi = vec_splat_s32(32767); |
787 | // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767> |
788 | vui = vec_splat_u32(-32768); |
789 | // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768> |
790 | vui = vec_splat_u32(32767); |
791 | // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767> |
792 | vsl = vec_splat_s64(-32768); |
793 | // CHECK: <2 x i64> <i64 -32768, i64 -32768> |
794 | vsl = vec_splat_s64(32767); |
795 | // CHECK: <2 x i64> <i64 32767, i64 32767> |
796 | vul = vec_splat_u64(-32768); |
797 | // CHECK: <2 x i64> <i64 -32768, i64 -32768> |
798 | vul = vec_splat_u64(32767); |
799 | // CHECK: <2 x i64> <i64 32767, i64 32767> |
800 | |
801 | vsc = vec_splats(sc); |
802 | // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer |
803 | // CHECK-ASM: vlrepb |
804 | vuc = vec_splats(uc); |
805 | // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer |
806 | // CHECK-ASM: vlrepb |
807 | vss = vec_splats(ss); |
808 | // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer |
809 | // CHECK-ASM: vlreph |
810 | vus = vec_splats(us); |
811 | // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer |
812 | // CHECK-ASM: vlreph |
813 | vsi = vec_splats(si); |
814 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer |
815 | // CHECK-ASM: vlrepf |
816 | vui = vec_splats(ui); |
817 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer |
818 | // CHECK-ASM: vlrepf |
819 | vsl = vec_splats(sl); |
820 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer |
821 | // CHECK-ASM: vlrepg |
822 | vul = vec_splats(ul); |
823 | // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer |
824 | // CHECK-ASM: vlrepg |
825 | vd = vec_splats(d); |
826 | // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer |
827 | // CHECK-ASM: vlrepg |
828 | |
829 | vsl = vec_extend_s64(vsc); |
830 | // CHECK-ASM: vsegb |
831 | vsl = vec_extend_s64(vss); |
832 | // CHECK-ASM: vsegh |
833 | vsl = vec_extend_s64(vsi); |
834 | // CHECK-ASM: vsegf |
835 | |
836 | vsc = vec_mergeh(vsc, vsc); |
837 | // 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> |
838 | // CHECK-ASM: vmrhb |
839 | vuc = vec_mergeh(vuc, vuc); |
840 | // 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> |
841 | // CHECK-ASM: vmrhb |
842 | vbc = vec_mergeh(vbc, vbc); |
843 | // 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> |
844 | // CHECK-ASM: vmrhb |
845 | vss = vec_mergeh(vss, vss); |
846 | // 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> |
847 | // CHECK-ASM: vmrhh |
848 | vus = vec_mergeh(vus, vus); |
849 | // 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> |
850 | // CHECK-ASM: vmrhh |
851 | vbs = vec_mergeh(vbs, vbs); |
852 | // 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> |
853 | // CHECK-ASM: vmrhh |
854 | vsi = vec_mergeh(vsi, vsi); |
855 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5> |
856 | // CHECK-ASM: vmrhf |
857 | vui = vec_mergeh(vui, vui); |
858 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5> |
859 | // CHECK-ASM: vmrhf |
860 | vbi = vec_mergeh(vbi, vbi); |
861 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5> |
862 | // CHECK-ASM: vmrhf |
863 | vsl = vec_mergeh(vsl, vsl); |
864 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2> |
865 | // CHECK-ASM: vmrhg |
866 | vul = vec_mergeh(vul, vul); |
867 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2> |
868 | // CHECK-ASM: vmrhg |
869 | vbl = vec_mergeh(vbl, vbl); |
870 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2> |
871 | // CHECK-ASM: vmrhg |
872 | vd = vec_mergeh(vd, vd); |
873 | // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2> |
874 | // CHECK-ASM: vmrhg |
875 | |
876 | vsc = vec_mergel(vsc, vsc); |
877 | // 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> |
878 | // CHECK-ASM: vmrlb |
879 | vuc = vec_mergel(vuc, vuc); |
880 | // 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> |
881 | // CHECK-ASM: vmrlb |
882 | vbc = vec_mergel(vbc, vbc); |
883 | // 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> |
884 | // CHECK-ASM: vmrlb |
885 | vss = vec_mergel(vss, vss); |
886 | // 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> |
887 | // CHECK-ASM: vmrlh |
888 | vus = vec_mergel(vus, vus); |
889 | // 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> |
890 | // CHECK-ASM: vmrlh |
891 | vbs = vec_mergel(vbs, vbs); |
892 | // 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> |
893 | // CHECK-ASM: vmrlh |
894 | vsi = vec_mergel(vsi, vsi); |
895 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7> |
896 | // CHECK-ASM: vmrlf |
897 | vui = vec_mergel(vui, vui); |
898 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7> |
899 | // CHECK-ASM: vmrlf |
900 | vbi = vec_mergel(vbi, vbi); |
901 | // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7> |
902 | // CHECK-ASM: vmrlf |
903 | vsl = vec_mergel(vsl, vsl); |
904 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3> |
905 | // CHECK-ASM: vmrlg |
906 | vul = vec_mergel(vul, vul); |
907 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3> |
908 | // CHECK-ASM: vmrlg |
909 | vbl = vec_mergel(vbl, vbl); |
910 | // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3> |
911 | // CHECK-ASM: vmrlg |
912 | vd = vec_mergel(vd, vd); |
913 | // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <i32 1, i32 3> |
914 | // CHECK-ASM: vmrlg |
915 | |
916 | vsc = vec_pack(vss, vss); |
917 | // 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> |
918 | // CHECK-ASM: vpkh |
919 | vuc = vec_pack(vus, vus); |
920 | // 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> |
921 | // CHECK-ASM: vpkh |
922 | vbc = vec_pack(vbs, vbs); |
923 | // 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> |
924 | // CHECK-ASM: vpkh |
925 | vss = vec_pack(vsi, vsi); |
926 | // 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> |
927 | // CHECK-ASM: vpkf |
928 | vus = vec_pack(vui, vui); |
929 | // 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> |
930 | // CHECK-ASM: vpkf |
931 | vbs = vec_pack(vbi, vbi); |
932 | // 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> |
933 | // CHECK-ASM: vpkf |
934 | vsi = vec_pack(vsl, vsl); |
935 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7> |
936 | // CHECK-ASM: vpkg |
937 | vui = vec_pack(vul, vul); |
938 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7> |
939 | // CHECK-ASM: vpkg |
940 | vbi = vec_pack(vbl, vbl); |
941 | // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7> |
942 | // CHECK-ASM: vpkg |
943 | |
944 | vsc = vec_packs(vss, vss); |
945 | // CHECK: call <16 x i8> @llvm.s390.vpksh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
946 | // CHECK-ASM: vpksh |
947 | vuc = vec_packs(vus, vus); |
948 | // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
949 | // CHECK-ASM: vpklsh |
950 | vss = vec_packs(vsi, vsi); |
951 | // CHECK: call <8 x i16> @llvm.s390.vpksf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
952 | // CHECK-ASM: vpksf |
953 | vus = vec_packs(vui, vui); |
954 | // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
955 | // CHECK-ASM: vpklsf |
956 | vsi = vec_packs(vsl, vsl); |
957 | // CHECK: call <4 x i32> @llvm.s390.vpksg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
958 | // CHECK-ASM: vpksg |
959 | vui = vec_packs(vul, vul); |
960 | // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
961 | // CHECK-ASM: vpklsg |
962 | |
963 | vsc = vec_packs_cc(vss, vss, &cc); |
964 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpkshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
965 | // CHECK-ASM: vpkshs |
966 | vuc = vec_packs_cc(vus, vus, &cc); |
967 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
968 | // CHECK-ASM: vpklshs |
969 | vss = vec_packs_cc(vsi, vsi, &cc); |
970 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpksfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
971 | // CHECK-ASM: vpksfs |
972 | vus = vec_packs_cc(vui, vui, &cc); |
973 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
974 | // CHECK-ASM: vpklsfs |
975 | vsi = vec_packs_cc(vsl, vsl, &cc); |
976 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpksgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
977 | // CHECK-ASM: vpksgs |
978 | vui = vec_packs_cc(vul, vul, &cc); |
979 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
980 | // CHECK-ASM: vpklsgs |
981 | |
982 | vuc = vec_packsu(vss, vss); |
983 | // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
984 | // CHECK-ASM: vpklsh |
985 | vuc = vec_packsu(vus, vus); |
986 | // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
987 | // CHECK-ASM: vpklsh |
988 | vus = vec_packsu(vsi, vsi); |
989 | // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
990 | // CHECK-ASM: vpklsf |
991 | vus = vec_packsu(vui, vui); |
992 | // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
993 | // CHECK-ASM: vpklsf |
994 | vui = vec_packsu(vsl, vsl); |
995 | // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
996 | // CHECK-ASM: vpklsg |
997 | vui = vec_packsu(vul, vul); |
998 | // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
999 | // CHECK-ASM: vpklsg |
1000 | |
1001 | vuc = vec_packsu_cc(vus, vus, &cc); |
1002 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1003 | // CHECK-ASM: vpklshs |
1004 | vus = vec_packsu_cc(vui, vui, &cc); |
1005 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1006 | // CHECK-ASM: vpklsfs |
1007 | vui = vec_packsu_cc(vul, vul, &cc); |
1008 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1009 | // CHECK-ASM: vpklsgs |
1010 | |
1011 | vss = vec_unpackh(vsc); |
1012 | // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}}) |
1013 | // CHECK-ASM: vuphb |
1014 | vus = vec_unpackh(vuc); |
1015 | // CHECK: call <8 x i16> @llvm.s390.vuplhb(<16 x i8> %{{.*}}) |
1016 | // CHECK-ASM: vuplhb |
1017 | vbs = vec_unpackh(vbc); |
1018 | // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}}) |
1019 | // CHECK-ASM: vuphb |
1020 | vsi = vec_unpackh(vss); |
1021 | // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}}) |
1022 | // CHECK-ASM: vuphh |
1023 | vui = vec_unpackh(vus); |
1024 | // CHECK: call <4 x i32> @llvm.s390.vuplhh(<8 x i16> %{{.*}}) |
1025 | // CHECK-ASM: vuplhh |
1026 | vbi = vec_unpackh(vbs); |
1027 | // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}}) |
1028 | // CHECK-ASM: vuphh |
1029 | vsl = vec_unpackh(vsi); |
1030 | // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}}) |
1031 | // CHECK-ASM: vuphf |
1032 | vul = vec_unpackh(vui); |
1033 | // CHECK: call <2 x i64> @llvm.s390.vuplhf(<4 x i32> %{{.*}}) |
1034 | // CHECK-ASM: vuplhf |
1035 | vbl = vec_unpackh(vbi); |
1036 | // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}}) |
1037 | // CHECK-ASM: vuphf |
1038 | |
1039 | vss = vec_unpackl(vsc); |
1040 | // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}}) |
1041 | // CHECK-ASM: vuplb |
1042 | vus = vec_unpackl(vuc); |
1043 | // CHECK: call <8 x i16> @llvm.s390.vupllb(<16 x i8> %{{.*}}) |
1044 | // CHECK-ASM: vupllb |
1045 | vbs = vec_unpackl(vbc); |
1046 | // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}}) |
1047 | // CHECK-ASM: vuplb |
1048 | vsi = vec_unpackl(vss); |
1049 | // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}}) |
1050 | // CHECK-ASM: vuplhw |
1051 | vui = vec_unpackl(vus); |
1052 | // CHECK: call <4 x i32> @llvm.s390.vupllh(<8 x i16> %{{.*}}) |
1053 | // CHECK-ASM: vupllh |
1054 | vbi = vec_unpackl(vbs); |
1055 | // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}}) |
1056 | // CHECK-ASM: vuplhw |
1057 | vsl = vec_unpackl(vsi); |
1058 | // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}}) |
1059 | // CHECK-ASM: vuplf |
1060 | vul = vec_unpackl(vui); |
1061 | // CHECK: call <2 x i64> @llvm.s390.vupllf(<4 x i32> %{{.*}}) |
1062 | // CHECK-ASM: vupllf |
1063 | vbl = vec_unpackl(vbi); |
1064 | // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}}) |
1065 | // CHECK-ASM: vuplf |
1066 | } |
1067 | |
1068 | void test_compare(void) { |
1069 | // CHECK-ASM-LABEL: test_compare |
1070 | |
1071 | vbc = vec_cmpeq(vsc, vsc); |
1072 | // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} |
1073 | // CHECK-ASM: vceqb |
1074 | vbc = vec_cmpeq(vuc, vuc); |
1075 | // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} |
1076 | // CHECK-ASM: vceqb |
1077 | vbc = vec_cmpeq(vbc, vbc); |
1078 | // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}} |
1079 | // CHECK-ASM: vceqb |
1080 | vbs = vec_cmpeq(vss, vss); |
1081 | // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} |
1082 | // CHECK-ASM: vceqh |
1083 | vbs = vec_cmpeq(vus, vus); |
1084 | // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} |
1085 | // CHECK-ASM: vceqh |
1086 | vbs = vec_cmpeq(vbs, vbs); |
1087 | // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}} |
1088 | // CHECK-ASM: vceqh |
1089 | vbi = vec_cmpeq(vsi, vsi); |
1090 | // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} |
1091 | // CHECK-ASM: vceqf |
1092 | vbi = vec_cmpeq(vui, vui); |
1093 | // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} |
1094 | // CHECK-ASM: vceqf |
1095 | vbi = vec_cmpeq(vbi, vbi); |
1096 | // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} |
1097 | // CHECK-ASM: vceqf |
1098 | vbl = vec_cmpeq(vsl, vsl); |
1099 | // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} |
1100 | // CHECK-ASM: vceqg |
1101 | vbl = vec_cmpeq(vul, vul); |
1102 | // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} |
1103 | // CHECK-ASM: vceqg |
1104 | vbl = vec_cmpeq(vbl, vbl); |
1105 | // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}} |
1106 | // CHECK-ASM: vceqg |
1107 | vbl = vec_cmpeq(vd, vd); |
1108 | // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}} |
1109 | // CHECK-ASM: vfcedb |
1110 | |
1111 | vbc = vec_cmpge(vsc, vsc); |
1112 | // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}} |
1113 | // CHECK-ASM: vchb |
1114 | vbc = vec_cmpge(vuc, vuc); |
1115 | // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}} |
1116 | // CHECK-ASM: vchlb |
1117 | vbs = vec_cmpge(vss, vss); |
1118 | // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}} |
1119 | // CHECK-ASM: vchh |
1120 | vbs = vec_cmpge(vus, vus); |
1121 | // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}} |
1122 | // CHECK-ASM: vchlh |
1123 | vbi = vec_cmpge(vsi, vsi); |
1124 | // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}} |
1125 | // CHECK-ASM: vchf |
1126 | vbi = vec_cmpge(vui, vui); |
1127 | // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}} |
1128 | // CHECK-ASM: vchlf |
1129 | vbl = vec_cmpge(vsl, vsl); |
1130 | // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}} |
1131 | // CHECK-ASM: vchg |
1132 | vbl = vec_cmpge(vul, vul); |
1133 | // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}} |
1134 | // CHECK-ASM: vchlg |
1135 | vbl = vec_cmpge(vd, vd); |
1136 | // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}} |
1137 | // CHECK-ASM: vfchedb |
1138 | |
1139 | vbc = vec_cmpgt(vsc, vsc); |
1140 | // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}} |
1141 | // CHECK-ASM: vchb |
1142 | vbc = vec_cmpgt(vuc, vuc); |
1143 | // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}} |
1144 | // CHECK-ASM: vchlb |
1145 | vbs = vec_cmpgt(vss, vss); |
1146 | // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}} |
1147 | // CHECK-ASM: vchh |
1148 | vbs = vec_cmpgt(vus, vus); |
1149 | // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}} |
1150 | // CHECK-ASM: vchlh |
1151 | vbi = vec_cmpgt(vsi, vsi); |
1152 | // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}} |
1153 | // CHECK-ASM: vchf |
1154 | vbi = vec_cmpgt(vui, vui); |
1155 | // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}} |
1156 | // CHECK-ASM: vchlf |
1157 | vbl = vec_cmpgt(vsl, vsl); |
1158 | // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}} |
1159 | // CHECK-ASM: vchg |
1160 | vbl = vec_cmpgt(vul, vul); |
1161 | // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}} |
1162 | // CHECK-ASM: vchlg |
1163 | vbl = vec_cmpgt(vd, vd); |
1164 | // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}} |
1165 | // CHECK-ASM: vfchdb |
1166 | |
1167 | vbc = vec_cmple(vsc, vsc); |
1168 | // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}} |
1169 | // CHECK-ASM: vchb |
1170 | vbc = vec_cmple(vuc, vuc); |
1171 | // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}} |
1172 | // CHECK-ASM: vchlb |
1173 | vbs = vec_cmple(vss, vss); |
1174 | // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}} |
1175 | // CHECK-ASM: vchh |
1176 | vbs = vec_cmple(vus, vus); |
1177 | // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}} |
1178 | // CHECK-ASM: vchlh |
1179 | vbi = vec_cmple(vsi, vsi); |
1180 | // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}} |
1181 | // CHECK-ASM: vchf |
1182 | vbi = vec_cmple(vui, vui); |
1183 | // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}} |
1184 | // CHECK-ASM: vchlf |
1185 | vbl = vec_cmple(vsl, vsl); |
1186 | // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}} |
1187 | // CHECK-ASM: vchg |
1188 | vbl = vec_cmple(vul, vul); |
1189 | // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}} |
1190 | // CHECK-ASM: vchlg |
1191 | vbl = vec_cmple(vd, vd); |
1192 | // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}} |
1193 | // CHECK-ASM: vfchedb |
1194 | |
1195 | vbc = vec_cmplt(vsc, vsc); |
1196 | // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}} |
1197 | // CHECK-ASM: vchb |
1198 | vbc = vec_cmplt(vuc, vuc); |
1199 | // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}} |
1200 | // CHECK-ASM: vchlb |
1201 | vbs = vec_cmplt(vss, vss); |
1202 | // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}} |
1203 | // CHECK-ASM: vchh |
1204 | vbs = vec_cmplt(vus, vus); |
1205 | // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}} |
1206 | // CHECK-ASM: vchlh |
1207 | vbi = vec_cmplt(vsi, vsi); |
1208 | // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}} |
1209 | // CHECK-ASM: vchf |
1210 | vbi = vec_cmplt(vui, vui); |
1211 | // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}} |
1212 | // CHECK-ASM: vchlf |
1213 | vbl = vec_cmplt(vsl, vsl); |
1214 | // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}} |
1215 | // CHECK-ASM: vchg |
1216 | vbl = vec_cmplt(vul, vul); |
1217 | // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}} |
1218 | // CHECK-ASM: vchlg |
1219 | vbl = vec_cmplt(vd, vd); |
1220 | // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}} |
1221 | // CHECK-ASM: vfchdb |
1222 | |
1223 | idx = vec_all_eq(vsc, vsc); |
1224 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1225 | // CHECK-ASM: vceqbs |
1226 | idx = vec_all_eq(vsc, vbc); |
1227 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1228 | // CHECK-ASM: vceqbs |
1229 | idx = vec_all_eq(vbc, vsc); |
1230 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1231 | // CHECK-ASM: vceqbs |
1232 | idx = vec_all_eq(vuc, vuc); |
1233 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1234 | // CHECK-ASM: vceqbs |
1235 | idx = vec_all_eq(vuc, vbc); |
1236 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1237 | // CHECK-ASM: vceqbs |
1238 | idx = vec_all_eq(vbc, vuc); |
1239 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1240 | // CHECK-ASM: vceqbs |
1241 | idx = vec_all_eq(vbc, vbc); |
1242 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1243 | // CHECK-ASM: vceqbs |
1244 | idx = vec_all_eq(vss, vss); |
1245 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1246 | // CHECK-ASM: vceqhs |
1247 | idx = vec_all_eq(vss, vbs); |
1248 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1249 | // CHECK-ASM: vceqhs |
1250 | idx = vec_all_eq(vbs, vss); |
1251 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1252 | // CHECK-ASM: vceqhs |
1253 | idx = vec_all_eq(vus, vus); |
1254 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1255 | // CHECK-ASM: vceqhs |
1256 | idx = vec_all_eq(vus, vbs); |
1257 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1258 | // CHECK-ASM: vceqhs |
1259 | idx = vec_all_eq(vbs, vus); |
1260 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1261 | // CHECK-ASM: vceqhs |
1262 | idx = vec_all_eq(vbs, vbs); |
1263 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1264 | // CHECK-ASM: vceqhs |
1265 | idx = vec_all_eq(vsi, vsi); |
1266 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1267 | // CHECK-ASM: vceqfs |
1268 | idx = vec_all_eq(vsi, vbi); |
1269 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1270 | // CHECK-ASM: vceqfs |
1271 | idx = vec_all_eq(vbi, vsi); |
1272 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1273 | // CHECK-ASM: vceqfs |
1274 | idx = vec_all_eq(vui, vui); |
1275 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1276 | // CHECK-ASM: vceqfs |
1277 | idx = vec_all_eq(vui, vbi); |
1278 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1279 | // CHECK-ASM: vceqfs |
1280 | idx = vec_all_eq(vbi, vui); |
1281 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1282 | // CHECK-ASM: vceqfs |
1283 | idx = vec_all_eq(vbi, vbi); |
1284 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1285 | // CHECK-ASM: vceqfs |
1286 | idx = vec_all_eq(vsl, vsl); |
1287 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1288 | // CHECK-ASM: vceqgs |
1289 | idx = vec_all_eq(vsl, vbl); |
1290 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1291 | // CHECK-ASM: vceqgs |
1292 | idx = vec_all_eq(vbl, vsl); |
1293 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1294 | // CHECK-ASM: vceqgs |
1295 | idx = vec_all_eq(vul, vul); |
1296 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1297 | // CHECK-ASM: vceqgs |
1298 | idx = vec_all_eq(vul, vbl); |
1299 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1300 | // CHECK-ASM: vceqgs |
1301 | idx = vec_all_eq(vbl, vul); |
1302 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1303 | // CHECK-ASM: vceqgs |
1304 | idx = vec_all_eq(vbl, vbl); |
1305 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1306 | // CHECK-ASM: vceqgs |
1307 | idx = vec_all_eq(vd, vd); |
1308 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1309 | // CHECK-ASM: vfcedbs |
1310 | |
1311 | idx = vec_all_ne(vsc, vsc); |
1312 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1313 | // CHECK-ASM: vceqbs |
1314 | idx = vec_all_ne(vsc, vbc); |
1315 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1316 | // CHECK-ASM: vceqbs |
1317 | idx = vec_all_ne(vbc, vsc); |
1318 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1319 | // CHECK-ASM: vceqbs |
1320 | idx = vec_all_ne(vuc, vuc); |
1321 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1322 | // CHECK-ASM: vceqbs |
1323 | idx = vec_all_ne(vuc, vbc); |
1324 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1325 | // CHECK-ASM: vceqbs |
1326 | idx = vec_all_ne(vbc, vuc); |
1327 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1328 | // CHECK-ASM: vceqbs |
1329 | idx = vec_all_ne(vbc, vbc); |
1330 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1331 | // CHECK-ASM: vceqbs |
1332 | idx = vec_all_ne(vss, vss); |
1333 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1334 | // CHECK-ASM: vceqhs |
1335 | idx = vec_all_ne(vss, vbs); |
1336 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1337 | // CHECK-ASM: vceqhs |
1338 | idx = vec_all_ne(vbs, vss); |
1339 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1340 | // CHECK-ASM: vceqhs |
1341 | idx = vec_all_ne(vus, vus); |
1342 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1343 | // CHECK-ASM: vceqhs |
1344 | idx = vec_all_ne(vus, vbs); |
1345 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1346 | // CHECK-ASM: vceqhs |
1347 | idx = vec_all_ne(vbs, vus); |
1348 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1349 | // CHECK-ASM: vceqhs |
1350 | idx = vec_all_ne(vbs, vbs); |
1351 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1352 | // CHECK-ASM: vceqhs |
1353 | idx = vec_all_ne(vsi, vsi); |
1354 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1355 | // CHECK-ASM: vceqfs |
1356 | idx = vec_all_ne(vsi, vbi); |
1357 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1358 | // CHECK-ASM: vceqfs |
1359 | idx = vec_all_ne(vbi, vsi); |
1360 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1361 | // CHECK-ASM: vceqfs |
1362 | idx = vec_all_ne(vui, vui); |
1363 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1364 | // CHECK-ASM: vceqfs |
1365 | idx = vec_all_ne(vui, vbi); |
1366 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1367 | // CHECK-ASM: vceqfs |
1368 | idx = vec_all_ne(vbi, vui); |
1369 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1370 | // CHECK-ASM: vceqfs |
1371 | idx = vec_all_ne(vbi, vbi); |
1372 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1373 | // CHECK-ASM: vceqfs |
1374 | idx = vec_all_ne(vsl, vsl); |
1375 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1376 | // CHECK-ASM: vceqgs |
1377 | idx = vec_all_ne(vsl, vbl); |
1378 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1379 | // CHECK-ASM: vceqgs |
1380 | idx = vec_all_ne(vbl, vsl); |
1381 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1382 | // CHECK-ASM: vceqgs |
1383 | idx = vec_all_ne(vul, vul); |
1384 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1385 | // CHECK-ASM: vceqgs |
1386 | idx = vec_all_ne(vul, vbl); |
1387 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1388 | // CHECK-ASM: vceqgs |
1389 | idx = vec_all_ne(vbl, vul); |
1390 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1391 | // CHECK-ASM: vceqgs |
1392 | idx = vec_all_ne(vbl, vbl); |
1393 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1394 | // CHECK-ASM: vceqgs |
1395 | idx = vec_all_ne(vd, vd); |
1396 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1397 | // CHECK-ASM: vfcedbs |
1398 | |
1399 | idx = vec_all_ge(vsc, vsc); |
1400 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1401 | // CHECK-ASM: vchbs |
1402 | idx = vec_all_ge(vsc, vbc); |
1403 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1404 | // CHECK-ASM: vchbs |
1405 | idx = vec_all_ge(vbc, vsc); |
1406 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1407 | // CHECK-ASM: vchbs |
1408 | idx = vec_all_ge(vuc, vuc); |
1409 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1410 | // CHECK-ASM: vchlbs |
1411 | idx = vec_all_ge(vuc, vbc); |
1412 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1413 | // CHECK-ASM: vchlbs |
1414 | idx = vec_all_ge(vbc, vuc); |
1415 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1416 | // CHECK-ASM: vchlbs |
1417 | idx = vec_all_ge(vbc, vbc); |
1418 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1419 | // CHECK-ASM: vchlbs |
1420 | idx = vec_all_ge(vss, vss); |
1421 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1422 | // CHECK-ASM: vchhs |
1423 | idx = vec_all_ge(vss, vbs); |
1424 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1425 | // CHECK-ASM: vchhs |
1426 | idx = vec_all_ge(vbs, vss); |
1427 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1428 | // CHECK-ASM: vchhs |
1429 | idx = vec_all_ge(vus, vus); |
1430 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1431 | // CHECK-ASM: vchlhs |
1432 | idx = vec_all_ge(vus, vbs); |
1433 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1434 | // CHECK-ASM: vchlhs |
1435 | idx = vec_all_ge(vbs, vus); |
1436 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1437 | // CHECK-ASM: vchlhs |
1438 | idx = vec_all_ge(vbs, vbs); |
1439 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1440 | // CHECK-ASM: vchlhs |
1441 | idx = vec_all_ge(vsi, vsi); |
1442 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1443 | // CHECK-ASM: vchfs |
1444 | idx = vec_all_ge(vsi, vbi); |
1445 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1446 | // CHECK-ASM: vchfs |
1447 | idx = vec_all_ge(vbi, vsi); |
1448 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1449 | // CHECK-ASM: vchfs |
1450 | idx = vec_all_ge(vui, vui); |
1451 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1452 | // CHECK-ASM: vchlfs |
1453 | idx = vec_all_ge(vui, vbi); |
1454 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1455 | // CHECK-ASM: vchlfs |
1456 | idx = vec_all_ge(vbi, vui); |
1457 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1458 | // CHECK-ASM: vchlfs |
1459 | idx = vec_all_ge(vbi, vbi); |
1460 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1461 | // CHECK-ASM: vchlfs |
1462 | idx = vec_all_ge(vsl, vsl); |
1463 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1464 | // CHECK-ASM: vchgs |
1465 | idx = vec_all_ge(vsl, vbl); |
1466 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1467 | // CHECK-ASM: vchgs |
1468 | idx = vec_all_ge(vbl, vsl); |
1469 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1470 | // CHECK-ASM: vchgs |
1471 | idx = vec_all_ge(vul, vul); |
1472 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1473 | // CHECK-ASM: vchlgs |
1474 | idx = vec_all_ge(vul, vbl); |
1475 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1476 | // CHECK-ASM: vchlgs |
1477 | idx = vec_all_ge(vbl, vul); |
1478 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1479 | // CHECK-ASM: vchlgs |
1480 | idx = vec_all_ge(vbl, vbl); |
1481 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1482 | // CHECK-ASM: vchlgs |
1483 | idx = vec_all_ge(vd, vd); |
1484 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1485 | // CHECK-ASM: vfchedbs |
1486 | |
1487 | idx = vec_all_gt(vsc, vsc); |
1488 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1489 | // CHECK-ASM: vchbs |
1490 | idx = vec_all_gt(vsc, vbc); |
1491 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1492 | // CHECK-ASM: vchbs |
1493 | idx = vec_all_gt(vbc, vsc); |
1494 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1495 | // CHECK-ASM: vchbs |
1496 | idx = vec_all_gt(vuc, vuc); |
1497 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1498 | // CHECK-ASM: vchlbs |
1499 | idx = vec_all_gt(vuc, vbc); |
1500 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1501 | // CHECK-ASM: vchlbs |
1502 | idx = vec_all_gt(vbc, vuc); |
1503 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1504 | // CHECK-ASM: vchlbs |
1505 | idx = vec_all_gt(vbc, vbc); |
1506 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1507 | // CHECK-ASM: vchlbs |
1508 | idx = vec_all_gt(vss, vss); |
1509 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1510 | // CHECK-ASM: vchhs |
1511 | idx = vec_all_gt(vss, vbs); |
1512 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1513 | // CHECK-ASM: vchhs |
1514 | idx = vec_all_gt(vbs, vss); |
1515 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1516 | // CHECK-ASM: vchhs |
1517 | idx = vec_all_gt(vus, vus); |
1518 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1519 | // CHECK-ASM: vchlhs |
1520 | idx = vec_all_gt(vus, vbs); |
1521 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1522 | // CHECK-ASM: vchlhs |
1523 | idx = vec_all_gt(vbs, vus); |
1524 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1525 | // CHECK-ASM: vchlhs |
1526 | idx = vec_all_gt(vbs, vbs); |
1527 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1528 | // CHECK-ASM: vchlhs |
1529 | idx = vec_all_gt(vsi, vsi); |
1530 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1531 | // CHECK-ASM: vchfs |
1532 | idx = vec_all_gt(vsi, vbi); |
1533 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1534 | // CHECK-ASM: vchfs |
1535 | idx = vec_all_gt(vbi, vsi); |
1536 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1537 | // CHECK-ASM: vchfs |
1538 | idx = vec_all_gt(vui, vui); |
1539 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1540 | // CHECK-ASM: vchlfs |
1541 | idx = vec_all_gt(vui, vbi); |
1542 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1543 | // CHECK-ASM: vchlfs |
1544 | idx = vec_all_gt(vbi, vui); |
1545 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1546 | // CHECK-ASM: vchlfs |
1547 | idx = vec_all_gt(vbi, vbi); |
1548 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1549 | // CHECK-ASM: vchlfs |
1550 | idx = vec_all_gt(vsl, vsl); |
1551 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1552 | // CHECK-ASM: vchgs |
1553 | idx = vec_all_gt(vsl, vbl); |
1554 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1555 | // CHECK-ASM: vchgs |
1556 | idx = vec_all_gt(vbl, vsl); |
1557 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1558 | // CHECK-ASM: vchgs |
1559 | idx = vec_all_gt(vul, vul); |
1560 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1561 | // CHECK-ASM: vchlgs |
1562 | idx = vec_all_gt(vul, vbl); |
1563 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1564 | // CHECK-ASM: vchlgs |
1565 | idx = vec_all_gt(vbl, vul); |
1566 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1567 | // CHECK-ASM: vchlgs |
1568 | idx = vec_all_gt(vbl, vbl); |
1569 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1570 | // CHECK-ASM: vchlgs |
1571 | idx = vec_all_gt(vd, vd); |
1572 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1573 | // CHECK-ASM: vfchdbs |
1574 | |
1575 | idx = vec_all_le(vsc, vsc); |
1576 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1577 | // CHECK-ASM: vchbs |
1578 | idx = vec_all_le(vsc, vbc); |
1579 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1580 | // CHECK-ASM: vchbs |
1581 | idx = vec_all_le(vbc, vsc); |
1582 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1583 | // CHECK-ASM: vchbs |
1584 | idx = vec_all_le(vuc, vuc); |
1585 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1586 | // CHECK-ASM: vchlbs |
1587 | idx = vec_all_le(vuc, vbc); |
1588 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1589 | // CHECK-ASM: vchlbs |
1590 | idx = vec_all_le(vbc, vuc); |
1591 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1592 | // CHECK-ASM: vchlbs |
1593 | idx = vec_all_le(vbc, vbc); |
1594 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1595 | // CHECK-ASM: vchlbs |
1596 | idx = vec_all_le(vss, vss); |
1597 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1598 | // CHECK-ASM: vchhs |
1599 | idx = vec_all_le(vss, vbs); |
1600 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1601 | // CHECK-ASM: vchhs |
1602 | idx = vec_all_le(vbs, vss); |
1603 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1604 | // CHECK-ASM: vchhs |
1605 | idx = vec_all_le(vus, vus); |
1606 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1607 | // CHECK-ASM: vchlhs |
1608 | idx = vec_all_le(vus, vbs); |
1609 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1610 | // CHECK-ASM: vchlhs |
1611 | idx = vec_all_le(vbs, vus); |
1612 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1613 | // CHECK-ASM: vchlhs |
1614 | idx = vec_all_le(vbs, vbs); |
1615 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1616 | // CHECK-ASM: vchlhs |
1617 | idx = vec_all_le(vsi, vsi); |
1618 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1619 | // CHECK-ASM: vchfs |
1620 | idx = vec_all_le(vsi, vbi); |
1621 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1622 | // CHECK-ASM: vchfs |
1623 | idx = vec_all_le(vbi, vsi); |
1624 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1625 | // CHECK-ASM: vchfs |
1626 | idx = vec_all_le(vui, vui); |
1627 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1628 | // CHECK-ASM: vchlfs |
1629 | idx = vec_all_le(vui, vbi); |
1630 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1631 | // CHECK-ASM: vchlfs |
1632 | idx = vec_all_le(vbi, vui); |
1633 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1634 | // CHECK-ASM: vchlfs |
1635 | idx = vec_all_le(vbi, vbi); |
1636 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1637 | // CHECK-ASM: vchlfs |
1638 | idx = vec_all_le(vsl, vsl); |
1639 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1640 | // CHECK-ASM: vchgs |
1641 | idx = vec_all_le(vsl, vbl); |
1642 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1643 | // CHECK-ASM: vchgs |
1644 | idx = vec_all_le(vbl, vsl); |
1645 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1646 | // CHECK-ASM: vchgs |
1647 | idx = vec_all_le(vul, vul); |
1648 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1649 | // CHECK-ASM: vchlgs |
1650 | idx = vec_all_le(vul, vbl); |
1651 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1652 | // CHECK-ASM: vchlgs |
1653 | idx = vec_all_le(vbl, vul); |
1654 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1655 | // CHECK-ASM: vchlgs |
1656 | idx = vec_all_le(vbl, vbl); |
1657 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1658 | // CHECK-ASM: vchlgs |
1659 | idx = vec_all_le(vd, vd); |
1660 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1661 | // CHECK-ASM: vfchedbs |
1662 | |
1663 | idx = vec_all_lt(vsc, vsc); |
1664 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1665 | // CHECK-ASM: vchbs |
1666 | idx = vec_all_lt(vsc, vbc); |
1667 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1668 | // CHECK-ASM: vchbs |
1669 | idx = vec_all_lt(vbc, vsc); |
1670 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1671 | // CHECK-ASM: vchbs |
1672 | idx = vec_all_lt(vuc, vuc); |
1673 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1674 | // CHECK-ASM: vchlbs |
1675 | idx = vec_all_lt(vuc, vbc); |
1676 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1677 | // CHECK-ASM: vchlbs |
1678 | idx = vec_all_lt(vbc, vuc); |
1679 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1680 | // CHECK-ASM: vchlbs |
1681 | idx = vec_all_lt(vbc, vbc); |
1682 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1683 | // CHECK-ASM: vchlbs |
1684 | idx = vec_all_lt(vss, vss); |
1685 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1686 | // CHECK-ASM: vchhs |
1687 | idx = vec_all_lt(vss, vbs); |
1688 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1689 | // CHECK-ASM: vchhs |
1690 | idx = vec_all_lt(vbs, vss); |
1691 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1692 | // CHECK-ASM: vchhs |
1693 | idx = vec_all_lt(vus, vus); |
1694 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1695 | // CHECK-ASM: vchlhs |
1696 | idx = vec_all_lt(vus, vbs); |
1697 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1698 | // CHECK-ASM: vchlhs |
1699 | idx = vec_all_lt(vbs, vus); |
1700 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1701 | // CHECK-ASM: vchlhs |
1702 | idx = vec_all_lt(vbs, vbs); |
1703 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1704 | // CHECK-ASM: vchlhs |
1705 | idx = vec_all_lt(vsi, vsi); |
1706 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1707 | // CHECK-ASM: vchfs |
1708 | idx = vec_all_lt(vsi, vbi); |
1709 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1710 | // CHECK-ASM: vchfs |
1711 | idx = vec_all_lt(vbi, vsi); |
1712 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1713 | // CHECK-ASM: vchfs |
1714 | idx = vec_all_lt(vui, vui); |
1715 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1716 | // CHECK-ASM: vchlfs |
1717 | idx = vec_all_lt(vui, vbi); |
1718 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1719 | // CHECK-ASM: vchlfs |
1720 | idx = vec_all_lt(vbi, vui); |
1721 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1722 | // CHECK-ASM: vchlfs |
1723 | idx = vec_all_lt(vbi, vbi); |
1724 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1725 | // CHECK-ASM: vchlfs |
1726 | idx = vec_all_lt(vsl, vsl); |
1727 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1728 | // CHECK-ASM: vchgs |
1729 | idx = vec_all_lt(vsl, vbl); |
1730 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1731 | // CHECK-ASM: vchgs |
1732 | idx = vec_all_lt(vbl, vsl); |
1733 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1734 | // CHECK-ASM: vchgs |
1735 | idx = vec_all_lt(vul, vul); |
1736 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1737 | // CHECK-ASM: vchlgs |
1738 | idx = vec_all_lt(vul, vbl); |
1739 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1740 | // CHECK-ASM: vchlgs |
1741 | idx = vec_all_lt(vbl, vul); |
1742 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1743 | // CHECK-ASM: vchlgs |
1744 | idx = vec_all_lt(vbl, vbl); |
1745 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1746 | // CHECK-ASM: vchlgs |
1747 | idx = vec_all_lt(vd, vd); |
1748 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1749 | // CHECK-ASM: vfchdbs |
1750 | |
1751 | idx = vec_all_nge(vd, vd); |
1752 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1753 | // CHECK-ASM: vfchedbs |
1754 | idx = vec_all_ngt(vd, vd); |
1755 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1756 | // CHECK-ASM: vfchdbs |
1757 | idx = vec_all_nle(vd, vd); |
1758 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1759 | // CHECK-ASM: vfchedbs |
1760 | idx = vec_all_nlt(vd, vd); |
1761 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1762 | // CHECK-ASM: vfchdbs |
1763 | |
1764 | idx = vec_all_nan(vd); |
1765 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15) |
1766 | // CHECK-ASM: vftcidb |
1767 | idx = vec_all_numeric(vd); |
1768 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15) |
1769 | // CHECK-ASM: vftcidb |
1770 | |
1771 | idx = vec_any_eq(vsc, vsc); |
1772 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1773 | // CHECK-ASM: vceqbs |
1774 | idx = vec_any_eq(vsc, vbc); |
1775 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1776 | // CHECK-ASM: vceqbs |
1777 | idx = vec_any_eq(vbc, vsc); |
1778 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1779 | // CHECK-ASM: vceqbs |
1780 | idx = vec_any_eq(vuc, vuc); |
1781 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1782 | // CHECK-ASM: vceqbs |
1783 | idx = vec_any_eq(vuc, vbc); |
1784 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1785 | // CHECK-ASM: vceqbs |
1786 | idx = vec_any_eq(vbc, vuc); |
1787 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1788 | // CHECK-ASM: vceqbs |
1789 | idx = vec_any_eq(vbc, vbc); |
1790 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1791 | // CHECK-ASM: vceqbs |
1792 | idx = vec_any_eq(vss, vss); |
1793 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1794 | // CHECK-ASM: vceqhs |
1795 | idx = vec_any_eq(vss, vbs); |
1796 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1797 | // CHECK-ASM: vceqhs |
1798 | idx = vec_any_eq(vbs, vss); |
1799 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1800 | // CHECK-ASM: vceqhs |
1801 | idx = vec_any_eq(vus, vus); |
1802 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1803 | // CHECK-ASM: vceqhs |
1804 | idx = vec_any_eq(vus, vbs); |
1805 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1806 | // CHECK-ASM: vceqhs |
1807 | idx = vec_any_eq(vbs, vus); |
1808 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1809 | // CHECK-ASM: vceqhs |
1810 | idx = vec_any_eq(vbs, vbs); |
1811 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1812 | // CHECK-ASM: vceqhs |
1813 | idx = vec_any_eq(vsi, vsi); |
1814 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1815 | // CHECK-ASM: vceqfs |
1816 | idx = vec_any_eq(vsi, vbi); |
1817 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1818 | // CHECK-ASM: vceqfs |
1819 | idx = vec_any_eq(vbi, vsi); |
1820 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1821 | // CHECK-ASM: vceqfs |
1822 | idx = vec_any_eq(vui, vui); |
1823 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1824 | // CHECK-ASM: vceqfs |
1825 | idx = vec_any_eq(vui, vbi); |
1826 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1827 | // CHECK-ASM: vceqfs |
1828 | idx = vec_any_eq(vbi, vui); |
1829 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1830 | // CHECK-ASM: vceqfs |
1831 | idx = vec_any_eq(vbi, vbi); |
1832 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1833 | // CHECK-ASM: vceqfs |
1834 | idx = vec_any_eq(vsl, vsl); |
1835 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1836 | // CHECK-ASM: vceqgs |
1837 | idx = vec_any_eq(vsl, vbl); |
1838 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1839 | // CHECK-ASM: vceqgs |
1840 | idx = vec_any_eq(vbl, vsl); |
1841 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1842 | // CHECK-ASM: vceqgs |
1843 | idx = vec_any_eq(vul, vul); |
1844 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1845 | // CHECK-ASM: vceqgs |
1846 | idx = vec_any_eq(vul, vbl); |
1847 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1848 | // CHECK-ASM: vceqgs |
1849 | idx = vec_any_eq(vbl, vul); |
1850 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1851 | // CHECK-ASM: vceqgs |
1852 | idx = vec_any_eq(vbl, vbl); |
1853 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1854 | // CHECK-ASM: vceqgs |
1855 | idx = vec_any_eq(vd, vd); |
1856 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1857 | // CHECK-ASM: vfcedbs |
1858 | |
1859 | idx = vec_any_ne(vsc, vsc); |
1860 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1861 | // CHECK-ASM: vceqbs |
1862 | idx = vec_any_ne(vsc, vbc); |
1863 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1864 | // CHECK-ASM: vceqbs |
1865 | idx = vec_any_ne(vbc, vsc); |
1866 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1867 | // CHECK-ASM: vceqbs |
1868 | idx = vec_any_ne(vuc, vuc); |
1869 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1870 | // CHECK-ASM: vceqbs |
1871 | idx = vec_any_ne(vuc, vbc); |
1872 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1873 | // CHECK-ASM: vceqbs |
1874 | idx = vec_any_ne(vbc, vuc); |
1875 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1876 | // CHECK-ASM: vceqbs |
1877 | idx = vec_any_ne(vbc, vbc); |
1878 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1879 | // CHECK-ASM: vceqbs |
1880 | idx = vec_any_ne(vss, vss); |
1881 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1882 | // CHECK-ASM: vceqhs |
1883 | idx = vec_any_ne(vss, vbs); |
1884 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1885 | // CHECK-ASM: vceqhs |
1886 | idx = vec_any_ne(vbs, vss); |
1887 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1888 | // CHECK-ASM: vceqhs |
1889 | idx = vec_any_ne(vus, vus); |
1890 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1891 | // CHECK-ASM: vceqhs |
1892 | idx = vec_any_ne(vus, vbs); |
1893 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1894 | // CHECK-ASM: vceqhs |
1895 | idx = vec_any_ne(vbs, vus); |
1896 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1897 | // CHECK-ASM: vceqhs |
1898 | idx = vec_any_ne(vbs, vbs); |
1899 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1900 | // CHECK-ASM: vceqhs |
1901 | idx = vec_any_ne(vsi, vsi); |
1902 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1903 | // CHECK-ASM: vceqfs |
1904 | idx = vec_any_ne(vsi, vbi); |
1905 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1906 | // CHECK-ASM: vceqfs |
1907 | idx = vec_any_ne(vbi, vsi); |
1908 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1909 | // CHECK-ASM: vceqfs |
1910 | idx = vec_any_ne(vui, vui); |
1911 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1912 | // CHECK-ASM: vceqfs |
1913 | idx = vec_any_ne(vui, vbi); |
1914 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1915 | // CHECK-ASM: vceqfs |
1916 | idx = vec_any_ne(vbi, vui); |
1917 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1918 | // CHECK-ASM: vceqfs |
1919 | idx = vec_any_ne(vbi, vbi); |
1920 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1921 | // CHECK-ASM: vceqfs |
1922 | idx = vec_any_ne(vsl, vsl); |
1923 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1924 | // CHECK-ASM: vceqgs |
1925 | idx = vec_any_ne(vsl, vbl); |
1926 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1927 | // CHECK-ASM: vceqgs |
1928 | idx = vec_any_ne(vbl, vsl); |
1929 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1930 | // CHECK-ASM: vceqgs |
1931 | idx = vec_any_ne(vul, vul); |
1932 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1933 | // CHECK-ASM: vceqgs |
1934 | idx = vec_any_ne(vul, vbl); |
1935 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1936 | // CHECK-ASM: vceqgs |
1937 | idx = vec_any_ne(vbl, vul); |
1938 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1939 | // CHECK-ASM: vceqgs |
1940 | idx = vec_any_ne(vbl, vbl); |
1941 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
1942 | // CHECK-ASM: vceqgs |
1943 | idx = vec_any_ne(vd, vd); |
1944 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
1945 | // CHECK-ASM: vfcedbs |
1946 | |
1947 | idx = vec_any_ge(vsc, vsc); |
1948 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1949 | // CHECK-ASM: vchbs |
1950 | idx = vec_any_ge(vsc, vbc); |
1951 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1952 | // CHECK-ASM: vchbs |
1953 | idx = vec_any_ge(vbc, vsc); |
1954 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1955 | // CHECK-ASM: vchbs |
1956 | idx = vec_any_ge(vuc, vuc); |
1957 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1958 | // CHECK-ASM: vchlbs |
1959 | idx = vec_any_ge(vuc, vbc); |
1960 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1961 | // CHECK-ASM: vchlbs |
1962 | idx = vec_any_ge(vbc, vuc); |
1963 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1964 | // CHECK-ASM: vchlbs |
1965 | idx = vec_any_ge(vbc, vbc); |
1966 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
1967 | // CHECK-ASM: vchlbs |
1968 | idx = vec_any_ge(vss, vss); |
1969 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1970 | // CHECK-ASM: vchhs |
1971 | idx = vec_any_ge(vss, vbs); |
1972 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1973 | // CHECK-ASM: vchhs |
1974 | idx = vec_any_ge(vbs, vss); |
1975 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1976 | // CHECK-ASM: vchhs |
1977 | idx = vec_any_ge(vus, vus); |
1978 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1979 | // CHECK-ASM: vchlhs |
1980 | idx = vec_any_ge(vus, vbs); |
1981 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1982 | // CHECK-ASM: vchlhs |
1983 | idx = vec_any_ge(vbs, vus); |
1984 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1985 | // CHECK-ASM: vchlhs |
1986 | idx = vec_any_ge(vbs, vbs); |
1987 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
1988 | // CHECK-ASM: vchlhs |
1989 | idx = vec_any_ge(vsi, vsi); |
1990 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1991 | // CHECK-ASM: vchfs |
1992 | idx = vec_any_ge(vsi, vbi); |
1993 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1994 | // CHECK-ASM: vchfs |
1995 | idx = vec_any_ge(vbi, vsi); |
1996 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
1997 | // CHECK-ASM: vchfs |
1998 | idx = vec_any_ge(vui, vui); |
1999 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2000 | // CHECK-ASM: vchlfs |
2001 | idx = vec_any_ge(vui, vbi); |
2002 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2003 | // CHECK-ASM: vchlfs |
2004 | idx = vec_any_ge(vbi, vui); |
2005 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2006 | // CHECK-ASM: vchlfs |
2007 | idx = vec_any_ge(vbi, vbi); |
2008 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2009 | // CHECK-ASM: vchlfs |
2010 | idx = vec_any_ge(vsl, vsl); |
2011 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2012 | // CHECK-ASM: vchgs |
2013 | idx = vec_any_ge(vsl, vbl); |
2014 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2015 | // CHECK-ASM: vchgs |
2016 | idx = vec_any_ge(vbl, vsl); |
2017 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2018 | // CHECK-ASM: vchgs |
2019 | idx = vec_any_ge(vul, vul); |
2020 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2021 | // CHECK-ASM: vchlgs |
2022 | idx = vec_any_ge(vul, vbl); |
2023 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2024 | // CHECK-ASM: vchlgs |
2025 | idx = vec_any_ge(vbl, vul); |
2026 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2027 | // CHECK-ASM: vchlgs |
2028 | idx = vec_any_ge(vbl, vbl); |
2029 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2030 | // CHECK-ASM: vchlgs |
2031 | idx = vec_any_ge(vd, vd); |
2032 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2033 | // CHECK-ASM: vfchedbs |
2034 | |
2035 | idx = vec_any_gt(vsc, vsc); |
2036 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2037 | // CHECK-ASM: vchbs |
2038 | idx = vec_any_gt(vsc, vbc); |
2039 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2040 | // CHECK-ASM: vchbs |
2041 | idx = vec_any_gt(vbc, vsc); |
2042 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2043 | // CHECK-ASM: vchbs |
2044 | idx = vec_any_gt(vuc, vuc); |
2045 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2046 | // CHECK-ASM: vchlbs |
2047 | idx = vec_any_gt(vuc, vbc); |
2048 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2049 | // CHECK-ASM: vchlbs |
2050 | idx = vec_any_gt(vbc, vuc); |
2051 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2052 | // CHECK-ASM: vchlbs |
2053 | idx = vec_any_gt(vbc, vbc); |
2054 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2055 | // CHECK-ASM: vchlbs |
2056 | idx = vec_any_gt(vss, vss); |
2057 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2058 | // CHECK-ASM: vchhs |
2059 | idx = vec_any_gt(vss, vbs); |
2060 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2061 | // CHECK-ASM: vchhs |
2062 | idx = vec_any_gt(vbs, vss); |
2063 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2064 | // CHECK-ASM: vchhs |
2065 | idx = vec_any_gt(vus, vus); |
2066 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2067 | // CHECK-ASM: vchlhs |
2068 | idx = vec_any_gt(vus, vbs); |
2069 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2070 | // CHECK-ASM: vchlhs |
2071 | idx = vec_any_gt(vbs, vus); |
2072 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2073 | // CHECK-ASM: vchlhs |
2074 | idx = vec_any_gt(vbs, vbs); |
2075 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2076 | // CHECK-ASM: vchlhs |
2077 | idx = vec_any_gt(vsi, vsi); |
2078 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2079 | // CHECK-ASM: vchfs |
2080 | idx = vec_any_gt(vsi, vbi); |
2081 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2082 | // CHECK-ASM: vchfs |
2083 | idx = vec_any_gt(vbi, vsi); |
2084 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2085 | // CHECK-ASM: vchfs |
2086 | idx = vec_any_gt(vui, vui); |
2087 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2088 | // CHECK-ASM: vchlfs |
2089 | idx = vec_any_gt(vui, vbi); |
2090 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2091 | // CHECK-ASM: vchlfs |
2092 | idx = vec_any_gt(vbi, vui); |
2093 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2094 | // CHECK-ASM: vchlfs |
2095 | idx = vec_any_gt(vbi, vbi); |
2096 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2097 | // CHECK-ASM: vchlfs |
2098 | idx = vec_any_gt(vsl, vsl); |
2099 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2100 | // CHECK-ASM: vchgs |
2101 | idx = vec_any_gt(vsl, vbl); |
2102 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2103 | // CHECK-ASM: vchgs |
2104 | idx = vec_any_gt(vbl, vsl); |
2105 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2106 | // CHECK-ASM: vchgs |
2107 | idx = vec_any_gt(vul, vul); |
2108 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2109 | // CHECK-ASM: vchlgs |
2110 | idx = vec_any_gt(vul, vbl); |
2111 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2112 | // CHECK-ASM: vchlgs |
2113 | idx = vec_any_gt(vbl, vul); |
2114 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2115 | // CHECK-ASM: vchlgs |
2116 | idx = vec_any_gt(vbl, vbl); |
2117 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2118 | // CHECK-ASM: vchlgs |
2119 | idx = vec_any_gt(vd, vd); |
2120 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2121 | // CHECK-ASM: vfchdbs |
2122 | |
2123 | idx = vec_any_le(vsc, vsc); |
2124 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2125 | // CHECK-ASM: vchbs |
2126 | idx = vec_any_le(vsc, vbc); |
2127 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2128 | // CHECK-ASM: vchbs |
2129 | idx = vec_any_le(vbc, vsc); |
2130 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2131 | // CHECK-ASM: vchbs |
2132 | idx = vec_any_le(vuc, vuc); |
2133 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2134 | // CHECK-ASM: vchlbs |
2135 | idx = vec_any_le(vuc, vbc); |
2136 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2137 | // CHECK-ASM: vchlbs |
2138 | idx = vec_any_le(vbc, vuc); |
2139 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2140 | // CHECK-ASM: vchlbs |
2141 | idx = vec_any_le(vbc, vbc); |
2142 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2143 | // CHECK-ASM: vchlbs |
2144 | idx = vec_any_le(vss, vss); |
2145 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2146 | // CHECK-ASM: vchhs |
2147 | idx = vec_any_le(vss, vbs); |
2148 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2149 | // CHECK-ASM: vchhs |
2150 | idx = vec_any_le(vbs, vss); |
2151 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2152 | // CHECK-ASM: vchhs |
2153 | idx = vec_any_le(vus, vus); |
2154 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2155 | // CHECK-ASM: vchlhs |
2156 | idx = vec_any_le(vus, vbs); |
2157 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2158 | // CHECK-ASM: vchlhs |
2159 | idx = vec_any_le(vbs, vus); |
2160 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2161 | // CHECK-ASM: vchlhs |
2162 | idx = vec_any_le(vbs, vbs); |
2163 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2164 | // CHECK-ASM: vchlhs |
2165 | idx = vec_any_le(vsi, vsi); |
2166 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2167 | // CHECK-ASM: vchfs |
2168 | idx = vec_any_le(vsi, vbi); |
2169 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2170 | // CHECK-ASM: vchfs |
2171 | idx = vec_any_le(vbi, vsi); |
2172 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2173 | // CHECK-ASM: vchfs |
2174 | idx = vec_any_le(vui, vui); |
2175 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2176 | // CHECK-ASM: vchlfs |
2177 | idx = vec_any_le(vui, vbi); |
2178 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2179 | // CHECK-ASM: vchlfs |
2180 | idx = vec_any_le(vbi, vui); |
2181 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2182 | // CHECK-ASM: vchlfs |
2183 | idx = vec_any_le(vbi, vbi); |
2184 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2185 | // CHECK-ASM: vchlfs |
2186 | idx = vec_any_le(vsl, vsl); |
2187 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2188 | // CHECK-ASM: vchgs |
2189 | idx = vec_any_le(vsl, vbl); |
2190 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2191 | // CHECK-ASM: vchgs |
2192 | idx = vec_any_le(vbl, vsl); |
2193 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2194 | // CHECK-ASM: vchgs |
2195 | idx = vec_any_le(vul, vul); |
2196 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2197 | // CHECK-ASM: vchlgs |
2198 | idx = vec_any_le(vul, vbl); |
2199 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2200 | // CHECK-ASM: vchlgs |
2201 | idx = vec_any_le(vbl, vul); |
2202 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2203 | // CHECK-ASM: vchlgs |
2204 | idx = vec_any_le(vbl, vbl); |
2205 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2206 | // CHECK-ASM: vchlgs |
2207 | idx = vec_any_le(vd, vd); |
2208 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2209 | // CHECK-ASM: vfchedbs |
2210 | |
2211 | idx = vec_any_lt(vsc, vsc); |
2212 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2213 | // CHECK-ASM: vchbs |
2214 | idx = vec_any_lt(vsc, vbc); |
2215 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2216 | // CHECK-ASM: vchbs |
2217 | idx = vec_any_lt(vbc, vsc); |
2218 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2219 | // CHECK-ASM: vchbs |
2220 | idx = vec_any_lt(vuc, vuc); |
2221 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2222 | // CHECK-ASM: vchlbs |
2223 | idx = vec_any_lt(vuc, vbc); |
2224 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2225 | // CHECK-ASM: vchlbs |
2226 | idx = vec_any_lt(vbc, vuc); |
2227 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2228 | // CHECK-ASM: vchlbs |
2229 | idx = vec_any_lt(vbc, vbc); |
2230 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2231 | // CHECK-ASM: vchlbs |
2232 | idx = vec_any_lt(vss, vss); |
2233 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2234 | // CHECK-ASM: vchhs |
2235 | idx = vec_any_lt(vss, vbs); |
2236 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2237 | // CHECK-ASM: vchhs |
2238 | idx = vec_any_lt(vbs, vss); |
2239 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2240 | // CHECK-ASM: vchhs |
2241 | idx = vec_any_lt(vus, vus); |
2242 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2243 | // CHECK-ASM: vchlhs |
2244 | idx = vec_any_lt(vus, vbs); |
2245 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2246 | // CHECK-ASM: vchlhs |
2247 | idx = vec_any_lt(vbs, vus); |
2248 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2249 | // CHECK-ASM: vchlhs |
2250 | idx = vec_any_lt(vbs, vbs); |
2251 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2252 | // CHECK-ASM: vchlhs |
2253 | idx = vec_any_lt(vsi, vsi); |
2254 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2255 | // CHECK-ASM: vchfs |
2256 | idx = vec_any_lt(vsi, vbi); |
2257 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2258 | // CHECK-ASM: vchfs |
2259 | idx = vec_any_lt(vbi, vsi); |
2260 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2261 | // CHECK-ASM: vchfs |
2262 | idx = vec_any_lt(vui, vui); |
2263 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2264 | // CHECK-ASM: vchlfs |
2265 | idx = vec_any_lt(vui, vbi); |
2266 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2267 | // CHECK-ASM: vchlfs |
2268 | idx = vec_any_lt(vbi, vui); |
2269 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2270 | // CHECK-ASM: vchlfs |
2271 | idx = vec_any_lt(vbi, vbi); |
2272 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2273 | // CHECK-ASM: vchlfs |
2274 | idx = vec_any_lt(vsl, vsl); |
2275 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2276 | // CHECK-ASM: vchgs |
2277 | idx = vec_any_lt(vsl, vbl); |
2278 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2279 | // CHECK-ASM: vchgs |
2280 | idx = vec_any_lt(vbl, vsl); |
2281 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2282 | // CHECK-ASM: vchgs |
2283 | idx = vec_any_lt(vul, vul); |
2284 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2285 | // CHECK-ASM: vchlgs |
2286 | idx = vec_any_lt(vul, vbl); |
2287 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2288 | // CHECK-ASM: vchlgs |
2289 | idx = vec_any_lt(vbl, vul); |
2290 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2291 | // CHECK-ASM: vchlgs |
2292 | idx = vec_any_lt(vbl, vbl); |
2293 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2294 | // CHECK-ASM: vchlgs |
2295 | idx = vec_any_lt(vd, vd); |
2296 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2297 | // CHECK-ASM: vfchdbs |
2298 | |
2299 | idx = vec_any_nge(vd, vd); |
2300 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2301 | // CHECK-ASM: vfchedbs |
2302 | idx = vec_any_ngt(vd, vd); |
2303 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2304 | // CHECK-ASM: vfchdbs |
2305 | idx = vec_any_nle(vd, vd); |
2306 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2307 | // CHECK-ASM: vfchedbs |
2308 | idx = vec_any_nlt(vd, vd); |
2309 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}}) |
2310 | // CHECK-ASM: vfchdbs |
2311 | |
2312 | idx = vec_any_nan(vd); |
2313 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15) |
2314 | // CHECK-ASM: vftcidb |
2315 | idx = vec_any_numeric(vd); |
2316 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15) |
2317 | // CHECK-ASM: vftcidb |
2318 | } |
2319 | |
2320 | void test_integer(void) { |
2321 | // CHECK-ASM-LABEL: test_integer |
2322 | |
2323 | vsc = vec_andc(vsc, vsc); |
2324 | // CHECK-ASM: vnc |
2325 | vsc = vec_andc(vsc, vbc); |
2326 | // CHECK-ASM: vnc |
2327 | vsc = vec_andc(vbc, vsc); |
2328 | // CHECK-ASM: vnc |
2329 | vuc = vec_andc(vuc, vuc); |
2330 | // CHECK-ASM: vnc |
2331 | vuc = vec_andc(vuc, vbc); |
2332 | // CHECK-ASM: vnc |
2333 | vuc = vec_andc(vbc, vuc); |
2334 | // CHECK-ASM: vnc |
2335 | vbc = vec_andc(vbc, vbc); |
2336 | // CHECK-ASM: vnc |
2337 | vss = vec_andc(vss, vss); |
2338 | // CHECK-ASM: vnc |
2339 | vss = vec_andc(vss, vbs); |
2340 | // CHECK-ASM: vnc |
2341 | vss = vec_andc(vbs, vss); |
2342 | // CHECK-ASM: vnc |
2343 | vus = vec_andc(vus, vus); |
2344 | // CHECK-ASM: vnc |
2345 | vus = vec_andc(vus, vbs); |
2346 | // CHECK-ASM: vnc |
2347 | vus = vec_andc(vbs, vus); |
2348 | // CHECK-ASM: vnc |
2349 | vbs = vec_andc(vbs, vbs); |
2350 | // CHECK-ASM: vnc |
2351 | vsi = vec_andc(vsi, vsi); |
2352 | // CHECK-ASM: vnc |
2353 | vsi = vec_andc(vsi, vbi); |
2354 | // CHECK-ASM: vnc |
2355 | vsi = vec_andc(vbi, vsi); |
2356 | // CHECK-ASM: vnc |
2357 | vui = vec_andc(vui, vui); |
2358 | // CHECK-ASM: vnc |
2359 | vui = vec_andc(vui, vbi); |
2360 | // CHECK-ASM: vnc |
2361 | vui = vec_andc(vbi, vui); |
2362 | // CHECK-ASM: vnc |
2363 | vbi = vec_andc(vbi, vbi); |
2364 | // CHECK-ASM: vnc |
2365 | vsl = vec_andc(vsl, vsl); |
2366 | // CHECK-ASM: vnc |
2367 | vsl = vec_andc(vsl, vbl); |
2368 | // CHECK-ASM: vnc |
2369 | vsl = vec_andc(vbl, vsl); |
2370 | // CHECK-ASM: vnc |
2371 | vul = vec_andc(vul, vul); |
2372 | // CHECK-ASM: vnc |
2373 | vul = vec_andc(vul, vbl); |
2374 | // CHECK-ASM: vnc |
2375 | vul = vec_andc(vbl, vul); |
2376 | // CHECK-ASM: vnc |
2377 | vbl = vec_andc(vbl, vbl); |
2378 | // CHECK-ASM: vnc |
2379 | vd = vec_andc(vd, vd); |
2380 | // CHECK-ASM: vnc |
2381 | vd = vec_andc(vd, vbl); |
2382 | // CHECK-ASM: vnc |
2383 | vd = vec_andc(vbl, vd); |
2384 | // CHECK-ASM: vnc |
2385 | |
2386 | vsc = vec_nor(vsc, vsc); |
2387 | // CHECK-ASM: vno |
2388 | vsc = vec_nor(vsc, vbc); |
2389 | // CHECK-ASM: vno |
2390 | vsc = vec_nor(vbc, vsc); |
2391 | // CHECK-ASM: vno |
2392 | vuc = vec_nor(vuc, vuc); |
2393 | // CHECK-ASM: vno |
2394 | vuc = vec_nor(vuc, vbc); |
2395 | // CHECK-ASM: vno |
2396 | vuc = vec_nor(vbc, vuc); |
2397 | // CHECK-ASM: vno |
2398 | vbc = vec_nor(vbc, vbc); |
2399 | // CHECK-ASM: vno |
2400 | vss = vec_nor(vss, vss); |
2401 | // CHECK-ASM: vno |
2402 | vss = vec_nor(vss, vbs); |
2403 | // CHECK-ASM: vno |
2404 | vss = vec_nor(vbs, vss); |
2405 | // CHECK-ASM: vno |
2406 | vus = vec_nor(vus, vus); |
2407 | // CHECK-ASM: vno |
2408 | vus = vec_nor(vus, vbs); |
2409 | // CHECK-ASM: vno |
2410 | vus = vec_nor(vbs, vus); |
2411 | // CHECK-ASM: vno |
2412 | vbs = vec_nor(vbs, vbs); |
2413 | // CHECK-ASM: vno |
2414 | vsi = vec_nor(vsi, vsi); |
2415 | // CHECK-ASM: vno |
2416 | vsi = vec_nor(vsi, vbi); |
2417 | // CHECK-ASM: vno |
2418 | vsi = vec_nor(vbi, vsi); |
2419 | // CHECK-ASM: vno |
2420 | vui = vec_nor(vui, vui); |
2421 | // CHECK-ASM: vno |
2422 | vui = vec_nor(vui, vbi); |
2423 | // CHECK-ASM: vno |
2424 | vui = vec_nor(vbi, vui); |
2425 | // CHECK-ASM: vno |
2426 | vbi = vec_nor(vbi, vbi); |
2427 | // CHECK-ASM: vno |
2428 | vsl = vec_nor(vsl, vsl); |
2429 | // CHECK-ASM: vno |
2430 | vsl = vec_nor(vsl, vbl); |
2431 | // CHECK-ASM: vno |
2432 | vsl = vec_nor(vbl, vsl); |
2433 | // CHECK-ASM: vno |
2434 | vul = vec_nor(vul, vul); |
2435 | // CHECK-ASM: vno |
2436 | vul = vec_nor(vul, vbl); |
2437 | // CHECK-ASM: vno |
2438 | vul = vec_nor(vbl, vul); |
2439 | // CHECK-ASM: vno |
2440 | vbl = vec_nor(vbl, vbl); |
2441 | // CHECK-ASM: vno |
2442 | vd = vec_nor(vd, vd); |
2443 | // CHECK-ASM: vno |
2444 | vd = vec_nor(vd, vbl); |
2445 | // CHECK-ASM: vno |
2446 | vd = vec_nor(vbl, vd); |
2447 | // CHECK-ASM: vno |
2448 | |
2449 | vuc = vec_cntlz(vsc); |
2450 | // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false) |
2451 | // CHECK-ASM: vclzb |
2452 | vuc = vec_cntlz(vuc); |
2453 | // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false) |
2454 | // CHECK-ASM: vclzb |
2455 | vus = vec_cntlz(vss); |
2456 | // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false) |
2457 | // CHECK-ASM: vclzh |
2458 | vus = vec_cntlz(vus); |
2459 | // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false) |
2460 | // CHECK-ASM: vclzh |
2461 | vui = vec_cntlz(vsi); |
2462 | // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false) |
2463 | // CHECK-ASM: vclzf |
2464 | vui = vec_cntlz(vui); |
2465 | // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false) |
2466 | // CHECK-ASM: vclzf |
2467 | vul = vec_cntlz(vsl); |
2468 | // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false) |
2469 | // CHECK-ASM: vclzg |
2470 | vul = vec_cntlz(vul); |
2471 | // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false) |
2472 | // CHECK-ASM: vclzg |
2473 | |
2474 | vuc = vec_cnttz(vsc); |
2475 | // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false) |
2476 | // CHECK-ASM: vctzb |
2477 | vuc = vec_cnttz(vuc); |
2478 | // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false) |
2479 | // CHECK-ASM: vctzb |
2480 | vus = vec_cnttz(vss); |
2481 | // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false) |
2482 | // CHECK-ASM: vctzh |
2483 | vus = vec_cnttz(vus); |
2484 | // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false) |
2485 | // CHECK-ASM: vctzh |
2486 | vui = vec_cnttz(vsi); |
2487 | // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false) |
2488 | // CHECK-ASM: vctzf |
2489 | vui = vec_cnttz(vui); |
2490 | // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false) |
2491 | // CHECK-ASM: vctzf |
2492 | vul = vec_cnttz(vsl); |
2493 | // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false) |
2494 | // CHECK-ASM: vctzg |
2495 | vul = vec_cnttz(vul); |
2496 | // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false) |
2497 | // CHECK-ASM: vctzg |
2498 | |
2499 | vuc = vec_popcnt(vsc); |
2500 | // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}}) |
2501 | // CHECK-ASM: vpopct |
2502 | vuc = vec_popcnt(vuc); |
2503 | // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}}) |
2504 | // CHECK-ASM: vpopct |
2505 | vus = vec_popcnt(vss); |
2506 | // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}}) |
2507 | // (emulated) |
2508 | vus = vec_popcnt(vus); |
2509 | // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}}) |
2510 | // (emulated) |
2511 | vui = vec_popcnt(vsi); |
2512 | // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}}) |
2513 | // (emulated) |
2514 | vui = vec_popcnt(vui); |
2515 | // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}}) |
2516 | // (emulated) |
2517 | vul = vec_popcnt(vsl); |
2518 | // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}}) |
2519 | // (emulated) |
2520 | vul = vec_popcnt(vul); |
2521 | // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}}) |
2522 | // (emulated) |
2523 | |
2524 | vsc = vec_rl(vsc, vuc); |
2525 | // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2526 | // CHECK-ASM: verllvb |
2527 | vuc = vec_rl(vuc, vuc); |
2528 | // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2529 | // CHECK-ASM: verllvb |
2530 | vss = vec_rl(vss, vus); |
2531 | // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2532 | // CHECK-ASM: verllvh |
2533 | vus = vec_rl(vus, vus); |
2534 | // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
2535 | // CHECK-ASM: verllvh |
2536 | vsi = vec_rl(vsi, vui); |
2537 | // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2538 | // CHECK-ASM: verllvf |
2539 | vui = vec_rl(vui, vui); |
2540 | // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
2541 | // CHECK-ASM: verllvf |
2542 | vsl = vec_rl(vsl, vul); |
2543 | // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2544 | // CHECK-ASM: verllvg |
2545 | vul = vec_rl(vul, vul); |
2546 | // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
2547 | // CHECK-ASM: verllvg |
2548 | |
2549 | vsc = vec_rli(vsc, ul); |
2550 | // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}}) |
2551 | // CHECK-ASM: verllb |
2552 | vuc = vec_rli(vuc, ul); |
2553 | // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}}) |
2554 | // CHECK-ASM: verllb |
2555 | vss = vec_rli(vss, ul); |
2556 | // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}}) |
2557 | // CHECK-ASM: verllh |
2558 | vus = vec_rli(vus, ul); |
2559 | // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}}) |
2560 | // CHECK-ASM: verllh |
2561 | vsi = vec_rli(vsi, ul); |
2562 | // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}}) |
2563 | // CHECK-ASM: verllf |
2564 | vui = vec_rli(vui, ul); |
2565 | // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}}) |
2566 | // CHECK-ASM: verllf |
2567 | vsl = vec_rli(vsl, ul); |
2568 | // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}}) |
2569 | // CHECK-ASM: verllg |
2570 | vul = vec_rli(vul, ul); |
2571 | // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}}) |
2572 | // CHECK-ASM: verllg |
2573 | |
2574 | vsc = vec_rl_mask(vsc, vuc, 0); |
2575 | // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2576 | // CHECK-ASM: verimb |
2577 | vsc = vec_rl_mask(vsc, vuc, 255); |
2578 | // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255) |
2579 | // CHECK-ASM: verimb |
2580 | vuc = vec_rl_mask(vuc, vuc, 0); |
2581 | // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2582 | // CHECK-ASM: verimb |
2583 | vuc = vec_rl_mask(vuc, vuc, 255); |
2584 | // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255) |
2585 | // CHECK-ASM: verimb |
2586 | vss = vec_rl_mask(vss, vus, 0); |
2587 | // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
2588 | // CHECK-ASM: verimh |
2589 | vss = vec_rl_mask(vss, vus, 255); |
2590 | // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255) |
2591 | // CHECK-ASM: verimh |
2592 | vus = vec_rl_mask(vus, vus, 0); |
2593 | // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
2594 | // CHECK-ASM: verimh |
2595 | vus = vec_rl_mask(vus, vus, 255); |
2596 | // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255) |
2597 | // CHECK-ASM: verimh |
2598 | vsi = vec_rl_mask(vsi, vui, 0); |
2599 | // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
2600 | // CHECK-ASM: verimf |
2601 | vsi = vec_rl_mask(vsi, vui, 255); |
2602 | // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255) |
2603 | // CHECK-ASM: verimf |
2604 | vui = vec_rl_mask(vui, vui, 0); |
2605 | // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
2606 | // CHECK-ASM: verimf |
2607 | vui = vec_rl_mask(vui, vui, 255); |
2608 | // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255) |
2609 | // CHECK-ASM: verimf |
2610 | vsl = vec_rl_mask(vsl, vul, 0); |
2611 | // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
2612 | // CHECK-ASM: verimg |
2613 | vsl = vec_rl_mask(vsl, vul, 255); |
2614 | // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255) |
2615 | // CHECK-ASM: verimg |
2616 | vul = vec_rl_mask(vul, vul, 0); |
2617 | // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0) |
2618 | // CHECK-ASM: verimg |
2619 | vul = vec_rl_mask(vul, vul, 255); |
2620 | // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255) |
2621 | // CHECK-ASM: verimg |
2622 | |
2623 | vsc = vec_sll(vsc, vuc); |
2624 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2625 | // CHECK-ASM: vsl |
2626 | vsc = vec_sll(vsc, vus); |
2627 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2628 | // CHECK-ASM: vsl |
2629 | vsc = vec_sll(vsc, vui); |
2630 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2631 | // CHECK-ASM: vsl |
2632 | vuc = vec_sll(vuc, vuc); |
2633 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2634 | // CHECK-ASM: vsl |
2635 | vuc = vec_sll(vuc, vus); |
2636 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2637 | // CHECK-ASM: vsl |
2638 | vuc = vec_sll(vuc, vui); |
2639 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2640 | // CHECK-ASM: vsl |
2641 | vbc = vec_sll(vbc, vuc); |
2642 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2643 | // CHECK-ASM: vsl |
2644 | vbc = vec_sll(vbc, vus); |
2645 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2646 | // CHECK-ASM: vsl |
2647 | vbc = vec_sll(vbc, vui); |
2648 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2649 | // CHECK-ASM: vsl |
2650 | vss = vec_sll(vss, vuc); |
2651 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2652 | // CHECK-ASM: vsl |
2653 | vss = vec_sll(vss, vus); |
2654 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2655 | // CHECK-ASM: vsl |
2656 | vss = vec_sll(vss, vui); |
2657 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2658 | // CHECK-ASM: vsl |
2659 | vus = vec_sll(vus, vuc); |
2660 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2661 | // CHECK-ASM: vsl |
2662 | vus = vec_sll(vus, vus); |
2663 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2664 | // CHECK-ASM: vsl |
2665 | vus = vec_sll(vus, vui); |
2666 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2667 | // CHECK-ASM: vsl |
2668 | vbs = vec_sll(vbs, vuc); |
2669 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2670 | // CHECK-ASM: vsl |
2671 | vbs = vec_sll(vbs, vus); |
2672 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2673 | // CHECK-ASM: vsl |
2674 | vbs = vec_sll(vbs, vui); |
2675 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2676 | // CHECK-ASM: vsl |
2677 | vsi = vec_sll(vsi, vuc); |
2678 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2679 | // CHECK-ASM: vsl |
2680 | vsi = vec_sll(vsi, vus); |
2681 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2682 | // CHECK-ASM: vsl |
2683 | vsi = vec_sll(vsi, vui); |
2684 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2685 | // CHECK-ASM: vsl |
2686 | vui = vec_sll(vui, vuc); |
2687 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2688 | // CHECK-ASM: vsl |
2689 | vui = vec_sll(vui, vus); |
2690 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2691 | // CHECK-ASM: vsl |
2692 | vui = vec_sll(vui, vui); |
2693 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2694 | // CHECK-ASM: vsl |
2695 | vbi = vec_sll(vbi, vuc); |
2696 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2697 | // CHECK-ASM: vsl |
2698 | vbi = vec_sll(vbi, vus); |
2699 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2700 | // CHECK-ASM: vsl |
2701 | vbi = vec_sll(vbi, vui); |
2702 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2703 | // CHECK-ASM: vsl |
2704 | vsl = vec_sll(vsl, vuc); |
2705 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2706 | // CHECK-ASM: vsl |
2707 | vsl = vec_sll(vsl, vus); |
2708 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2709 | // CHECK-ASM: vsl |
2710 | vsl = vec_sll(vsl, vui); |
2711 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2712 | // CHECK-ASM: vsl |
2713 | vul = vec_sll(vul, vuc); |
2714 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2715 | // CHECK-ASM: vsl |
2716 | vul = vec_sll(vul, vus); |
2717 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2718 | // CHECK-ASM: vsl |
2719 | vul = vec_sll(vul, vui); |
2720 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2721 | // CHECK-ASM: vsl |
2722 | vbl = vec_sll(vbl, vuc); |
2723 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2724 | // CHECK-ASM: vsl |
2725 | vbl = vec_sll(vbl, vus); |
2726 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2727 | // CHECK-ASM: vsl |
2728 | vbl = vec_sll(vbl, vui); |
2729 | // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2730 | // CHECK-ASM: vsl |
2731 | |
2732 | vsc = vec_slb(vsc, vsc); |
2733 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2734 | // CHECK-ASM: vslb |
2735 | vsc = vec_slb(vsc, vuc); |
2736 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2737 | // CHECK-ASM: vslb |
2738 | vuc = vec_slb(vuc, vsc); |
2739 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2740 | // CHECK-ASM: vslb |
2741 | vuc = vec_slb(vuc, vuc); |
2742 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2743 | // CHECK-ASM: vslb |
2744 | vss = vec_slb(vss, vss); |
2745 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2746 | // CHECK-ASM: vslb |
2747 | vss = vec_slb(vss, vus); |
2748 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2749 | // CHECK-ASM: vslb |
2750 | vus = vec_slb(vus, vss); |
2751 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2752 | // CHECK-ASM: vslb |
2753 | vus = vec_slb(vus, vus); |
2754 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2755 | // CHECK-ASM: vslb |
2756 | vsi = vec_slb(vsi, vsi); |
2757 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2758 | // CHECK-ASM: vslb |
2759 | vsi = vec_slb(vsi, vui); |
2760 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2761 | // CHECK-ASM: vslb |
2762 | vui = vec_slb(vui, vsi); |
2763 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2764 | // CHECK-ASM: vslb |
2765 | vui = vec_slb(vui, vui); |
2766 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2767 | // CHECK-ASM: vslb |
2768 | vsl = vec_slb(vsl, vsl); |
2769 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2770 | // CHECK-ASM: vslb |
2771 | vsl = vec_slb(vsl, vul); |
2772 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2773 | // CHECK-ASM: vslb |
2774 | vul = vec_slb(vul, vsl); |
2775 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2776 | // CHECK-ASM: vslb |
2777 | vul = vec_slb(vul, vul); |
2778 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2779 | // CHECK-ASM: vslb |
2780 | vd = vec_slb(vd, vsl); |
2781 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2782 | // CHECK-ASM: vslb |
2783 | vd = vec_slb(vd, vul); |
2784 | // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2785 | // CHECK-ASM: vslb |
2786 | |
2787 | vsc = vec_sld(vsc, vsc, 0); |
2788 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2789 | // CHECK-ASM: vsldb |
2790 | vsc = vec_sld(vsc, vsc, 15); |
2791 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2792 | // CHECK-ASM: vsldb |
2793 | vuc = vec_sld(vuc, vuc, 0); |
2794 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2795 | // CHECK-ASM: vsldb |
2796 | vuc = vec_sld(vuc, vuc, 15); |
2797 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2798 | // CHECK-ASM: vsldb |
2799 | vbc = vec_sld(vbc, vbc, 0); |
2800 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2801 | // CHECK-ASM: vsldb |
2802 | vbc = vec_sld(vbc, vbc, 15); |
2803 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2804 | // CHECK-ASM: vsldb |
2805 | vss = vec_sld(vss, vss, 0); |
2806 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2807 | // CHECK-ASM: vsldb |
2808 | vss = vec_sld(vss, vss, 15); |
2809 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2810 | // CHECK-ASM: vsldb |
2811 | vus = vec_sld(vus, vus, 0); |
2812 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2813 | // CHECK-ASM: vsldb |
2814 | vus = vec_sld(vus, vus, 15); |
2815 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2816 | // CHECK-ASM: vsldb |
2817 | vbs = vec_sld(vbs, vbs, 0); |
2818 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2819 | // CHECK-ASM: vsldb |
2820 | vbs = vec_sld(vbs, vbs, 15); |
2821 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2822 | // CHECK-ASM: vsldb |
2823 | vsi = vec_sld(vsi, vsi, 0); |
2824 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2825 | // CHECK-ASM: vsldb |
2826 | vsi = vec_sld(vsi, vsi, 15); |
2827 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2828 | // CHECK-ASM: vsldb |
2829 | vui = vec_sld(vui, vui, 0); |
2830 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2831 | // CHECK-ASM: vsldb |
2832 | vui = vec_sld(vui, vui, 15); |
2833 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2834 | // CHECK-ASM: vsldb |
2835 | vbi = vec_sld(vbi, vbi, 0); |
2836 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2837 | // CHECK-ASM: vsldb |
2838 | vbi = vec_sld(vbi, vbi, 15); |
2839 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2840 | // CHECK-ASM: vsldb |
2841 | vsl = vec_sld(vsl, vsl, 0); |
2842 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2843 | // CHECK-ASM: vsldb |
2844 | vsl = vec_sld(vsl, vsl, 15); |
2845 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2846 | // CHECK-ASM: vsldb |
2847 | vul = vec_sld(vul, vul, 0); |
2848 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2849 | // CHECK-ASM: vsldb |
2850 | vul = vec_sld(vul, vul, 15); |
2851 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2852 | // CHECK-ASM: vsldb |
2853 | vbl = vec_sld(vbl, vbl, 0); |
2854 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2855 | // CHECK-ASM: vsldb |
2856 | vbl = vec_sld(vbl, vbl, 15); |
2857 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2858 | // CHECK-ASM: vsldb |
2859 | vd = vec_sld(vd, vd, 0); |
2860 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2861 | // CHECK-ASM: vsldb |
2862 | vd = vec_sld(vd, vd, 15); |
2863 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15) |
2864 | // CHECK-ASM: vsldb |
2865 | |
2866 | vsc = vec_sldw(vsc, vsc, 0); |
2867 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2868 | // CHECK-ASM: vsldb |
2869 | vsc = vec_sldw(vsc, vsc, 3); |
2870 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2871 | // CHECK-ASM: vsldb |
2872 | vuc = vec_sldw(vuc, vuc, 0); |
2873 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2874 | // CHECK-ASM: vsldb |
2875 | vuc = vec_sldw(vuc, vuc, 3); |
2876 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2877 | // CHECK-ASM: vsldb |
2878 | vss = vec_sldw(vss, vss, 0); |
2879 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2880 | // CHECK-ASM: vsldb |
2881 | vss = vec_sldw(vss, vss, 3); |
2882 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2883 | // CHECK-ASM: vsldb |
2884 | vus = vec_sldw(vus, vus, 0); |
2885 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2886 | // CHECK-ASM: vsldb |
2887 | vus = vec_sldw(vus, vus, 3); |
2888 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2889 | // CHECK-ASM: vsldb |
2890 | vsi = vec_sldw(vsi, vsi, 0); |
2891 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2892 | // CHECK-ASM: vsldb |
2893 | vsi = vec_sldw(vsi, vsi, 3); |
2894 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2895 | // CHECK-ASM: vsldb |
2896 | vui = vec_sldw(vui, vui, 0); |
2897 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2898 | // CHECK-ASM: vsldb |
2899 | vui = vec_sldw(vui, vui, 3); |
2900 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2901 | // CHECK-ASM: vsldb |
2902 | vsl = vec_sldw(vsl, vsl, 0); |
2903 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2904 | // CHECK-ASM: vsldb |
2905 | vsl = vec_sldw(vsl, vsl, 3); |
2906 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2907 | // CHECK-ASM: vsldb |
2908 | vul = vec_sldw(vul, vul, 0); |
2909 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2910 | // CHECK-ASM: vsldb |
2911 | vul = vec_sldw(vul, vul, 3); |
2912 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2913 | // CHECK-ASM: vsldb |
2914 | vd = vec_sldw(vd, vd, 0); |
2915 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
2916 | // CHECK-ASM: vsldb |
2917 | vd = vec_sldw(vd, vd, 3); |
2918 | // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
2919 | // CHECK-ASM: vsldb |
2920 | |
2921 | vsc = vec_sral(vsc, vuc); |
2922 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2923 | // CHECK-ASM: vsra |
2924 | vsc = vec_sral(vsc, vus); |
2925 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2926 | // CHECK-ASM: vsra |
2927 | vsc = vec_sral(vsc, vui); |
2928 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2929 | // CHECK-ASM: vsra |
2930 | vuc = vec_sral(vuc, vuc); |
2931 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2932 | // CHECK-ASM: vsra |
2933 | vuc = vec_sral(vuc, vus); |
2934 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2935 | // CHECK-ASM: vsra |
2936 | vuc = vec_sral(vuc, vui); |
2937 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2938 | // CHECK-ASM: vsra |
2939 | vbc = vec_sral(vbc, vuc); |
2940 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2941 | // CHECK-ASM: vsra |
2942 | vbc = vec_sral(vbc, vus); |
2943 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2944 | // CHECK-ASM: vsra |
2945 | vbc = vec_sral(vbc, vui); |
2946 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2947 | // CHECK-ASM: vsra |
2948 | vss = vec_sral(vss, vuc); |
2949 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2950 | // CHECK-ASM: vsra |
2951 | vss = vec_sral(vss, vus); |
2952 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2953 | // CHECK-ASM: vsra |
2954 | vss = vec_sral(vss, vui); |
2955 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2956 | // CHECK-ASM: vsra |
2957 | vus = vec_sral(vus, vuc); |
2958 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2959 | // CHECK-ASM: vsra |
2960 | vus = vec_sral(vus, vus); |
2961 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2962 | // CHECK-ASM: vsra |
2963 | vus = vec_sral(vus, vui); |
2964 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2965 | // CHECK-ASM: vsra |
2966 | vbs = vec_sral(vbs, vuc); |
2967 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2968 | // CHECK-ASM: vsra |
2969 | vbs = vec_sral(vbs, vus); |
2970 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2971 | // CHECK-ASM: vsra |
2972 | vbs = vec_sral(vbs, vui); |
2973 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2974 | // CHECK-ASM: vsra |
2975 | vsi = vec_sral(vsi, vuc); |
2976 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2977 | // CHECK-ASM: vsra |
2978 | vsi = vec_sral(vsi, vus); |
2979 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2980 | // CHECK-ASM: vsra |
2981 | vsi = vec_sral(vsi, vui); |
2982 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2983 | // CHECK-ASM: vsra |
2984 | vui = vec_sral(vui, vuc); |
2985 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2986 | // CHECK-ASM: vsra |
2987 | vui = vec_sral(vui, vus); |
2988 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2989 | // CHECK-ASM: vsra |
2990 | vui = vec_sral(vui, vui); |
2991 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2992 | // CHECK-ASM: vsra |
2993 | vbi = vec_sral(vbi, vuc); |
2994 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2995 | // CHECK-ASM: vsra |
2996 | vbi = vec_sral(vbi, vus); |
2997 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
2998 | // CHECK-ASM: vsra |
2999 | vbi = vec_sral(vbi, vui); |
3000 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3001 | // CHECK-ASM: vsra |
3002 | vsl = vec_sral(vsl, vuc); |
3003 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3004 | // CHECK-ASM: vsra |
3005 | vsl = vec_sral(vsl, vus); |
3006 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3007 | // CHECK-ASM: vsra |
3008 | vsl = vec_sral(vsl, vui); |
3009 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3010 | // CHECK-ASM: vsra |
3011 | vul = vec_sral(vul, vuc); |
3012 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3013 | // CHECK-ASM: vsra |
3014 | vul = vec_sral(vul, vus); |
3015 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3016 | // CHECK-ASM: vsra |
3017 | vul = vec_sral(vul, vui); |
3018 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3019 | // CHECK-ASM: vsra |
3020 | vbl = vec_sral(vbl, vuc); |
3021 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3022 | // CHECK-ASM: vsra |
3023 | vbl = vec_sral(vbl, vus); |
3024 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3025 | // CHECK-ASM: vsra |
3026 | vbl = vec_sral(vbl, vui); |
3027 | // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3028 | // CHECK-ASM: vsra |
3029 | |
3030 | vsc = vec_srab(vsc, vsc); |
3031 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3032 | // CHECK-ASM: vsrab |
3033 | vsc = vec_srab(vsc, vuc); |
3034 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3035 | // CHECK-ASM: vsrab |
3036 | vuc = vec_srab(vuc, vsc); |
3037 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3038 | // CHECK-ASM: vsrab |
3039 | vuc = vec_srab(vuc, vuc); |
3040 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3041 | // CHECK-ASM: vsrab |
3042 | vss = vec_srab(vss, vss); |
3043 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3044 | // CHECK-ASM: vsrab |
3045 | vss = vec_srab(vss, vus); |
3046 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3047 | // CHECK-ASM: vsrab |
3048 | vus = vec_srab(vus, vss); |
3049 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3050 | // CHECK-ASM: vsrab |
3051 | vus = vec_srab(vus, vus); |
3052 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3053 | // CHECK-ASM: vsrab |
3054 | vsi = vec_srab(vsi, vsi); |
3055 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3056 | // CHECK-ASM: vsrab |
3057 | vsi = vec_srab(vsi, vui); |
3058 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3059 | // CHECK-ASM: vsrab |
3060 | vui = vec_srab(vui, vsi); |
3061 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3062 | // CHECK-ASM: vsrab |
3063 | vui = vec_srab(vui, vui); |
3064 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3065 | // CHECK-ASM: vsrab |
3066 | vsl = vec_srab(vsl, vsl); |
3067 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3068 | // CHECK-ASM: vsrab |
3069 | vsl = vec_srab(vsl, vul); |
3070 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3071 | // CHECK-ASM: vsrab |
3072 | vul = vec_srab(vul, vsl); |
3073 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3074 | // CHECK-ASM: vsrab |
3075 | vul = vec_srab(vul, vul); |
3076 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3077 | // CHECK-ASM: vsrab |
3078 | vd = vec_srab(vd, vsl); |
3079 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3080 | // CHECK-ASM: vsrab |
3081 | vd = vec_srab(vd, vul); |
3082 | // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3083 | // CHECK-ASM: vsrab |
3084 | |
3085 | vsc = vec_srl(vsc, vuc); |
3086 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3087 | // CHECK-ASM: vsrl |
3088 | vsc = vec_srl(vsc, vus); |
3089 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3090 | // CHECK-ASM: vsrl |
3091 | vsc = vec_srl(vsc, vui); |
3092 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3093 | // CHECK-ASM: vsrl |
3094 | vuc = vec_srl(vuc, vuc); |
3095 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3096 | // CHECK-ASM: vsrl |
3097 | vuc = vec_srl(vuc, vus); |
3098 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3099 | // CHECK-ASM: vsrl |
3100 | vuc = vec_srl(vuc, vui); |
3101 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3102 | // CHECK-ASM: vsrl |
3103 | vbc = vec_srl(vbc, vuc); |
3104 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3105 | // CHECK-ASM: vsrl |
3106 | vbc = vec_srl(vbc, vus); |
3107 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3108 | // CHECK-ASM: vsrl |
3109 | vbc = vec_srl(vbc, vui); |
3110 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3111 | // CHECK-ASM: vsrl |
3112 | vss = vec_srl(vss, vuc); |
3113 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3114 | // CHECK-ASM: vsrl |
3115 | vss = vec_srl(vss, vus); |
3116 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3117 | // CHECK-ASM: vsrl |
3118 | vss = vec_srl(vss, vui); |
3119 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3120 | // CHECK-ASM: vsrl |
3121 | vus = vec_srl(vus, vuc); |
3122 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3123 | // CHECK-ASM: vsrl |
3124 | vus = vec_srl(vus, vus); |
3125 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3126 | // CHECK-ASM: vsrl |
3127 | vus = vec_srl(vus, vui); |
3128 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3129 | // CHECK-ASM: vsrl |
3130 | vbs = vec_srl(vbs, vuc); |
3131 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3132 | // CHECK-ASM: vsrl |
3133 | vbs = vec_srl(vbs, vus); |
3134 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3135 | // CHECK-ASM: vsrl |
3136 | vbs = vec_srl(vbs, vui); |
3137 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3138 | // CHECK-ASM: vsrl |
3139 | vsi = vec_srl(vsi, vuc); |
3140 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3141 | // CHECK-ASM: vsrl |
3142 | vsi = vec_srl(vsi, vus); |
3143 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3144 | // CHECK-ASM: vsrl |
3145 | vsi = vec_srl(vsi, vui); |
3146 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3147 | // CHECK-ASM: vsrl |
3148 | vui = vec_srl(vui, vuc); |
3149 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3150 | // CHECK-ASM: vsrl |
3151 | vui = vec_srl(vui, vus); |
3152 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3153 | // CHECK-ASM: vsrl |
3154 | vui = vec_srl(vui, vui); |
3155 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3156 | // CHECK-ASM: vsrl |
3157 | vbi = vec_srl(vbi, vuc); |
3158 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3159 | // CHECK-ASM: vsrl |
3160 | vbi = vec_srl(vbi, vus); |
3161 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3162 | // CHECK-ASM: vsrl |
3163 | vbi = vec_srl(vbi, vui); |
3164 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3165 | // CHECK-ASM: vsrl |
3166 | vsl = vec_srl(vsl, vuc); |
3167 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3168 | // CHECK-ASM: vsrl |
3169 | vsl = vec_srl(vsl, vus); |
3170 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3171 | // CHECK-ASM: vsrl |
3172 | vsl = vec_srl(vsl, vui); |
3173 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3174 | // CHECK-ASM: vsrl |
3175 | vul = vec_srl(vul, vuc); |
3176 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3177 | // CHECK-ASM: vsrl |
3178 | vul = vec_srl(vul, vus); |
3179 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3180 | // CHECK-ASM: vsrl |
3181 | vul = vec_srl(vul, vui); |
3182 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3183 | // CHECK-ASM: vsrl |
3184 | vbl = vec_srl(vbl, vuc); |
3185 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3186 | // CHECK-ASM: vsrl |
3187 | vbl = vec_srl(vbl, vus); |
3188 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3189 | // CHECK-ASM: vsrl |
3190 | vbl = vec_srl(vbl, vui); |
3191 | // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3192 | // CHECK-ASM: vsrl |
3193 | |
3194 | vsc = vec_srb(vsc, vsc); |
3195 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3196 | // CHECK-ASM: vsrlb |
3197 | vsc = vec_srb(vsc, vuc); |
3198 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3199 | // CHECK-ASM: vsrlb |
3200 | vuc = vec_srb(vuc, vsc); |
3201 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3202 | // CHECK-ASM: vsrlb |
3203 | vuc = vec_srb(vuc, vuc); |
3204 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3205 | // CHECK-ASM: vsrlb |
3206 | vss = vec_srb(vss, vss); |
3207 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3208 | // CHECK-ASM: vsrlb |
3209 | vss = vec_srb(vss, vus); |
3210 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3211 | // CHECK-ASM: vsrlb |
3212 | vus = vec_srb(vus, vss); |
3213 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3214 | // CHECK-ASM: vsrlb |
3215 | vus = vec_srb(vus, vus); |
3216 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3217 | // CHECK-ASM: vsrlb |
3218 | vsi = vec_srb(vsi, vsi); |
3219 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3220 | // CHECK-ASM: vsrlb |
3221 | vsi = vec_srb(vsi, vui); |
3222 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3223 | // CHECK-ASM: vsrlb |
3224 | vui = vec_srb(vui, vsi); |
3225 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3226 | // CHECK-ASM: vsrlb |
3227 | vui = vec_srb(vui, vui); |
3228 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3229 | // CHECK-ASM: vsrlb |
3230 | vsl = vec_srb(vsl, vsl); |
3231 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3232 | // CHECK-ASM: vsrlb |
3233 | vsl = vec_srb(vsl, vul); |
3234 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3235 | // CHECK-ASM: vsrlb |
3236 | vul = vec_srb(vul, vsl); |
3237 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3238 | // CHECK-ASM: vsrlb |
3239 | vul = vec_srb(vul, vul); |
3240 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3241 | // CHECK-ASM: vsrlb |
3242 | vd = vec_srb(vd, vsl); |
3243 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3244 | // CHECK-ASM: vsrlb |
3245 | vd = vec_srb(vd, vul); |
3246 | // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3247 | // CHECK-ASM: vsrlb |
3248 | |
3249 | vsc = vec_abs(vsc); |
3250 | // CHECK-ASM: vlpb |
3251 | vss = vec_abs(vss); |
3252 | // CHECK-ASM: vlph |
3253 | vsi = vec_abs(vsi); |
3254 | // CHECK-ASM: vlpf |
3255 | vsl = vec_abs(vsl); |
3256 | // CHECK-ASM: vlpg |
3257 | |
3258 | vsc = vec_max(vsc, vsc); |
3259 | // CHECK-ASM: vmxb |
3260 | vsc = vec_max(vsc, vbc); |
3261 | // CHECK-ASM: vmxb |
3262 | vsc = vec_max(vbc, vsc); |
3263 | // CHECK-ASM: vmxb |
3264 | vuc = vec_max(vuc, vuc); |
3265 | // CHECK-ASM: vmxlb |
3266 | vuc = vec_max(vuc, vbc); |
3267 | // CHECK-ASM: vmxlb |
3268 | vuc = vec_max(vbc, vuc); |
3269 | // CHECK-ASM: vmxlb |
3270 | vss = vec_max(vss, vss); |
3271 | // CHECK-ASM: vmxh |
3272 | vss = vec_max(vss, vbs); |
3273 | // CHECK-ASM: vmxh |
3274 | vss = vec_max(vbs, vss); |
3275 | // CHECK-ASM: vmxh |
3276 | vus = vec_max(vus, vus); |
3277 | // CHECK-ASM: vmxlh |
3278 | vus = vec_max(vus, vbs); |
3279 | // CHECK-ASM: vmxlh |
3280 | vus = vec_max(vbs, vus); |
3281 | // CHECK-ASM: vmxlh |
3282 | vsi = vec_max(vsi, vsi); |
3283 | // CHECK-ASM: vmxf |
3284 | vsi = vec_max(vsi, vbi); |
3285 | // CHECK-ASM: vmxf |
3286 | vsi = vec_max(vbi, vsi); |
3287 | // CHECK-ASM: vmxf |
3288 | vui = vec_max(vui, vui); |
3289 | // CHECK-ASM: vmxlf |
3290 | vui = vec_max(vui, vbi); |
3291 | // CHECK-ASM: vmxlf |
3292 | vui = vec_max(vbi, vui); |
3293 | // CHECK-ASM: vmxlf |
3294 | vsl = vec_max(vsl, vsl); |
3295 | // CHECK-ASM: vmxg |
3296 | vsl = vec_max(vsl, vbl); |
3297 | // CHECK-ASM: vmxg |
3298 | vsl = vec_max(vbl, vsl); |
3299 | // CHECK-ASM: vmxg |
3300 | vul = vec_max(vul, vul); |
3301 | // CHECK-ASM: vmxlg |
3302 | vul = vec_max(vul, vbl); |
3303 | // CHECK-ASM: vmxlg |
3304 | vul = vec_max(vbl, vul); |
3305 | // CHECK-ASM: vmxlg |
3306 | vd = vec_max(vd, vd); |
3307 | // (emulated) |
3308 | |
3309 | vsc = vec_min(vsc, vsc); |
3310 | // CHECK-ASM: vmnb |
3311 | vsc = vec_min(vsc, vbc); |
3312 | // CHECK-ASM: vmnb |
3313 | vsc = vec_min(vbc, vsc); |
3314 | // CHECK-ASM: vmnb |
3315 | vuc = vec_min(vuc, vuc); |
3316 | // CHECK-ASM: vmnlb |
3317 | vuc = vec_min(vuc, vbc); |
3318 | // CHECK-ASM: vmnlb |
3319 | vuc = vec_min(vbc, vuc); |
3320 | // CHECK-ASM: vmnlb |
3321 | vss = vec_min(vss, vss); |
3322 | // CHECK-ASM: vmnh |
3323 | vss = vec_min(vss, vbs); |
3324 | // CHECK-ASM: vmnh |
3325 | vss = vec_min(vbs, vss); |
3326 | // CHECK-ASM: vmnh |
3327 | vus = vec_min(vus, vus); |
3328 | // CHECK-ASM: vmnlh |
3329 | vus = vec_min(vus, vbs); |
3330 | // CHECK-ASM: vmnlh |
3331 | vus = vec_min(vbs, vus); |
3332 | // CHECK-ASM: vmnlh |
3333 | vsi = vec_min(vsi, vsi); |
3334 | // CHECK-ASM: vmnf |
3335 | vsi = vec_min(vsi, vbi); |
3336 | // CHECK-ASM: vmnf |
3337 | vsi = vec_min(vbi, vsi); |
3338 | // CHECK-ASM: vmnf |
3339 | vui = vec_min(vui, vui); |
3340 | // CHECK-ASM: vmnlf |
3341 | vui = vec_min(vui, vbi); |
3342 | // CHECK-ASM: vmnlf |
3343 | vui = vec_min(vbi, vui); |
3344 | // CHECK-ASM: vmnlf |
3345 | vsl = vec_min(vsl, vsl); |
3346 | // CHECK-ASM: vmng |
3347 | vsl = vec_min(vsl, vbl); |
3348 | // CHECK-ASM: vmng |
3349 | vsl = vec_min(vbl, vsl); |
3350 | // CHECK-ASM: vmng |
3351 | vul = vec_min(vul, vul); |
3352 | // CHECK-ASM: vmnlg |
3353 | vul = vec_min(vul, vbl); |
3354 | // CHECK-ASM: vmnlg |
3355 | vul = vec_min(vbl, vul); |
3356 | // CHECK-ASM: vmnlg |
3357 | vd = vec_min(vd, vd); |
3358 | // (emulated) |
3359 | |
3360 | vuc = vec_addc(vuc, vuc); |
3361 | // CHECK: call <16 x i8> @llvm.s390.vaccb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3362 | // CHECK-ASM: vaccb |
3363 | vus = vec_addc(vus, vus); |
3364 | // CHECK: call <8 x i16> @llvm.s390.vacch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3365 | // CHECK-ASM: vacch |
3366 | vui = vec_addc(vui, vui); |
3367 | // CHECK: call <4 x i32> @llvm.s390.vaccf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3368 | // CHECK-ASM: vaccf |
3369 | vul = vec_addc(vul, vul); |
3370 | // CHECK: call <2 x i64> @llvm.s390.vaccg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3371 | // CHECK-ASM: vaccg |
3372 | |
3373 | vuc = vec_add_u128(vuc, vuc); |
3374 | // CHECK: call <16 x i8> @llvm.s390.vaq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3375 | // CHECK-ASM: vaq |
3376 | vuc = vec_addc_u128(vuc, vuc); |
3377 | // CHECK: call <16 x i8> @llvm.s390.vaccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3378 | // CHECK-ASM: vaccq |
3379 | vuc = vec_adde_u128(vuc, vuc, vuc); |
3380 | // CHECK: call <16 x i8> @llvm.s390.vacq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3381 | // CHECK-ASM: vacq |
3382 | vuc = vec_addec_u128(vuc, vuc, vuc); |
3383 | // CHECK: call <16 x i8> @llvm.s390.vacccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3384 | // CHECK-ASM: vacccq |
3385 | |
3386 | vsc = vec_avg(vsc, vsc); |
3387 | // CHECK: call <16 x i8> @llvm.s390.vavgb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3388 | // CHECK-ASM: vavgb |
3389 | vuc = vec_avg(vuc, vuc); |
3390 | // CHECK: call <16 x i8> @llvm.s390.vavglb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3391 | // CHECK-ASM: vavglb |
3392 | vss = vec_avg(vss, vss); |
3393 | // CHECK: call <8 x i16> @llvm.s390.vavgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3394 | // CHECK-ASM: vavgh |
3395 | vus = vec_avg(vus, vus); |
3396 | // CHECK: call <8 x i16> @llvm.s390.vavglh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3397 | // CHECK-ASM: vavglh |
3398 | vsi = vec_avg(vsi, vsi); |
3399 | // CHECK: call <4 x i32> @llvm.s390.vavgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3400 | // CHECK-ASM: vavgf |
3401 | vui = vec_avg(vui, vui); |
3402 | // CHECK: call <4 x i32> @llvm.s390.vavglf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3403 | // CHECK-ASM: vavglf |
3404 | vsl = vec_avg(vsl, vsl); |
3405 | // CHECK: call <2 x i64> @llvm.s390.vavgg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3406 | // CHECK-ASM: vavgg |
3407 | vul = vec_avg(vul, vul); |
3408 | // CHECK: call <2 x i64> @llvm.s390.vavglg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3409 | // CHECK-ASM: vavglg |
3410 | |
3411 | vui = vec_checksum(vui, vui); |
3412 | // CHECK: call <4 x i32> @llvm.s390.vcksm(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3413 | // CHECK-ASM: vcksm |
3414 | |
3415 | vus = vec_gfmsum(vuc, vuc); |
3416 | // CHECK: call <8 x i16> @llvm.s390.vgfmb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3417 | // CHECK-ASM: vgfmb |
3418 | vui = vec_gfmsum(vus, vus); |
3419 | // CHECK: call <4 x i32> @llvm.s390.vgfmh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3420 | // CHECK-ASM: vgfmh |
3421 | vul = vec_gfmsum(vui, vui); |
3422 | // CHECK: call <2 x i64> @llvm.s390.vgfmf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3423 | // CHECK-ASM: vgfmf |
3424 | vuc = vec_gfmsum_128(vul, vul); |
3425 | // CHECK: call <16 x i8> @llvm.s390.vgfmg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3426 | // CHECK-ASM: vgfmg |
3427 | |
3428 | vus = vec_gfmsum_accum(vuc, vuc, vus); |
3429 | // CHECK: call <8 x i16> @llvm.s390.vgfmab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}}) |
3430 | // CHECK-ASM: vgfmab |
3431 | vui = vec_gfmsum_accum(vus, vus, vui); |
3432 | // CHECK: call <4 x i32> @llvm.s390.vgfmah(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}}) |
3433 | // CHECK-ASM: vgfmah |
3434 | vul = vec_gfmsum_accum(vui, vui, vul); |
3435 | // CHECK: call <2 x i64> @llvm.s390.vgfmaf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}}) |
3436 | // CHECK-ASM: vgfmaf |
3437 | vuc = vec_gfmsum_accum_128(vul, vul, vuc); |
3438 | // CHECK: call <16 x i8> @llvm.s390.vgfmag(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <16 x i8> %{{.*}}) |
3439 | // CHECK-ASM: vgfmag |
3440 | |
3441 | vsc = vec_mladd(vsc, vsc, vsc); |
3442 | // CHECK-ASM: vmalb |
3443 | vsc = vec_mladd(vuc, vsc, vsc); |
3444 | // CHECK-ASM: vmalb |
3445 | vsc = vec_mladd(vsc, vuc, vuc); |
3446 | // CHECK-ASM: vmalb |
3447 | vuc = vec_mladd(vuc, vuc, vuc); |
3448 | // CHECK-ASM: vmalb |
3449 | vss = vec_mladd(vss, vss, vss); |
3450 | // CHECK-ASM: vmalhw |
3451 | vss = vec_mladd(vus, vss, vss); |
3452 | // CHECK-ASM: vmalhw |
3453 | vss = vec_mladd(vss, vus, vus); |
3454 | // CHECK-ASM: vmalhw |
3455 | vus = vec_mladd(vus, vus, vus); |
3456 | // CHECK-ASM: vmalhw |
3457 | vsi = vec_mladd(vsi, vsi, vsi); |
3458 | // CHECK-ASM: vmalf |
3459 | vsi = vec_mladd(vui, vsi, vsi); |
3460 | // CHECK-ASM: vmalf |
3461 | vsi = vec_mladd(vsi, vui, vui); |
3462 | // CHECK-ASM: vmalf |
3463 | vui = vec_mladd(vui, vui, vui); |
3464 | // CHECK-ASM: vmalf |
3465 | |
3466 | vsc = vec_mhadd(vsc, vsc, vsc); |
3467 | // CHECK: call <16 x i8> @llvm.s390.vmahb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3468 | // CHECK-ASM: vmahb |
3469 | vuc = vec_mhadd(vuc, vuc, vuc); |
3470 | // CHECK: call <16 x i8> @llvm.s390.vmalhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3471 | // CHECK-ASM: vmalhb |
3472 | vss = vec_mhadd(vss, vss, vss); |
3473 | // CHECK: call <8 x i16> @llvm.s390.vmahh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3474 | // CHECK-ASM: vmahh |
3475 | vus = vec_mhadd(vus, vus, vus); |
3476 | // CHECK: call <8 x i16> @llvm.s390.vmalhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3477 | // CHECK-ASM: vmalhh |
3478 | vsi = vec_mhadd(vsi, vsi, vsi); |
3479 | // CHECK: call <4 x i32> @llvm.s390.vmahf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3480 | // CHECK-ASM: vmahf |
3481 | vui = vec_mhadd(vui, vui, vui); |
3482 | // CHECK: call <4 x i32> @llvm.s390.vmalhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3483 | // CHECK-ASM: vmalhf |
3484 | |
3485 | vss = vec_meadd(vsc, vsc, vss); |
3486 | // CHECK: call <8 x i16> @llvm.s390.vmaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}}) |
3487 | // CHECK-ASM: vmaeb |
3488 | vus = vec_meadd(vuc, vuc, vus); |
3489 | // CHECK: call <8 x i16> @llvm.s390.vmaleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}}) |
3490 | // CHECK-ASM: vmaleb |
3491 | vsi = vec_meadd(vss, vss, vsi); |
3492 | // CHECK: call <4 x i32> @llvm.s390.vmaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}}) |
3493 | // CHECK-ASM: vmaeh |
3494 | vui = vec_meadd(vus, vus, vui); |
3495 | // CHECK: call <4 x i32> @llvm.s390.vmaleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}}) |
3496 | // CHECK-ASM: vmaleh |
3497 | vsl = vec_meadd(vsi, vsi, vsl); |
3498 | // CHECK: call <2 x i64> @llvm.s390.vmaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}}) |
3499 | // CHECK-ASM: vmaef |
3500 | vul = vec_meadd(vui, vui, vul); |
3501 | // CHECK: call <2 x i64> @llvm.s390.vmalef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}}) |
3502 | // CHECK-ASM: vmalef |
3503 | |
3504 | vss = vec_moadd(vsc, vsc, vss); |
3505 | // CHECK: call <8 x i16> @llvm.s390.vmaob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}}) |
3506 | // CHECK-ASM: vmaob |
3507 | vus = vec_moadd(vuc, vuc, vus); |
3508 | // CHECK: call <8 x i16> @llvm.s390.vmalob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}}) |
3509 | // CHECK-ASM: vmalob |
3510 | vsi = vec_moadd(vss, vss, vsi); |
3511 | // CHECK: call <4 x i32> @llvm.s390.vmaoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}}) |
3512 | // CHECK-ASM: vmaoh |
3513 | vui = vec_moadd(vus, vus, vui); |
3514 | // CHECK: call <4 x i32> @llvm.s390.vmaloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}}) |
3515 | // CHECK-ASM: vmaloh |
3516 | vsl = vec_moadd(vsi, vsi, vsl); |
3517 | // CHECK: call <2 x i64> @llvm.s390.vmaof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}}) |
3518 | // CHECK-ASM: vmaof |
3519 | vul = vec_moadd(vui, vui, vul); |
3520 | // CHECK: call <2 x i64> @llvm.s390.vmalof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}}) |
3521 | // CHECK-ASM: vmalof |
3522 | |
3523 | vsc = vec_mulh(vsc, vsc); |
3524 | // CHECK: call <16 x i8> @llvm.s390.vmhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3525 | // CHECK-ASM: vmhb |
3526 | vuc = vec_mulh(vuc, vuc); |
3527 | // CHECK: call <16 x i8> @llvm.s390.vmlhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3528 | // CHECK-ASM: vmlhb |
3529 | vss = vec_mulh(vss, vss); |
3530 | // CHECK: call <8 x i16> @llvm.s390.vmhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3531 | // CHECK-ASM: vmhh |
3532 | vus = vec_mulh(vus, vus); |
3533 | // CHECK: call <8 x i16> @llvm.s390.vmlhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3534 | // CHECK-ASM: vmlhh |
3535 | vsi = vec_mulh(vsi, vsi); |
3536 | // CHECK: call <4 x i32> @llvm.s390.vmhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3537 | // CHECK-ASM: vmhf |
3538 | vui = vec_mulh(vui, vui); |
3539 | // CHECK: call <4 x i32> @llvm.s390.vmlhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3540 | // CHECK-ASM: vmlhf |
3541 | |
3542 | vss = vec_mule(vsc, vsc); |
3543 | // CHECK: call <8 x i16> @llvm.s390.vmeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3544 | // CHECK-ASM: vmeb |
3545 | vus = vec_mule(vuc, vuc); |
3546 | // CHECK: call <8 x i16> @llvm.s390.vmleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3547 | // CHECK-ASM: vmleb |
3548 | vsi = vec_mule(vss, vss); |
3549 | // CHECK: call <4 x i32> @llvm.s390.vmeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3550 | // CHECK-ASM: vmeh |
3551 | vui = vec_mule(vus, vus); |
3552 | // CHECK: call <4 x i32> @llvm.s390.vmleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3553 | // CHECK-ASM: vmleh |
3554 | vsl = vec_mule(vsi, vsi); |
3555 | // CHECK: call <2 x i64> @llvm.s390.vmef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3556 | // CHECK-ASM: vmef |
3557 | vul = vec_mule(vui, vui); |
3558 | // CHECK: call <2 x i64> @llvm.s390.vmlef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3559 | // CHECK-ASM: vmlef |
3560 | |
3561 | vss = vec_mulo(vsc, vsc); |
3562 | // CHECK: call <8 x i16> @llvm.s390.vmob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3563 | // CHECK-ASM: vmob |
3564 | vus = vec_mulo(vuc, vuc); |
3565 | // CHECK: call <8 x i16> @llvm.s390.vmlob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3566 | // CHECK-ASM: vmlob |
3567 | vsi = vec_mulo(vss, vss); |
3568 | // CHECK: call <4 x i32> @llvm.s390.vmoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3569 | // CHECK-ASM: vmoh |
3570 | vui = vec_mulo(vus, vus); |
3571 | // CHECK: call <4 x i32> @llvm.s390.vmloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3572 | // CHECK-ASM: vmloh |
3573 | vsl = vec_mulo(vsi, vsi); |
3574 | // CHECK: call <2 x i64> @llvm.s390.vmof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3575 | // CHECK-ASM: vmof |
3576 | vul = vec_mulo(vui, vui); |
3577 | // CHECK: call <2 x i64> @llvm.s390.vmlof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3578 | // CHECK-ASM: vmlof |
3579 | |
3580 | vuc = vec_subc(vuc, vuc); |
3581 | // CHECK: call <16 x i8> @llvm.s390.vscbib(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3582 | // CHECK-ASM: vscbib |
3583 | vus = vec_subc(vus, vus); |
3584 | // CHECK: call <8 x i16> @llvm.s390.vscbih(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3585 | // CHECK-ASM: vscbih |
3586 | vui = vec_subc(vui, vui); |
3587 | // CHECK: call <4 x i32> @llvm.s390.vscbif(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3588 | // CHECK-ASM: vscbif |
3589 | vul = vec_subc(vul, vul); |
3590 | // CHECK: call <2 x i64> @llvm.s390.vscbig(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3591 | // CHECK-ASM: vscbig |
3592 | |
3593 | vuc = vec_sub_u128(vuc, vuc); |
3594 | // CHECK: call <16 x i8> @llvm.s390.vsq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3595 | // CHECK-ASM: vsq |
3596 | vuc = vec_subc_u128(vuc, vuc); |
3597 | // CHECK: call <16 x i8> @llvm.s390.vscbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3598 | // CHECK-ASM: vscbiq |
3599 | vuc = vec_sube_u128(vuc, vuc, vuc); |
3600 | // CHECK: call <16 x i8> @llvm.s390.vsbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3601 | // CHECK-ASM: vsbiq |
3602 | vuc = vec_subec_u128(vuc, vuc, vuc); |
3603 | // CHECK: call <16 x i8> @llvm.s390.vsbcbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3604 | // CHECK-ASM: vsbcbiq |
3605 | |
3606 | vui = vec_sum4(vuc, vuc); |
3607 | // CHECK: call <4 x i32> @llvm.s390.vsumb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3608 | // CHECK-ASM: vsumb |
3609 | vui = vec_sum4(vus, vus); |
3610 | // CHECK: call <4 x i32> @llvm.s390.vsumh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3611 | // CHECK-ASM: vsumh |
3612 | vul = vec_sum2(vus, vus); |
3613 | // CHECK: call <2 x i64> @llvm.s390.vsumgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3614 | // CHECK-ASM: vsumgh |
3615 | vul = vec_sum2(vui, vui); |
3616 | // CHECK: call <2 x i64> @llvm.s390.vsumgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3617 | // CHECK-ASM: vsumgf |
3618 | vuc = vec_sum_u128(vui, vui); |
3619 | // CHECK: call <16 x i8> @llvm.s390.vsumqf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3620 | // CHECK-ASM: vsumqf |
3621 | vuc = vec_sum_u128(vul, vul); |
3622 | // CHECK: call <16 x i8> @llvm.s390.vsumqg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}) |
3623 | // CHECK-ASM: vsumqg |
3624 | |
3625 | idx = vec_test_mask(vsc, vuc); |
3626 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3627 | // CHECK-ASM: vtm |
3628 | idx = vec_test_mask(vuc, vuc); |
3629 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3630 | // CHECK-ASM: vtm |
3631 | idx = vec_test_mask(vss, vus); |
3632 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3633 | // CHECK-ASM: vtm |
3634 | idx = vec_test_mask(vus, vus); |
3635 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3636 | // CHECK-ASM: vtm |
3637 | idx = vec_test_mask(vsi, vui); |
3638 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3639 | // CHECK-ASM: vtm |
3640 | idx = vec_test_mask(vui, vui); |
3641 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3642 | // CHECK-ASM: vtm |
3643 | idx = vec_test_mask(vsl, vul); |
3644 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3645 | // CHECK-ASM: vtm |
3646 | idx = vec_test_mask(vul, vul); |
3647 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3648 | // CHECK-ASM: vtm |
3649 | idx = vec_test_mask(vd, vul); |
3650 | // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3651 | // CHECK-ASM: vtm |
3652 | } |
3653 | |
3654 | void test_string(void) { |
3655 | // CHECK-ASM-LABEL: test_string |
3656 | |
3657 | vsc = vec_cp_until_zero(vsc); |
3658 | // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}}) |
3659 | // CHECK-ASM: vistrb |
3660 | vuc = vec_cp_until_zero(vuc); |
3661 | // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}}) |
3662 | // CHECK-ASM: vistrb |
3663 | vbc = vec_cp_until_zero(vbc); |
3664 | // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}}) |
3665 | // CHECK-ASM: vistrb |
3666 | vss = vec_cp_until_zero(vss); |
3667 | // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}}) |
3668 | // CHECK-ASM: vistrh |
3669 | vus = vec_cp_until_zero(vus); |
3670 | // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}}) |
3671 | // CHECK-ASM: vistrh |
3672 | vbs = vec_cp_until_zero(vbs); |
3673 | // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}}) |
3674 | // CHECK-ASM: vistrh |
3675 | vsi = vec_cp_until_zero(vsi); |
3676 | // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}}) |
3677 | // CHECK-ASM: vistrf |
3678 | vui = vec_cp_until_zero(vui); |
3679 | // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}}) |
3680 | // CHECK-ASM: vistrf |
3681 | vbi = vec_cp_until_zero(vbi); |
3682 | // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}}) |
3683 | // CHECK-ASM: vistrf |
3684 | |
3685 | vsc = vec_cp_until_zero_cc(vsc, &cc); |
3686 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}}) |
3687 | // CHECK-ASM: vistrbs |
3688 | vuc = vec_cp_until_zero_cc(vuc, &cc); |
3689 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}}) |
3690 | // CHECK-ASM: vistrbs |
3691 | vbc = vec_cp_until_zero_cc(vbc, &cc); |
3692 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}}) |
3693 | // CHECK-ASM: vistrbs |
3694 | vss = vec_cp_until_zero_cc(vss, &cc); |
3695 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}}) |
3696 | // CHECK-ASM: vistrhs |
3697 | vus = vec_cp_until_zero_cc(vus, &cc); |
3698 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}}) |
3699 | // CHECK-ASM: vistrhs |
3700 | vbs = vec_cp_until_zero_cc(vbs, &cc); |
3701 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}}) |
3702 | // CHECK-ASM: vistrhs |
3703 | vsi = vec_cp_until_zero_cc(vsi, &cc); |
3704 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}}) |
3705 | // CHECK-ASM: vistrfs |
3706 | vui = vec_cp_until_zero_cc(vui, &cc); |
3707 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}}) |
3708 | // CHECK-ASM: vistrfs |
3709 | vbi = vec_cp_until_zero_cc(vbi, &cc); |
3710 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}}) |
3711 | // CHECK-ASM: vistrfs |
3712 | |
3713 | vsc = vec_cmpeq_idx(vsc, vsc); |
3714 | // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3715 | // CHECK-ASM: vfeeb |
3716 | vuc = vec_cmpeq_idx(vuc, vuc); |
3717 | // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3718 | // CHECK-ASM: vfeeb |
3719 | vuc = vec_cmpeq_idx(vbc, vbc); |
3720 | // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3721 | // CHECK-ASM: vfeeb |
3722 | vss = vec_cmpeq_idx(vss, vss); |
3723 | // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3724 | // CHECK-ASM: vfeeh |
3725 | vus = vec_cmpeq_idx(vus, vus); |
3726 | // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3727 | // CHECK-ASM: vfeeh |
3728 | vus = vec_cmpeq_idx(vbs, vbs); |
3729 | // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3730 | // CHECK-ASM: vfeeh |
3731 | vsi = vec_cmpeq_idx(vsi, vsi); |
3732 | // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3733 | // CHECK-ASM: vfeef |
3734 | vui = vec_cmpeq_idx(vui, vui); |
3735 | // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3736 | // CHECK-ASM: vfeef |
3737 | vui = vec_cmpeq_idx(vbi, vbi); |
3738 | // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3739 | // CHECK-ASM: vfeef |
3740 | |
3741 | vsc = vec_cmpeq_idx_cc(vsc, vsc, &cc); |
3742 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3743 | // CHECK-ASM: vfeebs |
3744 | vuc = vec_cmpeq_idx_cc(vuc, vuc, &cc); |
3745 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3746 | // CHECK-ASM: vfeebs |
3747 | vuc = vec_cmpeq_idx_cc(vbc, vbc, &cc); |
3748 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3749 | // CHECK-ASM: vfeebs |
3750 | vss = vec_cmpeq_idx_cc(vss, vss, &cc); |
3751 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3752 | // CHECK-ASM: vfeehs |
3753 | vus = vec_cmpeq_idx_cc(vus, vus, &cc); |
3754 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3755 | // CHECK-ASM: vfeehs |
3756 | vus = vec_cmpeq_idx_cc(vbs, vbs, &cc); |
3757 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3758 | // CHECK-ASM: vfeehs |
3759 | vsi = vec_cmpeq_idx_cc(vsi, vsi, &cc); |
3760 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3761 | // CHECK-ASM: vfeefs |
3762 | vui = vec_cmpeq_idx_cc(vui, vui, &cc); |
3763 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3764 | // CHECK-ASM: vfeefs |
3765 | vui = vec_cmpeq_idx_cc(vbi, vbi, &cc); |
3766 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3767 | // CHECK-ASM: vfeefs |
3768 | |
3769 | vsc = vec_cmpeq_or_0_idx(vsc, vsc); |
3770 | // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3771 | // CHECK-ASM: vfeezb |
3772 | vuc = vec_cmpeq_or_0_idx(vuc, vuc); |
3773 | // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3774 | // CHECK-ASM: vfeezb |
3775 | vuc = vec_cmpeq_or_0_idx(vbc, vbc); |
3776 | // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3777 | // CHECK-ASM: vfeezb |
3778 | vss = vec_cmpeq_or_0_idx(vss, vss); |
3779 | // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3780 | // CHECK-ASM: vfeezh |
3781 | vus = vec_cmpeq_or_0_idx(vus, vus); |
3782 | // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3783 | // CHECK-ASM: vfeezh |
3784 | vus = vec_cmpeq_or_0_idx(vbs, vbs); |
3785 | // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3786 | // CHECK-ASM: vfeezh |
3787 | vsi = vec_cmpeq_or_0_idx(vsi, vsi); |
3788 | // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3789 | // CHECK-ASM: vfeezf |
3790 | vui = vec_cmpeq_or_0_idx(vui, vui); |
3791 | // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3792 | // CHECK-ASM: vfeezf |
3793 | vui = vec_cmpeq_or_0_idx(vbi, vbi); |
3794 | // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3795 | // CHECK-ASM: vfeezf |
3796 | |
3797 | vsc = vec_cmpeq_or_0_idx_cc(vsc, vsc, &cc); |
3798 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3799 | // CHECK-ASM: vfeezbs |
3800 | vuc = vec_cmpeq_or_0_idx_cc(vuc, vuc, &cc); |
3801 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3802 | // CHECK-ASM: vfeezbs |
3803 | vuc = vec_cmpeq_or_0_idx_cc(vbc, vbc, &cc); |
3804 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3805 | // CHECK-ASM: vfeezbs |
3806 | vss = vec_cmpeq_or_0_idx_cc(vss, vss, &cc); |
3807 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3808 | // CHECK-ASM: vfeezhs |
3809 | vus = vec_cmpeq_or_0_idx_cc(vus, vus, &cc); |
3810 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3811 | // CHECK-ASM: vfeezhs |
3812 | vus = vec_cmpeq_or_0_idx_cc(vbs, vbs, &cc); |
3813 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3814 | // CHECK-ASM: vfeezhs |
3815 | vsi = vec_cmpeq_or_0_idx_cc(vsi, vsi, &cc); |
3816 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3817 | // CHECK-ASM: vfeezfs |
3818 | vui = vec_cmpeq_or_0_idx_cc(vui, vui, &cc); |
3819 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3820 | // CHECK-ASM: vfeezfs |
3821 | vui = vec_cmpeq_or_0_idx_cc(vbi, vbi, &cc); |
3822 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3823 | // CHECK-ASM: vfeezfs |
3824 | |
3825 | vsc = vec_cmpne_idx(vsc, vsc); |
3826 | // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3827 | // CHECK-ASM: vfeneb |
3828 | vuc = vec_cmpne_idx(vuc, vuc); |
3829 | // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3830 | // CHECK-ASM: vfeneb |
3831 | vuc = vec_cmpne_idx(vbc, vbc); |
3832 | // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3833 | // CHECK-ASM: vfeneb |
3834 | vss = vec_cmpne_idx(vss, vss); |
3835 | // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3836 | // CHECK-ASM: vfeneh |
3837 | vus = vec_cmpne_idx(vus, vus); |
3838 | // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3839 | // CHECK-ASM: vfeneh |
3840 | vus = vec_cmpne_idx(vbs, vbs); |
3841 | // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3842 | // CHECK-ASM: vfeneh |
3843 | vsi = vec_cmpne_idx(vsi, vsi); |
3844 | // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3845 | // CHECK-ASM: vfenef |
3846 | vui = vec_cmpne_idx(vui, vui); |
3847 | // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3848 | // CHECK-ASM: vfenef |
3849 | vui = vec_cmpne_idx(vbi, vbi); |
3850 | // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3851 | // CHECK-ASM: vfenef |
3852 | |
3853 | vsc = vec_cmpne_idx_cc(vsc, vsc, &cc); |
3854 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3855 | // CHECK-ASM: vfenebs |
3856 | vuc = vec_cmpne_idx_cc(vuc, vuc, &cc); |
3857 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3858 | // CHECK-ASM: vfenebs |
3859 | vuc = vec_cmpne_idx_cc(vbc, vbc, &cc); |
3860 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3861 | // CHECK-ASM: vfenebs |
3862 | vss = vec_cmpne_idx_cc(vss, vss, &cc); |
3863 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3864 | // CHECK-ASM: vfenehs |
3865 | vus = vec_cmpne_idx_cc(vus, vus, &cc); |
3866 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3867 | // CHECK-ASM: vfenehs |
3868 | vus = vec_cmpne_idx_cc(vbs, vbs, &cc); |
3869 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3870 | // CHECK-ASM: vfenehs |
3871 | vsi = vec_cmpne_idx_cc(vsi, vsi, &cc); |
3872 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3873 | // CHECK-ASM: vfenefs |
3874 | vui = vec_cmpne_idx_cc(vui, vui, &cc); |
3875 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3876 | // CHECK-ASM: vfenefs |
3877 | vui = vec_cmpne_idx_cc(vbi, vbi, &cc); |
3878 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3879 | // CHECK-ASM: vfenefs |
3880 | |
3881 | vsc = vec_cmpne_or_0_idx(vsc, vsc); |
3882 | // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3883 | // CHECK-ASM: vfenezb |
3884 | vuc = vec_cmpne_or_0_idx(vuc, vuc); |
3885 | // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3886 | // CHECK-ASM: vfenezb |
3887 | vuc = vec_cmpne_or_0_idx(vbc, vbc); |
3888 | // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3889 | // CHECK-ASM: vfenezb |
3890 | vss = vec_cmpne_or_0_idx(vss, vss); |
3891 | // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3892 | // CHECK-ASM: vfenezh |
3893 | vus = vec_cmpne_or_0_idx(vus, vus); |
3894 | // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3895 | // CHECK-ASM: vfenezh |
3896 | vus = vec_cmpne_or_0_idx(vbs, vbs); |
3897 | // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3898 | // CHECK-ASM: vfenezh |
3899 | vsi = vec_cmpne_or_0_idx(vsi, vsi); |
3900 | // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3901 | // CHECK-ASM: vfenezf |
3902 | vui = vec_cmpne_or_0_idx(vui, vui); |
3903 | // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3904 | // CHECK-ASM: vfenezf |
3905 | vui = vec_cmpne_or_0_idx(vbi, vbi); |
3906 | // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3907 | // CHECK-ASM: vfenezf |
3908 | |
3909 | vsc = vec_cmpne_or_0_idx_cc(vsc, vsc, &cc); |
3910 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3911 | // CHECK-ASM: vfenezbs |
3912 | vuc = vec_cmpne_or_0_idx_cc(vuc, vuc, &cc); |
3913 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3914 | // CHECK-ASM: vfenezbs |
3915 | vuc = vec_cmpne_or_0_idx_cc(vbc, vbc, &cc); |
3916 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}) |
3917 | // CHECK-ASM: vfenezbs |
3918 | vss = vec_cmpne_or_0_idx_cc(vss, vss, &cc); |
3919 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3920 | // CHECK-ASM: vfenezhs |
3921 | vus = vec_cmpne_or_0_idx_cc(vus, vus, &cc); |
3922 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3923 | // CHECK-ASM: vfenezhs |
3924 | vus = vec_cmpne_or_0_idx_cc(vbs, vbs, &cc); |
3925 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}) |
3926 | // CHECK-ASM: vfenezhs |
3927 | vsi = vec_cmpne_or_0_idx_cc(vsi, vsi, &cc); |
3928 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3929 | // CHECK-ASM: vfenezfs |
3930 | vui = vec_cmpne_or_0_idx_cc(vui, vui, &cc); |
3931 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3932 | // CHECK-ASM: vfenezfs |
3933 | vui = vec_cmpne_or_0_idx_cc(vbi, vbi, &cc); |
3934 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}) |
3935 | // CHECK-ASM: vfenezfs |
3936 | |
3937 | vbc = vec_cmprg(vuc, vuc, vuc); |
3938 | // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
3939 | // CHECK-ASM: vstrcb |
3940 | vbs = vec_cmprg(vus, vus, vus); |
3941 | // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
3942 | // CHECK-ASM: vstrch |
3943 | vbi = vec_cmprg(vui, vui, vui); |
3944 | // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
3945 | // CHECK-ASM: vstrcf |
3946 | |
3947 | vbc = vec_cmprg_cc(vuc, vuc, vuc, &cc); |
3948 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
3949 | // CHECK-ASM: vstrcbs |
3950 | vbs = vec_cmprg_cc(vus, vus, vus, &cc); |
3951 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
3952 | // CHECK-ASM: vstrchs |
3953 | vbi = vec_cmprg_cc(vui, vui, vui, &cc); |
3954 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
3955 | // CHECK-ASM: vstrcfs |
3956 | |
3957 | vuc = vec_cmprg_idx(vuc, vuc, vuc); |
3958 | // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
3959 | // CHECK-ASM: vstrcb |
3960 | vus = vec_cmprg_idx(vus, vus, vus); |
3961 | // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
3962 | // CHECK-ASM: vstrch |
3963 | vui = vec_cmprg_idx(vui, vui, vui); |
3964 | // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
3965 | // CHECK-ASM: vstrcf |
3966 | |
3967 | vuc = vec_cmprg_idx_cc(vuc, vuc, vuc, &cc); |
3968 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
3969 | // CHECK-ASM: vstrcbs |
3970 | vus = vec_cmprg_idx_cc(vus, vus, vus, &cc); |
3971 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
3972 | // CHECK-ASM: vstrchs |
3973 | vui = vec_cmprg_idx_cc(vui, vui, vui, &cc); |
3974 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
3975 | // CHECK-ASM: vstrcfs |
3976 | |
3977 | vuc = vec_cmprg_or_0_idx(vuc, vuc, vuc); |
3978 | // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
3979 | // CHECK-ASM: vstrczb |
3980 | vus = vec_cmprg_or_0_idx(vus, vus, vus); |
3981 | // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
3982 | // CHECK-ASM: vstrczh |
3983 | vui = vec_cmprg_or_0_idx(vui, vui, vui); |
3984 | // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
3985 | // CHECK-ASM: vstrczf |
3986 | |
3987 | vuc = vec_cmprg_or_0_idx_cc(vuc, vuc, vuc, &cc); |
3988 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
3989 | // CHECK-ASM: vstrczbs |
3990 | vus = vec_cmprg_or_0_idx_cc(vus, vus, vus, &cc); |
3991 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
3992 | // CHECK-ASM: vstrczhs |
3993 | vui = vec_cmprg_or_0_idx_cc(vui, vui, vui, &cc); |
3994 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
3995 | // CHECK-ASM: vstrczfs |
3996 | |
3997 | vbc = vec_cmpnrg(vuc, vuc, vuc); |
3998 | // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
3999 | // CHECK-ASM: vstrcb |
4000 | vbs = vec_cmpnrg(vus, vus, vus); |
4001 | // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4002 | // CHECK-ASM: vstrch |
4003 | vbi = vec_cmpnrg(vui, vui, vui); |
4004 | // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4005 | // CHECK-ASM: vstrcf |
4006 | |
4007 | vbc = vec_cmpnrg_cc(vuc, vuc, vuc, &cc); |
4008 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4009 | // CHECK-ASM: vstrcbs |
4010 | vbs = vec_cmpnrg_cc(vus, vus, vus, &cc); |
4011 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4012 | // CHECK-ASM: vstrchs |
4013 | vbi = vec_cmpnrg_cc(vui, vui, vui, &cc); |
4014 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4015 | // CHECK-ASM: vstrcfs |
4016 | |
4017 | vuc = vec_cmpnrg_idx(vuc, vuc, vuc); |
4018 | // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4019 | // CHECK-ASM: vstrcb |
4020 | vus = vec_cmpnrg_idx(vus, vus, vus); |
4021 | // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4022 | // CHECK-ASM: vstrch |
4023 | vui = vec_cmpnrg_idx(vui, vui, vui); |
4024 | // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4025 | // CHECK-ASM: vstrcf |
4026 | |
4027 | vuc = vec_cmpnrg_idx_cc(vuc, vuc, vuc, &cc); |
4028 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4029 | // CHECK-ASM: vstrcbs |
4030 | vus = vec_cmpnrg_idx_cc(vus, vus, vus, &cc); |
4031 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4032 | // CHECK-ASM: vstrchs |
4033 | vui = vec_cmpnrg_idx_cc(vui, vui, vui, &cc); |
4034 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4035 | // CHECK-ASM: vstrcfs |
4036 | |
4037 | vuc = vec_cmpnrg_or_0_idx(vuc, vuc, vuc); |
4038 | // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4039 | // CHECK-ASM: vstrczb |
4040 | vus = vec_cmpnrg_or_0_idx(vus, vus, vus); |
4041 | // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4042 | // CHECK-ASM: vstrczh |
4043 | vui = vec_cmpnrg_or_0_idx(vui, vui, vui); |
4044 | // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4045 | // CHECK-ASM: vstrczf |
4046 | |
4047 | vuc = vec_cmpnrg_or_0_idx_cc(vuc, vuc, vuc, &cc); |
4048 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4049 | // CHECK-ASM: vstrczbs |
4050 | vus = vec_cmpnrg_or_0_idx_cc(vus, vus, vus, &cc); |
4051 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4052 | // CHECK-ASM: vstrczhs |
4053 | vui = vec_cmpnrg_or_0_idx_cc(vui, vui, vui, &cc); |
4054 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4055 | // CHECK-ASM: vstrczfs |
4056 | |
4057 | vbc = vec_find_any_eq(vsc, vsc); |
4058 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4059 | // CHECK-ASM: vfaeb |
4060 | vbc = vec_find_any_eq(vuc, vuc); |
4061 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4062 | // CHECK-ASM: vfaeb |
4063 | vbc = vec_find_any_eq(vbc, vbc); |
4064 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4065 | // CHECK-ASM: vfaeb |
4066 | vbs = vec_find_any_eq(vss, vss); |
4067 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4068 | // CHECK-ASM: vfaeh |
4069 | vbs = vec_find_any_eq(vus, vus); |
4070 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4071 | // CHECK-ASM: vfaeh |
4072 | vbs = vec_find_any_eq(vbs, vbs); |
4073 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4074 | // CHECK-ASM: vfaeh |
4075 | vbi = vec_find_any_eq(vsi, vsi); |
4076 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4077 | // CHECK-ASM: vfaef |
4078 | vbi = vec_find_any_eq(vui, vui); |
4079 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4080 | // CHECK-ASM: vfaef |
4081 | vbi = vec_find_any_eq(vbi, vbi); |
4082 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4083 | // CHECK-ASM: vfaef |
4084 | |
4085 | vbc = vec_find_any_eq_cc(vsc, vsc, &cc); |
4086 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4087 | // CHECK-ASM: vfaebs |
4088 | vbc = vec_find_any_eq_cc(vuc, vuc, &cc); |
4089 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4090 | // CHECK-ASM: vfaebs |
4091 | vbc = vec_find_any_eq_cc(vbc, vbc, &cc); |
4092 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4) |
4093 | // CHECK-ASM: vfaebs |
4094 | vbs = vec_find_any_eq_cc(vss, vss, &cc); |
4095 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4096 | // CHECK-ASM: vfaehs |
4097 | vbs = vec_find_any_eq_cc(vus, vus, &cc); |
4098 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4099 | // CHECK-ASM: vfaehs |
4100 | vbs = vec_find_any_eq_cc(vbs, vbs, &cc); |
4101 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4) |
4102 | // CHECK-ASM: vfaehs |
4103 | vbi = vec_find_any_eq_cc(vsi, vsi, &cc); |
4104 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4105 | // CHECK-ASM: vfaefs |
4106 | vbi = vec_find_any_eq_cc(vui, vui, &cc); |
4107 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4108 | // CHECK-ASM: vfaefs |
4109 | vbi = vec_find_any_eq_cc(vbi, vbi, &cc); |
4110 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4) |
4111 | // CHECK-ASM: vfaefs |
4112 | |
4113 | vsc = vec_find_any_eq_idx(vsc, vsc); |
4114 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4115 | // CHECK-ASM: vfaeb |
4116 | vuc = vec_find_any_eq_idx(vuc, vuc); |
4117 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4118 | // CHECK-ASM: vfaeb |
4119 | vuc = vec_find_any_eq_idx(vbc, vbc); |
4120 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4121 | // CHECK-ASM: vfaeb |
4122 | vss = vec_find_any_eq_idx(vss, vss); |
4123 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4124 | // CHECK-ASM: vfaeh |
4125 | vus = vec_find_any_eq_idx(vus, vus); |
4126 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4127 | // CHECK-ASM: vfaeh |
4128 | vus = vec_find_any_eq_idx(vbs, vbs); |
4129 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4130 | // CHECK-ASM: vfaeh |
4131 | vsi = vec_find_any_eq_idx(vsi, vsi); |
4132 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4133 | // CHECK-ASM: vfaef |
4134 | vui = vec_find_any_eq_idx(vui, vui); |
4135 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4136 | // CHECK-ASM: vfaef |
4137 | vui = vec_find_any_eq_idx(vbi, vbi); |
4138 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4139 | // CHECK-ASM: vfaef |
4140 | |
4141 | vsc = vec_find_any_eq_idx_cc(vsc, vsc, &cc); |
4142 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4143 | // CHECK-ASM: vfaebs |
4144 | vuc = vec_find_any_eq_idx_cc(vuc, vuc, &cc); |
4145 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4146 | // CHECK-ASM: vfaebs |
4147 | vuc = vec_find_any_eq_idx_cc(vbc, vbc, &cc); |
4148 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4149 | // CHECK-ASM: vfaebs |
4150 | vss = vec_find_any_eq_idx_cc(vss, vss, &cc); |
4151 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4152 | // CHECK-ASM: vfaehs |
4153 | vus = vec_find_any_eq_idx_cc(vus, vus, &cc); |
4154 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4155 | // CHECK-ASM: vfaehs |
4156 | vus = vec_find_any_eq_idx_cc(vbs, vbs, &cc); |
4157 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4158 | // CHECK-ASM: vfaehs |
4159 | vsi = vec_find_any_eq_idx_cc(vsi, vsi, &cc); |
4160 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4161 | // CHECK-ASM: vfaefs |
4162 | vui = vec_find_any_eq_idx_cc(vui, vui, &cc); |
4163 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4164 | // CHECK-ASM: vfaefs |
4165 | vui = vec_find_any_eq_idx_cc(vbi, vbi, &cc); |
4166 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4167 | // CHECK-ASM: vfaefs |
4168 | |
4169 | vsc = vec_find_any_eq_or_0_idx(vsc, vsc); |
4170 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4171 | // CHECK-ASM: vfaezb |
4172 | vuc = vec_find_any_eq_or_0_idx(vuc, vuc); |
4173 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4174 | // CHECK-ASM: vfaezb |
4175 | vuc = vec_find_any_eq_or_0_idx(vbc, vbc); |
4176 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4177 | // CHECK-ASM: vfaezb |
4178 | vss = vec_find_any_eq_or_0_idx(vss, vss); |
4179 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4180 | // CHECK-ASM: vfaezh |
4181 | vus = vec_find_any_eq_or_0_idx(vus, vus); |
4182 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4183 | // CHECK-ASM: vfaezh |
4184 | vus = vec_find_any_eq_or_0_idx(vbs, vbs); |
4185 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4186 | // CHECK-ASM: vfaezh |
4187 | vsi = vec_find_any_eq_or_0_idx(vsi, vsi); |
4188 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4189 | // CHECK-ASM: vfaezf |
4190 | vui = vec_find_any_eq_or_0_idx(vui, vui); |
4191 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4192 | // CHECK-ASM: vfaezf |
4193 | vui = vec_find_any_eq_or_0_idx(vbi, vbi); |
4194 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4195 | // CHECK-ASM: vfaezf |
4196 | |
4197 | vsc = vec_find_any_eq_or_0_idx_cc(vsc, vsc, &cc); |
4198 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4199 | // CHECK-ASM: vfaezbs |
4200 | vuc = vec_find_any_eq_or_0_idx_cc(vuc, vuc, &cc); |
4201 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4202 | // CHECK-ASM: vfaezbs |
4203 | vuc = vec_find_any_eq_or_0_idx_cc(vbc, vbc, &cc); |
4204 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0) |
4205 | // CHECK-ASM: vfaezbs |
4206 | vss = vec_find_any_eq_or_0_idx_cc(vss, vss, &cc); |
4207 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4208 | // CHECK-ASM: vfaezhs |
4209 | vus = vec_find_any_eq_or_0_idx_cc(vus, vus, &cc); |
4210 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4211 | // CHECK-ASM: vfaezhs |
4212 | vus = vec_find_any_eq_or_0_idx_cc(vbs, vbs, &cc); |
4213 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0) |
4214 | // CHECK-ASM: vfaezhs |
4215 | vsi = vec_find_any_eq_or_0_idx_cc(vsi, vsi, &cc); |
4216 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4217 | // CHECK-ASM: vfaezfs |
4218 | vui = vec_find_any_eq_or_0_idx_cc(vui, vui, &cc); |
4219 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4220 | // CHECK-ASM: vfaezfs |
4221 | vui = vec_find_any_eq_or_0_idx_cc(vbi, vbi, &cc); |
4222 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0) |
4223 | // CHECK-ASM: vfaezfs |
4224 | |
4225 | vbc = vec_find_any_ne(vsc, vsc); |
4226 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4227 | // CHECK-ASM: vfaeb |
4228 | vbc = vec_find_any_ne(vuc, vuc); |
4229 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4230 | // CHECK-ASM: vfaeb |
4231 | vbc = vec_find_any_ne(vbc, vbc); |
4232 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4233 | // CHECK-ASM: vfaeb |
4234 | vbs = vec_find_any_ne(vss, vss); |
4235 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4236 | // CHECK-ASM: vfaeh |
4237 | vbs = vec_find_any_ne(vus, vus); |
4238 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4239 | // CHECK-ASM: vfaeh |
4240 | vbs = vec_find_any_ne(vbs, vbs); |
4241 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4242 | // CHECK-ASM: vfaeh |
4243 | vbi = vec_find_any_ne(vsi, vsi); |
4244 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4245 | // CHECK-ASM: vfaef |
4246 | vbi = vec_find_any_ne(vui, vui); |
4247 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4248 | // CHECK-ASM: vfaef |
4249 | vbi = vec_find_any_ne(vbi, vbi); |
4250 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4251 | // CHECK-ASM: vfaef |
4252 | |
4253 | vbc = vec_find_any_ne_cc(vsc, vsc, &cc); |
4254 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4255 | // CHECK-ASM: vfaebs |
4256 | vbc = vec_find_any_ne_cc(vuc, vuc, &cc); |
4257 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4258 | // CHECK-ASM: vfaebs |
4259 | vbc = vec_find_any_ne_cc(vbc, vbc, &cc); |
4260 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12) |
4261 | // CHECK-ASM: vfaebs |
4262 | vbs = vec_find_any_ne_cc(vss, vss, &cc); |
4263 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4264 | // CHECK-ASM: vfaehs |
4265 | vbs = vec_find_any_ne_cc(vus, vus, &cc); |
4266 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4267 | // CHECK-ASM: vfaehs |
4268 | vbs = vec_find_any_ne_cc(vbs, vbs, &cc); |
4269 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12) |
4270 | // CHECK-ASM: vfaehs |
4271 | vbi = vec_find_any_ne_cc(vsi, vsi, &cc); |
4272 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4273 | // CHECK-ASM: vfaefs |
4274 | vbi = vec_find_any_ne_cc(vui, vui, &cc); |
4275 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4276 | // CHECK-ASM: vfaefs |
4277 | vbi = vec_find_any_ne_cc(vbi, vbi, &cc); |
4278 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12) |
4279 | // CHECK-ASM: vfaefs |
4280 | |
4281 | vsc = vec_find_any_ne_idx(vsc, vsc); |
4282 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4283 | // CHECK-ASM: vfaeb |
4284 | vuc = vec_find_any_ne_idx(vuc, vuc); |
4285 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4286 | // CHECK-ASM: vfaeb |
4287 | vuc = vec_find_any_ne_idx(vbc, vbc); |
4288 | // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4289 | // CHECK-ASM: vfaeb |
4290 | vss = vec_find_any_ne_idx(vss, vss); |
4291 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4292 | // CHECK-ASM: vfaeh |
4293 | vus = vec_find_any_ne_idx(vus, vus); |
4294 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4295 | // CHECK-ASM: vfaeh |
4296 | vus = vec_find_any_ne_idx(vbs, vbs); |
4297 | // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4298 | // CHECK-ASM: vfaeh |
4299 | vsi = vec_find_any_ne_idx(vsi, vsi); |
4300 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4301 | // CHECK-ASM: vfaef |
4302 | vui = vec_find_any_ne_idx(vui, vui); |
4303 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4304 | // CHECK-ASM: vfaef |
4305 | vui = vec_find_any_ne_idx(vbi, vbi); |
4306 | // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4307 | // CHECK-ASM: vfaef |
4308 | |
4309 | vsc = vec_find_any_ne_idx_cc(vsc, vsc, &cc); |
4310 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4311 | // CHECK-ASM: vfaebs |
4312 | vuc = vec_find_any_ne_idx_cc(vuc, vuc, &cc); |
4313 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4314 | // CHECK-ASM: vfaebs |
4315 | vuc = vec_find_any_ne_idx_cc(vbc, vbc, &cc); |
4316 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4317 | // CHECK-ASM: vfaebs |
4318 | vss = vec_find_any_ne_idx_cc(vss, vss, &cc); |
4319 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4320 | // CHECK-ASM: vfaehs |
4321 | vus = vec_find_any_ne_idx_cc(vus, vus, &cc); |
4322 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4323 | // CHECK-ASM: vfaehs |
4324 | vus = vec_find_any_ne_idx_cc(vbs, vbs, &cc); |
4325 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4326 | // CHECK-ASM: vfaehs |
4327 | vsi = vec_find_any_ne_idx_cc(vsi, vsi, &cc); |
4328 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4329 | // CHECK-ASM: vfaefs |
4330 | vui = vec_find_any_ne_idx_cc(vui, vui, &cc); |
4331 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4332 | // CHECK-ASM: vfaefs |
4333 | vui = vec_find_any_ne_idx_cc(vbi, vbi, &cc); |
4334 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4335 | // CHECK-ASM: vfaefs |
4336 | |
4337 | vsc = vec_find_any_ne_or_0_idx(vsc, vsc); |
4338 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4339 | // CHECK-ASM: vfaezb |
4340 | vuc = vec_find_any_ne_or_0_idx(vuc, vuc); |
4341 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4342 | // CHECK-ASM: vfaezb |
4343 | vuc = vec_find_any_ne_or_0_idx(vbc, vbc); |
4344 | // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4345 | // CHECK-ASM: vfaezb |
4346 | vss = vec_find_any_ne_or_0_idx(vss, vss); |
4347 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4348 | // CHECK-ASM: vfaezh |
4349 | vus = vec_find_any_ne_or_0_idx(vus, vus); |
4350 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4351 | // CHECK-ASM: vfaezh |
4352 | vus = vec_find_any_ne_or_0_idx(vbs, vbs); |
4353 | // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4354 | // CHECK-ASM: vfaezh |
4355 | vsi = vec_find_any_ne_or_0_idx(vsi, vsi); |
4356 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4357 | // CHECK-ASM: vfaezf |
4358 | vui = vec_find_any_ne_or_0_idx(vui, vui); |
4359 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4360 | // CHECK-ASM: vfaezf |
4361 | vui = vec_find_any_ne_or_0_idx(vbi, vbi); |
4362 | // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4363 | // CHECK-ASM: vfaezf |
4364 | |
4365 | vsc = vec_find_any_ne_or_0_idx_cc(vsc, vsc, &cc); |
4366 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4367 | // CHECK-ASM: vfaezbs |
4368 | vuc = vec_find_any_ne_or_0_idx_cc(vuc, vuc, &cc); |
4369 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4370 | // CHECK-ASM: vfaezbs |
4371 | vuc = vec_find_any_ne_or_0_idx_cc(vbc, vbc, &cc); |
4372 | // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8) |
4373 | // CHECK-ASM: vfaezbs |
4374 | vss = vec_find_any_ne_or_0_idx_cc(vss, vss, &cc); |
4375 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4376 | // CHECK-ASM: vfaezhs |
4377 | vus = vec_find_any_ne_or_0_idx_cc(vus, vus, &cc); |
4378 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4379 | // CHECK-ASM: vfaezhs |
4380 | vus = vec_find_any_ne_or_0_idx_cc(vbs, vbs, &cc); |
4381 | // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8) |
4382 | // CHECK-ASM: vfaezhs |
4383 | vsi = vec_find_any_ne_or_0_idx_cc(vsi, vsi, &cc); |
4384 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4385 | // CHECK-ASM: vfaezfs |
4386 | vui = vec_find_any_ne_or_0_idx_cc(vui, vui, &cc); |
4387 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4388 | // CHECK-ASM: vfaezfs |
4389 | vui = vec_find_any_ne_or_0_idx_cc(vbi, vbi, &cc); |
4390 | // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8) |
4391 | // CHECK-ASM: vfaezfs |
4392 | } |
4393 | |
4394 | void test_float(void) { |
4395 | // CHECK-ASM-LABEL: test_float |
4396 | |
4397 | vd = vec_abs(vd); |
4398 | // CHECK: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}}) |
4399 | // CHECK-ASM: vflpdb |
4400 | |
4401 | vd = vec_nabs(vd); |
4402 | // CHECK: [[ABS:%[^ ]+]] = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}}) |
4403 | // CHECK-NEXT: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ABS]] |
4404 | // CHECK-ASM: vflndb |
4405 | |
4406 | vd = vec_madd(vd, vd, vd); |
4407 | // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}) |
4408 | // CHECK-ASM: vfmadb |
4409 | vd = vec_msub(vd, vd, vd); |
4410 | // CHECK: [[NEG:%[^ ]+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}} |
4411 | // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]]) |
4412 | // CHECK-ASM: vfmsdb |
4413 | vd = vec_sqrt(vd); |
4414 | // CHECK: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}}) |
4415 | // CHECK-ASM: vfsqdb |
4416 | |
4417 | vd = vec_ld2f(cptrf); |
4418 | // CHECK: [[VAL:%[^ ]+]] = load <2 x float>, <2 x float>* %{{.*}} |
4419 | // CHECK: fpext <2 x float> [[VAL]] to <2 x double> |
4420 | // (emulated) |
4421 | vec_st2f(vd, ptrf); |
4422 | // CHECK: [[VAL:%[^ ]+]] = fptrunc <2 x double> %{{.*}} to <2 x float> |
4423 | // CHECK: store <2 x float> [[VAL]], <2 x float>* %{{.*}} |
4424 | // (emulated) |
4425 | |
4426 | vd = vec_ctd(vsl, 0); |
4427 | // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double> |
4428 | // (emulated) |
4429 | vd = vec_ctd(vul, 0); |
4430 | // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double> |
4431 | // (emulated) |
4432 | vd = vec_ctd(vsl, 1); |
4433 | // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double> |
4434 | // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01> |
4435 | // (emulated) |
4436 | vd = vec_ctd(vul, 1); |
4437 | // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double> |
4438 | // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01> |
4439 | // (emulated) |
4440 | vd = vec_ctd(vsl, 31); |
4441 | // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double> |
4442 | // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000> |
4443 | // (emulated) |
4444 | vd = vec_ctd(vul, 31); |
4445 | // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double> |
4446 | // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000> |
4447 | // (emulated) |
4448 | |
4449 | vsl = vec_ctsl(vd, 0); |
4450 | // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64> |
4451 | // (emulated) |
4452 | vul = vec_ctul(vd, 0); |
4453 | // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64> |
4454 | // (emulated) |
4455 | vsl = vec_ctsl(vd, 1); |
4456 | // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00> |
4457 | // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64> |
4458 | // (emulated) |
4459 | vul = vec_ctul(vd, 1); |
4460 | // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00> |
4461 | // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64> |
4462 | // (emulated) |
4463 | vsl = vec_ctsl(vd, 31); |
4464 | // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000> |
4465 | // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64> |
4466 | // (emulated) |
4467 | vul = vec_ctul(vd, 31); |
4468 | // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000> |
4469 | // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64> |
4470 | // (emulated) |
4471 | |
4472 | vd = vec_double(vsl); |
4473 | // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double> |
4474 | // CHECK-ASM: vcdgb |
4475 | vd = vec_double(vul); |
4476 | // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double> |
4477 | // CHECK-ASM: vcdlgb |
4478 | |
4479 | vsl = vec_signed(vd); |
4480 | // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64> |
4481 | // CHECK-ASM: vcgdb |
4482 | vul = vec_unsigned(vd); |
4483 | // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64> |
4484 | // CHECK-ASM: vclgdb |
4485 | |
4486 | vd = vec_roundp(vd); |
4487 | // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}}) |
4488 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 6 |
4489 | vd = vec_ceil(vd); |
4490 | // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}}) |
4491 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 6 |
4492 | vd = vec_roundm(vd); |
4493 | // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}}) |
4494 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 7 |
4495 | vd = vec_floor(vd); |
4496 | // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}}) |
4497 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 7 |
4498 | vd = vec_roundz(vd); |
4499 | // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}}) |
4500 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 5 |
4501 | vd = vec_trunc(vd); |
4502 | // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}}) |
4503 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 5 |
4504 | vd = vec_roundc(vd); |
4505 | // CHECK: call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %{{.*}}) |
4506 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 0 |
4507 | vd = vec_rint(vd); |
4508 | // CHECK: call <2 x double> @llvm.rint.v2f64(<2 x double> %{{.*}}) |
4509 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 0, 0 |
4510 | vd = vec_round(vd); |
4511 | // CHECK: call <2 x double> @llvm.s390.vfidb(<2 x double> %{{.*}}, i32 4, i32 4) |
4512 | // CHECK-ASM: vfidb %{{.*}}, %{{.*}}, 4, 4 |
4513 | |
4514 | vbl = vec_fp_test_data_class(vd, 0, &cc); |
4515 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 0) |
4516 | // CHECK-ASM: vftcidb |
4517 | vbl = vec_fp_test_data_class(vd, 4095, &cc); |
4518 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4095) |
4519 | // CHECK-ASM: vftcidb |
4520 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_ZERO_P, &cc); |
4521 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 2048) |
4522 | // CHECK-ASM: vftcidb |
4523 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_ZERO_N, &cc); |
4524 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 1024) |
4525 | // CHECK-ASM: vftcidb |
4526 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_ZERO, &cc); |
4527 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3072) |
4528 | // CHECK-ASM: vftcidb |
4529 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_NORMAL_P, &cc); |
4530 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 512) |
4531 | // CHECK-ASM: vftcidb |
4532 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_NORMAL_N, &cc); |
4533 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 256) |
4534 | // CHECK-ASM: vftcidb |
4535 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_NORMAL, &cc); |
4536 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 768) |
4537 | // CHECK-ASM: vftcidb |
4538 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SUBNORMAL_P, &cc); |
4539 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 128) |
4540 | // CHECK-ASM: vftcidb |
4541 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SUBNORMAL_N, &cc); |
4542 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 64) |
4543 | // CHECK-ASM: vftcidb |
4544 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SUBNORMAL, &cc); |
4545 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 192) |
4546 | // CHECK-ASM: vftcidb |
4547 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_INFINITY_P, &cc); |
4548 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 32) |
4549 | // CHECK-ASM: vftcidb |
4550 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_INFINITY_N, &cc); |
4551 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 16) |
4552 | // CHECK-ASM: vftcidb |
4553 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_INFINITY, &cc); |
4554 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 48) |
4555 | // CHECK-ASM: vftcidb |
4556 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_QNAN_P, &cc); |
4557 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 8) |
4558 | // CHECK-ASM: vftcidb |
4559 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_QNAN_N, &cc); |
4560 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4) |
4561 | // CHECK-ASM: vftcidb |
4562 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_QNAN, &cc); |
4563 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 12) |
4564 | // CHECK-ASM: vftcidb |
4565 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SNAN_P, &cc); |
4566 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 2) |
4567 | // CHECK-ASM: vftcidb |
4568 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SNAN_N, &cc); |
4569 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 1) |
4570 | // CHECK-ASM: vftcidb |
4571 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_SNAN, &cc); |
4572 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3) |
4573 | // CHECK-ASM: vftcidb |
4574 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_NAN, &cc); |
4575 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15) |
4576 | // CHECK-ASM: vftcidb |
4577 | vbl = vec_fp_test_data_class(vd, __VEC_CLASS_FP_NOT_NORMAL, &cc); |
4578 | // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 3327) |
4579 | // CHECK-ASM: vftcidb |
4580 | } |
4581 | |