1 // REQUIRES: powerpc-registered-target
2 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown -emit-llvm %s \
3 // RUN: -flax-vector-conversions=none -faltivec-src-compat=mixed \
4 // RUN: -o - | FileCheck %s
5 // RUN: %clang_cc1 -target-feature +altivec -triple powerpcle-unknown-unknown -emit-llvm %s \
6 // RUN: -flax-vector-conversions=none -faltivec-src-compat=mixed \
7 // RUN: -o - | FileCheck %s -check-prefix=CHECK-LE
8 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown -emit-llvm %s \
9 // RUN: -flax-vector-conversions=none -faltivec-src-compat=mixed \
10 // RUN: -o - | FileCheck %s
11 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64le-unknown-unknown -emit-llvm %s \
12 // RUN: -flax-vector-conversions=none -faltivec-src-compat=mixed \
13 // RUN: -o - | FileCheck %s -check-prefix=CHECK-LE
14 // RUN: not %clang_cc1 -triple powerpc64le-unknown-unknown -emit-llvm %s \
15 // RUN: -ferror-limit 0 -DNO_ALTIVEC -o - 2>&1 \
16 // RUN: | FileCheck %s -check-prefix=CHECK-NOALTIVEC
17 #ifndef NO_ALTIVEC
18 #include <altivec.h>
19 #endif
20
21 vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
22 vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
23 vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
24 vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
25 vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
26 vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
27 vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
28 vector bool int vbi = { 1, 0, 1, 0 };
29 vector int vi = { -1, 2, -3, 4 };
30 vector unsigned int vui = { 1, 2, 3, 4 };
31 vector float vf = { -1.5, 2.5, -3.5, 4.5 };
32
33 vector bool char res_vbc;
34 vector signed char res_vsc;
35 vector unsigned char res_vuc;
36 vector bool short res_vbs;
37 vector short res_vs;
38 vector unsigned short res_vus;
39 vector pixel res_vp;
40 vector bool int res_vbi;
41 vector int res_vi;
42 vector unsigned int res_vui;
43 vector float res_vf;
44
45 // CHECK-NOALTIVEC: error: unknown type name 'vector'
46 // CHECK-NOALTIVEC-NOT: '(error)'
47 const signed char *param_sc_ld;
48 const unsigned char *param_uc_ld;
49 const short *param_s_ld;
50 const unsigned short *param_us_ld;
51 const int *param_i_ld;
52 const unsigned int *param_ui_ld;
53 const float *param_f_ld;
54
55 signed char param_sc;
56 unsigned char param_uc;
57 short param_s;
58 unsigned short param_us;
59 int param_i;
60 unsigned int param_ui;
61 float param_f;
62 signed long long param_sll;
63
64 int res_sc;
65 int res_uc;
66 int res_s;
67 int res_us;
68 int res_i;
69 int res_ui;
70 int res_f;
71
72 // CHECK-LABEL: define{{.*}} void @test1
test1()73 void test1() {
74
75 /* vec_abs */
76 vsc = vec_abs(vsc);
77 // CHECK: sub <16 x i8> zeroinitializer
78 // CHECK: @llvm.ppc.altivec.vmaxsb
79 // CHECK-LE: sub <16 x i8> zeroinitializer
80 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
81
82 vs = vec_abs(vs);
83 // CHECK: sub <8 x i16> zeroinitializer
84 // CHECK: @llvm.ppc.altivec.vmaxsh
85 // CHECK-LE: sub <8 x i16> zeroinitializer
86 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
87
88 vi = vec_abs(vi);
89 // CHECK: sub <4 x i32> zeroinitializer
90 // CHECK: @llvm.ppc.altivec.vmaxsw
91 // CHECK-LE: sub <4 x i32> zeroinitializer
92 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
93
94 vf = vec_abs(vf);
95 // CHECK: bitcast <4 x float> %{{.*}} to <4 x i32>
96 // CHECK: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
97 // CHECK: bitcast <4 x i32> %{{.*}} to <4 x float>
98 // CHECK: store <4 x float> %{{.*}}, <4 x float>* @vf
99 // CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
100 // CHECK-LE: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
101 // CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
102 // CHECK-LE: store <4 x float> %{{.*}}, <4 x float>* @vf
103
104 vsc = vec_nabs(vsc);
105 // CHECK: sub <16 x i8> zeroinitializer
106 // CHECK: @llvm.ppc.altivec.vminsb
107 // CHECK-LE: sub <16 x i8> zeroinitializer
108 // CHECK-LE: @llvm.ppc.altivec.vminsb
109
110 vs = vec_nabs(vs);
111 // CHECK: sub <8 x i16> zeroinitializer
112 // CHECK: @llvm.ppc.altivec.vminsh
113 // CHECK-LE: sub <8 x i16> zeroinitializer
114 // CHECK-LE: @llvm.ppc.altivec.vminsh
115
116 vi = vec_nabs(vi);
117 // CHECK: sub <4 x i32> zeroinitializer
118 // CHECK: @llvm.ppc.altivec.vminsw
119 // CHECK-LE: sub <4 x i32> zeroinitializer
120 // CHECK-LE: @llvm.ppc.altivec.vminsw
121
122 res_vi = vec_neg(vi);
123 // CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
124 // CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
125
126 res_vs = vec_neg(vs);
127 // CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
128 // CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
129
130 res_vsc = vec_neg(vsc);
131 // CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
132 // CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
133
134
135 /* vec_abs */
136 vsc = vec_abss(vsc);
137 // CHECK: @llvm.ppc.altivec.vsubsbs
138 // CHECK: @llvm.ppc.altivec.vmaxsb
139 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
140 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
141
142 vs = vec_abss(vs);
143 // CHECK: @llvm.ppc.altivec.vsubshs
144 // CHECK: @llvm.ppc.altivec.vmaxsh
145 // CHECK-LE: @llvm.ppc.altivec.vsubshs
146 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
147
148 vi = vec_abss(vi);
149 // CHECK: @llvm.ppc.altivec.vsubsws
150 // CHECK: @llvm.ppc.altivec.vmaxsw
151 // CHECK-LE: @llvm.ppc.altivec.vsubsws
152 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
153
154 /* vec_add */
155 res_vsc = vec_add(vsc, vsc);
156 // CHECK: add <16 x i8>
157 // CHECK-LE: add <16 x i8>
158
159 res_vsc = vec_add(vbc, vsc);
160 // CHECK: add <16 x i8>
161 // CHECK-LE: add <16 x i8>
162
163 res_vsc = vec_add(vsc, vbc);
164 // CHECK: add <16 x i8>
165 // CHECK-LE: add <16 x i8>
166
167 res_vuc = vec_add(vuc, vuc);
168 // CHECK: add <16 x i8>
169 // CHECK-LE: add <16 x i8>
170
171 res_vuc = vec_add(vbc, vuc);
172 // CHECK: add <16 x i8>
173 // CHECK-LE: add <16 x i8>
174
175 res_vuc = vec_add(vuc, vbc);
176 // CHECK: add <16 x i8>
177 // CHECK-LE: add <16 x i8>
178
179 res_vs = vec_add(vs, vs);
180 // CHECK: add <8 x i16>
181 // CHECK-LE: add <8 x i16>
182
183 res_vs = vec_add(vbs, vs);
184 // CHECK: add <8 x i16>
185 // CHECK-LE: add <8 x i16>
186
187 res_vs = vec_add(vs, vbs);
188 // CHECK: add <8 x i16>
189 // CHECK-LE: add <8 x i16>
190
191 res_vus = vec_add(vus, vus);
192 // CHECK: add <8 x i16>
193 // CHECK-LE: add <8 x i16>
194
195 res_vus = vec_add(vbs, vus);
196 // CHECK: add <8 x i16>
197 // CHECK-LE: add <8 x i16>
198
199 res_vus = vec_add(vus, vbs);
200 // CHECK: add <8 x i16>
201 // CHECK-LE: add <8 x i16>
202
203 res_vi = vec_add(vi, vi);
204 // CHECK: add <4 x i32>
205 // CHECK-LE: add <4 x i32>
206
207 res_vi = vec_add(vbi, vi);
208 // CHECK: add <4 x i32>
209 // CHECK-LE: add <4 x i32>
210
211 res_vi = vec_add(vi, vbi);
212 // CHECK: add <4 x i32>
213 // CHECK-LE: add <4 x i32>
214
215 res_vui = vec_add(vui, vui);
216 // CHECK: add <4 x i32>
217 // CHECK-LE: add <4 x i32>
218
219 res_vui = vec_add(vbi, vui);
220 // CHECK: add <4 x i32>
221 // CHECK-LE: add <4 x i32>
222
223 res_vui = vec_add(vui, vbi);
224 // CHECK: add <4 x i32>
225 // CHECK-LE: add <4 x i32>
226
227 res_vf = vec_add(vf, vf);
228 // CHECK: fadd <4 x float>
229 // CHECK-LE: fadd <4 x float>
230
231 res_vi = vec_adde(vi, vi, vi);
232 // CHECK: and <4 x i32>
233 // CHECK: add <4 x i32>
234 // CHECK: add <4 x i32>
235 // CHECK-LE: and <4 x i32>
236 // CHECK-LE: add <4 x i32>
237 // CHECK-LE: add <4 x i32>
238
239 res_vui = vec_adde(vui, vui, vui);
240 // CHECK: and <4 x i32>
241 // CHECK: add <4 x i32>
242 // CHECK: add <4 x i32>
243 // CHECK-LE: and <4 x i32>
244 // CHECK-LE: add <4 x i32>
245 // CHECK-LE: add <4 x i32>
246
247 res_vsc = vec_vaddubm(vsc, vsc);
248 // CHECK: add <16 x i8>
249 // CHECK-LE: add <16 x i8>
250
251 res_vsc = vec_vaddubm(vbc, vsc);
252 // CHECK: add <16 x i8>
253 // CHECK-LE: add <16 x i8>
254
255 res_vsc = vec_vaddubm(vsc, vbc);
256 // CHECK: add <16 x i8>
257 // CHECK-LE: add <16 x i8>
258
259 res_vuc = vec_vaddubm(vuc, vuc);
260 // CHECK: add <16 x i8>
261 // CHECK-LE: add <16 x i8>
262
263 res_vuc = vec_vaddubm(vbc, vuc);
264 // CHECK: add <16 x i8>
265 // CHECK-LE: add <16 x i8>
266
267 res_vuc = vec_vaddubm(vuc, vbc);
268 // CHECK: add <16 x i8>
269 // CHECK-LE: add <16 x i8>
270
271 res_vs = vec_vadduhm(vs, vs);
272 // CHECK: add <8 x i16>
273 // CHECK-LE: add <8 x i16>
274
275 res_vs = vec_vadduhm(vbs, vs);
276 // CHECK: add <8 x i16>
277 // CHECK-LE: add <8 x i16>
278
279 res_vs = vec_vadduhm(vs, vbs);
280 // CHECK: add <8 x i16>
281 // CHECK-LE: add <8 x i16>
282
283 res_vus = vec_vadduhm(vus, vus);
284 // CHECK: add <8 x i16>
285 // CHECK-LE: add <8 x i16>
286
287 res_vus = vec_vadduhm(vbs, vus);
288 // CHECK: add <8 x i16>
289 // CHECK-LE: add <8 x i16>
290
291 res_vus = vec_vadduhm(vus, vbs);
292 // CHECK: add <8 x i16>
293 // CHECK-LE: add <8 x i16>
294
295 res_vi = vec_vadduwm(vi, vi);
296 // CHECK: add <4 x i32>
297 // CHECK-LE: add <4 x i32>
298
299 res_vi = vec_vadduwm(vbi, vi);
300 // CHECK: add <4 x i32>
301 // CHECK-LE: add <4 x i32>
302
303 res_vi = vec_vadduwm(vi, vbi);
304 // CHECK: add <4 x i32>
305 // CHECK-LE: add <4 x i32>
306
307 res_vui = vec_vadduwm(vui, vui);
308 // CHECK: add <4 x i32>
309 // CHECK-LE: add <4 x i32>
310
311 res_vui = vec_vadduwm(vbi, vui);
312 // CHECK: add <4 x i32>
313 // CHECK-LE: add <4 x i32>
314
315 res_vui = vec_vadduwm(vui, vbi);
316 // CHECK: add <4 x i32>
317 // CHECK-LE: add <4 x i32>
318
319 res_vf = vec_vaddfp(vf, vf);
320 // CHECK: fadd <4 x float>
321 // CHECK-LE: fadd <4 x float>
322
323 /* vec_addc */
324 res_vui = vec_addc(vui, vui);
325 // CHECK: @llvm.ppc.altivec.vaddcuw
326 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
327
328 res_vui = vec_vaddcuw(vui, vui);
329 // CHECK: @llvm.ppc.altivec.vaddcuw
330 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
331
332 /* vec_adds */
333 res_vsc = vec_adds(vsc, vsc);
334 // CHECK: @llvm.ppc.altivec.vaddsbs
335 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
336
337 res_vsc = vec_adds(vbc, vsc);
338 // CHECK: @llvm.ppc.altivec.vaddsbs
339 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
340
341 res_vsc = vec_adds(vsc, vbc);
342 // CHECK: @llvm.ppc.altivec.vaddsbs
343 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
344
345 res_vuc = vec_adds(vuc, vuc);
346 // CHECK: @llvm.ppc.altivec.vaddubs
347 // CHECK-LE: @llvm.ppc.altivec.vaddubs
348
349 res_vuc = vec_adds(vbc, vuc);
350 // CHECK: @llvm.ppc.altivec.vaddubs
351 // CHECK-LE: @llvm.ppc.altivec.vaddubs
352
353 res_vuc = vec_adds(vuc, vbc);
354 // CHECK: @llvm.ppc.altivec.vaddubs
355 // CHECK-LE: @llvm.ppc.altivec.vaddubs
356
357 res_vs = vec_adds(vs, vs);
358 // CHECK: @llvm.ppc.altivec.vaddshs
359 // CHECK-LE: @llvm.ppc.altivec.vaddshs
360
361 res_vs = vec_adds(vbs, vs);
362 // CHECK: @llvm.ppc.altivec.vaddshs
363 // CHECK-LE: @llvm.ppc.altivec.vaddshs
364
365 res_vs = vec_adds(vs, vbs);
366 // CHECK: @llvm.ppc.altivec.vaddshs
367 // CHECK-LE: @llvm.ppc.altivec.vaddshs
368
369 res_vus = vec_adds(vus, vus);
370 // CHECK: @llvm.ppc.altivec.vadduhs
371 // CHECK-LE: @llvm.ppc.altivec.vadduhs
372
373 res_vus = vec_adds(vbs, vus);
374 // CHECK: @llvm.ppc.altivec.vadduhs
375 // CHECK-LE: @llvm.ppc.altivec.vadduhs
376
377 res_vus = vec_adds(vus, vbs);
378 // CHECK: @llvm.ppc.altivec.vadduhs
379 // CHECK-LE: @llvm.ppc.altivec.vadduhs
380
381 res_vi = vec_adds(vi, vi);
382 // CHECK: @llvm.ppc.altivec.vaddsws
383 // CHECK-LE: @llvm.ppc.altivec.vaddsws
384
385 res_vi = vec_adds(vbi, vi);
386 // CHECK: @llvm.ppc.altivec.vaddsws
387 // CHECK-LE: @llvm.ppc.altivec.vaddsws
388
389 res_vi = vec_adds(vi, vbi);
390 // CHECK: @llvm.ppc.altivec.vaddsws
391 // CHECK-LE: @llvm.ppc.altivec.vaddsws
392
393 res_vui = vec_adds(vui, vui);
394 // CHECK: @llvm.ppc.altivec.vadduws
395 // CHECK-LE: @llvm.ppc.altivec.vadduws
396
397 res_vui = vec_adds(vbi, vui);
398 // CHECK: @llvm.ppc.altivec.vadduws
399 // CHECK-LE: @llvm.ppc.altivec.vadduws
400
401 res_vui = vec_adds(vui, vbi);
402 // CHECK: @llvm.ppc.altivec.vadduws
403 // CHECK-LE: @llvm.ppc.altivec.vadduws
404
405 res_vsc = vec_vaddsbs(vsc, vsc);
406 // CHECK: @llvm.ppc.altivec.vaddsbs
407 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
408
409 res_vsc = vec_vaddsbs(vbc, vsc);
410 // CHECK: @llvm.ppc.altivec.vaddsbs
411 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
412
413 res_vsc = vec_vaddsbs(vsc, vbc);
414 // CHECK: @llvm.ppc.altivec.vaddsbs
415 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
416
417 res_vuc = vec_vaddubs(vuc, vuc);
418 // CHECK: @llvm.ppc.altivec.vaddubs
419 // CHECK-LE: @llvm.ppc.altivec.vaddubs
420
421 res_vuc = vec_vaddubs(vbc, vuc);
422 // CHECK: @llvm.ppc.altivec.vaddubs
423 // CHECK-LE: @llvm.ppc.altivec.vaddubs
424
425 res_vuc = vec_vaddubs(vuc, vbc);
426 // CHECK: @llvm.ppc.altivec.vaddubs
427 // CHECK-LE: @llvm.ppc.altivec.vaddubs
428
429 res_vs = vec_vaddshs(vs, vs);
430 // CHECK: @llvm.ppc.altivec.vaddshs
431 // CHECK-LE: @llvm.ppc.altivec.vaddshs
432
433 res_vs = vec_vaddshs(vbs, vs);
434 // CHECK: @llvm.ppc.altivec.vaddshs
435 // CHECK-LE: @llvm.ppc.altivec.vaddshs
436
437 res_vs = vec_vaddshs(vs, vbs);
438 // CHECK: @llvm.ppc.altivec.vaddshs
439 // CHECK-LE: @llvm.ppc.altivec.vaddshs
440
441 res_vus = vec_vadduhs(vus, vus);
442 // CHECK: @llvm.ppc.altivec.vadduhs
443 // CHECK-LE: @llvm.ppc.altivec.vadduhs
444
445 res_vus = vec_vadduhs(vbs, vus);
446 // CHECK: @llvm.ppc.altivec.vadduhs
447 // CHECK-LE: @llvm.ppc.altivec.vadduhs
448
449 res_vus = vec_vadduhs(vus, vbs);
450 // CHECK: @llvm.ppc.altivec.vadduhs
451 // CHECK-LE: @llvm.ppc.altivec.vadduhs
452
453 res_vi = vec_vaddsws(vi, vi);
454 // CHECK: @llvm.ppc.altivec.vaddsws
455 // CHECK-LE: @llvm.ppc.altivec.vaddsws
456
457 res_vi = vec_vaddsws(vbi, vi);
458 // CHECK: @llvm.ppc.altivec.vaddsws
459 // CHECK-LE: @llvm.ppc.altivec.vaddsws
460
461 res_vi = vec_vaddsws(vi, vbi);
462 // CHECK: @llvm.ppc.altivec.vaddsws
463 // CHECK-LE: @llvm.ppc.altivec.vaddsws
464
465 res_vui = vec_vadduws(vui, vui);
466 // CHECK: @llvm.ppc.altivec.vadduws
467 // CHECK-LE: @llvm.ppc.altivec.vadduws
468
469 res_vui = vec_vadduws(vbi, vui);
470 // CHECK: @llvm.ppc.altivec.vadduws
471 // CHECK-LE: @llvm.ppc.altivec.vadduws
472
473 res_vui = vec_vadduws(vui, vbi);
474 // CHECK: @llvm.ppc.altivec.vadduws
475 // CHECK-LE: @llvm.ppc.altivec.vadduws
476
477 /* vec_and */
478 res_vsc = vec_and(vsc, vsc);
479 // CHECK: and <16 x i8>
480 // CHECK-LE: and <16 x i8>
481
482 res_vsc = vec_and(vbc, vsc);
483 // CHECK: and <16 x i8>
484 // CHECK-LE: and <16 x i8>
485
486 res_vsc = vec_and(vsc, vbc);
487 // CHECK: and <16 x i8>
488 // CHECK-LE: and <16 x i8>
489
490 res_vuc = vec_and(vuc, vuc);
491 // CHECK: and <16 x i8>
492 // CHECK-LE: and <16 x i8>
493
494 res_vuc = vec_and(vbc, vuc);
495 // CHECK: and <16 x i8>
496 // CHECK-LE: and <16 x i8>
497
498 res_vuc = vec_and(vuc, vbc);
499 // CHECK: and <16 x i8>
500 // CHECK-LE: and <16 x i8>
501
502 res_vbc = vec_and(vbc, vbc);
503 // CHECK: and <16 x i8>
504 // CHECK-LE: and <16 x i8>
505
506 res_vs = vec_and(vs, vs);
507 // CHECK: and <8 x i16>
508 // CHECK-LE: and <8 x i16>
509
510 res_vs = vec_and(vbs, vs);
511 // CHECK: and <8 x i16>
512 // CHECK-LE: and <8 x i16>
513
514 res_vs = vec_and(vs, vbs);
515 // CHECK: and <8 x i16>
516 // CHECK-LE: and <8 x i16>
517
518 res_vus = vec_and(vus, vus);
519 // CHECK: and <8 x i16>
520 // CHECK-LE: and <8 x i16>
521
522 res_vus = vec_and(vbs, vus);
523 // CHECK: and <8 x i16>
524 // CHECK-LE: and <8 x i16>
525
526 res_vus = vec_and(vus, vbs);
527 // CHECK: and <8 x i16>
528 // CHECK-LE: and <8 x i16>
529
530 res_vbs = vec_and(vbs, vbs);
531 // CHECK: and <8 x i16>
532 // CHECK-LE: and <8 x i16>
533
534 res_vi = vec_and(vi, vi);
535 // CHECK: and <4 x i32>
536 // CHECK-LE: and <4 x i32>
537
538 res_vi = vec_and(vbi, vi);
539 // CHECK: and <4 x i32>
540 // CHECK-le: and <4 x i32>
541
542 res_vi = vec_and(vi, vbi);
543 // CHECK: and <4 x i32>
544 // CHECK-LE: and <4 x i32>
545
546 res_vui = vec_and(vui, vui);
547 // CHECK: and <4 x i32>
548 // CHECK-LE: and <4 x i32>
549
550 res_vui = vec_and(vbi, vui);
551 // CHECK: and <4 x i32>
552 // CHECK-LE: and <4 x i32>
553
554 res_vui = vec_and(vui, vbi);
555 // CHECK: and <4 x i32>
556 // CHECK-LE: and <4 x i32>
557
558 res_vbi = vec_and(vbi, vbi);
559 // CHECK: and <4 x i32>
560 // CHECK-LE: and <4 x i32>
561
562 res_vsc = vec_vand(vsc, vsc);
563 // CHECK: and <16 x i8>
564 // CHECK-LE: and <16 x i8>
565
566 res_vsc = vec_vand(vbc, vsc);
567 // CHECK: and <16 x i8>
568 // CHECK-LE: and <16 x i8>
569
570 res_vsc = vec_vand(vsc, vbc);
571 // CHECK: and <16 x i8>
572 // CHECK-LE: and <16 x i8>
573
574 res_vuc = vec_vand(vuc, vuc);
575 // CHECK: and <16 x i8>
576 // CHECK-LE: and <16 x i8>
577
578 res_vuc = vec_vand(vbc, vuc);
579 // CHECK: and <16 x i8>
580 // CHECK-LE: and <16 x i8>
581
582 res_vuc = vec_vand(vuc, vbc);
583 // CHECK: and <16 x i8>
584 // CHECK-LE: and <16 x i8>
585
586 res_vbc = vec_vand(vbc, vbc);
587 // CHECK: and <16 x i8>
588 // CHECK-LE: and <16 x i8>
589
590 res_vs = vec_vand(vs, vs);
591 // CHECK: and <8 x i16>
592 // CHECK-LE: and <8 x i16>
593
594 res_vs = vec_vand(vbs, vs);
595 // CHECK: and <8 x i16>
596 // CHECK-LE: and <8 x i16>
597
598 res_vs = vec_vand(vs, vbs);
599 // CHECK: and <8 x i16>
600 // CHECK-LE: and <8 x i16>
601
602 res_vus = vec_vand(vus, vus);
603 // CHECK: and <8 x i16>
604 // CHECK-LE: and <8 x i16>
605
606 res_vus = vec_vand(vbs, vus);
607 // CHECK: and <8 x i16>
608 // CHECK-LE: and <8 x i16>
609
610 res_vus = vec_vand(vus, vbs);
611 // CHECK: and <8 x i16>
612 // CHECK-LE: and <8 x i16>
613
614 res_vbs = vec_vand(vbs, vbs);
615 // CHECK: and <8 x i16>
616 // CHECK-LE: and <8 x i16>
617
618 res_vi = vec_vand(vi, vi);
619 // CHECK: and <4 x i32>
620 // CHECK-LE: and <4 x i32>
621
622 res_vi = vec_vand(vbi, vi);
623 // CHECK: and <4 x i32>
624 // CHECK-LE: and <4 x i32>
625
626 res_vi = vec_vand(vi, vbi);
627 // CHECK: and <4 x i32>
628 // CHECK-LE: and <4 x i32>
629
630 res_vui = vec_vand(vui, vui);
631 // CHECK: and <4 x i32>
632 // CHECK-LE: and <4 x i32>
633
634 res_vui = vec_vand(vbi, vui);
635 // CHECK: and <4 x i32>
636 // CHECK-LE: and <4 x i32>
637
638 res_vui = vec_vand(vui, vbi);
639 // CHECK: and <4 x i32>
640 // CHECK-LE: and <4 x i32>
641
642 res_vbi = vec_vand(vbi, vbi);
643 // CHECK: and <4 x i32>
644 // CHECK-LE: and <4 x i32>
645
646 /* vec_andc */
647 res_vsc = vec_andc(vsc, vsc);
648 // CHECK: xor <16 x i8>
649 // CHECK: and <16 x i8>
650 // CHECK-LE: xor <16 x i8>
651 // CHECK-LE: and <16 x i8>
652
653 res_vsc = vec_andc(vbc, vsc);
654 // CHECK: xor <16 x i8>
655 // CHECK: and <16 x i8>
656 // CHECK-LE: xor <16 x i8>
657 // CHECK-LE: and <16 x i8>
658
659 res_vsc = vec_andc(vsc, vbc);
660 // CHECK: xor <16 x i8>
661 // CHECK: and <16 x i8>
662 // CHECK-LE: xor <16 x i8>
663 // CHECK-LE: and <16 x i8>
664
665 res_vuc = vec_andc(vuc, vuc);
666 // CHECK: xor <16 x i8>
667 // CHECK: and <16 x i8>
668 // CHECK-LE: xor <16 x i8>
669 // CHECK-LE: and <16 x i8>
670
671 res_vuc = vec_andc(vbc, vuc);
672 // CHECK: xor <16 x i8>
673 // CHECK: and <16 x i8>
674 // CHECK-LE: xor <16 x i8>
675 // CHECK-LE: and <16 x i8>
676
677 res_vuc = vec_andc(vuc, vbc);
678 // CHECK-LE: xor <16 x i8>
679 // CHECK-LE: and <16 x i8>
680
681 res_vbc = vec_andc(vbc, vbc);
682 // CHECK: xor <16 x i8>
683 // CHECK: and <16 x i8>
684 // CHECK-LE: xor <16 x i8>
685 // CHECK-LE: and <16 x i8>
686
687 res_vs = vec_andc(vs, vs);
688 // CHECK: xor <8 x i16>
689 // CHECK: and <8 x i16>
690 // CHECK-LE: xor <8 x i16>
691 // CHECK-LE: and <8 x i16>
692
693 res_vs = vec_andc(vbs, vs);
694 // CHECK: xor <8 x i16>
695 // CHECK: and <8 x i16>
696 // CHECK-LE: xor <8 x i16>
697 // CHECK-LE: and <8 x i16>
698
699 res_vs = vec_andc(vs, vbs);
700 // CHECK: xor <8 x i16>
701 // CHECK: and <8 x i16>
702 // CHECK-LE: xor <8 x i16>
703 // CHECK-LE: and <8 x i16>
704
705 res_vus = vec_andc(vus, vus);
706 // CHECK: xor <8 x i16>
707 // CHECK: and <8 x i16>
708 // CHECK-LE: xor <8 x i16>
709 // CHECK-LE: and <8 x i16>
710
711 res_vus = vec_andc(vbs, vus);
712 // CHECK: xor <8 x i16>
713 // CHECK: and <8 x i16>
714 // CHECK-LE: xor <8 x i16>
715 // CHECK-LE: and <8 x i16>
716
717 res_vus = vec_andc(vus, vbs);
718 // CHECK: xor <8 x i16>
719 // CHECK: and <8 x i16>
720 // CHECK-LE: xor <8 x i16>
721 // CHECK-LE: and <8 x i16>
722
723 res_vbs = vec_andc(vbs, vbs);
724 // CHECK: xor <8 x i16>
725 // CHECK: and <8 x i16>
726 // CHECK-LE: xor <8 x i16>
727 // CHECK-LE: and <8 x i16>
728
729 res_vi = vec_andc(vi, vi);
730 // CHECK: xor <4 x i32>
731 // CHECK: and <4 x i32>
732 // CHECK-LE: xor <4 x i32>
733 // CHECK-LE: and <4 x i32>
734
735 res_vi = vec_andc(vbi, vi);
736 // CHECK: xor <4 x i32>
737 // CHECK: and <4 x i32>
738 // CHECK-LE: xor <4 x i32>
739 // CHECK-LE: and <4 x i32>
740
741 res_vi = vec_andc(vi, vbi);
742 // CHECK: xor <4 x i32>
743 // CHECK: and <4 x i32>
744 // CHECK-LE: xor <4 x i32>
745 // CHECK-LE: and <4 x i32>
746
747 res_vui = vec_andc(vui, vui);
748 // CHECK: xor <4 x i32>
749 // CHECK: and <4 x i32>
750 // CHECK-LE: xor <4 x i32>
751 // CHECK-LE: and <4 x i32>
752
753 res_vui = vec_andc(vbi, vui);
754 // CHECK: xor <4 x i32>
755 // CHECK: and <4 x i32>
756 // CHECK-LE: xor <4 x i32>
757 // CHECK-LE: and <4 x i32>
758
759 res_vui = vec_andc(vui, vbi);
760 // CHECK: xor <4 x i32>
761 // CHECK: and <4 x i32>
762 // CHECK-LE: xor <4 x i32>
763 // CHECK-LE: and <4 x i32>
764
765 res_vf = vec_andc(vf, vf);
766 // CHECK: xor <4 x i32>
767 // CHECK: and <4 x i32>
768 // CHECK-LE: xor <4 x i32>
769 // CHECK-LE: and <4 x i32>
770
771 res_vf = vec_andc(vbi, vf);
772 // CHECK: xor <4 x i32>
773 // CHECK: and <4 x i32>
774 // CHECK-LE: xor <4 x i32>
775 // CHECK-LE: and <4 x i32>
776
777 res_vf = vec_andc(vf, vbi);
778 // CHECK: xor <4 x i32>
779 // CHECK: and <4 x i32>
780 // CHECK-LE: xor <4 x i32>
781 // CHECK-LE: and <4 x i32>
782
783 res_vsc = vec_vandc(vsc, vsc);
784 // CHECK: xor <16 x i8>
785 // CHECK: and <16 x i8>
786 // CHECK-LE: xor <16 x i8>
787 // CHECK-LE: and <16 x i8>
788
789 res_vsc = vec_vandc(vbc, vsc);
790 // CHECK: xor <16 x i8>
791 // CHECK: and <16 x i8>
792 // CHECK-LE: xor <16 x i8>
793 // CHECK-LE: and <16 x i8>
794
795 res_vsc = vec_vandc(vsc, vbc);
796 // CHECK: xor <16 x i8>
797 // CHECK: and <16 x i8>
798 // CHECK-LE: xor <16 x i8>
799 // CHECK-LE: and <16 x i8>
800
801 res_vuc = vec_vandc(vuc, vuc);
802 // CHECK: xor <16 x i8>
803 // CHECK: and <16 x i8>
804 // CHECK-LE: xor <16 x i8>
805 // CHECK-LE: and <16 x i8>
806
807 res_vuc = vec_vandc(vbc, vuc);
808 // CHECK: xor <16 x i8>
809 // CHECK: and <16 x i8>
810 // CHECK-LE: xor <16 x i8>
811 // CHECK-LE: and <16 x i8>
812
813 res_vuc = vec_vandc(vuc, vbc);
814 // CHECK: xor <16 x i8>
815 // CHECK: and <16 x i8>
816 // CHECK-LE: xor <16 x i8>
817 // CHECK-LE: and <16 x i8>
818
819 res_vbc = vec_vandc(vbc, vbc);
820 // CHECK: xor <16 x i8>
821 // CHECK: and <16 x i8>
822 // CHECK-LE: xor <16 x i8>
823 // CHECK-LE: and <16 x i8>
824
825 res_vs = vec_vandc(vs, vs);
826 // CHECK: xor <8 x i16>
827 // CHECK: and <8 x i16>
828 // CHECK-LE: xor <8 x i16>
829 // CHECK-LE: and <8 x i16>
830
831 res_vs = vec_vandc(vbs, vs);
832 // CHECK: xor <8 x i16>
833 // CHECK: and <8 x i16>
834 // CHECK-LE: xor <8 x i16>
835 // CHECK-LE: and <8 x i16>
836
837 res_vs = vec_vandc(vs, vbs);
838 // CHECK: xor <8 x i16>
839 // CHECK: and <8 x i16>
840 // CHECK-LE: xor <8 x i16>
841 // CHECK-LE: and <8 x i16>
842
843 res_vus = vec_vandc(vus, vus);
844 // CHECK: xor <8 x i16>
845 // CHECK: and <8 x i16>
846 // CHECK-LE: xor <8 x i16>
847 // CHECK-LE: and <8 x i16>
848
849 res_vus = vec_vandc(vbs, vus);
850 // CHECK: xor <8 x i16>
851 // CHECK: and <8 x i16>
852 // CHECK-LE: xor <8 x i16>
853 // CHECK-LE: and <8 x i16>
854
855 res_vus = vec_vandc(vus, vbs);
856 // CHECK: xor <8 x i16>
857 // CHECK: and <8 x i16>
858 // CHECK-LE: xor <8 x i16>
859 // CHECK-LE: and <8 x i16>
860
861 res_vbs = vec_vandc(vbs, vbs);
862 // CHECK: xor <8 x i16>
863 // CHECK: and <8 x i16>
864 // CHECK-LE: xor <8 x i16>
865 // CHECK-LE: and <8 x i16>
866
867 res_vi = vec_vandc(vi, vi);
868 // CHECK: xor <4 x i32>
869 // CHECK: and <4 x i32>
870 // CHECK-LE: xor <4 x i32>
871 // CHECK-LE: and <4 x i32>
872
873 res_vi = vec_vandc(vbi, vi);
874 // CHECK: xor <4 x i32>
875 // CHECK: and <4 x i32>
876 // CHECK-LE: xor <4 x i32>
877 // CHECK-LE: and <4 x i32>
878
879 res_vi = vec_vandc(vi, vbi);
880 // CHECK: xor <4 x i32>
881 // CHECK: and <4 x i32>
882 // CHECK-LE: xor <4 x i32>
883 // CHECK-LE: and <4 x i32>
884
885 res_vui = vec_vandc(vui, vui);
886 // CHECK: xor <4 x i32>
887 // CHECK: and <4 x i32>
888 // CHECK-LE: xor <4 x i32>
889 // CHECK-LE: and <4 x i32>
890
891 res_vui = vec_vandc(vbi, vui);
892 // CHECK: xor <4 x i32>
893 // CHECK: and <4 x i32>
894 // CHECK-LE: xor <4 x i32>
895 // CHECK-LE: and <4 x i32>
896
897 res_vui = vec_vandc(vui, vbi);
898 // CHECK: xor <4 x i32>
899 // CHECK: and <4 x i32>
900 // CHECK-LE: xor <4 x i32>
901 // CHECK-LE: and <4 x i32>
902
903 res_vf = vec_vandc(vf, vf);
904 // CHECK: xor <4 x i32>
905 // CHECK: and <4 x i32>
906 // CHECK-LE: xor <4 x i32>
907 // CHECK-LE: and <4 x i32>
908
909 res_vf = vec_vandc(vbi, vf);
910 // CHECK: xor <4 x i32>
911 // CHECK: and <4 x i32>
912 // CHECK-LE: xor <4 x i32>
913 // CHECK-LE: and <4 x i32>
914
915 res_vf = vec_vandc(vf, vbi);
916 // CHECK: xor <4 x i32>
917 // CHECK: and <4 x i32>
918 // CHECK-LE: xor <4 x i32>
919 // CHECK-LE: and <4 x i32>
920
921 }
922
923 // CHECK-LABEL: define{{.*}} void @test2
test2()924 void test2() {
925 /* vec_avg */
926 res_vsc = vec_avg(vsc, vsc);
927 // CHECK: @llvm.ppc.altivec.vavgsb
928 // CHECK-LE: @llvm.ppc.altivec.vavgsb
929
930 res_vuc = vec_avg(vuc, vuc);
931 // CHECK: @llvm.ppc.altivec.vavgub
932 // CHECK-LE: @llvm.ppc.altivec.vavgub
933
934 res_vs = vec_avg(vs, vs);
935 // CHECK: @llvm.ppc.altivec.vavgsh
936 // CHECK-LE: @llvm.ppc.altivec.vavgsh
937
938 res_vus = vec_avg(vus, vus);
939 // CHECK: @llvm.ppc.altivec.vavguh
940 // CHECK-LE: @llvm.ppc.altivec.vavguh
941
942 res_vi = vec_avg(vi, vi);
943 // CHECK: @llvm.ppc.altivec.vavgsw
944 // CHECK-LE: @llvm.ppc.altivec.vavgsw
945
946 res_vui = vec_avg(vui, vui);
947 // CHECK: @llvm.ppc.altivec.vavguw
948 // CHECK-LE: @llvm.ppc.altivec.vavguw
949
950 res_vsc = vec_vavgsb(vsc, vsc);
951 // CHECK: @llvm.ppc.altivec.vavgsb
952 // CHECK-LE: @llvm.ppc.altivec.vavgsb
953
954 res_vuc = vec_vavgub(vuc, vuc);
955 // CHECK: @llvm.ppc.altivec.vavgub
956 // CHECK-LE: @llvm.ppc.altivec.vavgub
957
958 res_vs = vec_vavgsh(vs, vs);
959 // CHECK: @llvm.ppc.altivec.vavgsh
960 // CHECK-LE: @llvm.ppc.altivec.vavgsh
961
962 res_vus = vec_vavguh(vus, vus);
963 // CHECK: @llvm.ppc.altivec.vavguh
964 // CHECK-LE: @llvm.ppc.altivec.vavguh
965
966 res_vi = vec_vavgsw(vi, vi);
967 // CHECK: @llvm.ppc.altivec.vavgsw
968 // CHECK-LE: @llvm.ppc.altivec.vavgsw
969
970 res_vui = vec_vavguw(vui, vui);
971 // CHECK: @llvm.ppc.altivec.vavguw
972 // CHECK-LE: @llvm.ppc.altivec.vavguw
973
974 /* vec_ceil */
975 res_vf = vec_ceil(vf);
976 // CHECK: @llvm.ppc.altivec.vrfip
977 // CHECK-LE: @llvm.ppc.altivec.vrfip
978
979 res_vf = vec_vrfip(vf);
980 // CHECK: @llvm.ppc.altivec.vrfip
981 // CHECK-LE: @llvm.ppc.altivec.vrfip
982
983 /* vec_cmpb */
984 res_vi = vec_cmpb(vf, vf);
985 // CHECK: @llvm.ppc.altivec.vcmpbfp
986 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
987
988 res_vi = vec_vcmpbfp(vf, vf);
989 // CHECK: @llvm.ppc.altivec.vcmpbfp
990 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
991
992 /* vec_cmpeq */
993 res_vbc = vec_cmpeq(vsc, vsc);
994 // CHECK: @llvm.ppc.altivec.vcmpequb
995 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
996
997 res_vbc = vec_cmpeq(vuc, vuc);
998 // CHECK: @llvm.ppc.altivec.vcmpequb
999 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1000
1001 res_vbc = vec_cmpeq(vbc, vbc);
1002 // CHECK: @llvm.ppc.altivec.vcmpequb
1003 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1004
1005 res_vbc = vec_cmpeq(vbc, vbc);
1006 // CHECK: @llvm.ppc.altivec.vcmpequb
1007 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1008
1009 res_vbs = vec_cmpeq(vs, vs);
1010 // CHECK: @llvm.ppc.altivec.vcmpequh
1011 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1012
1013 res_vbs = vec_cmpeq(vus, vus);
1014 // CHECK: @llvm.ppc.altivec.vcmpequh
1015 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1016
1017 res_vbs = vec_cmpeq(vbs, vbs);
1018 // CHECK: @llvm.ppc.altivec.vcmpequh
1019 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1020
1021 res_vbs = vec_cmpeq(vbs, vbs);
1022 // CHECK: @llvm.ppc.altivec.vcmpequh
1023 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1024
1025 res_vbi = vec_cmpeq(vi, vi);
1026 // CHECK: @llvm.ppc.altivec.vcmpequw
1027 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1028
1029 res_vbi = vec_cmpeq(vui, vui);
1030 // CHECK: @llvm.ppc.altivec.vcmpequw
1031 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1032
1033 res_vbi = vec_cmpeq(vbi, vbi);
1034 // CHECK: @llvm.ppc.altivec.vcmpequw
1035 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1036
1037 res_vbi = vec_cmpeq(vbi, vbi);
1038 // CHECK: @llvm.ppc.altivec.vcmpequw
1039 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1040
1041 res_vbi = vec_cmpeq(vf, vf);
1042 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1043 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1044
1045 /* vec_cmpne */
1046 res_vbc = vec_cmpne(vsc, vsc);
1047 // CHECK: @llvm.ppc.altivec.vcmpequb
1048 // CHECK: xor
1049 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1050 // CHECK-LE: xor
1051
1052 res_vbc = vec_cmpne(vuc, vuc);
1053 // CHECK: @llvm.ppc.altivec.vcmpequb
1054 // CHECK: xor
1055 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1056 // CHECK-LE: xor
1057
1058 res_vbc = vec_cmpne(vbc, vbc);
1059 // CHECK: @llvm.ppc.altivec.vcmpequb
1060 // CHECK: xor
1061 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1062 // CHECK-LE: xor
1063
1064 res_vbc = vec_cmpne(vbc, vbc);
1065 // CHECK: @llvm.ppc.altivec.vcmpequb
1066 // CHECK: xor
1067 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1068 // CHECK-LE: xor
1069
1070 res_vbs = vec_cmpne(vs, vs);
1071 // CHECK: @llvm.ppc.altivec.vcmpequh
1072 // CHECK: xor
1073 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1074 // CHECK-LE: xor
1075
1076 res_vbs = vec_cmpne(vus, vus);
1077 // CHECK: @llvm.ppc.altivec.vcmpequh
1078 // CHECK: xor
1079 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1080 // CHECK-LE: xor
1081
1082 res_vbs = vec_cmpne(vbs, vbs);
1083 // CHECK: @llvm.ppc.altivec.vcmpequh
1084 // CHECK: xor
1085 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1086 // CHECK-LE: xor
1087
1088 res_vbs = vec_cmpne(vbs, vbs);
1089 // CHECK: @llvm.ppc.altivec.vcmpequh
1090 // CHECK: xor
1091 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1092 // CHECK-LE: xor
1093
1094 res_vbi = vec_cmpne(vi, vi);
1095 // CHECK: @llvm.ppc.altivec.vcmpequw
1096 // CHECK: xor
1097 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1098 // CHECK-LE: xor
1099
1100 res_vbi = vec_cmpne(vui, vui);
1101 // CHECK: @llvm.ppc.altivec.vcmpequw
1102 // CHECK: xor
1103 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1104 // CHECK-LE: xor
1105
1106 res_vbi = vec_cmpne(vbi, vbi);
1107 // CHECK: @llvm.ppc.altivec.vcmpequw
1108 // CHECK: xor
1109 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1110 // CHECK-LE: xor
1111
1112 res_vbi = vec_cmpne(vbi, vbi);
1113 // CHECK: @llvm.ppc.altivec.vcmpequw
1114 // CHECK: xor
1115 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1116 // CHECK-LE: xor
1117
1118 res_vbi = vec_cmpne(vf, vf);
1119 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1120 // CHECK: xor
1121 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1122 // CHECK-LE: xor
1123
1124 /* vec_cmpge */
1125 res_vbc = vec_cmpge(vsc, vsc);
1126 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1127 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1128
1129 res_vbc = vec_cmpge(vuc, vuc);
1130 // CHECK: @llvm.ppc.altivec.vcmpgtub
1131 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1132
1133 res_vbs = vec_cmpge(vs, vs);
1134 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1135 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1136
1137 res_vbs = vec_cmpge(vus, vus);
1138 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1139 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1140
1141 res_vbi = vec_cmpge(vi, vi);
1142 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1143 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1144
1145 res_vbi = vec_cmpge(vui, vui);
1146 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1147 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1148
1149 res_vbi = vec_cmpge(vf, vf);
1150 // CHECK: @llvm.ppc.altivec.vcmpgefp
1151 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1152
1153 res_vbi = vec_vcmpgefp(vf, vf);
1154 // CHECK: @llvm.ppc.altivec.vcmpgefp
1155 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1156 }
1157
1158 // CHECK-LABEL: define{{.*}} void @test5
test5()1159 void test5() {
1160
1161 /* vec_cmpgt */
1162 res_vbc = vec_cmpgt(vsc, vsc);
1163 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1164 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1165
1166 res_vbc = vec_cmpgt(vuc, vuc);
1167 // CHECK: @llvm.ppc.altivec.vcmpgtub
1168 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1169
1170 res_vbs = vec_cmpgt(vs, vs);
1171 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1172 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1173
1174 res_vbs = vec_cmpgt(vus, vus);
1175 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1176 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1177
1178 res_vbi = vec_cmpgt(vi, vi);
1179 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1180 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1181
1182 res_vbi = vec_cmpgt(vui, vui);
1183 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1184 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1185
1186 res_vbi = vec_cmpgt(vf, vf);
1187 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1189
1190 res_vbc = vec_vcmpgtsb(vsc, vsc);
1191 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1192 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1193
1194 res_vbc = vec_vcmpgtub(vuc, vuc);
1195 // CHECK: @llvm.ppc.altivec.vcmpgtub
1196 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1197
1198 res_vbs = vec_vcmpgtsh(vs, vs);
1199 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1200 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1201
1202 res_vbs = vec_vcmpgtuh(vus, vus);
1203 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1204 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1205
1206 res_vbi = vec_vcmpgtsw(vi, vi);
1207 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1208 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1209
1210 res_vbi = vec_vcmpgtuw(vui, vui);
1211 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1212 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1213
1214 res_vbi = vec_vcmpgtfp(vf, vf);
1215 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1216 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1217
1218 /* vec_cmple */
1219 res_vbc = vec_cmple(vsc, vsc);
1220 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1221 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1222
1223 res_vbc = vec_cmple(vuc, vuc);
1224 // CHECK: @llvm.ppc.altivec.vcmpgtub
1225 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1226
1227 res_vbs = vec_cmple(vs, vs);
1228 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1229 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1230
1231 res_vbs = vec_cmple(vus, vus);
1232 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1233 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1234
1235 res_vbi = vec_cmple(vi, vi);
1236 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1237 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1238
1239 res_vbi = vec_cmple(vui, vui);
1240 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1241 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1242
1243 res_vbi = vec_cmple(vf, vf);
1244 // CHECK: @llvm.ppc.altivec.vcmpgefp
1245 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1246 }
1247
1248 // CHECK-LABEL: define{{.*}} void @test6
test6()1249 void test6() {
1250 /* vec_cmplt */
1251 res_vbc = vec_cmplt(vsc, vsc);
1252 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1254
1255 res_vbc = vec_cmplt(vuc, vuc);
1256 // CHECK: @llvm.ppc.altivec.vcmpgtub
1257 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1258
1259 res_vbs = vec_cmplt(vs, vs);
1260 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1261 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1262
1263 res_vbs = vec_cmplt(vus, vus);
1264 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1265 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1266
1267 res_vbi = vec_cmplt(vi, vi);
1268 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1269 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1270
1271 res_vbi = vec_cmplt(vui, vui);
1272 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1273 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1274
1275 res_vbi = vec_cmplt(vf, vf);
1276 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1277 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1278
1279 /* vec_ctf */
1280 res_vf = vec_ctf(vi, 0);
1281 // CHECK: @llvm.ppc.altivec.vcfsx
1282 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1283
1284 res_vf = vec_ctf(vui, 0);
1285 // CHECK: @llvm.ppc.altivec.vcfux
1286 // CHECK-LE: @llvm.ppc.altivec.vcfux
1287
1288 res_vf = vec_vcfsx(vi, 0);
1289 // CHECK: @llvm.ppc.altivec.vcfsx
1290 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1291
1292 res_vf = vec_vcfux(vui, 0);
1293 // CHECK: @llvm.ppc.altivec.vcfux
1294 // CHECK-LE: @llvm.ppc.altivec.vcfux
1295
1296 /* vec_cts */
1297 res_vi = vec_cts(vf, 0);
1298 // CHECK: @llvm.ppc.altivec.vctsxs
1299 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1300
1301 res_vi = vec_vctsxs(vf, 0);
1302 // CHECK: @llvm.ppc.altivec.vctsxs
1303 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1304
1305 /* vec_ctu */
1306 res_vui = vec_ctu(vf, 0);
1307 // CHECK: @llvm.ppc.altivec.vctuxs
1308 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1309
1310 res_vui = vec_vctuxs(vf, 0);
1311 // CHECK: @llvm.ppc.altivec.vctuxs
1312 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1313
1314 res_vi = vec_signed(vf);
1315 // CHECK: fptosi <4 x float>
1316 // CHECK-LE: fptosi <4 x float>
1317
1318 res_vui = vec_unsigned(vf);
1319 // CHECK: fptoui <4 x float>
1320 // CHECK-LE: fptoui <4 x float>
1321
1322 res_vf = vec_float(vi);
1323 // CHECK: sitofp <4 x i32>
1324 // CHECK-LE: sitofp <4 x i32>
1325
1326 res_vf = vec_float(vui);
1327 // CHECK: uitofp <4 x i32>
1328 // CHECK-LE: uitofp <4 x i32>
1329
1330 /* vec_div */
1331 res_vsc = vec_div(vsc, vsc);
1332 // CHECK: sdiv <16 x i8>
1333 // CHECK-LE: sdiv <16 x i8>
1334
1335 res_vuc = vec_div(vuc, vuc);
1336 // CHECK: udiv <16 x i8>
1337 // CHECK-LE: udiv <16 x i8>
1338
1339 res_vs = vec_div(vs, vs);
1340 // CHECK: sdiv <8 x i16>
1341 // CHECK-LE: sdiv <8 x i16>
1342
1343 res_vus = vec_div(vus, vus);
1344 // CHECK: udiv <8 x i16>
1345 // CHECK-LE: udiv <8 x i16>
1346
1347 res_vi = vec_div(vi, vi);
1348 // CHECK: sdiv <4 x i32>
1349 // CHECK-LE: sdiv <4 x i32>
1350
1351 res_vui = vec_div(vui, vui);
1352 // CHECK: udiv <4 x i32>
1353 // CHECK-LE: udiv <4 x i32>
1354
1355 /* vec_dss */
1356 vec_dss(0);
1357 // CHECK: @llvm.ppc.altivec.dss
1358 // CHECK-LE: @llvm.ppc.altivec.dss
1359
1360 /* vec_dssall */
1361 vec_dssall();
1362 // CHECK: @llvm.ppc.altivec.dssall
1363 // CHECK-LE: @llvm.ppc.altivec.dssall
1364
1365 /* vec_dst */
1366 vec_dst(&vsc, 0, 0);
1367 // CHECK: @llvm.ppc.altivec.dst
1368 // CHECK-LE: @llvm.ppc.altivec.dst
1369
1370 /* vec_dstst */
1371 vec_dstst(&vs, 0, 0);
1372 // CHECK: @llvm.ppc.altivec.dstst
1373 // CHECK-LE: @llvm.ppc.altivec.dstst
1374
1375 /* vec_dststt */
1376 vec_dststt(¶m_i, 0, 0);
1377 // CHECK: @llvm.ppc.altivec.dststt
1378 // CHECK-LE: @llvm.ppc.altivec.dststt
1379
1380 /* vec_dstt */
1381 vec_dstt(&vf, 0, 0);
1382 // CHECK: @llvm.ppc.altivec.dstt
1383 // CHECK-LE: @llvm.ppc.altivec.dstt
1384
1385 /* vec_expte */
1386 res_vf = vec_expte(vf);
1387 // CHECK: @llvm.ppc.altivec.vexptefp
1388 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1389
1390 res_vf = vec_vexptefp(vf);
1391 // CHECK: @llvm.ppc.altivec.vexptefp
1392 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1393
1394 /* vec_floor */
1395 res_vf = vec_floor(vf);
1396 // CHECK: @llvm.ppc.altivec.vrfim
1397 // CHECK-LE: @llvm.ppc.altivec.vrfim
1398
1399 res_vf = vec_vrfim(vf);
1400 // CHECK: @llvm.ppc.altivec.vrfim
1401 // CHECK-LE: @llvm.ppc.altivec.vrfim
1402
1403 /* vec_ld */
1404 res_vsc = vec_ld(0, &vsc);
1405 // CHECK: @llvm.ppc.altivec.lvx
1406 // CHECK-LE: @llvm.ppc.altivec.lvx
1407
1408 res_vsc = vec_ld(0, param_sc_ld);
1409 // CHECK: @llvm.ppc.altivec.lvx
1410 // CHECK-LE: @llvm.ppc.altivec.lvx
1411
1412 res_vuc = vec_ld(0, &vuc);
1413 // CHECK: @llvm.ppc.altivec.lvx
1414 // CHECK-LE: @llvm.ppc.altivec.lvx
1415
1416 res_vuc = vec_ld(0, param_uc_ld);
1417 // CHECK: @llvm.ppc.altivec.lvx
1418 // CHECK-LE: @llvm.ppc.altivec.lvx
1419
1420 res_vbc = vec_ld(0, &vbc);
1421 // CHECK: @llvm.ppc.altivec.lvx
1422 // CHECK-LE: @llvm.ppc.altivec.lvx
1423
1424 res_vs = vec_ld(0, &vs);
1425 // CHECK: @llvm.ppc.altivec.lvx
1426 // CHECK-LE: @llvm.ppc.altivec.lvx
1427
1428 res_vs = vec_ld(0, param_s_ld);
1429 // CHECK: @llvm.ppc.altivec.lvx
1430 // CHECK-LE: @llvm.ppc.altivec.lvx
1431
1432 res_vus = vec_ld(0, &vus);
1433 // CHECK: @llvm.ppc.altivec.lvx
1434 // CHECK-LE: @llvm.ppc.altivec.lvx
1435
1436 res_vus = vec_ld(0, param_us_ld);
1437 // CHECK: @llvm.ppc.altivec.lvx
1438 // CHECK-LE: @llvm.ppc.altivec.lvx
1439
1440 res_vbs = vec_ld(0, &vbs);
1441 // CHECK: @llvm.ppc.altivec.lvx
1442 // CHECK-LE: @llvm.ppc.altivec.lvx
1443
1444 res_vp = vec_ld(0, &vp);
1445 // CHECK: @llvm.ppc.altivec.lvx
1446 // CHECK-LE: @llvm.ppc.altivec.lvx
1447
1448 res_vi = vec_ld(0, &vi);
1449 // CHECK: @llvm.ppc.altivec.lvx
1450 // CHECK-LE: @llvm.ppc.altivec.lvx
1451
1452 res_vi = vec_ld(0, param_i_ld);
1453 // CHECK: @llvm.ppc.altivec.lvx
1454 // CHECK-LE: @llvm.ppc.altivec.lvx
1455
1456 res_vui = vec_ld(0, &vui);
1457 // CHECK: @llvm.ppc.altivec.lvx
1458 // CHECK-LE: @llvm.ppc.altivec.lvx
1459
1460 res_vui = vec_ld(0, param_ui_ld);
1461 // CHECK: @llvm.ppc.altivec.lvx
1462 // CHECK-LE: @llvm.ppc.altivec.lvx
1463
1464 res_vbi = vec_ld(0, &vbi);
1465 // CHECK: @llvm.ppc.altivec.lvx
1466 // CHECK-LE: @llvm.ppc.altivec.lvx
1467
1468 res_vf = vec_ld(0, &vf);
1469 // CHECK: @llvm.ppc.altivec.lvx
1470 // CHECK-LE: @llvm.ppc.altivec.lvx
1471
1472 res_vf = vec_ld(0, param_f_ld);
1473 // CHECK: @llvm.ppc.altivec.lvx
1474 // CHECK-LE: @llvm.ppc.altivec.lvx
1475
1476 res_vsc = vec_lvx(0, &vsc);
1477 // CHECK: @llvm.ppc.altivec.lvx
1478 // CHECK-LE: @llvm.ppc.altivec.lvx
1479
1480 res_vsc = vec_lvx(0, param_sc_ld);
1481 // CHECK: @llvm.ppc.altivec.lvx
1482 // CHECK-LE: @llvm.ppc.altivec.lvx
1483
1484 res_vuc = vec_lvx(0, &vuc);
1485 // CHECK: @llvm.ppc.altivec.lvx
1486 // CHECK-LE: @llvm.ppc.altivec.lvx
1487
1488 res_vuc = vec_lvx(0, param_uc_ld);
1489 // CHECK: @llvm.ppc.altivec.lvx
1490 // CHECK-LE: @llvm.ppc.altivec.lvx
1491
1492 res_vbc = vec_lvx(0, &vbc);
1493 // CHECK: @llvm.ppc.altivec.lvx
1494 // CHECK-LE: @llvm.ppc.altivec.lvx
1495
1496 res_vs = vec_lvx(0, &vs);
1497 // CHECK: @llvm.ppc.altivec.lvx
1498 // CHECK-LE: @llvm.ppc.altivec.lvx
1499
1500 res_vs = vec_lvx(0, param_s_ld);
1501 // CHECK: @llvm.ppc.altivec.lvx
1502 // CHECK-LE: @llvm.ppc.altivec.lvx
1503
1504 res_vus = vec_lvx(0, &vus);
1505 // CHECK: @llvm.ppc.altivec.lvx
1506 // CHECK-LE: @llvm.ppc.altivec.lvx
1507
1508 res_vus = vec_lvx(0, param_us_ld);
1509 // CHECK: @llvm.ppc.altivec.lvx
1510 // CHECK-LE: @llvm.ppc.altivec.lvx
1511
1512 res_vbs = vec_lvx(0, &vbs);
1513 // CHECK: @llvm.ppc.altivec.lvx
1514 // CHECK-LE: @llvm.ppc.altivec.lvx
1515
1516 res_vp = vec_lvx(0, &vp);
1517 // CHECK: @llvm.ppc.altivec.lvx
1518 // CHECK-LE: @llvm.ppc.altivec.lvx
1519
1520 res_vi = vec_lvx(0, &vi);
1521 // CHECK: @llvm.ppc.altivec.lvx
1522 // CHECK-LE: @llvm.ppc.altivec.lvx
1523
1524 res_vi = vec_lvx(0, param_i_ld);
1525 // CHECK: @llvm.ppc.altivec.lvx
1526 // CHECK-LE: @llvm.ppc.altivec.lvx
1527
1528 res_vui = vec_lvx(0, &vui);
1529 // CHECK: @llvm.ppc.altivec.lvx
1530 // CHECK-LE: @llvm.ppc.altivec.lvx
1531
1532 res_vui = vec_lvx(0, param_ui_ld);
1533 // CHECK: @llvm.ppc.altivec.lvx
1534 // CHECK-LE: @llvm.ppc.altivec.lvx
1535
1536 res_vbi = vec_lvx(0, &vbi);
1537 // CHECK: @llvm.ppc.altivec.lvx
1538 // CHECK-LE: @llvm.ppc.altivec.lvx
1539
1540 res_vf = vec_lvx(0, &vf);
1541 // CHECK: @llvm.ppc.altivec.lvx
1542 // CHECK-LE: @llvm.ppc.altivec.lvx
1543
1544 res_vf = vec_lvx(0, param_f_ld);
1545 // CHECK: @llvm.ppc.altivec.lvx
1546 // CHECK-LE: @llvm.ppc.altivec.lvx
1547
1548 /* vec_lde */
1549 res_vsc = vec_lde(0, param_sc_ld);
1550 // CHECK: @llvm.ppc.altivec.lvebx
1551 // CHECK-LE: @llvm.ppc.altivec.lvebx
1552
1553 res_vuc = vec_lde(0, param_uc_ld);
1554 // CHECK: @llvm.ppc.altivec.lvebx
1555 // CHECK-LE: @llvm.ppc.altivec.lvebx
1556
1557 res_vs = vec_lde(0, param_s_ld);
1558 // CHECK: @llvm.ppc.altivec.lvehx
1559 // CHECK-LE: @llvm.ppc.altivec.lvehx
1560
1561 res_vus = vec_lde(0, param_us_ld);
1562 // CHECK: @llvm.ppc.altivec.lvehx
1563 // CHECK-LE: @llvm.ppc.altivec.lvehx
1564
1565 res_vi = vec_lde(0, param_i_ld);
1566 // CHECK: @llvm.ppc.altivec.lvewx
1567 // CHECK-LE: @llvm.ppc.altivec.lvewx
1568
1569 res_vui = vec_lde(0, param_ui_ld);
1570 // CHECK: @llvm.ppc.altivec.lvewx
1571 // CHECK-LE: @llvm.ppc.altivec.lvewx
1572
1573 res_vf = vec_lde(0, param_f_ld);
1574 // CHECK: @llvm.ppc.altivec.lvewx
1575 // CHECK-LE: @llvm.ppc.altivec.lvewx
1576
1577 res_vsc = vec_lvebx(0, param_sc_ld);
1578 // CHECK: @llvm.ppc.altivec.lvebx
1579 // CHECK-LE: @llvm.ppc.altivec.lvebx
1580
1581 res_vuc = vec_lvebx(0, param_uc_ld);
1582 // CHECK: @llvm.ppc.altivec.lvebx
1583 // CHECK-LE: @llvm.ppc.altivec.lvebx
1584
1585 res_vs = vec_lvehx(0, param_s_ld);
1586 // CHECK: @llvm.ppc.altivec.lvehx
1587 // CHECK-LE: @llvm.ppc.altivec.lvehx
1588
1589 res_vus = vec_lvehx(0, param_us_ld);
1590 // CHECK: @llvm.ppc.altivec.lvehx
1591 // CHECK-LE: @llvm.ppc.altivec.lvehx
1592
1593 res_vi = vec_lvewx(0, param_i_ld);
1594 // CHECK: @llvm.ppc.altivec.lvewx
1595 // CHECK-LE: @llvm.ppc.altivec.lvewx
1596
1597 res_vui = vec_lvewx(0, param_ui_ld);
1598 // CHECK: @llvm.ppc.altivec.lvewx
1599 // CHECK-LE: @llvm.ppc.altivec.lvewx
1600
1601 res_vf = vec_lvewx(0, param_f_ld);
1602 // CHECK: @llvm.ppc.altivec.lvewx
1603 // CHECK-LE: @llvm.ppc.altivec.lvewx
1604
1605 /* vec_ldl */
1606 res_vsc = vec_ldl(0, &vsc);
1607 // CHECK: @llvm.ppc.altivec.lvxl
1608 // CHECK-LE: @llvm.ppc.altivec.lvxl
1609
1610 res_vsc = vec_ldl(0, param_sc_ld);
1611 // CHECK: @llvm.ppc.altivec.lvxl
1612 // CHECK-LE: @llvm.ppc.altivec.lvxl
1613
1614 res_vuc = vec_ldl(0, &vuc);
1615 // CHECK: @llvm.ppc.altivec.lvxl
1616 // CHECK-LE: @llvm.ppc.altivec.lvxl
1617
1618 res_vuc = vec_ldl(0, param_uc_ld);
1619 // CHECK: @llvm.ppc.altivec.lvxl
1620 // CHECK-LE: @llvm.ppc.altivec.lvxl
1621
1622 res_vbc = vec_ldl(0, &vbc);
1623 // CHECK: @llvm.ppc.altivec.lvxl
1624 // CHECK-LE: @llvm.ppc.altivec.lvxl
1625
1626 res_vs = vec_ldl(0, &vs);
1627 // CHECK: @llvm.ppc.altivec.lvxl
1628 // CHECK-LE: @llvm.ppc.altivec.lvxl
1629
1630 res_vs = vec_ldl(0, param_s_ld);
1631 // CHECK: @llvm.ppc.altivec.lvxl
1632 // CHECK-LE: @llvm.ppc.altivec.lvxl
1633
1634 res_vus = vec_ldl(0, &vus);
1635 // CHECK: @llvm.ppc.altivec.lvxl
1636 // CHECK-LE: @llvm.ppc.altivec.lvxl
1637
1638 res_vus = vec_ldl(0, param_us_ld);
1639 // CHECK: @llvm.ppc.altivec.lvxl
1640 // CHECK-LE: @llvm.ppc.altivec.lvxl
1641
1642 res_vbs = vec_ldl(0, &vbs);
1643 // CHECK: @llvm.ppc.altivec.lvxl
1644 // CHECK-LE: @llvm.ppc.altivec.lvxl
1645
1646 res_vp = vec_ldl(0, &vp);
1647 // CHECK: @llvm.ppc.altivec.lvxl
1648 // CHECK-LE: @llvm.ppc.altivec.lvxl
1649
1650 res_vi = vec_ldl(0, &vi);
1651 // CHECK: @llvm.ppc.altivec.lvxl
1652 // CHECK-LE: @llvm.ppc.altivec.lvxl
1653
1654 res_vi = vec_ldl(0, param_i_ld);
1655 // CHECK: @llvm.ppc.altivec.lvxl
1656 // CHECK-LE: @llvm.ppc.altivec.lvxl
1657
1658 res_vui = vec_ldl(0, &vui);
1659 // CHECK: @llvm.ppc.altivec.lvxl
1660 // CHECK-LE: @llvm.ppc.altivec.lvxl
1661
1662 res_vui = vec_ldl(0, param_ui_ld);
1663 // CHECK: @llvm.ppc.altivec.lvxl
1664 // CHECK-LE: @llvm.ppc.altivec.lvxl
1665
1666 res_vbi = vec_ldl(0, &vbi);
1667 // CHECK: @llvm.ppc.altivec.lvxl
1668 // CHECK-LE: @llvm.ppc.altivec.lvxl
1669
1670 res_vf = vec_ldl(0, &vf);
1671 // CHECK: @llvm.ppc.altivec.lvxl
1672 // CHECK-LE: @llvm.ppc.altivec.lvxl
1673
1674 res_vf = vec_ldl(0, param_f_ld);
1675 // CHECK: @llvm.ppc.altivec.lvxl
1676 // CHECK-LE: @llvm.ppc.altivec.lvxl
1677
1678 res_vsc = vec_lvxl(0, &vsc);
1679 // CHECK: @llvm.ppc.altivec.lvxl
1680 // CHECK-LE: @llvm.ppc.altivec.lvxl
1681
1682 res_vsc = vec_lvxl(0, param_sc_ld);
1683 // CHECK: @llvm.ppc.altivec.lvxl
1684 // CHECK-LE: @llvm.ppc.altivec.lvxl
1685
1686 res_vuc = vec_lvxl(0, &vuc);
1687 // CHECK: @llvm.ppc.altivec.lvxl
1688 // CHECK-LE: @llvm.ppc.altivec.lvxl
1689
1690 res_vbc = vec_lvxl(0, &vbc);
1691 // CHECK: @llvm.ppc.altivec.lvxl
1692 // CHECK-LE: @llvm.ppc.altivec.lvxl
1693
1694 res_vuc = vec_lvxl(0, param_uc_ld);
1695 // CHECK: @llvm.ppc.altivec.lvxl
1696 // CHECK-LE: @llvm.ppc.altivec.lvxl
1697
1698 res_vs = vec_lvxl(0, &vs);
1699 // CHECK: @llvm.ppc.altivec.lvxl
1700 // CHECK-LE: @llvm.ppc.altivec.lvxl
1701
1702 res_vs = vec_lvxl(0, param_s_ld);
1703 // CHECK: @llvm.ppc.altivec.lvxl
1704 // CHECK-LE: @llvm.ppc.altivec.lvxl
1705
1706 res_vus = vec_lvxl(0, &vus);
1707 // CHECK: @llvm.ppc.altivec.lvxl
1708 // CHECK-LE: @llvm.ppc.altivec.lvxl
1709
1710 res_vus = vec_lvxl(0, param_us_ld);
1711 // CHECK: @llvm.ppc.altivec.lvxl
1712 // CHECK-LE: @llvm.ppc.altivec.lvxl
1713
1714 res_vbs = vec_lvxl(0, &vbs);
1715 // CHECK: @llvm.ppc.altivec.lvxl
1716 // CHECK-LE: @llvm.ppc.altivec.lvxl
1717
1718 res_vp = vec_lvxl(0, &vp);
1719 // CHECK: @llvm.ppc.altivec.lvxl
1720 // CHECK-LE: @llvm.ppc.altivec.lvxl
1721
1722 res_vi = vec_lvxl(0, &vi);
1723 // CHECK: @llvm.ppc.altivec.lvxl
1724 // CHECK-LE: @llvm.ppc.altivec.lvxl
1725
1726 res_vi = vec_lvxl(0, param_i_ld);
1727 // CHECK: @llvm.ppc.altivec.lvxl
1728 // CHECK-LE: @llvm.ppc.altivec.lvxl
1729
1730 res_vui = vec_lvxl(0, &vui);
1731 // CHECK: @llvm.ppc.altivec.lvxl
1732 // CHECK-LE: @llvm.ppc.altivec.lvxl
1733
1734 res_vui = vec_lvxl(0, param_ui_ld);
1735 // CHECK: @llvm.ppc.altivec.lvxl
1736 // CHECK-LE: @llvm.ppc.altivec.lvxl
1737
1738 res_vbi = vec_lvxl(0, &vbi);
1739 // CHECK: @llvm.ppc.altivec.lvxl
1740 // CHECK-LE: @llvm.ppc.altivec.lvxl
1741
1742 res_vf = vec_lvxl(0, &vf);
1743 // CHECK: @llvm.ppc.altivec.lvxl
1744 // CHECK-LE: @llvm.ppc.altivec.lvxl
1745
1746 res_vf = vec_lvxl(0, param_f_ld);
1747 // CHECK: @llvm.ppc.altivec.lvxl
1748 // CHECK-LE: @llvm.ppc.altivec.lvxl
1749
1750 /* vec_loge */
1751 res_vf = vec_loge(vf);
1752 // CHECK: @llvm.ppc.altivec.vlogefp
1753 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1754
1755 res_vf = vec_vlogefp(vf);
1756 // CHECK: @llvm.ppc.altivec.vlogefp
1757 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1758
1759 /* vec_lvsl */
1760 res_vuc = vec_lvsl(0, param_i_ld);
1761 // CHECK: @llvm.ppc.altivec.lvsl
1762 // CHECK-LE: @llvm.ppc.altivec.lvsl
1763
1764 /* vec_lvsr */
1765 res_vuc = vec_lvsr(0, param_i_ld);
1766 // CHECK: @llvm.ppc.altivec.lvsr
1767 // CHECK-LE: @llvm.ppc.altivec.lvsr
1768
1769 /* vec_madd */
1770 res_vf =vec_madd(vf, vf, vf);
1771 // CHECK: @llvm.ppc.altivec.vmaddfp
1772 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1773
1774 res_vf = vec_vmaddfp(vf, vf, vf);
1775 // CHECK: @llvm.ppc.altivec.vmaddfp
1776 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1777
1778 /* vec_madds */
1779 res_vs = vec_madds(vs, vs, vs);
1780 // CHECK: @llvm.ppc.altivec.vmhaddshs
1781 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1782
1783 res_vs = vec_vmhaddshs(vs, vs, vs);
1784 // CHECK: @llvm.ppc.altivec.vmhaddshs
1785 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1786
1787 /* vec_max */
1788 res_vsc = vec_max(vsc, vsc);
1789 // CHECK: @llvm.ppc.altivec.vmaxsb
1790 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1791
1792 res_vsc = vec_max(vbc, vsc);
1793 // CHECK: @llvm.ppc.altivec.vmaxsb
1794 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1795
1796 res_vsc = vec_max(vsc, vbc);
1797 // CHECK: @llvm.ppc.altivec.vmaxsb
1798 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1799
1800 res_vuc = vec_max(vuc, vuc);
1801 // CHECK: @llvm.ppc.altivec.vmaxub
1802 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1803
1804 res_vuc = vec_max(vbc, vuc);
1805 // CHECK: @llvm.ppc.altivec.vmaxub
1806 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1807
1808 res_vuc = vec_max(vuc, vbc);
1809 // CHECK: @llvm.ppc.altivec.vmaxub
1810 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1811
1812 res_vs = vec_max(vs, vs);
1813 // CHECK: @llvm.ppc.altivec.vmaxsh
1814 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1815
1816 res_vs = vec_max(vbs, vs);
1817 // CHECK: @llvm.ppc.altivec.vmaxsh
1818 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1819
1820 res_vs = vec_max(vs, vbs);
1821 // CHECK: @llvm.ppc.altivec.vmaxsh
1822 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1823
1824 res_vus = vec_max(vus, vus);
1825 // CHECK: @llvm.ppc.altivec.vmaxuh
1826 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1827
1828 res_vus = vec_max(vbs, vus);
1829 // CHECK: @llvm.ppc.altivec.vmaxuh
1830 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1831
1832 res_vus = vec_max(vus, vbs);
1833 // CHECK: @llvm.ppc.altivec.vmaxuh
1834 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1835
1836 res_vi = vec_max(vi, vi);
1837 // CHECK: @llvm.ppc.altivec.vmaxsw
1838 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1839
1840 res_vi = vec_max(vbi, vi);
1841 // CHECK: @llvm.ppc.altivec.vmaxsw
1842 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1843
1844 res_vi = vec_max(vi, vbi);
1845 // CHECK: @llvm.ppc.altivec.vmaxsw
1846 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1847
1848 res_vui = vec_max(vui, vui);
1849 // CHECK: @llvm.ppc.altivec.vmaxuw
1850 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1851
1852 res_vui = vec_max(vbi, vui);
1853 // CHECK: @llvm.ppc.altivec.vmaxuw
1854 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1855
1856 res_vui = vec_max(vui, vbi);
1857 // CHECK: @llvm.ppc.altivec.vmaxuw
1858 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1859
1860 res_vf = vec_max(vf, vf);
1861 // CHECK: @llvm.ppc.altivec.vmaxfp
1862 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1863
1864 res_vsc = vec_vmaxsb(vsc, vsc);
1865 // CHECK: @llvm.ppc.altivec.vmaxsb
1866 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1867
1868 res_vsc = vec_vmaxsb(vbc, vsc);
1869 // CHECK: @llvm.ppc.altivec.vmaxsb
1870 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1871
1872 res_vsc = vec_vmaxsb(vsc, vbc);
1873 // CHECK: @llvm.ppc.altivec.vmaxsb
1874 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1875
1876 res_vuc = vec_vmaxub(vuc, vuc);
1877 // CHECK: @llvm.ppc.altivec.vmaxub
1878 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1879
1880 res_vuc = vec_vmaxub(vbc, vuc);
1881 // CHECK: @llvm.ppc.altivec.vmaxub
1882 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1883
1884 res_vuc = vec_vmaxub(vuc, vbc);
1885 // CHECK: @llvm.ppc.altivec.vmaxub
1886 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1887
1888 res_vs = vec_vmaxsh(vs, vs);
1889 // CHECK: @llvm.ppc.altivec.vmaxsh
1890 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1891
1892 res_vs = vec_vmaxsh(vbs, vs);
1893 // CHECK: @llvm.ppc.altivec.vmaxsh
1894 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1895
1896 res_vs = vec_vmaxsh(vs, vbs);
1897 // CHECK: @llvm.ppc.altivec.vmaxsh
1898 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1899
1900 res_vus = vec_vmaxuh(vus, vus);
1901 // CHECK: @llvm.ppc.altivec.vmaxuh
1902 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1903
1904 res_vus = vec_vmaxuh(vbs, vus);
1905 // CHECK: @llvm.ppc.altivec.vmaxuh
1906 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1907
1908 res_vus = vec_vmaxuh(vus, vbs);
1909 // CHECK: @llvm.ppc.altivec.vmaxuh
1910 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1911
1912 res_vi = vec_vmaxsw(vi, vi);
1913 // CHECK: @llvm.ppc.altivec.vmaxsw
1914 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1915
1916 res_vi = vec_vmaxsw(vbi, vi);
1917 // CHECK: @llvm.ppc.altivec.vmaxsw
1918 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1919
1920 res_vi = vec_vmaxsw(vi, vbi);
1921 // CHECK: @llvm.ppc.altivec.vmaxsw
1922 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1923
1924 res_vui = vec_vmaxuw(vui, vui);
1925 // CHECK: @llvm.ppc.altivec.vmaxuw
1926 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1927
1928 res_vui = vec_vmaxuw(vbi, vui);
1929 // CHECK: @llvm.ppc.altivec.vmaxuw
1930 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1931
1932 res_vui = vec_vmaxuw(vui, vbi);
1933 // CHECK: @llvm.ppc.altivec.vmaxuw
1934 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1935
1936 res_vf = vec_vmaxfp(vf, vf);
1937 // CHECK: @llvm.ppc.altivec.vmaxfp
1938 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1939
1940 /* vec_mergeh */
1941 res_vsc = vec_mergeh(vsc, vsc);
1942 // CHECK: @llvm.ppc.altivec.vperm
1943 // CHECK-LE: @llvm.ppc.altivec.vperm
1944
1945 res_vuc = vec_mergeh(vuc, vuc);
1946 // CHECK: @llvm.ppc.altivec.vperm
1947 // CHECK-LE: @llvm.ppc.altivec.vperm
1948
1949 res_vbc = vec_mergeh(vbc, vbc);
1950 // CHECK: @llvm.ppc.altivec.vperm
1951 // CHECK-LE: @llvm.ppc.altivec.vperm
1952
1953 res_vs = vec_mergeh(vs, vs);
1954 // CHECK: @llvm.ppc.altivec.vperm
1955 // CHECK-LE: @llvm.ppc.altivec.vperm
1956
1957 res_vp = vec_mergeh(vp, vp);
1958 // CHECK: @llvm.ppc.altivec.vperm
1959 // CHECK-LE: @llvm.ppc.altivec.vperm
1960
1961 res_vus = vec_mergeh(vus, vus);
1962 // CHECK: @llvm.ppc.altivec.vperm
1963 // CHECK-LE: @llvm.ppc.altivec.vperm
1964
1965 res_vbs = vec_mergeh(vbs, vbs);
1966 // CHECK: @llvm.ppc.altivec.vperm
1967 // CHECK-LE: @llvm.ppc.altivec.vperm
1968
1969 res_vi = vec_mergeh(vi, vi);
1970 // CHECK: @llvm.ppc.altivec.vperm
1971 // CHECK-LE: @llvm.ppc.altivec.vperm
1972
1973 res_vui = vec_mergeh(vui, vui);
1974 // CHECK: @llvm.ppc.altivec.vperm
1975 // CHECK-LE: @llvm.ppc.altivec.vperm
1976
1977 res_vbi = vec_mergeh(vbi, vbi);
1978 // CHECK: @llvm.ppc.altivec.vperm
1979 // CHECK-LE: @llvm.ppc.altivec.vperm
1980
1981 res_vf = vec_mergeh(vf, vf);
1982 // CHECK: @llvm.ppc.altivec.vperm
1983 // CHECK-LE: @llvm.ppc.altivec.vperm
1984
1985 res_vsc = vec_vmrghb(vsc, vsc);
1986 // CHECK: @llvm.ppc.altivec.vperm
1987 // CHECK-LE: @llvm.ppc.altivec.vperm
1988
1989 res_vuc = vec_vmrghb(vuc, vuc);
1990 // CHECK: @llvm.ppc.altivec.vperm
1991 // CHECK-LE: @llvm.ppc.altivec.vperm
1992
1993 res_vbc = vec_vmrghb(vbc, vbc);
1994 // CHECK: @llvm.ppc.altivec.vperm
1995 // CHECK-LE: @llvm.ppc.altivec.vperm
1996
1997 res_vs = vec_vmrghh(vs, vs);
1998 // CHECK: @llvm.ppc.altivec.vperm
1999 // CHECK-LE: @llvm.ppc.altivec.vperm
2000
2001 res_vp = vec_vmrghh(vp, vp);
2002 // CHECK: @llvm.ppc.altivec.vperm
2003 // CHECK-LE: @llvm.ppc.altivec.vperm
2004
2005 res_vus = vec_vmrghh(vus, vus);
2006 // CHECK: @llvm.ppc.altivec.vperm
2007 // CHECK-LE: @llvm.ppc.altivec.vperm
2008
2009 res_vbs = vec_vmrghh(vbs, vbs);
2010 // CHECK: @llvm.ppc.altivec.vperm
2011 // CHECK-LE: @llvm.ppc.altivec.vperm
2012
2013 res_vi = vec_vmrghw(vi, vi);
2014 // CHECK: @llvm.ppc.altivec.vperm
2015 // CHECK-LE: @llvm.ppc.altivec.vperm
2016
2017 res_vui = vec_vmrghw(vui, vui);
2018 // CHECK: @llvm.ppc.altivec.vperm
2019 // CHECK-LE: @llvm.ppc.altivec.vperm
2020
2021 res_vbi = vec_vmrghw(vbi, vbi);
2022 // CHECK: @llvm.ppc.altivec.vperm
2023 // CHECK-LE: @llvm.ppc.altivec.vperm
2024
2025 res_vf = vec_vmrghw(vf, vf);
2026 // CHECK: @llvm.ppc.altivec.vperm
2027 // CHECK-LE: @llvm.ppc.altivec.vperm
2028
2029 /* vec_mergel */
2030 res_vsc = vec_mergel(vsc, vsc);
2031 // CHECK: @llvm.ppc.altivec.vperm
2032 // CHECK-LE: @llvm.ppc.altivec.vperm
2033
2034 res_vuc = vec_mergel(vuc, vuc);
2035 // CHECK: @llvm.ppc.altivec.vperm
2036 // CHECK-LE: @llvm.ppc.altivec.vperm
2037
2038 res_vbc = vec_mergel(vbc, vbc);
2039 // CHECK: @llvm.ppc.altivec.vperm
2040 // CHECK-LE: @llvm.ppc.altivec.vperm
2041
2042 res_vs = vec_mergel(vs, vs);
2043 // CHECK: @llvm.ppc.altivec.vperm
2044 // CHECK-LE: @llvm.ppc.altivec.vperm
2045
2046 res_vp = vec_mergeh(vp, vp);
2047 // CHECK: @llvm.ppc.altivec.vperm
2048 // CHECK-LE: @llvm.ppc.altivec.vperm
2049
2050 res_vus = vec_mergel(vus, vus);
2051 // CHECK: @llvm.ppc.altivec.vperm
2052 // CHECK-LE: @llvm.ppc.altivec.vperm
2053
2054 res_vbs = vec_mergel(vbs, vbs);
2055 // CHECK: @llvm.ppc.altivec.vperm
2056 // CHECK-LE: @llvm.ppc.altivec.vperm
2057
2058 res_vi = vec_mergel(vi, vi);
2059 // CHECK: @llvm.ppc.altivec.vperm
2060 // CHECK-LE: @llvm.ppc.altivec.vperm
2061
2062 res_vui = vec_mergel(vui, vui);
2063 // CHECK: @llvm.ppc.altivec.vperm
2064 // CHECK-LE: @llvm.ppc.altivec.vperm
2065
2066 res_vbi = vec_mergel(vbi, vbi);
2067 // CHECK: @llvm.ppc.altivec.vperm
2068 // CHECK-LE: @llvm.ppc.altivec.vperm
2069
2070 res_vf = vec_mergel(vf, vf);
2071 // CHECK: @llvm.ppc.altivec.vperm
2072 // CHECK-LE: @llvm.ppc.altivec.vperm
2073
2074 res_vsc = vec_vmrglb(vsc, vsc);
2075 // CHECK: @llvm.ppc.altivec.vperm
2076 // CHECK-LE: @llvm.ppc.altivec.vperm
2077
2078 res_vuc = vec_vmrglb(vuc, vuc);
2079 // CHECK: @llvm.ppc.altivec.vperm
2080 // CHECK-LE: @llvm.ppc.altivec.vperm
2081
2082 res_vbc = vec_vmrglb(vbc, vbc);
2083 // CHECK: @llvm.ppc.altivec.vperm
2084 // CHECK-LE: @llvm.ppc.altivec.vperm
2085
2086 res_vs = vec_vmrglh(vs, vs);
2087 // CHECK: @llvm.ppc.altivec.vperm
2088 // CHECK-LE: @llvm.ppc.altivec.vperm
2089
2090 res_vp = vec_vmrglh(vp, vp);
2091 // CHECK: @llvm.ppc.altivec.vperm
2092 // CHECK-LE: @llvm.ppc.altivec.vperm
2093
2094 res_vus = vec_vmrglh(vus, vus);
2095 // CHECK: @llvm.ppc.altivec.vperm
2096 // CHECK-LE: @llvm.ppc.altivec.vperm
2097
2098 res_vbs = vec_vmrglh(vbs, vbs);
2099 // CHECK: @llvm.ppc.altivec.vperm
2100 // CHECK-LE: @llvm.ppc.altivec.vperm
2101
2102 res_vi = vec_vmrglw(vi, vi);
2103 // CHECK: @llvm.ppc.altivec.vperm
2104 // CHECK-LE: @llvm.ppc.altivec.vperm
2105
2106 res_vui = vec_vmrglw(vui, vui);
2107 // CHECK: @llvm.ppc.altivec.vperm
2108 // CHECK-LE: @llvm.ppc.altivec.vperm
2109
2110 res_vbi = vec_vmrglw(vbi, vbi);
2111 // CHECK: @llvm.ppc.altivec.vperm
2112 // CHECK-LE: @llvm.ppc.altivec.vperm
2113
2114 res_vf = vec_vmrglw(vf, vf);
2115 // CHECK: @llvm.ppc.altivec.vperm
2116 // CHECK-LE: @llvm.ppc.altivec.vperm
2117
2118 /* vec_mfvscr */
2119 vus = vec_mfvscr();
2120 // CHECK: @llvm.ppc.altivec.mfvscr
2121 // CHECK-LE: @llvm.ppc.altivec.mfvscr
2122
2123 /* vec_min */
2124 res_vsc = vec_min(vsc, vsc);
2125 // CHECK: @llvm.ppc.altivec.vminsb
2126 // CHECK-LE: @llvm.ppc.altivec.vminsb
2127
2128 res_vsc = vec_min(vbc, vsc);
2129 // CHECK: @llvm.ppc.altivec.vminsb
2130 // CHECK-LE: @llvm.ppc.altivec.vminsb
2131
2132 res_vsc = vec_min(vsc, vbc);
2133 // CHECK: @llvm.ppc.altivec.vminsb
2134 // CHECK-LE: @llvm.ppc.altivec.vminsb
2135
2136 res_vuc = vec_min(vuc, vuc);
2137 // CHECK: @llvm.ppc.altivec.vminub
2138 // CHECK-LE: @llvm.ppc.altivec.vminub
2139
2140 res_vuc = vec_min(vbc, vuc);
2141 // CHECK: @llvm.ppc.altivec.vminub
2142 // CHECK-LE: @llvm.ppc.altivec.vminub
2143
2144 res_vuc = vec_min(vuc, vbc);
2145 // CHECK: @llvm.ppc.altivec.vminub
2146 // CHECK-LE: @llvm.ppc.altivec.vminub
2147
2148 res_vs = vec_min(vs, vs);
2149 // CHECK: @llvm.ppc.altivec.vminsh
2150 // CHECK-LE: @llvm.ppc.altivec.vminsh
2151
2152 res_vs = vec_min(vbs, vs);
2153 // CHECK: @llvm.ppc.altivec.vminsh
2154 // CHECK-LE: @llvm.ppc.altivec.vminsh
2155
2156 res_vs = vec_min(vs, vbs);
2157 // CHECK: @llvm.ppc.altivec.vminsh
2158 // CHECK-LE: @llvm.ppc.altivec.vminsh
2159
2160 res_vus = vec_min(vus, vus);
2161 // CHECK: @llvm.ppc.altivec.vminuh
2162 // CHECK-LE: @llvm.ppc.altivec.vminuh
2163
2164 res_vus = vec_min(vbs, vus);
2165 // CHECK: @llvm.ppc.altivec.vminuh
2166 // CHECK-LE: @llvm.ppc.altivec.vminuh
2167
2168 res_vus = vec_min(vus, vbs);
2169 // CHECK: @llvm.ppc.altivec.vminuh
2170 // CHECK-LE: @llvm.ppc.altivec.vminuh
2171
2172 res_vi = vec_min(vi, vi);
2173 // CHECK: @llvm.ppc.altivec.vminsw
2174 // CHECK-LE: @llvm.ppc.altivec.vminsw
2175
2176 res_vi = vec_min(vbi, vi);
2177 // CHECK: @llvm.ppc.altivec.vminsw
2178 // CHECK-LE: @llvm.ppc.altivec.vminsw
2179
2180 res_vi = vec_min(vi, vbi);
2181 // CHECK: @llvm.ppc.altivec.vminsw
2182 // CHECK-LE: @llvm.ppc.altivec.vminsw
2183
2184 res_vui = vec_min(vui, vui);
2185 // CHECK: @llvm.ppc.altivec.vminuw
2186 // CHECK-LE: @llvm.ppc.altivec.vminuw
2187
2188 res_vui = vec_min(vbi, vui);
2189 // CHECK: @llvm.ppc.altivec.vminuw
2190 // CHECK-LE: @llvm.ppc.altivec.vminuw
2191
2192 res_vui = vec_min(vui, vbi);
2193 // CHECK: @llvm.ppc.altivec.vminuw
2194 // CHECK-LE: @llvm.ppc.altivec.vminuw
2195
2196 res_vf = vec_min(vf, vf);
2197 // CHECK: @llvm.ppc.altivec.vminfp
2198 // CHECK-LE: @llvm.ppc.altivec.vminfp
2199
2200 res_vsc = vec_vminsb(vsc, vsc);
2201 // CHECK: @llvm.ppc.altivec.vminsb
2202 // CHECK-LE: @llvm.ppc.altivec.vminsb
2203
2204 res_vsc = vec_vminsb(vbc, vsc);
2205 // CHECK: @llvm.ppc.altivec.vminsb
2206 // CHECK-LE: @llvm.ppc.altivec.vminsb
2207
2208 res_vsc = vec_vminsb(vsc, vbc);
2209 // CHECK: @llvm.ppc.altivec.vminsb
2210 // CHECK-LE: @llvm.ppc.altivec.vminsb
2211
2212 res_vuc = vec_vminub(vuc, vuc);
2213 // CHECK: @llvm.ppc.altivec.vminub
2214 // CHECK-LE: @llvm.ppc.altivec.vminub
2215
2216 res_vuc = vec_vminub(vbc, vuc);
2217 // CHECK: @llvm.ppc.altivec.vminub
2218 // CHECK-LE: @llvm.ppc.altivec.vminub
2219
2220 res_vuc = vec_vminub(vuc, vbc);
2221 // CHECK: @llvm.ppc.altivec.vminub
2222 // CHECK-LE: @llvm.ppc.altivec.vminub
2223
2224 res_vs = vec_vminsh(vs, vs);
2225 // CHECK: @llvm.ppc.altivec.vminsh
2226 // CHECK-LE: @llvm.ppc.altivec.vminsh
2227
2228 res_vs = vec_vminsh(vbs, vs);
2229 // CHECK: @llvm.ppc.altivec.vminsh
2230 // CHECK-LE: @llvm.ppc.altivec.vminsh
2231
2232 res_vs = vec_vminsh(vs, vbs);
2233 // CHECK: @llvm.ppc.altivec.vminsh
2234 // CHECK-LE: @llvm.ppc.altivec.vminsh
2235
2236 res_vus = vec_vminuh(vus, vus);
2237 // CHECK: @llvm.ppc.altivec.vminuh
2238 // CHECK-LE: @llvm.ppc.altivec.vminuh
2239
2240 res_vus = vec_vminuh(vbs, vus);
2241 // CHECK: @llvm.ppc.altivec.vminuh
2242 // CHECK-LE: @llvm.ppc.altivec.vminuh
2243
2244 res_vus = vec_vminuh(vus, vbs);
2245 // CHECK: @llvm.ppc.altivec.vminuh
2246 // CHECK-LE: @llvm.ppc.altivec.vminuh
2247
2248 res_vi = vec_vminsw(vi, vi);
2249 // CHECK: @llvm.ppc.altivec.vminsw
2250 // CHECK-LE: @llvm.ppc.altivec.vminsw
2251
2252 res_vi = vec_vminsw(vbi, vi);
2253 // CHECK: @llvm.ppc.altivec.vminsw
2254 // CHECK-LE: @llvm.ppc.altivec.vminsw
2255
2256 res_vi = vec_vminsw(vi, vbi);
2257 // CHECK: @llvm.ppc.altivec.vminsw
2258 // CHECK-LE: @llvm.ppc.altivec.vminsw
2259
2260 res_vui = vec_vminuw(vui, vui);
2261 // CHECK: @llvm.ppc.altivec.vminuw
2262 // CHECK-LE: @llvm.ppc.altivec.vminuw
2263
2264 res_vui = vec_vminuw(vbi, vui);
2265 // CHECK: @llvm.ppc.altivec.vminuw
2266 // CHECK-LE: @llvm.ppc.altivec.vminuw
2267
2268 res_vui = vec_vminuw(vui, vbi);
2269 // CHECK: @llvm.ppc.altivec.vminuw
2270 // CHECK-LE: @llvm.ppc.altivec.vminuw
2271
2272 res_vf = vec_vminfp(vf, vf);
2273 // CHECK: @llvm.ppc.altivec.vminfp
2274 // CHECK-LE: @llvm.ppc.altivec.vminfp
2275
2276 /* vec_mladd */
2277 res_vus = vec_mladd(vus, vus, vus);
2278 // CHECK: mul <8 x i16>
2279 // CHECK: add <8 x i16>
2280 // CHECK-LE: mul <8 x i16>
2281 // CHECK-LE: add <8 x i16>
2282
2283 res_vs = vec_mladd(vus, vs, vs);
2284 // CHECK: mul <8 x i16>
2285 // CHECK: add <8 x i16>
2286 // CHECK-LE: mul <8 x i16>
2287 // CHECK-LE: add <8 x i16>
2288
2289 res_vs = vec_mladd(vs, vus, vus);
2290 // CHECK: mul <8 x i16>
2291 // CHECK: add <8 x i16>
2292 // CHECK-LE: mul <8 x i16>
2293 // CHECK-LE: add <8 x i16>
2294
2295 res_vs = vec_mladd(vs, vs, vs);
2296 // CHECK: mul <8 x i16>
2297 // CHECK: add <8 x i16>
2298 // CHECK-LE: mul <8 x i16>
2299 // CHECK-LE: add <8 x i16>
2300
2301 /* vec_mradds */
2302 res_vs = vec_mradds(vs, vs, vs);
2303 // CHECK: @llvm.ppc.altivec.vmhraddshs
2304 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2305
2306 res_vs = vec_vmhraddshs(vs, vs, vs);
2307 // CHECK: @llvm.ppc.altivec.vmhraddshs
2308 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2309
2310 /* vec_msum */
2311 res_vi = vec_msum(vsc, vuc, vi);
2312 // CHECK: @llvm.ppc.altivec.vmsummbm
2313 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2314
2315 res_vui = vec_msum(vuc, vuc, vui);
2316 // CHECK: @llvm.ppc.altivec.vmsumubm
2317 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2318
2319 res_vi = vec_msum(vs, vs, vi);
2320 // CHECK: @llvm.ppc.altivec.vmsumshm
2321 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2322
2323 res_vui = vec_msum(vus, vus, vui);
2324 // CHECK: @llvm.ppc.altivec.vmsumuhm
2325 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2326
2327 res_vi = vec_vmsummbm(vsc, vuc, vi);
2328 // CHECK: @llvm.ppc.altivec.vmsummbm
2329 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2330
2331 res_vui = vec_vmsumubm(vuc, vuc, vui);
2332 // CHECK: @llvm.ppc.altivec.vmsumubm
2333 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2334
2335 res_vi = vec_vmsumshm(vs, vs, vi);
2336 // CHECK: @llvm.ppc.altivec.vmsumshm
2337 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2338
2339 res_vui = vec_vmsumuhm(vus, vus, vui);
2340 // CHECK: @llvm.ppc.altivec.vmsumuhm
2341 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2342
2343 /* vec_msums */
2344 res_vi = vec_msums(vs, vs, vi);
2345 // CHECK: @llvm.ppc.altivec.vmsumshs
2346 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2347
2348 res_vui = vec_msums(vus, vus, vui);
2349 // CHECK: @llvm.ppc.altivec.vmsumuhs
2350 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2351
2352 res_vi = vec_vmsumshs(vs, vs, vi);
2353 // CHECK: @llvm.ppc.altivec.vmsumshs
2354 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2355
2356 res_vui = vec_vmsumuhs(vus, vus, vui);
2357 // CHECK: @llvm.ppc.altivec.vmsumuhs
2358 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2359
2360 /* vec_mtvscr */
2361 vec_mtvscr(vsc);
2362 // CHECK: @llvm.ppc.altivec.mtvscr
2363 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2364
2365 vec_mtvscr(vuc);
2366 // CHECK: @llvm.ppc.altivec.mtvscr
2367 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2368
2369 vec_mtvscr(vbc);
2370 // CHECK: @llvm.ppc.altivec.mtvscr
2371 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2372
2373 vec_mtvscr(vs);
2374 // CHECK: @llvm.ppc.altivec.mtvscr
2375 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2376
2377 vec_mtvscr(vus);
2378 // CHECK: @llvm.ppc.altivec.mtvscr
2379 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2380
2381 vec_mtvscr(vbs);
2382 // CHECK: @llvm.ppc.altivec.mtvscr
2383 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2384
2385 vec_mtvscr(vp);
2386 // CHECK: @llvm.ppc.altivec.mtvscr
2387 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2388
2389 vec_mtvscr(vi);
2390 // CHECK: @llvm.ppc.altivec.mtvscr
2391 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2392
2393 vec_mtvscr(vui);
2394 // CHECK: @llvm.ppc.altivec.mtvscr
2395 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2396
2397 vec_mtvscr(vbi);
2398 // CHECK: @llvm.ppc.altivec.mtvscr
2399 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2400
2401 /* vec_mul */
2402 res_vsc = vec_mul(vsc, vsc);
2403 // CHECK: mul <16 x i8>
2404 // CHECK-LE: mul <16 x i8>
2405
2406 res_vuc = vec_mul(vuc, vuc);
2407 // CHECK: mul <16 x i8>
2408 // CHECK-LE: mul <16 x i8>
2409
2410 res_vs = vec_mul(vs, vs);
2411 // CHECK: mul <8 x i16>
2412 // CHECK-LE: mul <8 x i16>
2413
2414 res_vus = vec_mul(vus, vus);
2415 // CHECK: mul <8 x i16>
2416 // CHECK-LE: mul <8 x i16>
2417
2418 res_vi = vec_mul(vi, vi);
2419 // CHECK: mul <4 x i32>
2420 // CHECK-LE: mul <4 x i32>
2421
2422 res_vui = vec_mul(vui, vui);
2423 // CHECK: mul <4 x i32>
2424 // CHECK-LE: mul <4 x i32>
2425
2426 /* vec_mule */
2427 res_vs = vec_mule(vsc, vsc);
2428 // CHECK: @llvm.ppc.altivec.vmulesb
2429 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2430
2431 res_vus = vec_mule(vuc, vuc);
2432 // CHECK: @llvm.ppc.altivec.vmuleub
2433 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2434
2435 res_vi = vec_mule(vs, vs);
2436 // CHECK: @llvm.ppc.altivec.vmulesh
2437 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2438
2439 res_vui = vec_mule(vus, vus);
2440 // CHECK: @llvm.ppc.altivec.vmuleuh
2441 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2442
2443 res_vs = vec_vmulesb(vsc, vsc);
2444 // CHECK: @llvm.ppc.altivec.vmulesb
2445 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2446
2447 res_vus = vec_vmuleub(vuc, vuc);
2448 // CHECK: @llvm.ppc.altivec.vmuleub
2449 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2450
2451 res_vi = vec_vmulesh(vs, vs);
2452 // CHECK: @llvm.ppc.altivec.vmulesh
2453 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2454
2455 res_vui = vec_vmuleuh(vus, vus);
2456 // CHECK: @llvm.ppc.altivec.vmuleuh
2457 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2458
2459 /* vec_mulo */
2460 res_vs = vec_mulo(vsc, vsc);
2461 // CHECK: @llvm.ppc.altivec.vmulosb
2462 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2463
2464 res_vus = vec_mulo(vuc, vuc);
2465 // CHECK: @llvm.ppc.altivec.vmuloub
2466 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2467
2468 res_vi = vec_mulo(vs, vs);
2469 // CHECK: @llvm.ppc.altivec.vmulosh
2470 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2471
2472 res_vui = vec_mulo(vus, vus);
2473 // CHECK: @llvm.ppc.altivec.vmulouh
2474 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2475
2476 res_vs = vec_vmulosb(vsc, vsc);
2477 // CHECK: @llvm.ppc.altivec.vmulosb
2478 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2479
2480 res_vus = vec_vmuloub(vuc, vuc);
2481 // CHECK: @llvm.ppc.altivec.vmuloub
2482 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2483
2484 res_vi = vec_vmulosh(vs, vs);
2485 // CHECK: @llvm.ppc.altivec.vmulosh
2486 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2487
2488 res_vui = vec_vmulouh(vus, vus);
2489 // CHECK: @llvm.ppc.altivec.vmulouh
2490 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2491
2492 /* vec_nmsub */
2493 res_vf = vec_nmsub(vf, vf, vf);
2494 // CHECK: @llvm.ppc.altivec.vnmsubfp
2495 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2496
2497 res_vf = vec_vnmsubfp(vf, vf, vf);
2498 // CHECK: @llvm.ppc.altivec.vnmsubfp
2499 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2500
2501 /* vec_nor */
2502 res_vsc = vec_nor(vsc, vsc);
2503 // CHECK: or <16 x i8>
2504 // CHECK: xor <16 x i8>
2505 // CHECK-LE: or <16 x i8>
2506 // CHECK-LE: xor <16 x i8>
2507
2508 res_vuc = vec_nor(vuc, vuc);
2509 // CHECK: or <16 x i8>
2510 // CHECK: xor <16 x i8>
2511 // CHECK-LE: or <16 x i8>
2512 // CHECK-LE: xor <16 x i8>
2513
2514 res_vbc = vec_nor(vbc, vbc);
2515 // CHECK: or <16 x i8>
2516 // CHECK: xor <16 x i8>
2517 // CHECK-LE: or <16 x i8>
2518 // CHECK-LE: xor <16 x i8>
2519
2520 res_vs = vec_nor(vs, vs);
2521 // CHECK: or <8 x i16>
2522 // CHECK: xor <8 x i16>
2523 // CHECK-LE: or <8 x i16>
2524 // CHECK-LE: xor <8 x i16>
2525
2526 res_vus = vec_nor(vus, vus);
2527 // CHECK: or <8 x i16>
2528 // CHECK: xor <8 x i16>
2529 // CHECK-LE: or <8 x i16>
2530 // CHECK-LE: xor <8 x i16>
2531
2532 res_vbs = vec_nor(vbs, vbs);
2533 // CHECK: or <8 x i16>
2534 // CHECK: xor <8 x i16>
2535 // CHECK-LE: or <8 x i16>
2536 // CHECK-LE: xor <8 x i16>
2537
2538 res_vi = vec_nor(vi, vi);
2539 // CHECK: or <4 x i32>
2540 // CHECK: xor <4 x i32>
2541 // CHECK-LE: or <4 x i32>
2542 // CHECK-LE: xor <4 x i32>
2543
2544 res_vui = vec_nor(vui, vui);
2545 // CHECK: or <4 x i32>
2546 // CHECK: xor <4 x i32>
2547 // CHECK-LE: or <4 x i32>
2548 // CHECK-LE: xor <4 x i32>
2549
2550 res_vbi = vec_nor(vbi, vbi);
2551 // CHECK: or <4 x i32>
2552 // CHECK: xor <4 x i32>
2553 // CHECK-LE: or <4 x i32>
2554 // CHECK-LE: xor <4 x i32>
2555
2556 res_vf = vec_nor(vf, vf);
2557 // CHECK: or <4 x i32>
2558 // CHECK: xor <4 x i32>
2559 // CHECK-LE: or <4 x i32>
2560 // CHECK-LE: xor <4 x i32>
2561
2562 res_vsc = vec_vnor(vsc, vsc);
2563 // CHECK: or <16 x i8>
2564 // CHECK: xor <16 x i8>
2565 // CHECK-LE: or <16 x i8>
2566 // CHECK-LE: xor <16 x i8>
2567
2568 res_vuc = vec_vnor(vuc, vuc);
2569 // CHECK: or <16 x i8>
2570 // CHECK: xor <16 x i8>
2571 // CHECK-LE: or <16 x i8>
2572 // CHECK-LE: xor <16 x i8>
2573
2574 res_vbc = vec_vnor(vbc, vbc);
2575 // CHECK: or <16 x i8>
2576 // CHECK: xor <16 x i8>
2577 // CHECK-LE: or <16 x i8>
2578 // CHECK-LE: xor <16 x i8>
2579
2580 res_vs = vec_vnor(vs, vs);
2581 // CHECK: or <8 x i16>
2582 // CHECK: xor <8 x i16>
2583 // CHECK-LE: or <8 x i16>
2584 // CHECK-LE: xor <8 x i16>
2585
2586 res_vus = vec_vnor(vus, vus);
2587 // CHECK: or <8 x i16>
2588 // CHECK: xor <8 x i16>
2589 // CHECK-LE: or <8 x i16>
2590 // CHECK-LE: xor <8 x i16>
2591
2592 res_vbs = vec_vnor(vbs, vbs);
2593 // CHECK: or <8 x i16>
2594 // CHECK: xor <8 x i16>
2595 // CHECK-LE: or <8 x i16>
2596 // CHECK-LE: xor <8 x i16>
2597
2598 res_vi = vec_vnor(vi, vi);
2599 // CHECK: or <4 x i32>
2600 // CHECK: xor <4 x i32>
2601 // CHECK-LE: or <4 x i32>
2602 // CHECK-LE: xor <4 x i32>
2603
2604 res_vui = vec_vnor(vui, vui);
2605 // CHECK: or <4 x i32>
2606 // CHECK: xor <4 x i32>
2607 // CHECK-LE: or <4 x i32>
2608 // CHECK-LE: xor <4 x i32>
2609
2610 res_vbi = vec_vnor(vbi, vbi);
2611 // CHECK: or <4 x i32>
2612 // CHECK: xor <4 x i32>
2613 // CHECK-LE: or <4 x i32>
2614 // CHECK-LE: xor <4 x i32>
2615
2616 res_vf = vec_vnor(vf, vf);
2617 // CHECK: or <4 x i32>
2618 // CHECK: xor <4 x i32>
2619 // CHECK-LE: or <4 x i32>
2620 // CHECK-LE: xor <4 x i32>
2621
2622 /* vec_or */
2623 res_vsc = vec_or(vsc, vsc);
2624 // CHECK: or <16 x i8>
2625 // CHECK-LE: or <16 x i8>
2626
2627 res_vsc = vec_or(vbc, vsc);
2628 // CHECK: or <16 x i8>
2629 // CHECK-LE: or <16 x i8>
2630
2631 res_vsc = vec_or(vsc, vbc);
2632 // CHECK: or <16 x i8>
2633 // CHECK-LE: or <16 x i8>
2634
2635 res_vuc = vec_or(vuc, vuc);
2636 // CHECK: or <16 x i8>
2637 // CHECK-LE: or <16 x i8>
2638
2639 res_vuc = vec_or(vbc, vuc);
2640 // CHECK: or <16 x i8>
2641 // CHECK-LE: or <16 x i8>
2642
2643 res_vuc = vec_or(vuc, vbc);
2644 // CHECK: or <16 x i8>
2645 // CHECK-LE: or <16 x i8>
2646
2647 res_vbc = vec_or(vbc, vbc);
2648 // CHECK: or <16 x i8>
2649 // CHECK-LE: or <16 x i8>
2650
2651 res_vs = vec_or(vs, vs);
2652 // CHECK: or <8 x i16>
2653 // CHECK-LE: or <8 x i16>
2654
2655 res_vs = vec_or(vbs, vs);
2656 // CHECK: or <8 x i16>
2657 // CHECK-LE: or <8 x i16>
2658
2659 res_vs = vec_or(vs, vbs);
2660 // CHECK: or <8 x i16>
2661 // CHECK-LE: or <8 x i16>
2662
2663 res_vus = vec_or(vus, vus);
2664 // CHECK: or <8 x i16>
2665 // CHECK-LE: or <8 x i16>
2666
2667 res_vus = vec_or(vbs, vus);
2668 // CHECK: or <8 x i16>
2669 // CHECK-LE: or <8 x i16>
2670
2671 res_vus = vec_or(vus, vbs);
2672 // CHECK: or <8 x i16>
2673 // CHECK-LE: or <8 x i16>
2674
2675 res_vbs = vec_or(vbs, vbs);
2676 // CHECK: or <8 x i16>
2677 // CHECK-LE: or <8 x i16>
2678
2679 res_vi = vec_or(vi, vi);
2680 // CHECK: or <4 x i32>
2681 // CHECK-LE: or <4 x i32>
2682
2683 res_vi = vec_or(vbi, vi);
2684 // CHECK: or <4 x i32>
2685 // CHECK-LE: or <4 x i32>
2686
2687 res_vi = vec_or(vi, vbi);
2688 // CHECK: or <4 x i32>
2689 // CHECK-LE: or <4 x i32>
2690
2691 res_vui = vec_or(vui, vui);
2692 // CHECK: or <4 x i32>
2693 // CHECK-LE: or <4 x i32>
2694
2695 res_vui = vec_or(vbi, vui);
2696 // CHECK: or <4 x i32>
2697 // CHECK-LE: or <4 x i32>
2698
2699 res_vui = vec_or(vui, vbi);
2700 // CHECK: or <4 x i32>
2701 // CHECK-LE: or <4 x i32>
2702
2703 res_vbi = vec_or(vbi, vbi);
2704 // CHECK: or <4 x i32>
2705 // CHECK-LE: or <4 x i32>
2706
2707 res_vf = vec_or(vf, vf);
2708 // CHECK: or <4 x i32>
2709 // CHECK-LE: or <4 x i32>
2710
2711 res_vf = vec_or(vbi, vf);
2712 // CHECK: or <4 x i32>
2713 // CHECK-LE: or <4 x i32>
2714
2715 res_vf = vec_or(vf, vbi);
2716 // CHECK: or <4 x i32>
2717 // CHECK-LE: or <4 x i32>
2718
2719 res_vsc = vec_vor(vsc, vsc);
2720 // CHECK: or <16 x i8>
2721 // CHECK-LE: or <16 x i8>
2722
2723 res_vsc = vec_vor(vbc, vsc);
2724 // CHECK: or <16 x i8>
2725 // CHECK-LE: or <16 x i8>
2726
2727 res_vsc = vec_vor(vsc, vbc);
2728 // CHECK: or <16 x i8>
2729 // CHECK-LE: or <16 x i8>
2730
2731 res_vuc = vec_vor(vuc, vuc);
2732 // CHECK: or <16 x i8>
2733 // CHECK-LE: or <16 x i8>
2734
2735 res_vuc = vec_vor(vbc, vuc);
2736 // CHECK: or <16 x i8>
2737 // CHECK-LE: or <16 x i8>
2738
2739 res_vuc = vec_vor(vuc, vbc);
2740 // CHECK: or <16 x i8>
2741 // CHECK-LE: or <16 x i8>
2742
2743 res_vbc = vec_vor(vbc, vbc);
2744 // CHECK: or <16 x i8>
2745 // CHECK-LE: or <16 x i8>
2746
2747 res_vs = vec_vor(vs, vs);
2748 // CHECK: or <8 x i16>
2749 // CHECK-LE: or <8 x i16>
2750
2751 res_vs = vec_vor(vbs, vs);
2752 // CHECK: or <8 x i16>
2753 // CHECK-LE: or <8 x i16>
2754
2755 res_vs = vec_vor(vs, vbs);
2756 // CHECK: or <8 x i16>
2757 // CHECK-LE: or <8 x i16>
2758
2759 res_vus = vec_vor(vus, vus);
2760 // CHECK: or <8 x i16>
2761 // CHECK-LE: or <8 x i16>
2762
2763 res_vus = vec_vor(vbs, vus);
2764 // CHECK: or <8 x i16>
2765 // CHECK-LE: or <8 x i16>
2766
2767 res_vus = vec_vor(vus, vbs);
2768 // CHECK: or <8 x i16>
2769 // CHECK-LE: or <8 x i16>
2770
2771 res_vbs = vec_vor(vbs, vbs);
2772 // CHECK: or <8 x i16>
2773 // CHECK-LE: or <8 x i16>
2774
2775 res_vi = vec_vor(vi, vi);
2776 // CHECK: or <4 x i32>
2777 // CHECK-LE: or <4 x i32>
2778
2779 res_vi = vec_vor(vbi, vi);
2780 // CHECK: or <4 x i32>
2781 // CHECK-LE: or <4 x i32>
2782
2783 res_vi = vec_vor(vi, vbi);
2784 // CHECK: or <4 x i32>
2785 // CHECK-LE: or <4 x i32>
2786
2787 res_vui = vec_vor(vui, vui);
2788 // CHECK: or <4 x i32>
2789 // CHECK-LE: or <4 x i32>
2790
2791 res_vui = vec_vor(vbi, vui);
2792 // CHECK: or <4 x i32>
2793 // CHECK-LE: or <4 x i32>
2794
2795 res_vui = vec_vor(vui, vbi);
2796 // CHECK: or <4 x i32>
2797 // CHECK-LE: or <4 x i32>
2798
2799 res_vbi = vec_vor(vbi, vbi);
2800 // CHECK: or <4 x i32>
2801 // CHECK-LE: or <4 x i32>
2802
2803 res_vf = vec_vor(vf, vf);
2804 // CHECK: or <4 x i32>
2805 // CHECK-LE: or <4 x i32>
2806
2807 res_vf = vec_vor(vbi, vf);
2808 // CHECK: or <4 x i32>
2809 // CHECK-LE: or <4 x i32>
2810
2811 res_vf = vec_vor(vf, vbi);
2812 // CHECK: or <4 x i32>
2813 // CHECK-LE: or <4 x i32>
2814
2815 /* vec_pack */
2816 res_vsc = vec_pack(vs, vs);
2817 // CHECK: @llvm.ppc.altivec.vperm
2818 // CHECK-LE: @llvm.ppc.altivec.vperm
2819
2820 res_vuc = vec_pack(vus, vus);
2821 // CHECK: @llvm.ppc.altivec.vperm
2822 // CHECK-LE: @llvm.ppc.altivec.vperm
2823
2824 res_vbc = vec_pack(vbs, vbs);
2825 // CHECK: @llvm.ppc.altivec.vperm
2826 // CHECK-LE: @llvm.ppc.altivec.vperm
2827
2828 res_vs = vec_pack(vi, vi);
2829 // CHECK: @llvm.ppc.altivec.vperm
2830 // CHECK-LE: @llvm.ppc.altivec.vperm
2831
2832 res_vus = vec_pack(vui, vui);
2833 // CHECK: @llvm.ppc.altivec.vperm
2834 // CHECK-LE: @llvm.ppc.altivec.vperm
2835
2836 res_vbs = vec_pack(vbi, vbi);
2837 // CHECK: @llvm.ppc.altivec.vperm
2838 // CHECK-LE: @llvm.ppc.altivec.vperm
2839
2840 res_vsc = vec_vpkuhum(vs, vs);
2841 // CHECK: @llvm.ppc.altivec.vperm
2842 // CHECK-LE: @llvm.ppc.altivec.vperm
2843
2844 res_vuc = vec_vpkuhum(vus, vus);
2845 // CHECK: @llvm.ppc.altivec.vperm
2846 // CHECK-LE: @llvm.ppc.altivec.vperm
2847
2848 res_vbc = vec_vpkuhum(vbs, vbs);
2849 // CHECK: @llvm.ppc.altivec.vperm
2850 // CHECK-LE: @llvm.ppc.altivec.vperm
2851
2852 res_vs = vec_vpkuwum(vi, vi);
2853 // CHECK: @llvm.ppc.altivec.vperm
2854 // CHECK-LE: @llvm.ppc.altivec.vperm
2855
2856 res_vus = vec_vpkuwum(vui, vui);
2857 // CHECK: @llvm.ppc.altivec.vperm
2858 // CHECK-LE: @llvm.ppc.altivec.vperm
2859
2860 res_vbs = vec_vpkuwum(vbi, vbi);
2861 // CHECK: @llvm.ppc.altivec.vperm
2862 // CHECK-LE: @llvm.ppc.altivec.vperm
2863
2864 /* vec_packpx */
2865 res_vp = vec_packpx(vui, vui);
2866 // CHECK: @llvm.ppc.altivec.vpkpx
2867 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2868
2869 res_vp = vec_vpkpx(vui, vui);
2870 // CHECK: @llvm.ppc.altivec.vpkpx
2871 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2872
2873 /* vec_packs */
2874 res_vsc = vec_packs(vs, vs);
2875 // CHECK: @llvm.ppc.altivec.vpkshss
2876 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2877
2878 res_vuc = vec_packs(vus, vus);
2879 // CHECK: @llvm.ppc.altivec.vpkuhus
2880 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2881
2882 res_vs = vec_packs(vi, vi);
2883 // CHECK: @llvm.ppc.altivec.vpkswss
2884 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2885
2886 res_vus = vec_packs(vui, vui);
2887 // CHECK: @llvm.ppc.altivec.vpkuwus
2888 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2889
2890 res_vsc = vec_vpkshss(vs, vs);
2891 // CHECK: @llvm.ppc.altivec.vpkshss
2892 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2893
2894 res_vuc = vec_vpkuhus(vus, vus);
2895 // CHECK: @llvm.ppc.altivec.vpkuhus
2896 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2897
2898 res_vs = vec_vpkswss(vi, vi);
2899 // CHECK: @llvm.ppc.altivec.vpkswss
2900 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2901
2902 res_vus = vec_vpkuwus(vui, vui);
2903 // CHECK: @llvm.ppc.altivec.vpkuwus
2904 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2905
2906 /* vec_packsu */
2907 res_vuc = vec_packsu(vs, vs);
2908 // CHECK: @llvm.ppc.altivec.vpkshus
2909 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2910
2911 res_vuc = vec_packsu(vus, vus);
2912 // CHECK: @llvm.ppc.altivec.vpkuhus
2913 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2914
2915 res_vus = vec_packsu(vi, vi);
2916 // CHECK: @llvm.ppc.altivec.vpkswus
2917 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2918
2919 res_vus = vec_packsu(vui, vui);
2920 // CHECK: @llvm.ppc.altivec.vpkuwus
2921 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2922
2923 res_vuc = vec_vpkshus(vs, vs);
2924 // CHECK: @llvm.ppc.altivec.vpkshus
2925 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2926
2927 res_vuc = vec_vpkshus(vus, vus);
2928 // CHECK: @llvm.ppc.altivec.vpkuhus
2929 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2930
2931 res_vus = vec_vpkswus(vi, vi);
2932 // CHECK: @llvm.ppc.altivec.vpkswus
2933 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2934
2935 res_vus = vec_vpkswus(vui, vui);
2936 // CHECK: @llvm.ppc.altivec.vpkuwus
2937 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2938
2939 /* vec_perm */
2940 res_vsc = vec_perm(vsc, vsc, vuc);
2941 // CHECK: @llvm.ppc.altivec.vperm
2942 // CHECK-LE: @llvm.ppc.altivec.vperm
2943
2944 res_vuc = vec_perm(vuc, vuc, vuc);
2945 // CHECK: @llvm.ppc.altivec.vperm
2946 // CHECK-LE: @llvm.ppc.altivec.vperm
2947
2948 res_vbc = vec_perm(vbc, vbc, vuc);
2949 // CHECK: @llvm.ppc.altivec.vperm
2950 // CHECK-LE: @llvm.ppc.altivec.vperm
2951
2952 res_vs = vec_perm(vs, vs, vuc);
2953 // CHECK: @llvm.ppc.altivec.vperm
2954 // CHECK-LE: @llvm.ppc.altivec.vperm
2955
2956 res_vus = vec_perm(vus, vus, vuc);
2957 // CHECK: @llvm.ppc.altivec.vperm
2958 // CHECK-LE: @llvm.ppc.altivec.vperm
2959
2960 res_vbs = vec_perm(vbs, vbs, vuc);
2961 // CHECK: @llvm.ppc.altivec.vperm
2962 // CHECK-LE: @llvm.ppc.altivec.vperm
2963
2964 res_vp = vec_perm(vp, vp, vuc);
2965 // CHECK: @llvm.ppc.altivec.vperm
2966 // CHECK-LE: @llvm.ppc.altivec.vperm
2967
2968 res_vi = vec_perm(vi, vi, vuc);
2969 // CHECK: @llvm.ppc.altivec.vperm
2970 // CHECK-LE: @llvm.ppc.altivec.vperm
2971
2972 res_vui = vec_perm(vui, vui, vuc);
2973 // CHECK: @llvm.ppc.altivec.vperm
2974 // CHECK-LE: @llvm.ppc.altivec.vperm
2975
2976 res_vbi = vec_perm(vbi, vbi, vuc);
2977 // CHECK: @llvm.ppc.altivec.vperm
2978 // CHECK-LE: @llvm.ppc.altivec.vperm
2979
2980 res_vf = vec_perm(vf, vf, vuc);
2981 // CHECK: @llvm.ppc.altivec.vperm
2982 // CHECK-LE: @llvm.ppc.altivec.vperm
2983
2984 res_vsc = vec_vperm(vsc, vsc, vuc);
2985 // CHECK: @llvm.ppc.altivec.vperm
2986 // CHECK-LE: @llvm.ppc.altivec.vperm
2987
2988 res_vuc = vec_vperm(vuc, vuc, vuc);
2989 // CHECK: @llvm.ppc.altivec.vperm
2990 // CHECK-LE: @llvm.ppc.altivec.vperm
2991
2992 res_vbc = vec_vperm(vbc, vbc, vuc);
2993 // CHECK: @llvm.ppc.altivec.vperm
2994 // CHECK-LE: @llvm.ppc.altivec.vperm
2995
2996 res_vs = vec_vperm(vs, vs, vuc);
2997 // CHECK: @llvm.ppc.altivec.vperm
2998 // CHECK-LE: @llvm.ppc.altivec.vperm
2999
3000 res_vus = vec_vperm(vus, vus, vuc);
3001 // CHECK: @llvm.ppc.altivec.vperm
3002 // CHECK-LE: @llvm.ppc.altivec.vperm
3003
3004 res_vbs = vec_vperm(vbs, vbs, vuc);
3005 // CHECK: @llvm.ppc.altivec.vperm
3006 // CHECK-LE: @llvm.ppc.altivec.vperm
3007
3008 res_vp = vec_vperm(vp, vp, vuc);
3009 // CHECK: @llvm.ppc.altivec.vperm
3010 // CHECK-LE: @llvm.ppc.altivec.vperm
3011
3012 res_vi = vec_vperm(vi, vi, vuc);
3013 // CHECK: @llvm.ppc.altivec.vperm
3014 // CHECK-LE: @llvm.ppc.altivec.vperm
3015
3016 res_vui = vec_vperm(vui, vui, vuc);
3017 // CHECK: @llvm.ppc.altivec.vperm
3018 // CHECK-LE: @llvm.ppc.altivec.vperm
3019
3020 res_vbi = vec_vperm(vbi, vbi, vuc);
3021 // CHECK: @llvm.ppc.altivec.vperm
3022 // CHECK-LE: @llvm.ppc.altivec.vperm
3023
3024 res_vf = vec_vperm(vf, vf, vuc);
3025 // CHECK: @llvm.ppc.altivec.vperm
3026 // CHECK-LE: @llvm.ppc.altivec.vperm
3027
3028 /* vec_re */
3029 res_vf = vec_re(vf);
3030 // CHECK: @llvm.ppc.altivec.vrefp
3031 // CHECK-LE: @llvm.ppc.altivec.vrefp
3032
3033 res_vf = vec_vrefp(vf);
3034 // CHECK: @llvm.ppc.altivec.vrefp
3035 // CHECK-LE: @llvm.ppc.altivec.vrefp
3036
3037 /* vec_rl */
3038 res_vsc = vec_rl(vsc, vuc);
3039 // CHECK: @llvm.ppc.altivec.vrlb
3040 // CHECK-LE: @llvm.ppc.altivec.vrlb
3041
3042 res_vuc = vec_rl(vuc, vuc);
3043 // CHECK: @llvm.ppc.altivec.vrlb
3044 // CHECK-LE: @llvm.ppc.altivec.vrlb
3045
3046 res_vs = vec_rl(vs, vus);
3047 // CHECK: @llvm.ppc.altivec.vrlh
3048 // CHECK-LE: @llvm.ppc.altivec.vrlh
3049
3050 res_vus = vec_rl(vus, vus);
3051 // CHECK: @llvm.ppc.altivec.vrlh
3052 // CHECK-LE: @llvm.ppc.altivec.vrlh
3053
3054 res_vi = vec_rl(vi, vui);
3055 // CHECK: @llvm.ppc.altivec.vrlw
3056 // CHECK-LE: @llvm.ppc.altivec.vrlw
3057
3058 res_vui = vec_rl(vui, vui);
3059 // CHECK: @llvm.ppc.altivec.vrlw
3060 // CHECK-LE: @llvm.ppc.altivec.vrlw
3061
3062 res_vsc = vec_vrlb(vsc, vuc);
3063 // CHECK: @llvm.ppc.altivec.vrlb
3064 // CHECK-LE: @llvm.ppc.altivec.vrlb
3065
3066 res_vuc = vec_vrlb(vuc, vuc);
3067 // CHECK: @llvm.ppc.altivec.vrlb
3068 // CHECK-LE: @llvm.ppc.altivec.vrlb
3069
3070 res_vs = vec_vrlh(vs, vus);
3071 // CHECK: @llvm.ppc.altivec.vrlh
3072 // CHECK-LE: @llvm.ppc.altivec.vrlh
3073
3074 res_vus = vec_vrlh(vus, vus);
3075 // CHECK: @llvm.ppc.altivec.vrlh
3076 // CHECK-LE: @llvm.ppc.altivec.vrlh
3077
3078 res_vi = vec_vrlw(vi, vui);
3079 // CHECK: @llvm.ppc.altivec.vrlw
3080 // CHECK-LE: @llvm.ppc.altivec.vrlw
3081
3082 res_vui = vec_vrlw(vui, vui);
3083 // CHECK: @llvm.ppc.altivec.vrlw
3084 // CHECK-LE: @llvm.ppc.altivec.vrlw
3085
3086 /* vec_round */
3087 res_vf = vec_round(vf);
3088 // CHECK: @llvm.ppc.altivec.vrfin
3089 // CHECK-LE: @llvm.ppc.altivec.vrfin
3090
3091 res_vf = vec_vrfin(vf);
3092 // CHECK: @llvm.ppc.altivec.vrfin
3093 // CHECK-LE: @llvm.ppc.altivec.vrfin
3094
3095 /* vec_rsqrte */
3096 res_vf = vec_rsqrte(vf);
3097 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3098 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3099
3100 res_vf = vec_vrsqrtefp(vf);
3101 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3102 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3103
3104 /* vec_sel */
3105 res_vsc = vec_sel(vsc, vsc, vuc);
3106 // CHECK: xor <16 x i8>
3107 // CHECK: and <16 x i8>
3108 // CHECK: and <16 x i8>
3109 // CHECK: or <16 x i8>
3110 // CHECK-LE: xor <16 x i8>
3111 // CHECK-LE: and <16 x i8>
3112 // CHECK-LE: and <16 x i8>
3113 // CHECK-LE: or <16 x i8>
3114
3115 res_vsc = vec_sel(vsc, vsc, vbc);
3116 // CHECK: xor <16 x i8>
3117 // CHECK: and <16 x i8>
3118 // CHECK: and <16 x i8>
3119 // CHECK: or <16 x i8>
3120 // CHECK-LE: xor <16 x i8>
3121 // CHECK-LE: and <16 x i8>
3122 // CHECK-LE: and <16 x i8>
3123 // CHECK-LE: or <16 x i8>
3124
3125 res_vuc = vec_sel(vuc, vuc, vuc);
3126 // CHECK: xor <16 x i8>
3127 // CHECK: and <16 x i8>
3128 // CHECK: and <16 x i8>
3129 // CHECK: or <16 x i8>
3130 // CHECK-LE: xor <16 x i8>
3131 // CHECK-LE: and <16 x i8>
3132 // CHECK-LE: and <16 x i8>
3133 // CHECK-LE: or <16 x i8>
3134
3135 res_vuc = vec_sel(vuc, vuc, vbc);
3136 // CHECK: xor <16 x i8>
3137 // CHECK: and <16 x i8>
3138 // CHECK: and <16 x i8>
3139 // CHECK: or <16 x i8>
3140 // CHECK-LE: xor <16 x i8>
3141 // CHECK-LE: and <16 x i8>
3142 // CHECK-LE: and <16 x i8>
3143 // CHECK-LE: or <16 x i8>
3144
3145 res_vbc = vec_sel(vbc, vbc, vuc);
3146 // CHECK: xor <16 x i8>
3147 // CHECK: and <16 x i8>
3148 // CHECK: and <16 x i8>
3149 // CHECK: or <16 x i8>
3150 // CHECK-LE: xor <16 x i8>
3151 // CHECK-LE: and <16 x i8>
3152 // CHECK-LE: and <16 x i8>
3153 // CHECK-LE: or <16 x i8>
3154
3155 res_vbc = vec_sel(vbc, vbc, vbc);
3156 // CHECK: xor <16 x i8>
3157 // CHECK: and <16 x i8>
3158 // CHECK: and <16 x i8>
3159 // CHECK: or <16 x i8>
3160 // CHECK-LE: xor <16 x i8>
3161 // CHECK-LE: and <16 x i8>
3162 // CHECK-LE: and <16 x i8>
3163 // CHECK-LE: or <16 x i8>
3164
3165 res_vs = vec_sel(vs, vs, vus);
3166 // CHECK: xor <8 x i16>
3167 // CHECK: and <8 x i16>
3168 // CHECK: and <8 x i16>
3169 // CHECK: or <8 x i16>
3170 // CHECK-LE: xor <8 x i16>
3171 // CHECK-LE: and <8 x i16>
3172 // CHECK-LE: and <8 x i16>
3173 // CHECK-LE: or <8 x i16>
3174
3175 res_vs = vec_sel(vs, vs, vbs);
3176 // CHECK: xor <8 x i16>
3177 // CHECK: and <8 x i16>
3178 // CHECK: and <8 x i16>
3179 // CHECK: or <8 x i16>
3180 // CHECK-LE: xor <8 x i16>
3181 // CHECK-LE: and <8 x i16>
3182 // CHECK-LE: and <8 x i16>
3183 // CHECK-LE: or <8 x i16>
3184
3185 res_vus = vec_sel(vus, vus, vus);
3186 // CHECK: xor <8 x i16>
3187 // CHECK: and <8 x i16>
3188 // CHECK: and <8 x i16>
3189 // CHECK: or <8 x i16>
3190 // CHECK-LE: xor <8 x i16>
3191 // CHECK-LE: and <8 x i16>
3192 // CHECK-LE: and <8 x i16>
3193 // CHECK-LE: or <8 x i16>
3194
3195 res_vus = vec_sel(vus, vus, vbs);
3196 // CHECK: xor <8 x i16>
3197 // CHECK: and <8 x i16>
3198 // CHECK: and <8 x i16>
3199 // CHECK: or <8 x i16>
3200 // CHECK-LE: xor <8 x i16>
3201 // CHECK-LE: and <8 x i16>
3202 // CHECK-LE: and <8 x i16>
3203 // CHECK-LE: or <8 x i16>
3204
3205 res_vbs = vec_sel(vbs, vbs, vus);
3206 // CHECK: xor <8 x i16>
3207 // CHECK: and <8 x i16>
3208 // CHECK: and <8 x i16>
3209 // CHECK: or <8 x i16>
3210 // CHECK-LE: xor <8 x i16>
3211 // CHECK-LE: and <8 x i16>
3212 // CHECK-LE: and <8 x i16>
3213 // CHECK-LE: or <8 x i16>
3214
3215 res_vbs = vec_sel(vbs, vbs, vbs);
3216 // CHECK: xor <8 x i16>
3217 // CHECK: and <8 x i16>
3218 // CHECK: and <8 x i16>
3219 // CHECK: or <8 x i16>
3220 // CHECK-LE: xor <8 x i16>
3221 // CHECK-LE: and <8 x i16>
3222 // CHECK-LE: and <8 x i16>
3223 // CHECK-LE: or <8 x i16>
3224
3225 res_vi = vec_sel(vi, vi, vui);
3226 // CHECK: xor <4 x i32>
3227 // CHECK: and <4 x i32>
3228 // CHECK: and <4 x i32>
3229 // CHECK: or <4 x i32>
3230 // CHECK-LE: xor <4 x i32>
3231 // CHECK-LE: and <4 x i32>
3232 // CHECK-LE: and <4 x i32>
3233 // CHECK-LE: or <4 x i32>
3234
3235 res_vi = vec_sel(vi, vi, vbi);
3236 // CHECK: xor <4 x i32>
3237 // CHECK: and <4 x i32>
3238 // CHECK: and <4 x i32>
3239 // CHECK: or <4 x i32>
3240 // CHECK-LE: xor <4 x i32>
3241 // CHECK-LE: and <4 x i32>
3242 // CHECK-LE: and <4 x i32>
3243 // CHECK-LE: or <4 x i32>
3244
3245 res_vui = vec_sel(vui, vui, vui);
3246 // CHECK: xor <4 x i32>
3247 // CHECK: and <4 x i32>
3248 // CHECK: and <4 x i32>
3249 // CHECK: or <4 x i32>
3250 // CHECK-LE: xor <4 x i32>
3251 // CHECK-LE: and <4 x i32>
3252 // CHECK-LE: and <4 x i32>
3253 // CHECK-LE: or <4 x i32>
3254
3255 res_vui = vec_sel(vui, vui, vbi);
3256 // CHECK: xor <4 x i32>
3257 // CHECK: and <4 x i32>
3258 // CHECK: and <4 x i32>
3259 // CHECK: or <4 x i32>
3260 // CHECK-LE: xor <4 x i32>
3261 // CHECK-LE: and <4 x i32>
3262 // CHECK-LE: and <4 x i32>
3263 // CHECK-LE: or <4 x i32>
3264
3265 res_vbi = vec_sel(vbi, vbi, vui);
3266 // CHECK: xor <4 x i32>
3267 // CHECK: and <4 x i32>
3268 // CHECK: and <4 x i32>
3269 // CHECK: or <4 x i32>
3270 // CHECK-LE: xor <4 x i32>
3271 // CHECK-LE: and <4 x i32>
3272 // CHECK-LE: and <4 x i32>
3273 // CHECK-LE: or <4 x i32>
3274
3275 res_vbi = vec_sel(vbi, vbi, vbi);
3276 // CHECK: xor <4 x i32>
3277 // CHECK: and <4 x i32>
3278 // CHECK: and <4 x i32>
3279 // CHECK: or <4 x i32>
3280 // CHECK-LE: xor <4 x i32>
3281 // CHECK-LE: and <4 x i32>
3282 // CHECK-LE: and <4 x i32>
3283 // CHECK-LE: or <4 x i32>
3284
3285 res_vf = vec_sel(vf, vf, vui);
3286 // CHECK: xor <4 x i32>
3287 // CHECK: and <4 x i32>
3288 // CHECK: and <4 x i32>
3289 // CHECK: or <4 x i32>
3290 // CHECK-LE: xor <4 x i32>
3291 // CHECK-LE: and <4 x i32>
3292 // CHECK-LE: and <4 x i32>
3293 // CHECK-LE: or <4 x i32>
3294
3295 res_vf = vec_sel(vf, vf, vbi);
3296 // CHECK: xor <4 x i32>
3297 // CHECK: and <4 x i32>
3298 // CHECK: and <4 x i32>
3299 // CHECK: or <4 x i32>
3300 // CHECK-LE: xor <4 x i32>
3301 // CHECK-LE: and <4 x i32>
3302 // CHECK-LE: and <4 x i32>
3303 // CHECK-LE: or <4 x i32>
3304
3305 res_vsc = vec_vsel(vsc, vsc, vuc);
3306 // CHECK: xor <16 x i8>
3307 // CHECK: and <16 x i8>
3308 // CHECK: and <16 x i8>
3309 // CHECK: or <16 x i8>
3310 // CHECK-LE: xor <16 x i8>
3311 // CHECK-LE: and <16 x i8>
3312 // CHECK-LE: and <16 x i8>
3313 // CHECK-LE: or <16 x i8>
3314
3315 res_vsc = vec_vsel(vsc, vsc, vbc);
3316 // CHECK: xor <16 x i8>
3317 // CHECK: and <16 x i8>
3318 // CHECK: and <16 x i8>
3319 // CHECK: or <16 x i8>
3320 // CHECK-LE: xor <16 x i8>
3321 // CHECK-LE: and <16 x i8>
3322 // CHECK-LE: and <16 x i8>
3323 // CHECK-LE: or <16 x i8>
3324
3325 res_vuc = vec_vsel(vuc, vuc, vuc);
3326 // CHECK: xor <16 x i8>
3327 // CHECK: and <16 x i8>
3328 // CHECK: and <16 x i8>
3329 // CHECK: or <16 x i8>
3330 // CHECK-LE: xor <16 x i8>
3331 // CHECK-LE: and <16 x i8>
3332 // CHECK-LE: and <16 x i8>
3333 // CHECK-LE: or <16 x i8>
3334
3335 res_vuc = vec_vsel(vuc, vuc, vbc);
3336 // CHECK: xor <16 x i8>
3337 // CHECK: and <16 x i8>
3338 // CHECK: and <16 x i8>
3339 // CHECK: or <16 x i8>
3340 // CHECK-LE: xor <16 x i8>
3341 // CHECK-LE: and <16 x i8>
3342 // CHECK-LE: and <16 x i8>
3343 // CHECK-LE: or <16 x i8>
3344
3345 res_vbc = vec_vsel(vbc, vbc, vuc);
3346 // CHECK: xor <16 x i8>
3347 // CHECK: and <16 x i8>
3348 // CHECK: and <16 x i8>
3349 // CHECK: or <16 x i8>
3350 // CHECK-LE: xor <16 x i8>
3351 // CHECK-LE: and <16 x i8>
3352 // CHECK-LE: and <16 x i8>
3353 // CHECK-LE: or <16 x i8>
3354
3355 res_vbc = vec_vsel(vbc, vbc, vbc);
3356 // CHECK: xor <16 x i8>
3357 // CHECK: and <16 x i8>
3358 // CHECK: and <16 x i8>
3359 // CHECK: or <16 x i8>
3360 // CHECK-LE: xor <16 x i8>
3361 // CHECK-LE: and <16 x i8>
3362 // CHECK-LE: and <16 x i8>
3363 // CHECK-LE: or <16 x i8>
3364
3365 res_vs = vec_vsel(vs, vs, vus);
3366 // CHECK: xor <8 x i16>
3367 // CHECK: and <8 x i16>
3368 // CHECK: and <8 x i16>
3369 // CHECK: or <8 x i16>
3370 // CHECK-LE: xor <8 x i16>
3371 // CHECK-LE: and <8 x i16>
3372 // CHECK-LE: and <8 x i16>
3373 // CHECK-LE: or <8 x i16>
3374
3375 res_vs = vec_vsel(vs, vs, vbs);
3376 // CHECK: xor <8 x i16>
3377 // CHECK: and <8 x i16>
3378 // CHECK: and <8 x i16>
3379 // CHECK: or <8 x i16>
3380 // CHECK-LE: xor <8 x i16>
3381 // CHECK-LE: and <8 x i16>
3382 // CHECK-LE: and <8 x i16>
3383 // CHECK-LE: or <8 x i16>
3384
3385 res_vus = vec_vsel(vus, vus, vus);
3386 // CHECK: xor <8 x i16>
3387 // CHECK: and <8 x i16>
3388 // CHECK: and <8 x i16>
3389 // CHECK: or <8 x i16>
3390 // CHECK-LE: xor <8 x i16>
3391 // CHECK-LE: and <8 x i16>
3392 // CHECK-LE: and <8 x i16>
3393 // CHECK-LE: or <8 x i16>
3394
3395 res_vus = vec_vsel(vus, vus, vbs);
3396 // CHECK: xor <8 x i16>
3397 // CHECK: and <8 x i16>
3398 // CHECK: and <8 x i16>
3399 // CHECK: or <8 x i16>
3400 // CHECK-LE: xor <8 x i16>
3401 // CHECK-LE: and <8 x i16>
3402 // CHECK-LE: and <8 x i16>
3403 // CHECK-LE: or <8 x i16>
3404
3405 res_vbs = vec_vsel(vbs, vbs, vus);
3406 // CHECK: xor <8 x i16>
3407 // CHECK: and <8 x i16>
3408 // CHECK: and <8 x i16>
3409 // CHECK: or <8 x i16>
3410 // CHECK-LE: xor <8 x i16>
3411 // CHECK-LE: and <8 x i16>
3412 // CHECK-LE: and <8 x i16>
3413 // CHECK-LE: or <8 x i16>
3414
3415 res_vbs = vec_vsel(vbs, vbs, vbs);
3416 // CHECK: xor <8 x i16>
3417 // CHECK: and <8 x i16>
3418 // CHECK: and <8 x i16>
3419 // CHECK: or <8 x i16>
3420 // CHECK-LE: xor <8 x i16>
3421 // CHECK-LE: and <8 x i16>
3422 // CHECK-LE: and <8 x i16>
3423 // CHECK-LE: or <8 x i16>
3424
3425 res_vi = vec_vsel(vi, vi, vui);
3426 // CHECK: xor <4 x i32>
3427 // CHECK: and <4 x i32>
3428 // CHECK: and <4 x i32>
3429 // CHECK: or <4 x i32>
3430 // CHECK-LE: xor <4 x i32>
3431 // CHECK-LE: and <4 x i32>
3432 // CHECK-LE: and <4 x i32>
3433 // CHECK-LE: or <4 x i32>
3434
3435 res_vi = vec_vsel(vi, vi, vbi);
3436 // CHECK: xor <4 x i32>
3437 // CHECK: and <4 x i32>
3438 // CHECK: and <4 x i32>
3439 // CHECK: or <4 x i32>
3440 // CHECK-LE: xor <4 x i32>
3441 // CHECK-LE: and <4 x i32>
3442 // CHECK-LE: and <4 x i32>
3443 // CHECK-LE: or <4 x i32>
3444
3445 res_vui = vec_vsel(vui, vui, vui);
3446 // CHECK: xor <4 x i32>
3447 // CHECK: and <4 x i32>
3448 // CHECK: and <4 x i32>
3449 // CHECK: or <4 x i32>
3450 // CHECK-LE: xor <4 x i32>
3451 // CHECK-LE: and <4 x i32>
3452 // CHECK-LE: and <4 x i32>
3453 // CHECK-LE: or <4 x i32>
3454
3455 res_vui = vec_vsel(vui, vui, vbi);
3456 // CHECK: xor <4 x i32>
3457 // CHECK: and <4 x i32>
3458 // CHECK: and <4 x i32>
3459 // CHECK: or <4 x i32>
3460 // CHECK-LE: xor <4 x i32>
3461 // CHECK-LE: and <4 x i32>
3462 // CHECK-LE: and <4 x i32>
3463 // CHECK-LE: or <4 x i32>
3464
3465 res_vbi = vec_vsel(vbi, vbi, vui);
3466 // CHECK: xor <4 x i32>
3467 // CHECK: and <4 x i32>
3468 // CHECK: and <4 x i32>
3469 // CHECK: or <4 x i32>
3470 // CHECK-LE: xor <4 x i32>
3471 // CHECK-LE: and <4 x i32>
3472 // CHECK-LE: and <4 x i32>
3473 // CHECK-LE: or <4 x i32>
3474
3475 res_vbi = vec_vsel(vbi, vbi, vbi);
3476 // CHECK: xor <4 x i32>
3477 // CHECK: and <4 x i32>
3478 // CHECK: and <4 x i32>
3479 // CHECK: or <4 x i32>
3480 // CHECK-LE: xor <4 x i32>
3481 // CHECK-LE: and <4 x i32>
3482 // CHECK-LE: and <4 x i32>
3483 // CHECK-LE: or <4 x i32>
3484
3485 res_vf = vec_vsel(vf, vf, vui);
3486 // CHECK: xor <4 x i32>
3487 // CHECK: and <4 x i32>
3488 // CHECK: and <4 x i32>
3489 // CHECK: or <4 x i32>
3490 // CHECK-LE: xor <4 x i32>
3491 // CHECK-LE: and <4 x i32>
3492 // CHECK-LE: and <4 x i32>
3493 // CHECK-LE: or <4 x i32>
3494
3495 res_vf = vec_vsel(vf, vf, vbi);
3496 // CHECK: xor <4 x i32>
3497 // CHECK: and <4 x i32>
3498 // CHECK: and <4 x i32>
3499 // CHECK: or <4 x i32>
3500 // CHECK-LE: xor <4 x i32>
3501 // CHECK-LE: and <4 x i32>
3502 // CHECK-LE: and <4 x i32>
3503 // CHECK-LE: or <4 x i32>
3504
3505 /* vec_sl */
3506 res_vsc = vec_sl(vsc, vuc);
3507 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3508 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3509 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3510 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3511
3512 res_vuc = vec_sl(vuc, vuc);
3513 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3514 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3515 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3516 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3517
3518 res_vs = vec_sl(vs, vus);
3519 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3520 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3521 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3522 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3523
3524 res_vus = vec_sl(vus, vus);
3525 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3526 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3527 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3528 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3529
3530 res_vi = vec_sl(vi, vui);
3531 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3532 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3533 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3534 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3535
3536 res_vui = vec_sl(vui, vui);
3537 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3538 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3539 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3540 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3541
3542 res_vsc = vec_vslb(vsc, vuc);
3543 // CHECK: shl <16 x i8>
3544 // CHECK-LE: shl <16 x i8>
3545
3546 res_vuc = vec_vslb(vuc, vuc);
3547 // CHECK: shl <16 x i8>
3548 // CHECK-LE: shl <16 x i8>
3549
3550 res_vs = vec_vslh(vs, vus);
3551 // CHECK: shl <8 x i16>
3552 // CHECK-LE: shl <8 x i16>
3553
3554 res_vus = vec_vslh(vus, vus);
3555 // CHECK: shl <8 x i16>
3556 // CHECK-LE: shl <8 x i16>
3557
3558 res_vi = vec_vslw(vi, vui);
3559 // CHECK: shl <4 x i32>
3560 // CHECK-LE: shl <4 x i32>
3561
3562 res_vui = vec_vslw(vui, vui);
3563 // CHECK: shl <4 x i32>
3564 // CHECK-LE: shl <4 x i32>
3565
3566 /* vec_sld */
3567 res_vsc = vec_sld(vsc, vsc, 0);
3568 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3569 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3570 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3571 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3572 // CHECK: @llvm.ppc.altivec.vperm
3573 // CHECK-LE: sub nsw i32 16
3574 // CHECK-LE: sub nsw i32 17
3575 // CHECK-LE: sub nsw i32 18
3576 // CHECK-LE: sub nsw i32 31
3577 // CHECK-LE: @llvm.ppc.altivec.vperm
3578
3579 res_vuc = vec_sld(vuc, vuc, 0);
3580 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3581 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3582 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3583 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3584 // CHECK: @llvm.ppc.altivec.vperm
3585 // CHECK-LE: sub nsw i32 16
3586 // CHECK-LE: sub nsw i32 17
3587 // CHECK-LE: sub nsw i32 18
3588 // CHECK-LE: sub nsw i32 31
3589 // CHECK-LE: @llvm.ppc.altivec.vperm
3590
3591 res_vs = vec_sld(vs, vs, 0);
3592 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3593 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3594 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3595 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3596 // CHECK: @llvm.ppc.altivec.vperm
3597 // CHECK-LE: sub nsw i32 16
3598 // CHECK-LE: sub nsw i32 17
3599 // CHECK-LE: sub nsw i32 18
3600 // CHECK-LE: sub nsw i32 31
3601 // CHECK-LE: @llvm.ppc.altivec.vperm
3602
3603 res_vus = vec_sld(vus, vus, 0);
3604 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3605 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3606 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3607 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3608 // CHECK: @llvm.ppc.altivec.vperm
3609 // CHECK-LE: sub nsw i32 16
3610 // CHECK-LE: sub nsw i32 17
3611 // CHECK-LE: sub nsw i32 18
3612 // CHECK-LE: sub nsw i32 31
3613 // CHECK-LE: @llvm.ppc.altivec.vperm
3614
3615 res_vbs = vec_sld(vbs, vbs, 0);
3616 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3617 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3618 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3619 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3620 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3621 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3622 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3623 // CHECK-LE: sub nsw i32 16
3624 // CHECK-LE: sub nsw i32 17
3625 // CHECK-LE: sub nsw i32 18
3626 // CHECK-LE: sub nsw i32 31
3627 // CHECK-LE: xor <16 x i8>
3628 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3629 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3630 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3631
3632 res_vp = vec_sld(vp, vp, 0);
3633 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3634 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3635 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3636 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3637 // CHECK: @llvm.ppc.altivec.vperm
3638 // CHECK-LE: sub nsw i32 16
3639 // CHECK-LE: sub nsw i32 17
3640 // CHECK-LE: sub nsw i32 18
3641 // CHECK-LE: sub nsw i32 31
3642 // CHECK-LE: @llvm.ppc.altivec.vperm
3643
3644 res_vi = vec_sld(vi, vi, 0);
3645 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3646 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3647 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3648 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3649 // CHECK: @llvm.ppc.altivec.vperm
3650 // CHECK-LE: sub nsw i32 16
3651 // CHECK-LE: sub nsw i32 17
3652 // CHECK-LE: sub nsw i32 18
3653 // CHECK-LE: sub nsw i32 31
3654 // CHECK-LE: @llvm.ppc.altivec.vperm
3655
3656 res_vui = vec_sld(vui, vui, 0);
3657 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3658 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3659 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3660 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3661 // CHECK: @llvm.ppc.altivec.vperm
3662 // CHECK-LE: sub nsw i32 16
3663 // CHECK-LE: sub nsw i32 17
3664 // CHECK-LE: sub nsw i32 18
3665 // CHECK-LE: sub nsw i32 31
3666 // CHECK-LE: @llvm.ppc.altivec.vperm
3667
3668 res_vbi = vec_sld(vbi, vbi, 0);
3669 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3670 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3671 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3672 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3673 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3674 // CHECK-LE: sub nsw i32 16
3675 // CHECK-LE: sub nsw i32 17
3676 // CHECK-LE: sub nsw i32 18
3677 // CHECK-LE: sub nsw i32 31
3678 // CHECK-LE: xor <16 x i8>
3679 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3680
3681 res_vf = vec_sld(vf, vf, 0);
3682 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3683 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3684 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3685 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3686 // CHECK: @llvm.ppc.altivec.vperm
3687 // CHECK-LE: sub nsw i32 16
3688 // CHECK-LE: sub nsw i32 17
3689 // CHECK-LE: sub nsw i32 18
3690 // CHECK-LE: sub nsw i32 31
3691 // CHECK-LE: @llvm.ppc.altivec.vperm
3692
3693 /* vec_sldw */
3694 res_vsc = vec_sldw(vsc, vsc, 0);
3695 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3696 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3697 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3698 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3699 // CHECK: @llvm.ppc.altivec.vperm
3700 // CHECK-LE: sub nsw i32 16
3701 // CHECK-LE: sub nsw i32 17
3702 // CHECK-LE: sub nsw i32 18
3703 // CHECK-LE: sub nsw i32 31
3704 // CHECK-LE: @llvm.ppc.altivec.vperm
3705
3706 res_vuc = vec_sldw(vuc, vuc, 0);
3707 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3708 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3709 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3710 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3711 // CHECK: @llvm.ppc.altivec.vperm
3712 // CHECK-LE: sub nsw i32 16
3713 // CHECK-LE: sub nsw i32 17
3714 // CHECK-LE: sub nsw i32 18
3715 // CHECK-LE: sub nsw i32 31
3716 // CHECK-LE: @llvm.ppc.altivec.vperm
3717
3718 res_vi = vec_sldw(vi, vi, 0);
3719 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3720 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3721 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3722 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3723 // CHECK: @llvm.ppc.altivec.vperm
3724 // CHECK-LE: sub nsw i32 16
3725 // CHECK-LE: sub nsw i32 17
3726 // CHECK-LE: sub nsw i32 18
3727 // CHECK-LE: sub nsw i32 31
3728 // CHECK-LE: @llvm.ppc.altivec.vperm
3729
3730 res_vui = vec_sldw(vui, vui, 0);
3731 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3732 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3733 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3734 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3735 // CHECK: @llvm.ppc.altivec.vperm
3736 // CHECK-LE: sub nsw i32 16
3737 // CHECK-LE: sub nsw i32 17
3738 // CHECK-LE: sub nsw i32 18
3739 // CHECK-LE: sub nsw i32 31
3740 // CHECK-LE: @llvm.ppc.altivec.vperm
3741
3742 res_vs = vec_sldw(vs, vs, 0);
3743 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3744 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3745 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3746 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3747 // CHECK: @llvm.ppc.altivec.vperm
3748 // CHECK-LE: sub nsw i32 16
3749 // CHECK-LE: sub nsw i32 17
3750 // CHECK-LE: sub nsw i32 18
3751 // CHECK-LE: sub nsw i32 31
3752 // CHECK-LE: @llvm.ppc.altivec.vperm
3753
3754 res_vus = vec_sldw(vus, vus, 0);
3755 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3756 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3757 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3758 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3759 // CHECK: @llvm.ppc.altivec.vperm
3760 // CHECK-LE: sub nsw i32 16
3761 // CHECK-LE: sub nsw i32 17
3762 // CHECK-LE: sub nsw i32 18
3763 // CHECK-LE: sub nsw i32 31
3764 // CHECK-LE: @llvm.ppc.altivec.vperm
3765
3766 res_vf = vec_sldw(vf, vf, 0);
3767 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3768 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3769 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3770 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3771 // CHECK: @llvm.ppc.altivec.vperm
3772 // CHECK-LE: sub nsw i32 16
3773 // CHECK-LE: sub nsw i32 17
3774 // CHECK-LE: sub nsw i32 18
3775 // CHECK-LE: sub nsw i32 31
3776 // CHECK-LE: @llvm.ppc.altivec.vperm
3777
3778 res_vsc = vec_vsldoi(vsc, vsc, 0);
3779 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3780 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3781 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3782 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3783 // CHECK: @llvm.ppc.altivec.vperm
3784 // CHECK-LE: sub nsw i32 16
3785 // CHECK-LE: sub nsw i32 17
3786 // CHECK-LE: sub nsw i32 18
3787 // CHECK-LE: sub nsw i32 31
3788 // CHECK-LE: @llvm.ppc.altivec.vperm
3789
3790 res_vuc = vec_vsldoi(vuc, vuc, 0);
3791 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3792 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3793 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3794 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3795 // CHECK: @llvm.ppc.altivec.vperm
3796 // CHECK-LE: sub nsw i32 16
3797 // CHECK-LE: sub nsw i32 17
3798 // CHECK-LE: sub nsw i32 18
3799 // CHECK-LE: sub nsw i32 31
3800 // CHECK-LE: @llvm.ppc.altivec.vperm
3801
3802 res_vs = vec_vsldoi(vs, vs, 0);
3803 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3804 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3805 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3806 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3807 // CHECK: @llvm.ppc.altivec.vperm
3808 // CHECK-LE: sub nsw i32 16
3809 // CHECK-LE: sub nsw i32 17
3810 // CHECK-LE: sub nsw i32 18
3811 // CHECK-LE: sub nsw i32 31
3812 // CHECK-LE: @llvm.ppc.altivec.vperm
3813
3814 res_vus = vec_vsldoi(vus, vus, 0);
3815 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3816 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3817 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3818 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3819 // CHECK: @llvm.ppc.altivec.vperm
3820 // CHECK-LE: sub nsw i32 16
3821 // CHECK-LE: sub nsw i32 17
3822 // CHECK-LE: sub nsw i32 18
3823 // CHECK-LE: sub nsw i32 31
3824 // CHECK-LE: @llvm.ppc.altivec.vperm
3825
3826 res_vp = vec_vsldoi(vp, vp, 0);
3827 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3828 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3829 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3830 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3831 // CHECK: @llvm.ppc.altivec.vperm
3832 // CHECK-LE: sub nsw i32 16
3833 // CHECK-LE: sub nsw i32 17
3834 // CHECK-LE: sub nsw i32 18
3835 // CHECK-LE: sub nsw i32 31
3836 // CHECK-LE: @llvm.ppc.altivec.vperm
3837
3838 res_vi = vec_vsldoi(vi, vi, 0);
3839 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3840 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3841 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3842 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3843 // CHECK: @llvm.ppc.altivec.vperm
3844 // CHECK-LE: sub nsw i32 16
3845 // CHECK-LE: sub nsw i32 17
3846 // CHECK-LE: sub nsw i32 18
3847 // CHECK-LE: sub nsw i32 31
3848 // CHECK-LE: @llvm.ppc.altivec.vperm
3849
3850 res_vui = vec_vsldoi(vui, vui, 0);
3851 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3852 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3853 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3854 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3855 // CHECK: @llvm.ppc.altivec.vperm
3856 // CHECK-LE: sub nsw i32 16
3857 // CHECK-LE: sub nsw i32 17
3858 // CHECK-LE: sub nsw i32 18
3859 // CHECK-LE: sub nsw i32 31
3860 // CHECK-LE: @llvm.ppc.altivec.vperm
3861
3862 res_vf = vec_vsldoi(vf, vf, 0);
3863 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3864 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3865 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3866 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3867 // CHECK: @llvm.ppc.altivec.vperm
3868 // CHECK-LE: sub nsw i32 16
3869 // CHECK-LE: sub nsw i32 17
3870 // CHECK-LE: sub nsw i32 18
3871 // CHECK-LE: sub nsw i32 31
3872 // CHECK-LE: @llvm.ppc.altivec.vperm
3873
3874 /* vec_sll */
3875 res_vsc = vec_sll(vsc, vuc);
3876 // CHECK: @llvm.ppc.altivec.vsl
3877 // CHECK-LE: @llvm.ppc.altivec.vsl
3878
3879 res_vsc = vec_sll(vsc, vus);
3880 // CHECK: @llvm.ppc.altivec.vsl
3881 // CHECK-LE: @llvm.ppc.altivec.vsl
3882
3883 res_vsc = vec_sll(vsc, vui);
3884 // CHECK: @llvm.ppc.altivec.vsl
3885 // CHECK-LE: @llvm.ppc.altivec.vsl
3886
3887 res_vuc = vec_sll(vuc, vuc);
3888 // CHECK: @llvm.ppc.altivec.vsl
3889 // CHECK-LE: @llvm.ppc.altivec.vsl
3890
3891 res_vuc = vec_sll(vuc, vus);
3892 // CHECK: @llvm.ppc.altivec.vsl
3893 // CHECK-LE: @llvm.ppc.altivec.vsl
3894
3895 res_vuc = vec_sll(vuc, vui);
3896 // CHECK: @llvm.ppc.altivec.vsl
3897 // CHECK-LE: @llvm.ppc.altivec.vsl
3898
3899 res_vbc = vec_sll(vbc, vuc);
3900 // CHECK: @llvm.ppc.altivec.vsl
3901 // CHECK-LE: @llvm.ppc.altivec.vsl
3902
3903 res_vbc = vec_sll(vbc, vus);
3904 // CHECK: @llvm.ppc.altivec.vsl
3905 // CHECK-LE: @llvm.ppc.altivec.vsl
3906
3907 res_vbc = vec_sll(vbc, vui);
3908 // CHECK: @llvm.ppc.altivec.vsl
3909 // CHECK-LE: @llvm.ppc.altivec.vsl
3910
3911 res_vs = vec_sll(vs, vuc);
3912 // CHECK: @llvm.ppc.altivec.vsl
3913 // CHECK-LE: @llvm.ppc.altivec.vsl
3914
3915 res_vs = vec_sll(vs, vus);
3916 // CHECK: @llvm.ppc.altivec.vsl
3917 // CHECK-LE: @llvm.ppc.altivec.vsl
3918
3919 res_vs = vec_sll(vs, vui);
3920 // CHECK: @llvm.ppc.altivec.vsl
3921 // CHECK-LE: @llvm.ppc.altivec.vsl
3922
3923 res_vus = vec_sll(vus, vuc);
3924 // CHECK: @llvm.ppc.altivec.vsl
3925 // CHECK-LE: @llvm.ppc.altivec.vsl
3926
3927 res_vus = vec_sll(vus, vus);
3928 // CHECK: @llvm.ppc.altivec.vsl
3929 // CHECK-LE: @llvm.ppc.altivec.vsl
3930
3931 res_vus = vec_sll(vus, vui);
3932 // CHECK: @llvm.ppc.altivec.vsl
3933 // CHECK-LE: @llvm.ppc.altivec.vsl
3934
3935 res_vbs = vec_sll(vbs, vuc);
3936 // CHECK: @llvm.ppc.altivec.vsl
3937 // CHECK-LE: @llvm.ppc.altivec.vsl
3938
3939 res_vbs = vec_sll(vbs, vus);
3940 // CHECK: @llvm.ppc.altivec.vsl
3941 // CHECK-LE: @llvm.ppc.altivec.vsl
3942
3943 res_vbs = vec_sll(vbs, vui);
3944 // CHECK: @llvm.ppc.altivec.vsl
3945 // CHECK-LE: @llvm.ppc.altivec.vsl
3946
3947 res_vp = vec_sll(vp, vuc);
3948 // CHECK: @llvm.ppc.altivec.vsl
3949 // CHECK-LE: @llvm.ppc.altivec.vsl
3950
3951 res_vp = vec_sll(vp, vus);
3952 // CHECK: @llvm.ppc.altivec.vsl
3953 // CHECK-LE: @llvm.ppc.altivec.vsl
3954
3955 res_vp = vec_sll(vp, vui);
3956 // CHECK: @llvm.ppc.altivec.vsl
3957 // CHECK-LE: @llvm.ppc.altivec.vsl
3958
3959 res_vi = vec_sll(vi, vuc);
3960 // CHECK: @llvm.ppc.altivec.vsl
3961 // CHECK-LE: @llvm.ppc.altivec.vsl
3962
3963 res_vi = vec_sll(vi, vus);
3964 // CHECK: @llvm.ppc.altivec.vsl
3965 // CHECK-LE: @llvm.ppc.altivec.vsl
3966
3967 res_vi = vec_sll(vi, vui);
3968 // CHECK: @llvm.ppc.altivec.vsl
3969 // CHECK-LE: @llvm.ppc.altivec.vsl
3970
3971 res_vui = vec_sll(vui, vuc);
3972 // CHECK: @llvm.ppc.altivec.vsl
3973 // CHECK-LE: @llvm.ppc.altivec.vsl
3974
3975 res_vui = vec_sll(vui, vus);
3976 // CHECK: @llvm.ppc.altivec.vsl
3977 // CHECK-LE: @llvm.ppc.altivec.vsl
3978
3979 res_vui = vec_sll(vui, vui);
3980 // CHECK: @llvm.ppc.altivec.vsl
3981 // CHECK-LE: @llvm.ppc.altivec.vsl
3982
3983 res_vbi = vec_sll(vbi, vuc);
3984 // CHECK: @llvm.ppc.altivec.vsl
3985 // CHECK-LE: @llvm.ppc.altivec.vsl
3986
3987 res_vbi = vec_sll(vbi, vus);
3988 // CHECK: @llvm.ppc.altivec.vsl
3989 // CHECK-LE: @llvm.ppc.altivec.vsl
3990
3991 res_vbi = vec_sll(vbi, vui);
3992 // CHECK: @llvm.ppc.altivec.vsl
3993 // CHECK-LE: @llvm.ppc.altivec.vsl
3994
3995 res_vsc = vec_vsl(vsc, vuc);
3996 // CHECK: @llvm.ppc.altivec.vsl
3997 // CHECK-LE: @llvm.ppc.altivec.vsl
3998
3999 res_vsc = vec_vsl(vsc, vus);
4000 // CHECK: @llvm.ppc.altivec.vsl
4001 // CHECK-LE: @llvm.ppc.altivec.vsl
4002
4003 res_vsc = vec_vsl(vsc, vui);
4004 // CHECK: @llvm.ppc.altivec.vsl
4005 // CHECK-LE: @llvm.ppc.altivec.vsl
4006
4007 res_vuc = vec_vsl(vuc, vuc);
4008 // CHECK: @llvm.ppc.altivec.vsl
4009 // CHECK-LE: @llvm.ppc.altivec.vsl
4010
4011 res_vuc = vec_vsl(vuc, vus);
4012 // CHECK: @llvm.ppc.altivec.vsl
4013 // CHECK-LE: @llvm.ppc.altivec.vsl
4014
4015 res_vuc = vec_vsl(vuc, vui);
4016 // CHECK: @llvm.ppc.altivec.vsl
4017 // CHECK-LE: @llvm.ppc.altivec.vsl
4018
4019 res_vbc = vec_vsl(vbc, vuc);
4020 // CHECK: @llvm.ppc.altivec.vsl
4021 // CHECK-LE: @llvm.ppc.altivec.vsl
4022
4023 res_vbc = vec_vsl(vbc, vus);
4024 // CHECK: @llvm.ppc.altivec.vsl
4025 // CHECK-LE: @llvm.ppc.altivec.vsl
4026
4027 res_vbc = vec_vsl(vbc, vui);
4028 // CHECK: @llvm.ppc.altivec.vsl
4029 // CHECK-LE: @llvm.ppc.altivec.vsl
4030
4031 res_vs = vec_vsl(vs, vuc);
4032 // CHECK: @llvm.ppc.altivec.vsl
4033 // CHECK-LE: @llvm.ppc.altivec.vsl
4034
4035 res_vs = vec_vsl(vs, vus);
4036 // CHECK: @llvm.ppc.altivec.vsl
4037 // CHECK-LE: @llvm.ppc.altivec.vsl
4038
4039 res_vs = vec_vsl(vs, vui);
4040 // CHECK: @llvm.ppc.altivec.vsl
4041 // CHECK-LE: @llvm.ppc.altivec.vsl
4042
4043 res_vus = vec_vsl(vus, vuc);
4044 // CHECK: @llvm.ppc.altivec.vsl
4045 // CHECK-LE: @llvm.ppc.altivec.vsl
4046
4047 res_vus = vec_vsl(vus, vus);
4048 // CHECK: @llvm.ppc.altivec.vsl
4049 // CHECK-LE: @llvm.ppc.altivec.vsl
4050
4051 res_vus = vec_vsl(vus, vui);
4052 // CHECK: @llvm.ppc.altivec.vsl
4053 // CHECK-LE: @llvm.ppc.altivec.vsl
4054
4055 res_vbs = vec_vsl(vbs, vuc);
4056 // CHECK: @llvm.ppc.altivec.vsl
4057 // CHECK-LE: @llvm.ppc.altivec.vsl
4058
4059 res_vbs = vec_vsl(vbs, vus);
4060 // CHECK: @llvm.ppc.altivec.vsl
4061 // CHECK-LE: @llvm.ppc.altivec.vsl
4062
4063 res_vbs = vec_vsl(vbs, vui);
4064 // CHECK: @llvm.ppc.altivec.vsl
4065 // CHECK-LE: @llvm.ppc.altivec.vsl
4066
4067 res_vp = vec_vsl(vp, vuc);
4068 // CHECK: @llvm.ppc.altivec.vsl
4069 // CHECK-LE: @llvm.ppc.altivec.vsl
4070
4071 res_vp = vec_vsl(vp, vus);
4072 // CHECK: @llvm.ppc.altivec.vsl
4073 // CHECK-LE: @llvm.ppc.altivec.vsl
4074
4075 res_vp = vec_vsl(vp, vui);
4076 // CHECK: @llvm.ppc.altivec.vsl
4077 // CHECK-LE: @llvm.ppc.altivec.vsl
4078
4079 res_vi = vec_vsl(vi, vuc);
4080 // CHECK: @llvm.ppc.altivec.vsl
4081 // CHECK-LE: @llvm.ppc.altivec.vsl
4082
4083 res_vi = vec_vsl(vi, vus);
4084 // CHECK: @llvm.ppc.altivec.vsl
4085 // CHECK-LE: @llvm.ppc.altivec.vsl
4086
4087 res_vi = vec_vsl(vi, vui);
4088 // CHECK: @llvm.ppc.altivec.vsl
4089 // CHECK-LE: @llvm.ppc.altivec.vsl
4090
4091 res_vui = vec_vsl(vui, vuc);
4092 // CHECK: @llvm.ppc.altivec.vsl
4093 // CHECK-LE: @llvm.ppc.altivec.vsl
4094
4095 res_vui = vec_vsl(vui, vus);
4096 // CHECK: @llvm.ppc.altivec.vsl
4097 // CHECK-LE: @llvm.ppc.altivec.vsl
4098
4099 res_vui = vec_vsl(vui, vui);
4100 // CHECK: @llvm.ppc.altivec.vsl
4101 // CHECK-LE: @llvm.ppc.altivec.vsl
4102
4103 res_vbi = vec_vsl(vbi, vuc);
4104 // CHECK: @llvm.ppc.altivec.vsl
4105 // CHECK-LE: @llvm.ppc.altivec.vsl
4106
4107 res_vbi = vec_vsl(vbi, vus);
4108 // CHECK: @llvm.ppc.altivec.vsl
4109 // CHECK-LE: @llvm.ppc.altivec.vsl
4110
4111 res_vbi = vec_vsl(vbi, vui);
4112 // CHECK: @llvm.ppc.altivec.vsl
4113 // CHECK-LE: @llvm.ppc.altivec.vsl
4114
4115 /* vec_slo */
4116 res_vsc = vec_slo(vsc, vsc);
4117 // CHECK: @llvm.ppc.altivec.vslo
4118 // CHECK-LE: @llvm.ppc.altivec.vslo
4119
4120 res_vsc = vec_slo(vsc, vuc);
4121 // CHECK: @llvm.ppc.altivec.vslo
4122 // CHECK-LE: @llvm.ppc.altivec.vslo
4123
4124 res_vuc = vec_slo(vuc, vsc);
4125 // CHECK: @llvm.ppc.altivec.vslo
4126 // CHECK-LE: @llvm.ppc.altivec.vslo
4127
4128 res_vuc = vec_slo(vuc, vuc);
4129 // CHECK: @llvm.ppc.altivec.vslo
4130 // CHECK-LE: @llvm.ppc.altivec.vslo
4131
4132 res_vs = vec_slo(vs, vsc);
4133 // CHECK: @llvm.ppc.altivec.vslo
4134 // CHECK-LE: @llvm.ppc.altivec.vslo
4135
4136 res_vs = vec_slo(vs, vuc);
4137 // CHECK: @llvm.ppc.altivec.vslo
4138 // CHECK-LE: @llvm.ppc.altivec.vslo
4139
4140 res_vus = vec_slo(vus, vsc);
4141 // CHECK: @llvm.ppc.altivec.vslo
4142 // CHECK-LE: @llvm.ppc.altivec.vslo
4143
4144 res_vus = vec_slo(vus, vuc);
4145 // CHECK: @llvm.ppc.altivec.vslo
4146 // CHECK-LE: @llvm.ppc.altivec.vslo
4147
4148 res_vp = vec_slo(vp, vsc);
4149 // CHECK: @llvm.ppc.altivec.vslo
4150 // CHECK-LE: @llvm.ppc.altivec.vslo
4151
4152 res_vp = vec_slo(vp, vuc);
4153 // CHECK: @llvm.ppc.altivec.vslo
4154 // CHECK-LE: @llvm.ppc.altivec.vslo
4155
4156 res_vi = vec_slo(vi, vsc);
4157 // CHECK: @llvm.ppc.altivec.vslo
4158 // CHECK-LE: @llvm.ppc.altivec.vslo
4159
4160 res_vi = vec_slo(vi, vuc);
4161 // CHECK: @llvm.ppc.altivec.vslo
4162 // CHECK-LE: @llvm.ppc.altivec.vslo
4163
4164 res_vui = vec_slo(vui, vsc);
4165 // CHECK: @llvm.ppc.altivec.vslo
4166 // CHECK-LE: @llvm.ppc.altivec.vslo
4167
4168 res_vui = vec_slo(vui, vuc);
4169 // CHECK: @llvm.ppc.altivec.vslo
4170 // CHECK-LE: @llvm.ppc.altivec.vslo
4171
4172 res_vf = vec_slo(vf, vsc);
4173 // CHECK: @llvm.ppc.altivec.vslo
4174 // CHECK-LE: @llvm.ppc.altivec.vslo
4175
4176 res_vf = vec_slo(vf, vuc);
4177 // CHECK: @llvm.ppc.altivec.vslo
4178 // CHECK-LE: @llvm.ppc.altivec.vslo
4179
4180 res_vsc = vec_vslo(vsc, vsc);
4181 // CHECK: @llvm.ppc.altivec.vslo
4182 // CHECK-LE: @llvm.ppc.altivec.vslo
4183
4184 res_vsc = vec_vslo(vsc, vuc);
4185 // CHECK: @llvm.ppc.altivec.vslo
4186 // CHECK-LE: @llvm.ppc.altivec.vslo
4187
4188 res_vuc = vec_vslo(vuc, vsc);
4189 // CHECK: @llvm.ppc.altivec.vslo
4190 // CHECK-LE: @llvm.ppc.altivec.vslo
4191
4192 res_vuc = vec_vslo(vuc, vuc);
4193 // CHECK: @llvm.ppc.altivec.vslo
4194 // CHECK-LE: @llvm.ppc.altivec.vslo
4195
4196 res_vs = vec_vslo(vs, vsc);
4197 // CHECK: @llvm.ppc.altivec.vslo
4198 // CHECK-LE: @llvm.ppc.altivec.vslo
4199
4200 res_vs = vec_vslo(vs, vuc);
4201 // CHECK: @llvm.ppc.altivec.vslo
4202 // CHECK-LE: @llvm.ppc.altivec.vslo
4203
4204 res_vus = vec_vslo(vus, vsc);
4205 // CHECK: @llvm.ppc.altivec.vslo
4206 // CHECK-LE: @llvm.ppc.altivec.vslo
4207
4208 res_vus = vec_vslo(vus, vuc);
4209 // CHECK: @llvm.ppc.altivec.vslo
4210 // CHECK-LE: @llvm.ppc.altivec.vslo
4211
4212 res_vp = vec_vslo(vp, vsc);
4213 // CHECK: @llvm.ppc.altivec.vslo
4214 // CHECK-LE: @llvm.ppc.altivec.vslo
4215
4216 res_vp = vec_vslo(vp, vuc);
4217 // CHECK: @llvm.ppc.altivec.vslo
4218 // CHECK-LE: @llvm.ppc.altivec.vslo
4219
4220 res_vi = vec_vslo(vi, vsc);
4221 // CHECK: @llvm.ppc.altivec.vslo
4222 // CHECK-LE: @llvm.ppc.altivec.vslo
4223
4224 res_vi = vec_vslo(vi, vuc);
4225 // CHECK: @llvm.ppc.altivec.vslo
4226 // CHECK-LE: @llvm.ppc.altivec.vslo
4227
4228 res_vui = vec_vslo(vui, vsc);
4229 // CHECK: @llvm.ppc.altivec.vslo
4230 // CHECK-LE: @llvm.ppc.altivec.vslo
4231
4232 res_vui = vec_vslo(vui, vuc);
4233 // CHECK: @llvm.ppc.altivec.vslo
4234 // CHECK-LE: @llvm.ppc.altivec.vslo
4235
4236 res_vf = vec_vslo(vf, vsc);
4237 // CHECK: @llvm.ppc.altivec.vslo
4238 // CHECK-LE: @llvm.ppc.altivec.vslo
4239
4240 res_vf = vec_vslo(vf, vuc);
4241 // CHECK: @llvm.ppc.altivec.vslo
4242 // CHECK-LE: @llvm.ppc.altivec.vslo
4243
4244 /* vec_splat */
4245 res_vsc = vec_splat(vsc, 0);
4246 // CHECK: @llvm.ppc.altivec.vperm
4247 // CHECK-LE: @llvm.ppc.altivec.vperm
4248
4249 res_vuc = vec_splat(vuc, 0);
4250 // CHECK: @llvm.ppc.altivec.vperm
4251 // CHECK-LE: @llvm.ppc.altivec.vperm
4252
4253 res_vbc = vec_splat(vbc, 0);
4254 // CHECK: @llvm.ppc.altivec.vperm
4255 // CHECK-LE: @llvm.ppc.altivec.vperm
4256
4257 res_vs = vec_splat(vs, 0);
4258 // CHECK: @llvm.ppc.altivec.vperm
4259 // CHECK-LE: @llvm.ppc.altivec.vperm
4260
4261 res_vus = vec_splat(vus, 0);
4262 // CHECK: @llvm.ppc.altivec.vperm
4263 // CHECK-LE: @llvm.ppc.altivec.vperm
4264
4265 res_vbs = vec_splat(vbs, 0);
4266 // CHECK: @llvm.ppc.altivec.vperm
4267 // CHECK-LE: @llvm.ppc.altivec.vperm
4268
4269 res_vp = vec_splat(vp, 0);
4270 // CHECK: @llvm.ppc.altivec.vperm
4271 // CHECK-LE: @llvm.ppc.altivec.vperm
4272
4273 res_vi = vec_splat(vi, 0);
4274 // CHECK: @llvm.ppc.altivec.vperm
4275 // CHECK-LE: @llvm.ppc.altivec.vperm
4276
4277 res_vui = vec_splat(vui, 0);
4278 // CHECK: @llvm.ppc.altivec.vperm
4279 // CHECK-LE: @llvm.ppc.altivec.vperm
4280
4281 res_vbi = vec_splat(vbi, 0);
4282 // CHECK: @llvm.ppc.altivec.vperm
4283 // CHECK-LE: @llvm.ppc.altivec.vperm
4284
4285 res_vf = vec_splat(vf, 0);
4286 // CHECK: @llvm.ppc.altivec.vperm
4287 // CHECK-LE: @llvm.ppc.altivec.vperm
4288
4289 res_vsc = vec_vspltb(vsc, 0);
4290 // CHECK: @llvm.ppc.altivec.vperm
4291 // CHECK-LE: @llvm.ppc.altivec.vperm
4292
4293 res_vuc = vec_vspltb(vuc, 0);
4294 // CHECK: @llvm.ppc.altivec.vperm
4295 // CHECK-LE: @llvm.ppc.altivec.vperm
4296
4297 res_vbc = vec_vspltb(vbc, 0);
4298 // CHECK: @llvm.ppc.altivec.vperm
4299 // CHECK-LE: @llvm.ppc.altivec.vperm
4300
4301 res_vs = vec_vsplth(vs, 0);
4302 // CHECK: @llvm.ppc.altivec.vperm
4303 // CHECK-LE: @llvm.ppc.altivec.vperm
4304
4305 res_vus = vec_vsplth(vus, 0);
4306 // CHECK: @llvm.ppc.altivec.vperm
4307 // CHECK-LE: @llvm.ppc.altivec.vperm
4308
4309 res_vbs = vec_vsplth(vbs, 0);
4310 // CHECK: @llvm.ppc.altivec.vperm
4311 // CHECK-LE: @llvm.ppc.altivec.vperm
4312
4313 res_vp = vec_vsplth(vp, 0);
4314 // CHECK: @llvm.ppc.altivec.vperm
4315 // CHECK-LE: @llvm.ppc.altivec.vperm
4316
4317 res_vi = vec_vspltw(vi, 0);
4318 // CHECK: @llvm.ppc.altivec.vperm
4319 // CHECK-LE: @llvm.ppc.altivec.vperm
4320
4321 res_vui = vec_vspltw(vui, 0);
4322 // CHECK: @llvm.ppc.altivec.vperm
4323 // CHECK-LE: @llvm.ppc.altivec.vperm
4324
4325 res_vbi = vec_vspltw(vbi, 0);
4326 // CHECK: @llvm.ppc.altivec.vperm
4327 // CHECK-LE: @llvm.ppc.altivec.vperm
4328
4329 res_vf = vec_vspltw(vf, 0);
4330 // CHECK: @llvm.ppc.altivec.vperm
4331 // CHECK-LE: @llvm.ppc.altivec.vperm
4332
4333 /* vec_splat_s8 */
4334 res_vsc = vec_splat_s8(0x09); // TODO: add check
4335 res_vsc = vec_vspltisb(0x09); // TODO: add check
4336
4337 /* vec_splat_s16 */
4338 res_vs = vec_splat_s16(0x09); // TODO: add check
4339 res_vs = vec_vspltish(0x09); // TODO: add check
4340
4341 /* vec_splat_s32 */
4342 res_vi = vec_splat_s32(0x09); // TODO: add check
4343 res_vi = vec_vspltisw(0x09); // TODO: add check
4344
4345 /* vec_splat_u8 */
4346 res_vuc = vec_splat_u8(0x09); // TODO: add check
4347
4348 /* vec_splat_u16 */
4349 res_vus = vec_splat_u16(0x09); // TODO: add check
4350
4351 /* vec_splat_u32 */
4352 res_vui = vec_splat_u32(0x09); // TODO: add check
4353
4354 /* vec_sr */
4355 res_vsc = vec_sr(vsc, vuc);
4356 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4357 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4358 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4359 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4360
4361 res_vuc = vec_sr(vuc, vuc);
4362 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4363 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4364 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4365 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4366
4367 res_vs = vec_sr(vs, vus);
4368 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4369 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4370 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4371 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4372
4373 res_vus = vec_sr(vus, vus);
4374 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4375 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4376 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4377 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4378
4379 res_vi = vec_sr(vi, vui);
4380 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4381 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4382 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4383 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4384
4385 res_vui = vec_sr(vui, vui);
4386 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4387 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4388 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4389 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4390
4391 res_vsc = vec_vsrb(vsc, vuc);
4392 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4393 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4394 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4395 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4396
4397 res_vuc = vec_vsrb(vuc, vuc);
4398 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4399 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4400 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4401 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4402
4403 res_vs = vec_vsrh(vs, vus);
4404 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4405 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4406 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4407 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4408
4409 res_vus = vec_vsrh(vus, vus);
4410 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4411 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4412 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4413 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4414
4415 res_vi = vec_vsrw(vi, vui);
4416 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4417 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4418 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4419 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4420
4421 res_vui = vec_vsrw(vui, vui);
4422 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4423 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4424 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4425 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4426
4427 /* vec_sra */
4428 res_vsc = vec_sra(vsc, vuc);
4429 // CHECK: @llvm.ppc.altivec.vsrab
4430 // CHECK-LE: @llvm.ppc.altivec.vsrab
4431
4432 res_vuc = vec_sra(vuc, vuc);
4433 // CHECK: @llvm.ppc.altivec.vsrab
4434 // CHECK-LE: @llvm.ppc.altivec.vsrab
4435
4436 res_vs = vec_sra(vs, vus);
4437 // CHECK: @llvm.ppc.altivec.vsrah
4438 // CHECK-LE: @llvm.ppc.altivec.vsrah
4439
4440 res_vus = vec_sra(vus, vus);
4441 // CHECK: @llvm.ppc.altivec.vsrah
4442 // CHECK-LE: @llvm.ppc.altivec.vsrah
4443
4444 res_vi = vec_sra(vi, vui);
4445 // CHECK: @llvm.ppc.altivec.vsraw
4446 // CHECK-LE: @llvm.ppc.altivec.vsraw
4447
4448 res_vui = vec_sra(vui, vui);
4449 // CHECK: @llvm.ppc.altivec.vsraw
4450 // CHECK-LE: @llvm.ppc.altivec.vsraw
4451
4452 res_vsc = vec_vsrab(vsc, vuc);
4453 // CHECK: @llvm.ppc.altivec.vsrab
4454 // CHECK-LE: @llvm.ppc.altivec.vsrab
4455
4456 res_vuc = vec_vsrab(vuc, vuc);
4457 // CHECK: @llvm.ppc.altivec.vsrab
4458 // CHECK-LE: @llvm.ppc.altivec.vsrab
4459
4460 res_vs = vec_vsrah(vs, vus);
4461 // CHECK: @llvm.ppc.altivec.vsrah
4462 // CHECK-LE: @llvm.ppc.altivec.vsrah
4463
4464 res_vus = vec_vsrah(vus, vus);
4465 // CHECK: @llvm.ppc.altivec.vsrah
4466 // CHECK-LE: @llvm.ppc.altivec.vsrah
4467
4468 res_vi = vec_vsraw(vi, vui);
4469 // CHECK: @llvm.ppc.altivec.vsraw
4470 // CHECK-LE: @llvm.ppc.altivec.vsraw
4471
4472 res_vui = vec_vsraw(vui, vui);
4473 // CHECK: @llvm.ppc.altivec.vsraw
4474 // CHECK-LE: @llvm.ppc.altivec.vsraw
4475
4476 /* vec_srl */
4477 res_vsc = vec_srl(vsc, vuc);
4478 // CHECK: @llvm.ppc.altivec.vsr
4479 // CHECK-LE: @llvm.ppc.altivec.vsr
4480
4481 res_vsc = vec_srl(vsc, vus);
4482 // CHECK: @llvm.ppc.altivec.vsr
4483 // CHECK-LE: @llvm.ppc.altivec.vsr
4484
4485 res_vsc = vec_srl(vsc, vui);
4486 // CHECK: @llvm.ppc.altivec.vsr
4487 // CHECK-LE: @llvm.ppc.altivec.vsr
4488
4489 res_vuc = vec_srl(vuc, vuc);
4490 // CHECK: @llvm.ppc.altivec.vsr
4491 // CHECK-LE: @llvm.ppc.altivec.vsr
4492
4493 res_vuc = vec_srl(vuc, vus);
4494 // CHECK: @llvm.ppc.altivec.vsr
4495 // CHECK-LE: @llvm.ppc.altivec.vsr
4496
4497 res_vuc = vec_srl(vuc, vui);
4498 // CHECK: @llvm.ppc.altivec.vsr
4499 // CHECK-LE: @llvm.ppc.altivec.vsr
4500
4501 res_vbc = vec_srl(vbc, vuc);
4502 // CHECK: @llvm.ppc.altivec.vsr
4503 // CHECK-LE: @llvm.ppc.altivec.vsr
4504
4505 res_vbc = vec_srl(vbc, vus);
4506 // CHECK: @llvm.ppc.altivec.vsr
4507 // CHECK-LE: @llvm.ppc.altivec.vsr
4508
4509 res_vbc = vec_srl(vbc, vui);
4510 // CHECK: @llvm.ppc.altivec.vsr
4511 // CHECK-LE: @llvm.ppc.altivec.vsr
4512
4513 res_vs = vec_srl(vs, vuc);
4514 // CHECK: @llvm.ppc.altivec.vsr
4515 // CHECK-LE: @llvm.ppc.altivec.vsr
4516
4517 res_vs = vec_srl(vs, vus);
4518 // CHECK: @llvm.ppc.altivec.vsr
4519 // CHECK-LE: @llvm.ppc.altivec.vsr
4520
4521 res_vs = vec_srl(vs, vui);
4522 // CHECK: @llvm.ppc.altivec.vsr
4523 // CHECK-LE: @llvm.ppc.altivec.vsr
4524
4525 res_vus = vec_srl(vus, vuc);
4526 // CHECK: @llvm.ppc.altivec.vsr
4527 // CHECK-LE: @llvm.ppc.altivec.vsr
4528
4529 res_vus = vec_srl(vus, vus);
4530 // CHECK: @llvm.ppc.altivec.vsr
4531 // CHECK-LE: @llvm.ppc.altivec.vsr
4532
4533 res_vus = vec_srl(vus, vui);
4534 // CHECK: @llvm.ppc.altivec.vsr
4535 // CHECK-LE: @llvm.ppc.altivec.vsr
4536
4537 res_vbs = vec_srl(vbs, vuc);
4538 // CHECK: @llvm.ppc.altivec.vsr
4539 // CHECK-LE: @llvm.ppc.altivec.vsr
4540
4541 res_vbs = vec_srl(vbs, vus);
4542 // CHECK: @llvm.ppc.altivec.vsr
4543 // CHECK-LE: @llvm.ppc.altivec.vsr
4544
4545 res_vbs = vec_srl(vbs, vui);
4546 // CHECK: @llvm.ppc.altivec.vsr
4547 // CHECK-LE: @llvm.ppc.altivec.vsr
4548
4549 res_vp = vec_srl(vp, vuc);
4550 // CHECK: @llvm.ppc.altivec.vsr
4551 // CHECK-LE: @llvm.ppc.altivec.vsr
4552
4553 res_vp = vec_srl(vp, vus);
4554 // CHECK: @llvm.ppc.altivec.vsr
4555 // CHECK-LE: @llvm.ppc.altivec.vsr
4556
4557 res_vp = vec_srl(vp, vui);
4558 // CHECK: @llvm.ppc.altivec.vsr
4559 // CHECK-LE: @llvm.ppc.altivec.vsr
4560
4561 res_vi = vec_srl(vi, vuc);
4562 // CHECK: @llvm.ppc.altivec.vsr
4563 // CHECK-LE: @llvm.ppc.altivec.vsr
4564
4565 res_vi = vec_srl(vi, vus);
4566 // CHECK: @llvm.ppc.altivec.vsr
4567 // CHECK-LE: @llvm.ppc.altivec.vsr
4568
4569 res_vi = vec_srl(vi, vui);
4570 // CHECK: @llvm.ppc.altivec.vsr
4571 // CHECK-LE: @llvm.ppc.altivec.vsr
4572
4573 res_vui = vec_srl(vui, vuc);
4574 // CHECK: @llvm.ppc.altivec.vsr
4575 // CHECK-LE: @llvm.ppc.altivec.vsr
4576
4577 res_vui = vec_srl(vui, vus);
4578 // CHECK: @llvm.ppc.altivec.vsr
4579 // CHECK-LE: @llvm.ppc.altivec.vsr
4580
4581 res_vui = vec_srl(vui, vui);
4582 // CHECK: @llvm.ppc.altivec.vsr
4583 // CHECK-LE: @llvm.ppc.altivec.vsr
4584
4585 res_vbi = vec_srl(vbi, vuc);
4586 // CHECK: @llvm.ppc.altivec.vsr
4587 // CHECK-LE: @llvm.ppc.altivec.vsr
4588
4589 res_vbi = vec_srl(vbi, vus);
4590 // CHECK: @llvm.ppc.altivec.vsr
4591 // CHECK-LE: @llvm.ppc.altivec.vsr
4592
4593 res_vbi = vec_srl(vbi, vui);
4594 // CHECK: @llvm.ppc.altivec.vsr
4595 // CHECK-LE: @llvm.ppc.altivec.vsr
4596
4597 res_vsc = vec_vsr(vsc, vuc);
4598 // CHECK: @llvm.ppc.altivec.vsr
4599 // CHECK-LE: @llvm.ppc.altivec.vsr
4600
4601 res_vsc = vec_vsr(vsc, vus);
4602 // CHECK: @llvm.ppc.altivec.vsr
4603 // CHECK-LE: @llvm.ppc.altivec.vsr
4604
4605 res_vsc = vec_vsr(vsc, vui);
4606 // CHECK: @llvm.ppc.altivec.vsr
4607 // CHECK-LE: @llvm.ppc.altivec.vsr
4608
4609 res_vuc = vec_vsr(vuc, vuc);
4610 // CHECK: @llvm.ppc.altivec.vsr
4611 // CHECK-LE: @llvm.ppc.altivec.vsr
4612
4613 res_vuc = vec_vsr(vuc, vus);
4614 // CHECK: @llvm.ppc.altivec.vsr
4615 // CHECK-LE: @llvm.ppc.altivec.vsr
4616
4617 res_vuc = vec_vsr(vuc, vui);
4618 // CHECK: @llvm.ppc.altivec.vsr
4619 // CHECK-LE: @llvm.ppc.altivec.vsr
4620
4621 res_vbc = vec_vsr(vbc, vuc);
4622 // CHECK: @llvm.ppc.altivec.vsr
4623 // CHECK-LE: @llvm.ppc.altivec.vsr
4624
4625 res_vbc = vec_vsr(vbc, vus);
4626 // CHECK: @llvm.ppc.altivec.vsr
4627 // CHECK-LE: @llvm.ppc.altivec.vsr
4628
4629 res_vbc = vec_vsr(vbc, vui);
4630 // CHECK: @llvm.ppc.altivec.vsr
4631 // CHECK-LE: @llvm.ppc.altivec.vsr
4632
4633 res_vs = vec_vsr(vs, vuc);
4634 // CHECK: @llvm.ppc.altivec.vsr
4635 // CHECK-LE: @llvm.ppc.altivec.vsr
4636
4637 res_vs = vec_vsr(vs, vus);
4638 // CHECK: @llvm.ppc.altivec.vsr
4639 // CHECK-LE: @llvm.ppc.altivec.vsr
4640
4641 res_vs = vec_vsr(vs, vui);
4642 // CHECK: @llvm.ppc.altivec.vsr
4643 // CHECK-LE: @llvm.ppc.altivec.vsr
4644
4645 res_vus = vec_vsr(vus, vuc);
4646 // CHECK: @llvm.ppc.altivec.vsr
4647 // CHECK-LE: @llvm.ppc.altivec.vsr
4648
4649 res_vus = vec_vsr(vus, vus);
4650 // CHECK: @llvm.ppc.altivec.vsr
4651 // CHECK-LE: @llvm.ppc.altivec.vsr
4652
4653 res_vus = vec_vsr(vus, vui);
4654 // CHECK: @llvm.ppc.altivec.vsr
4655 // CHECK-LE: @llvm.ppc.altivec.vsr
4656
4657 res_vbs = vec_vsr(vbs, vuc);
4658 // CHECK: @llvm.ppc.altivec.vsr
4659 // CHECK-LE: @llvm.ppc.altivec.vsr
4660
4661 res_vbs = vec_vsr(vbs, vus);
4662 // CHECK: @llvm.ppc.altivec.vsr
4663 // CHECK-LE: @llvm.ppc.altivec.vsr
4664
4665 res_vbs = vec_vsr(vbs, vui);
4666 // CHECK: @llvm.ppc.altivec.vsr
4667 // CHECK-LE: @llvm.ppc.altivec.vsr
4668
4669 res_vp = vec_vsr(vp, vuc);
4670 // CHECK: @llvm.ppc.altivec.vsr
4671 // CHECK-LE: @llvm.ppc.altivec.vsr
4672
4673 res_vp = vec_vsr(vp, vus);
4674 // CHECK: @llvm.ppc.altivec.vsr
4675 // CHECK-LE: @llvm.ppc.altivec.vsr
4676
4677 res_vp = vec_vsr(vp, vui);
4678 // CHECK: @llvm.ppc.altivec.vsr
4679 // CHECK-LE: @llvm.ppc.altivec.vsr
4680
4681 res_vi = vec_vsr(vi, vuc);
4682 // CHECK: @llvm.ppc.altivec.vsr
4683 // CHECK-LE: @llvm.ppc.altivec.vsr
4684
4685 res_vi = vec_vsr(vi, vus);
4686 // CHECK: @llvm.ppc.altivec.vsr
4687 // CHECK-LE: @llvm.ppc.altivec.vsr
4688
4689 res_vi = vec_vsr(vi, vui);
4690 // CHECK: @llvm.ppc.altivec.vsr
4691 // CHECK-LE: @llvm.ppc.altivec.vsr
4692
4693 res_vui = vec_vsr(vui, vuc);
4694 // CHECK: @llvm.ppc.altivec.vsr
4695 // CHECK-LE: @llvm.ppc.altivec.vsr
4696
4697 res_vui = vec_vsr(vui, vus);
4698 // CHECK: @llvm.ppc.altivec.vsr
4699 // CHECK-LE: @llvm.ppc.altivec.vsr
4700
4701 res_vui = vec_vsr(vui, vui);
4702 // CHECK: @llvm.ppc.altivec.vsr
4703 // CHECK-LE: @llvm.ppc.altivec.vsr
4704
4705 res_vbi = vec_vsr(vbi, vuc);
4706 // CHECK: @llvm.ppc.altivec.vsr
4707 // CHECK-LE: @llvm.ppc.altivec.vsr
4708
4709 res_vbi = vec_vsr(vbi, vus);
4710 // CHECK: @llvm.ppc.altivec.vsr
4711 // CHECK-LE: @llvm.ppc.altivec.vsr
4712
4713 res_vbi = vec_vsr(vbi, vui);
4714 // CHECK: @llvm.ppc.altivec.vsr
4715 // CHECK-LE: @llvm.ppc.altivec.vsr
4716
4717 /* vec_sro */
4718 res_vsc = vec_sro(vsc, vsc);
4719 // CHECK: @llvm.ppc.altivec.vsro
4720 // CHECK-LE: @llvm.ppc.altivec.vsro
4721
4722 res_vsc = vec_sro(vsc, vuc);
4723 // CHECK: @llvm.ppc.altivec.vsro
4724 // CHECK-LE: @llvm.ppc.altivec.vsro
4725
4726 res_vuc = vec_sro(vuc, vsc);
4727 // CHECK: @llvm.ppc.altivec.vsro
4728 // CHECK-LE: @llvm.ppc.altivec.vsro
4729
4730 res_vuc = vec_sro(vuc, vuc);
4731 // CHECK: @llvm.ppc.altivec.vsro
4732 // CHECK-LE: @llvm.ppc.altivec.vsro
4733
4734 res_vs = vec_sro(vs, vsc);
4735 // CHECK: @llvm.ppc.altivec.vsro
4736 // CHECK-LE: @llvm.ppc.altivec.vsro
4737
4738 res_vs = vec_sro(vs, vuc);
4739 // CHECK: @llvm.ppc.altivec.vsro
4740 // CHECK-LE: @llvm.ppc.altivec.vsro
4741
4742 res_vus = vec_sro(vus, vsc);
4743 // CHECK: @llvm.ppc.altivec.vsro
4744 // CHECK-LE: @llvm.ppc.altivec.vsro
4745
4746 res_vus = vec_sro(vus, vuc);
4747 // CHECK: @llvm.ppc.altivec.vsro
4748 // CHECK-LE: @llvm.ppc.altivec.vsro
4749
4750 res_vp = vec_sro(vp, vsc);
4751 // CHECK: @llvm.ppc.altivec.vsro
4752 // CHECK-LE: @llvm.ppc.altivec.vsro
4753
4754 res_vp = vec_sro(vp, vuc);
4755 // CHECK: @llvm.ppc.altivec.vsro
4756 // CHECK-LE: @llvm.ppc.altivec.vsro
4757
4758 res_vi = vec_sro(vi, vsc);
4759 // CHECK: @llvm.ppc.altivec.vsro
4760 // CHECK-LE: @llvm.ppc.altivec.vsro
4761
4762 res_vi = vec_sro(vi, vuc);
4763 // CHECK: @llvm.ppc.altivec.vsro
4764 // CHECK-LE: @llvm.ppc.altivec.vsro
4765
4766 res_vui = vec_sro(vui, vsc);
4767 // CHECK: @llvm.ppc.altivec.vsro
4768 // CHECK-LE: @llvm.ppc.altivec.vsro
4769
4770 res_vui = vec_sro(vui, vuc);
4771 // CHECK: @llvm.ppc.altivec.vsro
4772 // CHECK-LE: @llvm.ppc.altivec.vsro
4773
4774 res_vf = vec_sro(vf, vsc);
4775 // CHECK: @llvm.ppc.altivec.vsro
4776 // CHECK-LE: @llvm.ppc.altivec.vsro
4777
4778 res_vf = vec_sro(vf, vuc);
4779 // CHECK: @llvm.ppc.altivec.vsro
4780 // CHECK-LE: @llvm.ppc.altivec.vsro
4781
4782 res_vsc = vec_vsro(vsc, vsc);
4783 // CHECK: @llvm.ppc.altivec.vsro
4784 // CHECK-LE: @llvm.ppc.altivec.vsro
4785
4786 res_vsc = vec_vsro(vsc, vuc);
4787 // CHECK: @llvm.ppc.altivec.vsro
4788 // CHECK-LE: @llvm.ppc.altivec.vsro
4789
4790 res_vuc = vec_vsro(vuc, vsc);
4791 // CHECK: @llvm.ppc.altivec.vsro
4792 // CHECK-LE: @llvm.ppc.altivec.vsro
4793
4794 res_vuc = vec_vsro(vuc, vuc);
4795 // CHECK: @llvm.ppc.altivec.vsro
4796 // CHECK-LE: @llvm.ppc.altivec.vsro
4797
4798 res_vs = vec_vsro(vs, vsc);
4799 // CHECK: @llvm.ppc.altivec.vsro
4800 // CHECK-LE: @llvm.ppc.altivec.vsro
4801
4802 res_vs = vec_vsro(vs, vuc);
4803 // CHECK: @llvm.ppc.altivec.vsro
4804 // CHECK-LE: @llvm.ppc.altivec.vsro
4805
4806 res_vus = vec_vsro(vus, vsc);
4807 // CHECK: @llvm.ppc.altivec.vsro
4808 // CHECK-LE: @llvm.ppc.altivec.vsro
4809
4810 res_vus = vec_vsro(vus, vuc);
4811 // CHECK: @llvm.ppc.altivec.vsro
4812 // CHECK-LE: @llvm.ppc.altivec.vsro
4813
4814 res_vp = vec_vsro(vp, vsc);
4815 // CHECK: @llvm.ppc.altivec.vsro
4816 // CHECK-LE: @llvm.ppc.altivec.vsro
4817
4818 res_vp = vec_vsro(vp, vuc);
4819 // CHECK: @llvm.ppc.altivec.vsro
4820 // CHECK-LE: @llvm.ppc.altivec.vsro
4821
4822 res_vi = vec_vsro(vi, vsc);
4823 // CHECK: @llvm.ppc.altivec.vsro
4824 // CHECK-LE: @llvm.ppc.altivec.vsro
4825
4826 res_vi = vec_vsro(vi, vuc);
4827 // CHECK: @llvm.ppc.altivec.vsro
4828 // CHECK-LE: @llvm.ppc.altivec.vsro
4829
4830 res_vui = vec_vsro(vui, vsc);
4831 // CHECK: @llvm.ppc.altivec.vsro
4832 // CHECK-LE: @llvm.ppc.altivec.vsro
4833
4834 res_vui = vec_vsro(vui, vuc);
4835 // CHECK: @llvm.ppc.altivec.vsro
4836 // CHECK-LE: @llvm.ppc.altivec.vsro
4837
4838 res_vf = vec_vsro(vf, vsc);
4839 // CHECK: @llvm.ppc.altivec.vsro
4840 // CHECK-LE: @llvm.ppc.altivec.vsro
4841
4842 res_vf = vec_vsro(vf, vuc);
4843 // CHECK: @llvm.ppc.altivec.vsro
4844 // CHECK-LE: @llvm.ppc.altivec.vsro
4845
4846 /* vec_st */
4847 vec_st(vsc, 0, &vsc);
4848 // CHECK: @llvm.ppc.altivec.stvx
4849 // CHECK-LE: @llvm.ppc.altivec.stvx
4850
4851 vec_st(vsc, 0, ¶m_sc);
4852 // CHECK: @llvm.ppc.altivec.stvx
4853 // CHECK-LE: @llvm.ppc.altivec.stvx
4854
4855 vec_st(vuc, 0, &vuc);
4856 // CHECK: @llvm.ppc.altivec.stvx
4857 // CHECK-LE: @llvm.ppc.altivec.stvx
4858
4859 vec_st(vuc, 0, ¶m_uc);
4860 // CHECK: @llvm.ppc.altivec.stvx
4861 // CHECK-LE: @llvm.ppc.altivec.stvx
4862
4863 vec_st(vbc, 0, ¶m_uc);
4864 // CHECK: @llvm.ppc.altivec.stvx
4865 // CHECK-LE: @llvm.ppc.altivec.stvx
4866
4867 vec_st(vbc, 0, ¶m_uc);
4868 // CHECK: @llvm.ppc.altivec.stvx
4869 // CHECK-LE: @llvm.ppc.altivec.stvx
4870
4871 vec_st(vbc, 0, &vbc);
4872 // CHECK: @llvm.ppc.altivec.stvx
4873 // CHECK-LE: @llvm.ppc.altivec.stvx
4874
4875 vec_st(vs, 0, &vs);
4876 // CHECK: @llvm.ppc.altivec.stvx
4877 // CHECK-LE: @llvm.ppc.altivec.stvx
4878
4879 vec_st(vs, 0, ¶m_s);
4880 // CHECK: @llvm.ppc.altivec.stvx
4881 // CHECK-LE: @llvm.ppc.altivec.stvx
4882
4883 vec_st(vus, 0, &vus);
4884 // CHECK: @llvm.ppc.altivec.stvx
4885 // CHECK-LE: @llvm.ppc.altivec.stvx
4886
4887 vec_st(vus, 0, ¶m_us);
4888 // CHECK: @llvm.ppc.altivec.stvx
4889 // CHECK-LE: @llvm.ppc.altivec.stvx
4890
4891 vec_st(vbs, 0, ¶m_s);
4892 // CHECK: @llvm.ppc.altivec.stvx
4893 // CHECK-LE: @llvm.ppc.altivec.stvx
4894
4895 vec_st(vbs, 0, ¶m_us);
4896 // CHECK: @llvm.ppc.altivec.stvx
4897 // CHECK-LE: @llvm.ppc.altivec.stvx
4898
4899 vec_st(vbs, 0, &vbs);
4900 // CHECK: @llvm.ppc.altivec.stvx
4901 // CHECK-LE: @llvm.ppc.altivec.stvx
4902
4903 vec_st(vp, 0, ¶m_s);
4904 // CHECK: @llvm.ppc.altivec.stvx
4905 // CHECK-LE: @llvm.ppc.altivec.stvx
4906
4907 vec_st(vp, 0, ¶m_us);
4908 // CHECK: @llvm.ppc.altivec.stvx
4909 // CHECK-LE: @llvm.ppc.altivec.stvx
4910
4911 vec_st(vp, 0, &vp);
4912 // CHECK: @llvm.ppc.altivec.stvx
4913 // CHECK-LE: @llvm.ppc.altivec.stvx
4914
4915 vec_st(vi, 0, &vi);
4916 // CHECK: @llvm.ppc.altivec.stvx
4917 // CHECK-LE: @llvm.ppc.altivec.stvx
4918
4919 vec_st(vi, 0, ¶m_i);
4920 // CHECK: @llvm.ppc.altivec.stvx
4921 // CHECK-LE: @llvm.ppc.altivec.stvx
4922
4923 vec_st(vui, 0, &vui);
4924 // CHECK: @llvm.ppc.altivec.stvx
4925 // CHECK-LE: @llvm.ppc.altivec.stvx
4926
4927 vec_st(vui, 0, ¶m_ui);
4928 // CHECK: @llvm.ppc.altivec.stvx
4929 // CHECK-LE: @llvm.ppc.altivec.stvx
4930
4931 vec_st(vbi, 0, ¶m_i);
4932 // CHECK: @llvm.ppc.altivec.stvx
4933 // CHECK-LE: @llvm.ppc.altivec.stvx
4934
4935 vec_st(vbi, 0, ¶m_ui);
4936 // CHECK: @llvm.ppc.altivec.stvx
4937 // CHECK-LE: @llvm.ppc.altivec.stvx
4938
4939 vec_st(vbi, 0, &vbi);
4940 // CHECK: @llvm.ppc.altivec.stvx
4941 // CHECK-LE: @llvm.ppc.altivec.stvx
4942
4943 vec_st(vf, 0, &vf);
4944 // CHECK: @llvm.ppc.altivec.stvx
4945 // CHECK-LE: @llvm.ppc.altivec.stvx
4946
4947 vec_st(vf, 0, ¶m_f);
4948 // CHECK: @llvm.ppc.altivec.stvx
4949 // CHECK-LE: @llvm.ppc.altivec.stvx
4950
4951 vec_stvx(vsc, 0, &vsc);
4952 // CHECK: @llvm.ppc.altivec.stvx
4953 // CHECK-LE: @llvm.ppc.altivec.stvx
4954
4955 vec_stvx(vsc, 0, ¶m_sc);
4956 // CHECK: @llvm.ppc.altivec.stvx
4957 // CHECK-LE: @llvm.ppc.altivec.stvx
4958
4959 vec_stvx(vuc, 0, &vuc);
4960 // CHECK: @llvm.ppc.altivec.stvx
4961 // CHECK-LE: @llvm.ppc.altivec.stvx
4962
4963 vec_stvx(vuc, 0, ¶m_uc);
4964 // CHECK: @llvm.ppc.altivec.stvx
4965 // CHECK-LE: @llvm.ppc.altivec.stvx
4966
4967 vec_stvx(vbc, 0, ¶m_uc);
4968 // CHECK: @llvm.ppc.altivec.stvx
4969 // CHECK-LE: @llvm.ppc.altivec.stvx
4970
4971 vec_stvx(vbc, 0, ¶m_uc);
4972 // CHECK: @llvm.ppc.altivec.stvx
4973 // CHECK-LE: @llvm.ppc.altivec.stvx
4974
4975 vec_stvx(vbc, 0, &vbc);
4976 // CHECK: @llvm.ppc.altivec.stvx
4977 // CHECK-LE: @llvm.ppc.altivec.stvx
4978
4979 vec_stvx(vs, 0, &vs);
4980 // CHECK: @llvm.ppc.altivec.stvx
4981 // CHECK-LE: @llvm.ppc.altivec.stvx
4982
4983 vec_stvx(vs, 0, ¶m_s);
4984 // CHECK: @llvm.ppc.altivec.stvx
4985 // CHECK-LE: @llvm.ppc.altivec.stvx
4986
4987 vec_stvx(vus, 0, &vus);
4988 // CHECK: @llvm.ppc.altivec.stvx
4989 // CHECK-LE: @llvm.ppc.altivec.stvx
4990
4991 vec_stvx(vus, 0, ¶m_us);
4992 // CHECK: @llvm.ppc.altivec.stvx
4993 // CHECK-LE: @llvm.ppc.altivec.stvx
4994
4995 vec_stvx(vbs, 0, ¶m_s);
4996 // CHECK: @llvm.ppc.altivec.stvx
4997 // CHECK-LE: @llvm.ppc.altivec.stvx
4998
4999 vec_stvx(vbs, 0, ¶m_us);
5000 // CHECK: @llvm.ppc.altivec.stvx
5001 // CHECK-LE: @llvm.ppc.altivec.stvx
5002
5003 vec_stvx(vbs, 0, &vbs);
5004 // CHECK: @llvm.ppc.altivec.stvx
5005 // CHECK-LE: @llvm.ppc.altivec.stvx
5006
5007 vec_stvx(vp, 0, ¶m_s);
5008 // CHECK: @llvm.ppc.altivec.stvx
5009 // CHECK-LE: @llvm.ppc.altivec.stvx
5010
5011 vec_stvx(vp, 0, ¶m_us);
5012 // CHECK: @llvm.ppc.altivec.stvx
5013 // CHECK-LE: @llvm.ppc.altivec.stvx
5014
5015 vec_stvx(vp, 0, &vp);
5016 // CHECK: @llvm.ppc.altivec.stvx
5017 // CHECK-LE: @llvm.ppc.altivec.stvx
5018
5019 vec_stvx(vi, 0, &vi);
5020 // CHECK: @llvm.ppc.altivec.stvx
5021 // CHECK-LE: @llvm.ppc.altivec.stvx
5022
5023 vec_stvx(vi, 0, ¶m_i);
5024 // CHECK: @llvm.ppc.altivec.stvx
5025 // CHECK-LE: @llvm.ppc.altivec.stvx
5026
5027 vec_stvx(vui, 0, &vui);
5028 // CHECK: @llvm.ppc.altivec.stvx
5029 // CHECK-LE: @llvm.ppc.altivec.stvx
5030
5031 vec_stvx(vui, 0, ¶m_ui);
5032 // CHECK: @llvm.ppc.altivec.stvx
5033 // CHECK-LE: @llvm.ppc.altivec.stvx
5034
5035 vec_stvx(vbi, 0, ¶m_i);
5036 // CHECK: @llvm.ppc.altivec.stvx
5037 // CHECK-LE: @llvm.ppc.altivec.stvx
5038
5039 vec_stvx(vbi, 0, ¶m_ui);
5040 // CHECK: @llvm.ppc.altivec.stvx
5041 // CHECK-LE: @llvm.ppc.altivec.stvx
5042
5043 vec_stvx(vbi, 0, &vbi);
5044 // CHECK: @llvm.ppc.altivec.stvx
5045 // CHECK-LE: @llvm.ppc.altivec.stvx
5046
5047 vec_stvx(vf, 0, &vf);
5048 // CHECK: @llvm.ppc.altivec.stvx
5049 // CHECK-LE: @llvm.ppc.altivec.stvx
5050
5051 vec_stvx(vf, 0, ¶m_f);
5052 // CHECK: @llvm.ppc.altivec.stvx
5053 // CHECK-LE: @llvm.ppc.altivec.stvx
5054
5055 /* vec_ste */
5056 vec_ste(vsc, 0, ¶m_sc);
5057 // CHECK: @llvm.ppc.altivec.stvebx
5058 // CHECK-LE: @llvm.ppc.altivec.stvebx
5059
5060 vec_ste(vuc, 0, ¶m_uc);
5061 // CHECK: @llvm.ppc.altivec.stvebx
5062 // CHECK-LE: @llvm.ppc.altivec.stvebx
5063
5064 vec_ste(vbc, 0, ¶m_sc);
5065 // CHECK: @llvm.ppc.altivec.stvebx
5066 // CHECK-LE: @llvm.ppc.altivec.stvebx
5067
5068 vec_ste(vbc, 0, ¶m_uc);
5069 // CHECK: @llvm.ppc.altivec.stvebx
5070 // CHECK-LE: @llvm.ppc.altivec.stvebx
5071
5072 vec_ste(vs, 0, ¶m_s);
5073 // CHECK: @llvm.ppc.altivec.stvehx
5074 // CHECK-LE: @llvm.ppc.altivec.stvehx
5075
5076 vec_ste(vus, 0, ¶m_us);
5077 // CHECK: @llvm.ppc.altivec.stvehx
5078 // CHECK-LE: @llvm.ppc.altivec.stvehx
5079
5080 vec_ste(vbs, 0, ¶m_s);
5081 // CHECK: @llvm.ppc.altivec.stvehx
5082 // CHECK-LE: @llvm.ppc.altivec.stvehx
5083
5084 vec_ste(vbs, 0, ¶m_us);
5085 // CHECK: @llvm.ppc.altivec.stvehx
5086 // CHECK-LE: @llvm.ppc.altivec.stvehx
5087
5088 vec_ste(vp, 0, ¶m_s);
5089 // CHECK: @llvm.ppc.altivec.stvehx
5090 // CHECK-LE: @llvm.ppc.altivec.stvehx
5091
5092 vec_ste(vp, 0, ¶m_us);
5093 // CHECK: @llvm.ppc.altivec.stvehx
5094 // CHECK-LE: @llvm.ppc.altivec.stvehx
5095
5096 vec_ste(vi, 0, ¶m_i);
5097 // CHECK: @llvm.ppc.altivec.stvewx
5098 // CHECK-LE: @llvm.ppc.altivec.stvewx
5099
5100 vec_ste(vui, 0, ¶m_ui);
5101 // CHECK: @llvm.ppc.altivec.stvewx
5102 // CHECK-LE: @llvm.ppc.altivec.stvewx
5103
5104 vec_ste(vbi, 0, ¶m_i);
5105 // CHECK: @llvm.ppc.altivec.stvewx
5106 // CHECK-LE: @llvm.ppc.altivec.stvewx
5107
5108 vec_ste(vbi, 0, ¶m_ui);
5109 // CHECK: @llvm.ppc.altivec.stvewx
5110 // CHECK-LE: @llvm.ppc.altivec.stvewx
5111
5112 vec_ste(vf, 0, ¶m_f);
5113 // CHECK: @llvm.ppc.altivec.stvewx
5114 // CHECK-LE: @llvm.ppc.altivec.stvewx
5115
5116 vec_stvebx(vsc, 0, ¶m_sc);
5117 // CHECK: @llvm.ppc.altivec.stvebx
5118 // CHECK-LE: @llvm.ppc.altivec.stvebx
5119
5120 vec_stvebx(vuc, 0, ¶m_uc);
5121 // CHECK: @llvm.ppc.altivec.stvebx
5122 // CHECK-LE: @llvm.ppc.altivec.stvebx
5123
5124 vec_stvebx(vbc, 0, ¶m_sc);
5125 // CHECK: @llvm.ppc.altivec.stvebx
5126 // CHECK-LE: @llvm.ppc.altivec.stvebx
5127
5128 vec_stvebx(vbc, 0, ¶m_uc);
5129 // CHECK: @llvm.ppc.altivec.stvebx
5130 // CHECK-LE: @llvm.ppc.altivec.stvebx
5131
5132 vec_stvehx(vs, 0, ¶m_s);
5133 // CHECK: @llvm.ppc.altivec.stvehx
5134 // CHECK-LE: @llvm.ppc.altivec.stvehx
5135
5136 vec_stvehx(vus, 0, ¶m_us);
5137 // CHECK: @llvm.ppc.altivec.stvehx
5138 // CHECK-LE: @llvm.ppc.altivec.stvehx
5139
5140 vec_stvehx(vbs, 0, ¶m_s);
5141 // CHECK: @llvm.ppc.altivec.stvehx
5142 // CHECK-LE: @llvm.ppc.altivec.stvehx
5143
5144 vec_stvehx(vbs, 0, ¶m_us);
5145 // CHECK: @llvm.ppc.altivec.stvehx
5146 // CHECK-LE: @llvm.ppc.altivec.stvehx
5147
5148 vec_stvehx(vp, 0, ¶m_s);
5149 // CHECK: @llvm.ppc.altivec.stvehx
5150 // CHECK-LE: @llvm.ppc.altivec.stvehx
5151
5152 vec_stvehx(vp, 0, ¶m_us);
5153 // CHECK: @llvm.ppc.altivec.stvehx
5154 // CHECK-LE: @llvm.ppc.altivec.stvehx
5155
5156 vec_stvewx(vi, 0, ¶m_i);
5157 // CHECK: @llvm.ppc.altivec.stvewx
5158 // CHECK-LE: @llvm.ppc.altivec.stvewx
5159
5160 vec_stvewx(vui, 0, ¶m_ui);
5161 // CHECK: @llvm.ppc.altivec.stvewx
5162 // CHECK-LE: @llvm.ppc.altivec.stvewx
5163
5164 vec_stvewx(vbi, 0, ¶m_i);
5165 // CHECK: @llvm.ppc.altivec.stvewx
5166 // CHECK-LE: @llvm.ppc.altivec.stvewx
5167
5168 vec_stvewx(vbi, 0, ¶m_ui);
5169 // CHECK: @llvm.ppc.altivec.stvewx
5170 // CHECK-LE: @llvm.ppc.altivec.stvewx
5171
5172 vec_stvewx(vf, 0, ¶m_f);
5173 // CHECK: @llvm.ppc.altivec.stvewx
5174 // CHECK-LE: @llvm.ppc.altivec.stvewx
5175
5176 /* vec_stl */
5177 vec_stl(vsc, 0, &vsc);
5178 // CHECK: @llvm.ppc.altivec.stvxl
5179 // CHECK-LE: @llvm.ppc.altivec.stvxl
5180
5181 vec_stl(vsc, 0, ¶m_sc);
5182 // CHECK: @llvm.ppc.altivec.stvxl
5183 // CHECK-LE: @llvm.ppc.altivec.stvxl
5184
5185 vec_stl(vuc, 0, &vuc);
5186 // CHECK: @llvm.ppc.altivec.stvxl
5187 // CHECK-LE: @llvm.ppc.altivec.stvxl
5188
5189 vec_stl(vuc, 0, ¶m_uc);
5190 // CHECK: @llvm.ppc.altivec.stvxl
5191 // CHECK-LE: @llvm.ppc.altivec.stvxl
5192
5193 vec_stl(vbc, 0, ¶m_sc);
5194 // CHECK: @llvm.ppc.altivec.stvxl
5195 // CHECK-LE: @llvm.ppc.altivec.stvxl
5196
5197 vec_stl(vbc, 0, ¶m_uc);
5198 // CHECK: @llvm.ppc.altivec.stvxl
5199 // CHECK-LE: @llvm.ppc.altivec.stvxl
5200
5201 vec_stl(vbc, 0, &vbc);
5202 // CHECK: @llvm.ppc.altivec.stvxl
5203 // CHECK-LE: @llvm.ppc.altivec.stvxl
5204
5205 vec_stl(vs, 0, &vs);
5206 // CHECK: @llvm.ppc.altivec.stvxl
5207 // CHECK-LE: @llvm.ppc.altivec.stvxl
5208
5209 vec_stl(vs, 0, ¶m_s);
5210 // CHECK: @llvm.ppc.altivec.stvxl
5211 // CHECK-LE: @llvm.ppc.altivec.stvxl
5212
5213 vec_stl(vus, 0, &vus);
5214 // CHECK: @llvm.ppc.altivec.stvxl
5215 // CHECK-LE: @llvm.ppc.altivec.stvxl
5216
5217 vec_stl(vus, 0, ¶m_us);
5218 // CHECK: @llvm.ppc.altivec.stvxl
5219 // CHECK-LE: @llvm.ppc.altivec.stvxl
5220
5221 vec_stl(vbs, 0, ¶m_s);
5222 // CHECK: @llvm.ppc.altivec.stvxl
5223 // CHECK-LE: @llvm.ppc.altivec.stvxl
5224
5225 vec_stl(vbs, 0, ¶m_us);
5226 // CHECK: @llvm.ppc.altivec.stvxl
5227 // CHECK-LE: @llvm.ppc.altivec.stvxl
5228
5229 vec_stl(vbs, 0, &vbs);
5230 // CHECK: @llvm.ppc.altivec.stvxl
5231 // CHECK-LE: @llvm.ppc.altivec.stvxl
5232
5233 vec_stl(vp, 0, ¶m_s);
5234 // CHECK: @llvm.ppc.altivec.stvxl
5235 // CHECK-LE: @llvm.ppc.altivec.stvxl
5236
5237 vec_stl(vp, 0, ¶m_us);
5238 // CHECK: @llvm.ppc.altivec.stvxl
5239 // CHECK-LE: @llvm.ppc.altivec.stvxl
5240
5241 vec_stl(vp, 0, &vp);
5242 // CHECK: @llvm.ppc.altivec.stvxl
5243 // CHECK-LE: @llvm.ppc.altivec.stvxl
5244
5245 vec_stl(vi, 0, &vi);
5246 // CHECK: @llvm.ppc.altivec.stvxl
5247 // CHECK-LE: @llvm.ppc.altivec.stvxl
5248
5249 vec_stl(vi, 0, ¶m_i);
5250 // CHECK: @llvm.ppc.altivec.stvxl
5251 // CHECK-LE: @llvm.ppc.altivec.stvxl
5252
5253 vec_stl(vui, 0, &vui);
5254 // CHECK: @llvm.ppc.altivec.stvxl
5255 // CHECK-LE: @llvm.ppc.altivec.stvxl
5256
5257 vec_stl(vui, 0, ¶m_ui);
5258 // CHECK: @llvm.ppc.altivec.stvxl
5259 // CHECK-LE: @llvm.ppc.altivec.stvxl
5260
5261 vec_stl(vbi, 0, ¶m_i);
5262 // CHECK: @llvm.ppc.altivec.stvxl
5263 // CHECK-LE: @llvm.ppc.altivec.stvxl
5264
5265 vec_stl(vbi, 0, ¶m_ui);
5266 // CHECK: @llvm.ppc.altivec.stvxl
5267 // CHECK-LE: @llvm.ppc.altivec.stvxl
5268
5269 vec_stl(vbi, 0, &vbi);
5270 // CHECK: @llvm.ppc.altivec.stvxl
5271 // CHECK-LE: @llvm.ppc.altivec.stvxl
5272
5273 vec_stl(vf, 0, &vf);
5274 // CHECK: @llvm.ppc.altivec.stvxl
5275 // CHECK-LE: @llvm.ppc.altivec.stvxl
5276
5277 vec_stl(vf, 0, ¶m_f);
5278 // CHECK: @llvm.ppc.altivec.stvxl
5279 // CHECK-LE: @llvm.ppc.altivec.stvxl
5280
5281 vec_stvxl(vsc, 0, &vsc);
5282 // CHECK: @llvm.ppc.altivec.stvxl
5283 // CHECK-LE: @llvm.ppc.altivec.stvxl
5284
5285 vec_stvxl(vsc, 0, ¶m_sc);
5286 // CHECK: @llvm.ppc.altivec.stvxl
5287 // CHECK-LE: @llvm.ppc.altivec.stvxl
5288
5289 vec_stvxl(vuc, 0, &vuc);
5290 // CHECK: @llvm.ppc.altivec.stvxl
5291 // CHECK-LE: @llvm.ppc.altivec.stvxl
5292
5293 vec_stvxl(vuc, 0, ¶m_uc);
5294 // CHECK: @llvm.ppc.altivec.stvxl
5295 // CHECK-LE: @llvm.ppc.altivec.stvxl
5296
5297 vec_stvxl(vbc, 0, ¶m_sc);
5298 // CHECK: @llvm.ppc.altivec.stvxl
5299 // CHECK-LE: @llvm.ppc.altivec.stvxl
5300
5301 vec_stvxl(vbc, 0, ¶m_uc);
5302 // CHECK: @llvm.ppc.altivec.stvxl
5303 // CHECK-LE: @llvm.ppc.altivec.stvxl
5304
5305 vec_stvxl(vbc, 0, &vbc);
5306 // CHECK: @llvm.ppc.altivec.stvxl
5307 // CHECK-LE: @llvm.ppc.altivec.stvxl
5308
5309 vec_stvxl(vs, 0, &vs);
5310 // CHECK: @llvm.ppc.altivec.stvxl
5311 // CHECK-LE: @llvm.ppc.altivec.stvxl
5312
5313 vec_stvxl(vs, 0, ¶m_s);
5314 // CHECK: @llvm.ppc.altivec.stvxl
5315 // CHECK-LE: @llvm.ppc.altivec.stvxl
5316
5317 vec_stvxl(vus, 0, &vus);
5318 // CHECK: @llvm.ppc.altivec.stvxl
5319 // CHECK-LE: @llvm.ppc.altivec.stvxl
5320
5321 vec_stvxl(vus, 0, ¶m_us);
5322 // CHECK: @llvm.ppc.altivec.stvxl
5323 // CHECK-LE: @llvm.ppc.altivec.stvxl
5324
5325 vec_stvxl(vbs, 0, ¶m_s);
5326 // CHECK: @llvm.ppc.altivec.stvxl
5327 // CHECK-LE: @llvm.ppc.altivec.stvxl
5328
5329 vec_stvxl(vbs, 0, ¶m_us);
5330 // CHECK: @llvm.ppc.altivec.stvxl
5331 // CHECK-LE: @llvm.ppc.altivec.stvxl
5332
5333 vec_stvxl(vbs, 0, &vbs);
5334 // CHECK: @llvm.ppc.altivec.stvxl
5335 // CHECK-LE: @llvm.ppc.altivec.stvxl
5336
5337 vec_stvxl(vp, 0, ¶m_s);
5338 // CHECK: @llvm.ppc.altivec.stvxl
5339 // CHECK-LE: @llvm.ppc.altivec.stvxl
5340
5341 vec_stvxl(vp, 0, ¶m_us);
5342 // CHECK: @llvm.ppc.altivec.stvxl
5343 // CHECK-LE: @llvm.ppc.altivec.stvxl
5344
5345 vec_stvxl(vp, 0, &vp);
5346 // CHECK: @llvm.ppc.altivec.stvxl
5347 // CHECK-LE: @llvm.ppc.altivec.stvxl
5348
5349 vec_stvxl(vi, 0, &vi);
5350 // CHECK: @llvm.ppc.altivec.stvxl
5351 // CHECK-LE: @llvm.ppc.altivec.stvxl
5352
5353 vec_stvxl(vi, 0, ¶m_i);
5354 // CHECK: @llvm.ppc.altivec.stvxl
5355 // CHECK-LE: @llvm.ppc.altivec.stvxl
5356
5357 vec_stvxl(vui, 0, &vui);
5358 // CHECK: @llvm.ppc.altivec.stvxl
5359 // CHECK-LE: @llvm.ppc.altivec.stvxl
5360
5361 vec_stvxl(vui, 0, ¶m_ui);
5362 // CHECK: @llvm.ppc.altivec.stvxl
5363 // CHECK-LE: @llvm.ppc.altivec.stvxl
5364
5365 vec_stvxl(vbi, 0, ¶m_i);
5366 // CHECK: @llvm.ppc.altivec.stvxl
5367 // CHECK-LE: @llvm.ppc.altivec.stvxl
5368
5369 vec_stvxl(vbi, 0, ¶m_ui);
5370 // CHECK: @llvm.ppc.altivec.stvxl
5371 // CHECK-LE: @llvm.ppc.altivec.stvxl
5372
5373 vec_stvxl(vbi, 0, &vbi);
5374 // CHECK: @llvm.ppc.altivec.stvxl
5375 // CHECK-LE: @llvm.ppc.altivec.stvxl
5376
5377 vec_stvxl(vf, 0, &vf);
5378 // CHECK: @llvm.ppc.altivec.stvxl
5379 // CHECK-LE: @llvm.ppc.altivec.stvxl
5380
5381 vec_stvxl(vf, 0, ¶m_f);
5382 // CHECK: @llvm.ppc.altivec.stvxl
5383 // CHECK-LE: @llvm.ppc.altivec.stvxl
5384
5385 /* vec_sub */
5386 res_vsc = vec_sub(vsc, vsc);
5387 // CHECK: sub <16 x i8>
5388 // CHECK-LE: sub <16 x i8>
5389
5390 res_vsc = vec_sub(vbc, vsc);
5391 // CHECK: sub <16 x i8>
5392 // CHECK-LE: sub <16 x i8>
5393
5394 res_vsc = vec_sub(vsc, vbc);
5395 // CHECK: sub <16 x i8>
5396 // CHECK-LE: sub <16 x i8>
5397
5398 res_vuc = vec_sub(vuc, vuc);
5399 // CHECK: sub <16 x i8>
5400 // CHECK-LE: sub <16 x i8>
5401
5402 res_vuc = vec_sub(vbc, vuc);
5403 // CHECK: sub <16 x i8>
5404 // CHECK-LE: sub <16 x i8>
5405
5406 res_vuc = vec_sub(vuc, vbc);
5407 // CHECK: sub <16 x i8>
5408 // CHECK-LE: sub <16 x i8>
5409
5410 res_vs = vec_sub(vs, vs);
5411 // CHECK: sub <8 x i16>
5412 // CHECK-LE: sub <8 x i16>
5413
5414 res_vs = vec_sub(vbs, vs);
5415 // CHECK: sub <8 x i16>
5416 // CHECK-LE: sub <8 x i16>
5417
5418 res_vs = vec_sub(vs, vbs);
5419 // CHECK: sub <8 x i16>
5420 // CHECK-LE: sub <8 x i16>
5421
5422 res_vus = vec_sub(vus, vus);
5423 // CHECK: sub <8 x i16>
5424 // CHECK-LE: sub <8 x i16>
5425
5426 res_vus = vec_sub(vbs, vus);
5427 // CHECK: sub <8 x i16>
5428 // CHECK-LE: sub <8 x i16>
5429
5430 res_vus = vec_sub(vus, vbs);
5431 // CHECK: sub <8 x i16>
5432 // CHECK-LE: sub <8 x i16>
5433
5434 res_vi = vec_sub(vi, vi);
5435 // CHECK: sub <4 x i32>
5436 // CHECK-LE: sub <4 x i32>
5437
5438 res_vi = vec_sub(vbi, vi);
5439 // CHECK: sub <4 x i32>
5440 // CHECK-LE: sub <4 x i32>
5441
5442 res_vi = vec_sub(vi, vbi);
5443 // CHECK: sub <4 x i32>
5444 // CHECK-LE: sub <4 x i32>
5445
5446 res_vui = vec_sub(vui, vui);
5447 // CHECK: sub <4 x i32>
5448 // CHECK-LE: sub <4 x i32>
5449
5450 res_vui = vec_sub(vbi, vui);
5451 // CHECK: sub <4 x i32>
5452 // CHECK-LE: sub <4 x i32>
5453
5454 res_vui = vec_sub(vui, vbi);
5455 // CHECK: sub <4 x i32>
5456 // CHECK-LE: sub <4 x i32>
5457
5458 res_vf = vec_sub(vf, vf);
5459 // CHECK: fsub <4 x float>
5460 // CHECK-LE: fsub <4 x float>
5461
5462
5463
5464 res_vsc = vec_vsububm(vsc, vsc);
5465 // CHECK: sub <16 x i8>
5466 // CHECK-LE: sub <16 x i8>
5467
5468 res_vsc = vec_vsububm(vbc, vsc);
5469 // CHECK: sub <16 x i8>
5470 // CHECK-LE: sub <16 x i8>
5471
5472 res_vsc = vec_vsububm(vsc, vbc);
5473 // CHECK: sub <16 x i8>
5474 // CHECK-LE: sub <16 x i8>
5475
5476 res_vuc = vec_vsububm(vuc, vuc);
5477 // CHECK: sub <16 x i8>
5478 // CHECK-LE: sub <16 x i8>
5479
5480 res_vuc = vec_vsububm(vbc, vuc);
5481 // CHECK: sub <16 x i8>
5482 // CHECK-LE: sub <16 x i8>
5483
5484 res_vuc = vec_vsububm(vuc, vbc);
5485 // CHECK: sub <16 x i8>
5486 // CHECK-LE: sub <16 x i8>
5487
5488 res_vs = vec_vsubuhm(vs, vs);
5489 // CHECK: sub <8 x i16>
5490 // CHECK-LE: sub <8 x i16>
5491
5492 res_vs = vec_vsubuhm(vbs, vs);
5493 // CHECK: sub <8 x i16>
5494 // CHECK-LE: sub <8 x i16>
5495
5496 res_vs = vec_vsubuhm(vs, vbs);
5497 // CHECK: sub <8 x i16>
5498 // CHECK-LE: sub <8 x i16>
5499
5500 res_vus = vec_vsubuhm(vus, vus);
5501 // CHECK: sub <8 x i16>
5502 // CHECK-LE: sub <8 x i16>
5503
5504 res_vus = vec_vsubuhm(vbs, vus);
5505 // CHECK: sub <8 x i16>
5506 // CHECK-LE: sub <8 x i16>
5507
5508 res_vus = vec_vsubuhm(vus, vbs);
5509 // CHECK: sub <8 x i16>
5510 // CHECK-LE: sub <8 x i16>
5511
5512 res_vi = vec_vsubuwm(vi, vi);
5513 // CHECK: sub <4 x i32>
5514 // CHECK-LE: sub <4 x i32>
5515
5516 res_vi = vec_vsubuwm(vbi, vi);
5517 // CHECK: sub <4 x i32>
5518 // CHECK-LE: sub <4 x i32>
5519
5520 res_vi = vec_vsubuwm(vi, vbi);
5521 // CHECK: sub <4 x i32>
5522 // CHECK-LE: sub <4 x i32>
5523
5524 res_vui = vec_vsubuwm(vui, vui);
5525 // CHECK: sub <4 x i32>
5526 // CHECK-LE: sub <4 x i32>
5527
5528 res_vui = vec_vsubuwm(vbi, vui);
5529 // CHECK: sub <4 x i32>
5530 // CHECK-LE: sub <4 x i32>
5531
5532 res_vui = vec_vsubuwm(vui, vbi);
5533 // CHECK: sub <4 x i32>
5534 // CHECK-LE: sub <4 x i32>
5535
5536 res_vf = vec_vsubfp(vf, vf);
5537 // CHECK: fsub <4 x float>
5538 // CHECK-LE: fsub <4 x float>
5539
5540 /* vec_subc */
5541 res_vui = vec_subc(vui, vui);
5542 // CHECK: @llvm.ppc.altivec.vsubcuw
5543 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5544
5545 res_vi = vec_subc(vi, vi);
5546 // CHECK: @llvm.ppc.altivec.vsubcuw
5547 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5548
5549 res_vui = vec_vsubcuw(vui, vui);
5550 // CHECK: @llvm.ppc.altivec.vsubcuw
5551 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5552
5553 /* vec_subs */
5554 res_vsc = vec_subs(vsc, vsc);
5555 // CHECK: @llvm.ppc.altivec.vsubsbs
5556 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5557
5558 res_vsc = vec_subs(vbc, vsc);
5559 // CHECK: @llvm.ppc.altivec.vsubsbs
5560 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5561
5562 res_vsc = vec_subs(vsc, vbc);
5563 // CHECK: @llvm.ppc.altivec.vsubsbs
5564 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5565
5566 res_vuc = vec_subs(vuc, vuc);
5567 // CHECK: @llvm.ppc.altivec.vsububs
5568 // CHECK-LE: @llvm.ppc.altivec.vsububs
5569
5570 res_vuc = vec_subs(vbc, vuc);
5571 // CHECK: @llvm.ppc.altivec.vsububs
5572 // CHECK-LE: @llvm.ppc.altivec.vsububs
5573
5574 res_vuc = vec_subs(vuc, vbc);
5575 // CHECK: @llvm.ppc.altivec.vsububs
5576 // CHECK-LE: @llvm.ppc.altivec.vsububs
5577
5578 res_vs = vec_subs(vs, vs);
5579 // CHECK: @llvm.ppc.altivec.vsubshs
5580 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5581
5582 res_vs = vec_subs(vbs, vs);
5583 // CHECK: @llvm.ppc.altivec.vsubshs
5584 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5585
5586 res_vs = vec_subs(vs, vbs);
5587 // CHECK: @llvm.ppc.altivec.vsubshs
5588 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5589
5590 res_vus = vec_subs(vus, vus);
5591 // CHECK: @llvm.ppc.altivec.vsubuhs
5592 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5593
5594 res_vus = vec_subs(vbs, vus);
5595 // CHECK: @llvm.ppc.altivec.vsubuhs
5596 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5597
5598 res_vus = vec_subs(vus, vbs);
5599 // CHECK: @llvm.ppc.altivec.vsubuhs
5600 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5601
5602 res_vi = vec_subs(vi, vi);
5603 // CHECK: @llvm.ppc.altivec.vsubsws
5604 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5605
5606 res_vi = vec_subs(vbi, vi);
5607 // CHECK: @llvm.ppc.altivec.vsubsws
5608 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5609
5610 res_vi = vec_subs(vi, vbi);
5611 // CHECK: @llvm.ppc.altivec.vsubsws
5612 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5613
5614 res_vui = vec_subs(vui, vui);
5615 // CHECK: @llvm.ppc.altivec.vsubuws
5616 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5617
5618 res_vui = vec_subs(vbi, vui);
5619 // CHECK: @llvm.ppc.altivec.vsubuws
5620 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5621
5622 res_vui = vec_subs(vui, vbi);
5623 // CHECK: @llvm.ppc.altivec.vsubuws
5624 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5625
5626 res_vi = vec_sube(vi, vi, vi);
5627 // CHECK: and <4 x i32>
5628 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5629 // CHECK: add <4 x i32>
5630 // CHECK: add <4 x i32>
5631 // CHECK-LE: and <4 x i32>
5632 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5633 // CHECK-LE: add <4 x i32>
5634 // CHECK-LE: add <4 x i32>
5635
5636 res_vui = vec_sube(vui, vui, vui);
5637 // CHECK: and <4 x i32>
5638 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5639 // CHECK: add <4 x i32>
5640 // CHECK: add <4 x i32>
5641 // CHECK-LE: and <4 x i32>
5642 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5643 // CHECK-LE: add <4 x i32>
5644 // CHECK-LE: add <4 x i32>
5645
5646 res_vsc = vec_vsubsbs(vsc, vsc);
5647 // CHECK: @llvm.ppc.altivec.vsubsbs
5648 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5649
5650 res_vsc = vec_vsubsbs(vbc, vsc);
5651 // CHECK: @llvm.ppc.altivec.vsubsbs
5652 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5653
5654 res_vsc = vec_vsubsbs(vsc, vbc);
5655 // CHECK: @llvm.ppc.altivec.vsubsbs
5656 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5657
5658 res_vuc = vec_vsububs(vuc, vuc);
5659 // CHECK: @llvm.ppc.altivec.vsububs
5660 // CHECK-LE: @llvm.ppc.altivec.vsububs
5661
5662 res_vuc = vec_vsububs(vbc, vuc);
5663 // CHECK: @llvm.ppc.altivec.vsububs
5664 // CHECK-LE: @llvm.ppc.altivec.vsububs
5665
5666 res_vuc = vec_vsububs(vuc, vbc);
5667 // CHECK: @llvm.ppc.altivec.vsububs
5668 // CHECK-LE: @llvm.ppc.altivec.vsububs
5669
5670 res_vs = vec_vsubshs(vs, vs);
5671 // CHECK: @llvm.ppc.altivec.vsubshs
5672 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5673
5674 res_vs = vec_vsubshs(vbs, vs);
5675 // CHECK: @llvm.ppc.altivec.vsubshs
5676 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5677
5678 res_vs = vec_vsubshs(vs, vbs);
5679 // CHECK: @llvm.ppc.altivec.vsubshs
5680 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5681
5682 res_vus = vec_vsubuhs(vus, vus);
5683 // CHECK: @llvm.ppc.altivec.vsubuhs
5684 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5685
5686 res_vus = vec_vsubuhs(vbs, vus);
5687 // CHECK: @llvm.ppc.altivec.vsubuhs
5688 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5689
5690 res_vus = vec_vsubuhs(vus, vbs);
5691 // CHECK: @llvm.ppc.altivec.vsubuhs
5692 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5693
5694 res_vi = vec_vsubsws(vi, vi);
5695 // CHECK: @llvm.ppc.altivec.vsubsws
5696 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5697
5698 res_vi = vec_vsubsws(vbi, vi);
5699 // CHECK: @llvm.ppc.altivec.vsubsws
5700 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5701
5702 res_vi = vec_vsubsws(vi, vbi);
5703 // CHECK: @llvm.ppc.altivec.vsubsws
5704 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5705
5706 res_vui = vec_vsubuws(vui, vui);
5707 // CHECK: @llvm.ppc.altivec.vsubuws
5708 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5709
5710 res_vui = vec_vsubuws(vbi, vui);
5711 // CHECK: @llvm.ppc.altivec.vsubuws
5712 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5713
5714 res_vui = vec_vsubuws(vui, vbi);
5715 // CHECK: @llvm.ppc.altivec.vsubuws
5716 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5717
5718 /* vec_sum4s */
5719 res_vi = vec_sum4s(vsc, vi);
5720 // CHECK: @llvm.ppc.altivec.vsum4sbs
5721 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5722
5723 res_vui = vec_sum4s(vuc, vui);
5724 // CHECK: @llvm.ppc.altivec.vsum4ubs
5725 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5726
5727 res_vi = vec_sum4s(vs, vi);
5728 // CHECK: @llvm.ppc.altivec.vsum4shs
5729 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5730
5731 res_vi = vec_vsum4sbs(vsc, vi);
5732 // CHECK: @llvm.ppc.altivec.vsum4sbs
5733 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5734
5735 res_vui = vec_vsum4ubs(vuc, vui);
5736 // CHECK: @llvm.ppc.altivec.vsum4ubs
5737 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5738
5739 res_vi = vec_vsum4shs(vs, vi);
5740 // CHECK: @llvm.ppc.altivec.vsum4shs
5741 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5742
5743 /* vec_sum2s */
5744 res_vi = vec_sum2s(vi, vi);
5745 // CHECK: @llvm.ppc.altivec.vsum2sws
5746 // CHECK-LE: @llvm.ppc.altivec.vperm
5747 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5748 // CHECK-LE: @llvm.ppc.altivec.vperm
5749
5750 res_vi = vec_vsum2sws(vi, vi);
5751 // CHECK: @llvm.ppc.altivec.vsum2sws
5752 // CHECK-LE: @llvm.ppc.altivec.vperm
5753 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5754 // CHECK-LE: @llvm.ppc.altivec.vperm
5755
5756 /* vec_sums */
5757 res_vi = vec_sums(vi, vi);
5758 // CHECK: @llvm.ppc.altivec.vsumsws
5759 // CHECK-LE: @llvm.ppc.altivec.vperm
5760 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5761
5762 res_vi = vec_vsumsws(vi, vi);
5763 // CHECK: @llvm.ppc.altivec.vsumsws
5764 // CHECK-LE: @llvm.ppc.altivec.vperm
5765 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5766
5767 /* vec_trunc */
5768 res_vf = vec_trunc(vf);
5769 // CHECK: @llvm.ppc.altivec.vrfiz
5770 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5771
5772 res_vf = vec_vrfiz(vf);
5773 // CHECK: @llvm.ppc.altivec.vrfiz
5774 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5775
5776 /* vec_unpackh */
5777 res_vs = vec_unpackh(vsc);
5778 // CHECK: @llvm.ppc.altivec.vupkhsb
5779 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5780
5781 res_vbs = vec_unpackh(vbc);
5782 // CHECK: @llvm.ppc.altivec.vupkhsb
5783 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5784
5785 res_vi = vec_unpackh(vs);
5786 // CHECK: @llvm.ppc.altivec.vupkhsh
5787 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5788
5789 res_vbi = vec_unpackh(vbs);
5790 // CHECK: @llvm.ppc.altivec.vupkhsh
5791 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5792
5793 res_vui = vec_unpackh(vp);
5794 // CHECK: @llvm.ppc.altivec.vupkhpx
5795 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5796
5797 res_vui = vec_vupkhpx(vp);
5798 // CHECK: @llvm.ppc.altivec.vupkhpx
5799 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5800
5801 res_vs = vec_vupkhsb(vsc);
5802 // CHECK: @llvm.ppc.altivec.vupkhsb
5803 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5804
5805 res_vbs = vec_vupkhsb(vbc);
5806 // CHECK: @llvm.ppc.altivec.vupkhsb
5807 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5808
5809 res_vi = vec_vupkhsh(vs);
5810 // CHECK: @llvm.ppc.altivec.vupkhsh
5811 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5812
5813 res_vbi = vec_vupkhsh(vbs);
5814 // CHECK: @llvm.ppc.altivec.vupkhsh
5815 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5816
5817 res_vui = vec_vupkhsh(vp);
5818 // CHECK: @llvm.ppc.altivec.vupkhpx
5819 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5820
5821 /* vec_unpackl */
5822 res_vs = vec_unpackl(vsc);
5823 // CHECK: @llvm.ppc.altivec.vupklsb
5824 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5825
5826 res_vbs = vec_unpackl(vbc);
5827 // CHECK: @llvm.ppc.altivec.vupklsb
5828 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5829
5830 res_vi = vec_unpackl(vs);
5831 // CHECK: @llvm.ppc.altivec.vupklsh
5832 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5833
5834 res_vbi = vec_unpackl(vbs);
5835 // CHECK: @llvm.ppc.altivec.vupklsh
5836 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5837
5838 res_vui = vec_unpackl(vp);
5839 // CHECK: @llvm.ppc.altivec.vupklpx
5840 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5841
5842 res_vui = vec_vupklpx(vp);
5843 // CHECK: @llvm.ppc.altivec.vupklpx
5844 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5845
5846 res_vs = vec_vupklsb(vsc);
5847 // CHECK: @llvm.ppc.altivec.vupklsb
5848 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5849
5850 res_vbs = vec_vupklsb(vbc);
5851 // CHECK: @llvm.ppc.altivec.vupklsb
5852 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5853
5854 res_vi = vec_vupklsh(vs);
5855 // CHECK: @llvm.ppc.altivec.vupklsh
5856 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5857
5858 res_vbi = vec_vupklsh(vbs);
5859 // CHECK: @llvm.ppc.altivec.vupklsh
5860 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5861
5862 res_vui = vec_vupklsh(vp);
5863 // CHECK: @llvm.ppc.altivec.vupklpx
5864 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5865
5866 /* vec_xor */
5867 res_vsc = vec_xor(vsc, vsc);
5868 // CHECK: xor <16 x i8>
5869 // CHECK-LE: xor <16 x i8>
5870
5871 res_vsc = vec_xor(vbc, vsc);
5872 // CHECK: xor <16 x i8>
5873 // CHECK-LE: xor <16 x i8>
5874
5875 res_vsc = vec_xor(vsc, vbc);
5876 // CHECK: xor <16 x i8>
5877 // CHECK-LE: xor <16 x i8>
5878
5879 res_vuc = vec_xor(vuc, vuc);
5880 // CHECK: xor <16 x i8>
5881 // CHECK-LE: xor <16 x i8>
5882
5883 res_vuc = vec_xor(vbc, vuc);
5884 // CHECK: xor <16 x i8>
5885 // CHECK-LE: xor <16 x i8>
5886
5887 res_vuc = vec_xor(vuc, vbc);
5888 // CHECK: xor <16 x i8>
5889 // CHECK-LE: xor <16 x i8>
5890
5891 res_vbc = vec_xor(vbc, vbc);
5892 // CHECK: xor <16 x i8>
5893 // CHECK-LE: xor <16 x i8>
5894
5895 res_vs = vec_xor(vs, vs);
5896 // CHECK: xor <8 x i16>
5897 // CHECK-LE: xor <8 x i16>
5898
5899 res_vs = vec_xor(vbs, vs);
5900 // CHECK: xor <8 x i16>
5901 // CHECK-LE: xor <8 x i16>
5902
5903 res_vs = vec_xor(vs, vbs);
5904 // CHECK: xor <8 x i16>
5905 // CHECK-LE: xor <8 x i16>
5906
5907 res_vus = vec_xor(vus, vus);
5908 // CHECK: xor <8 x i16>
5909 // CHECK-LE: xor <8 x i16>
5910
5911 res_vus = vec_xor(vbs, vus);
5912 // CHECK: xor <8 x i16>
5913 // CHECK-LE: xor <8 x i16>
5914
5915 res_vus = vec_xor(vus, vbs);
5916 // CHECK: xor <8 x i16>
5917 // CHECK-LE: xor <8 x i16>
5918
5919 res_vbs = vec_xor(vbs, vbs);
5920 // CHECK: xor <8 x i16>
5921 // CHECK-LE: xor <8 x i16>
5922
5923 res_vi = vec_xor(vi, vi);
5924 // CHECK: xor <4 x i32>
5925 // CHECK-LE: xor <4 x i32>
5926
5927 res_vi = vec_xor(vbi, vi);
5928 // CHECK: xor <4 x i32>
5929 // CHECK-LE: xor <4 x i32>
5930
5931 res_vi = vec_xor(vi, vbi);
5932 // CHECK: xor <4 x i32>
5933 // CHECK-LE: xor <4 x i32>
5934
5935 res_vui = vec_xor(vui, vui);
5936 // CHECK: xor <4 x i32>
5937 // CHECK-LE: xor <4 x i32>
5938
5939 res_vui = vec_xor(vbi, vui);
5940 // CHECK: xor <4 x i32>
5941 // CHECK-LE: xor <4 x i32>
5942
5943 res_vui = vec_xor(vui, vbi);
5944 // CHECK: xor <4 x i32>
5945 // CHECK-LE: xor <4 x i32>
5946
5947 res_vbi = vec_xor(vbi, vbi);
5948 // CHECK: xor <4 x i32>
5949 // CHECK-LE: xor <4 x i32>
5950
5951 res_vf = vec_xor(vf, vf);
5952 // CHECK: xor <4 x i32>
5953 // CHECK-LE: xor <4 x i32>
5954
5955 res_vf = vec_xor(vbi, vf);
5956 // CHECK: xor <4 x i32>
5957 // CHECK-LE: xor <4 x i32>
5958
5959 res_vf = vec_xor(vf, vbi);
5960 // CHECK: xor <4 x i32>
5961 // CHECK-LE: xor <4 x i32>
5962
5963 res_vsc = vec_vxor(vsc, vsc);
5964 // CHECK: xor <16 x i8>
5965 // CHECK-LE: xor <16 x i8>
5966
5967 res_vsc = vec_vxor(vbc, vsc);
5968 // CHECK: xor <16 x i8>
5969 // CHECK-LE: xor <16 x i8>
5970
5971 res_vsc = vec_vxor(vsc, vbc);
5972 // CHECK: xor <16 x i8>
5973 // CHECK-LE: xor <16 x i8>
5974
5975 res_vuc = vec_vxor(vuc, vuc);
5976 // CHECK: xor <16 x i8>
5977 // CHECK-LE: xor <16 x i8>
5978
5979 res_vuc = vec_vxor(vbc, vuc);
5980 // CHECK: xor <16 x i8>
5981 // CHECK-LE: xor <16 x i8>
5982
5983 res_vuc = vec_vxor(vuc, vbc);
5984 // CHECK: xor <16 x i8>
5985 // CHECK-LE: xor <16 x i8>
5986
5987 res_vbc = vec_vxor(vbc, vbc);
5988 // CHECK: xor <16 x i8>
5989 // CHECK-LE: xor <16 x i8>
5990
5991 res_vs = vec_vxor(vs, vs);
5992 // CHECK: xor <8 x i16>
5993 // CHECK-LE: xor <8 x i16>
5994
5995 res_vs = vec_vxor(vbs, vs);
5996 // CHECK: xor <8 x i16>
5997 // CHECK-LE: xor <8 x i16>
5998
5999 res_vs = vec_vxor(vs, vbs);
6000 // CHECK: xor <8 x i16>
6001 // CHECK-LE: xor <8 x i16>
6002
6003 res_vus = vec_vxor(vus, vus);
6004 // CHECK: xor <8 x i16>
6005 // CHECK-LE: xor <8 x i16>
6006
6007 res_vus = vec_vxor(vbs, vus);
6008 // CHECK: xor <8 x i16>
6009 // CHECK-LE: xor <8 x i16>
6010
6011 res_vus = vec_vxor(vus, vbs);
6012 // CHECK: xor <8 x i16>
6013 // CHECK-LE: xor <8 x i16>
6014
6015 res_vbs = vec_vxor(vbs, vbs);
6016 // CHECK: xor <8 x i16>
6017 // CHECK-LE: xor <8 x i16>
6018
6019 res_vi = vec_vxor(vi, vi);
6020 // CHECK: xor <4 x i32>
6021 // CHECK-LE: xor <4 x i32>
6022
6023 res_vi = vec_vxor(vbi, vi);
6024 // CHECK: xor <4 x i32>
6025 // CHECK-LE: xor <4 x i32>
6026
6027 res_vi = vec_vxor(vi, vbi);
6028 // CHECK: xor <4 x i32>
6029 // CHECK-LE: xor <4 x i32>
6030
6031 res_vui = vec_vxor(vui, vui);
6032 // CHECK: xor <4 x i32>
6033 // CHECK-LE: xor <4 x i32>
6034
6035 res_vui = vec_vxor(vbi, vui);
6036 // CHECK: xor <4 x i32>
6037 // CHECK-LE: xor <4 x i32>
6038
6039 res_vui = vec_vxor(vui, vbi);
6040 // CHECK: xor <4 x i32>
6041 // CHECK-LE: xor <4 x i32>
6042
6043 res_vbi = vec_vxor(vbi, vbi);
6044 // CHECK: xor <4 x i32>
6045 // CHECK-LE: xor <4 x i32>
6046
6047 res_vf = vec_vxor(vf, vf);
6048 // CHECK: xor <4 x i32>
6049 // CHECK-LE: xor <4 x i32>
6050
6051 res_vf = vec_vxor(vbi, vf);
6052 // CHECK: xor <4 x i32>
6053 // CHECK-LE: xor <4 x i32>
6054
6055 res_vf = vec_vxor(vf, vbi);
6056 // CHECK: xor <4 x i32>
6057 // CHECK-LE: xor <4 x i32>
6058
6059 /* ------------------------------ extensions -------------------------------------- */
6060
6061 /* vec_extract */
6062 res_sc = vec_extract(vsc, param_i);
6063 // CHECK: extractelement <16 x i8>
6064 // CHECK-LE: extractelement <16 x i8>
6065
6066 res_uc = vec_extract(vuc, param_i);
6067 // CHECK: extractelement <16 x i8>
6068 // CHECK-LE: extractelement <16 x i8>
6069
6070 res_uc = vec_extract(vbc, param_i);
6071 // CHECK: extractelement <16 x i8>
6072 // CHECK-LE: extractelement <16 x i8>
6073
6074 res_s = vec_extract(vs, param_i);
6075 // CHECK: extractelement <8 x i16>
6076 // CHECK-LE: extractelement <8 x i16>
6077
6078 res_us = vec_extract(vus, param_i);
6079 // CHECK: extractelement <8 x i16>
6080 // CHECK-LE: extractelement <8 x i16>
6081
6082 res_us = vec_extract(vbs, param_i);
6083 // CHECK: extractelement <8 x i16>
6084 // CHECK-LE: extractelement <8 x i16>
6085
6086 res_i = vec_extract(vi, param_i);
6087 // CHECK: extractelement <4 x i32>
6088 // CHECK-LE: extractelement <4 x i32>
6089
6090 res_ui = vec_extract(vui, param_i);
6091 // CHECK: extractelement <4 x i32>
6092 // CHECK-LE: extractelement <4 x i32>
6093
6094 res_ui = vec_extract(vbi, param_i);
6095 // CHECK: extractelement <4 x i32>
6096 // CHECK-LE: extractelement <4 x i32>
6097
6098 res_f = vec_extract(vf, param_i);
6099 // CHECK: extractelement <4 x float>
6100 // CHECK-LE: extractelement <4 x float>
6101
6102 /* vec_insert */
6103 res_vsc = vec_insert(param_sc, vsc, param_i);
6104 // CHECK: insertelement <16 x i8>
6105 // CHECK-LE: insertelement <16 x i8>
6106
6107 res_vuc = vec_insert(param_uc, vuc, param_i);
6108 // CHECK: insertelement <16 x i8>
6109 // CHECK-LE: insertelement <16 x i8>
6110
6111 res_vbc = vec_insert(param_uc, vbc, param_i);
6112 // CHECK: insertelement <16 x i8>
6113 // CHECK-LE: insertelement <16 x i8>
6114
6115 res_vs = vec_insert(param_s, vs, param_i);
6116 // CHECK: insertelement <8 x i16>
6117 // CHECK-LE: insertelement <8 x i16>
6118
6119 res_vus = vec_insert(param_us, vus, param_i);
6120 // CHECK: insertelement <8 x i16>
6121 // CHECK-LE: insertelement <8 x i16>
6122
6123 res_vbs = vec_insert(param_us, vbs, param_i);
6124 // CHECK: insertelement <8 x i16>
6125 // CHECK-LE: insertelement <8 x i16>
6126
6127 res_vi = vec_insert(param_i, vi, param_i);
6128 // CHECK: insertelement <4 x i32>
6129 // CHECK-LE: insertelement <4 x i32>
6130
6131 res_vui = vec_insert(param_ui, vui, param_i);
6132 // CHECK: insertelement <4 x i32>
6133 // CHECK-LE: insertelement <4 x i32>
6134
6135 res_vbi = vec_insert(param_ui, vbi, param_i);
6136 // CHECK: insertelement <4 x i32>
6137 // CHECK-LE: insertelement <4 x i32>
6138
6139 res_vf = vec_insert(param_f, vf, param_i);
6140 // CHECK: insertelement <4 x float>
6141 // CHECK-LE: insertelement <4 x float>
6142
6143 /* vec_lvlx */
6144 res_vsc = vec_lvlx(0, param_sc_ld);
6145 // CHECK: @llvm.ppc.altivec.lvx
6146 // CHECK: @llvm.ppc.altivec.lvsl
6147 // CHECK: store <16 x i8> zeroinitializer
6148 // CHECK: @llvm.ppc.altivec.vperm
6149 // CHECK-LE: @llvm.ppc.altivec.lvx
6150 // CHECK-LE: @llvm.ppc.altivec.lvsl
6151 // CHECK-LE: store <16 x i8> zeroinitializer
6152 // CHECK-LE: @llvm.ppc.altivec.vperm
6153
6154 res_vsc = vec_lvlx(0, &vsc);
6155 // CHECK: @llvm.ppc.altivec.lvx
6156 // CHECK: @llvm.ppc.altivec.lvsl
6157 // CHECK: store <16 x i8> zeroinitializer
6158 // CHECK: @llvm.ppc.altivec.vperm
6159 // CHECK-LE: @llvm.ppc.altivec.lvx
6160 // CHECK-LE: @llvm.ppc.altivec.lvsl
6161 // CHECK-LE: store <16 x i8> zeroinitializer
6162 // CHECK-LE: @llvm.ppc.altivec.vperm
6163
6164 res_vuc = vec_lvlx(0, param_uc_ld);
6165 // CHECK: @llvm.ppc.altivec.lvx
6166 // CHECK: @llvm.ppc.altivec.lvsl
6167 // CHECK: store <16 x i8> zeroinitializer
6168 // CHECK: @llvm.ppc.altivec.vperm
6169 // CHECK-LE: @llvm.ppc.altivec.lvx
6170 // CHECK-LE: @llvm.ppc.altivec.lvsl
6171 // CHECK-LE: store <16 x i8> zeroinitializer
6172 // CHECK-LE: @llvm.ppc.altivec.vperm
6173
6174 res_vuc = vec_lvlx(0, &vuc);
6175 // CHECK: @llvm.ppc.altivec.lvx
6176 // CHECK: @llvm.ppc.altivec.lvsl
6177 // CHECK: store <16 x i8> zeroinitializer
6178 // CHECK: @llvm.ppc.altivec.vperm
6179 // CHECK-LE: @llvm.ppc.altivec.lvx
6180 // CHECK-LE: @llvm.ppc.altivec.lvsl
6181 // CHECK-LE: store <16 x i8> zeroinitializer
6182 // CHECK-LE: @llvm.ppc.altivec.vperm
6183
6184 res_vbc = vec_lvlx(0, &vbc);
6185 // CHECK: @llvm.ppc.altivec.lvx
6186 // CHECK: store <16 x i8> zeroinitializer
6187 // CHECK: @llvm.ppc.altivec.lvsl
6188 // CHECK: @llvm.ppc.altivec.vperm
6189 // CHECK-LE: @llvm.ppc.altivec.lvx
6190 // CHECK-LE: store <16 x i8> zeroinitializer
6191 // CHECK-LE: @llvm.ppc.altivec.lvsl
6192 // CHECK-LE: @llvm.ppc.altivec.vperm
6193
6194 res_vs = vec_lvlx(0, param_s_ld);
6195 // CHECK: @llvm.ppc.altivec.lvx
6196 // CHECK: @llvm.ppc.altivec.lvsl
6197 // CHECK: store <8 x i16> zeroinitializer
6198 // CHECK: @llvm.ppc.altivec.vperm
6199 // CHECK-LE: @llvm.ppc.altivec.lvx
6200 // CHECK-LE: @llvm.ppc.altivec.lvsl
6201 // CHECK-LE: store <8 x i16> zeroinitializer
6202 // CHECK-LE: @llvm.ppc.altivec.vperm
6203
6204 res_vs = vec_lvlx(0, &vs);
6205 // CHECK: @llvm.ppc.altivec.lvx
6206 // CHECK: @llvm.ppc.altivec.lvsl
6207 // CHECK: store <8 x i16> zeroinitializer
6208 // CHECK: @llvm.ppc.altivec.vperm
6209 // CHECK-LE: @llvm.ppc.altivec.lvx
6210 // CHECK-LE: @llvm.ppc.altivec.lvsl
6211 // CHECK-LE: store <8 x i16> zeroinitializer
6212 // CHECK-LE: @llvm.ppc.altivec.vperm
6213
6214 res_vus = vec_lvlx(0, param_us_ld);
6215 // CHECK: @llvm.ppc.altivec.lvx
6216 // CHECK: @llvm.ppc.altivec.lvsl
6217 // CHECK: store <8 x i16> zeroinitializer
6218 // CHECK: @llvm.ppc.altivec.vperm
6219 // CHECK-LE: @llvm.ppc.altivec.lvx
6220 // CHECK-LE: @llvm.ppc.altivec.lvsl
6221 // CHECK-LE: store <8 x i16> zeroinitializer
6222 // CHECK-LE: @llvm.ppc.altivec.vperm
6223
6224 res_vus = vec_lvlx(0, &vus);
6225 // CHECK: @llvm.ppc.altivec.lvx
6226 // CHECK: @llvm.ppc.altivec.lvsl
6227 // CHECK: store <8 x i16> zeroinitializer
6228 // CHECK: @llvm.ppc.altivec.vperm
6229 // CHECK-LE: @llvm.ppc.altivec.lvx
6230 // CHECK-LE: @llvm.ppc.altivec.lvsl
6231 // CHECK-LE: store <8 x i16> zeroinitializer
6232 // CHECK-LE: @llvm.ppc.altivec.vperm
6233
6234 res_vbs = vec_lvlx(0, &vbs);
6235 // CHECK: @llvm.ppc.altivec.lvx
6236 // CHECK: store <8 x i16> zeroinitializer
6237 // CHECK: @llvm.ppc.altivec.lvsl
6238 // CHECK: @llvm.ppc.altivec.vperm
6239 // CHECK-LE: @llvm.ppc.altivec.lvx
6240 // CHECK-LE: store <8 x i16> zeroinitializer
6241 // CHECK-LE: @llvm.ppc.altivec.lvsl
6242 // CHECK-LE: @llvm.ppc.altivec.vperm
6243
6244 res_vp = vec_lvlx(0, &vp);
6245 // CHECK: @llvm.ppc.altivec.lvx
6246 // CHECK: store <8 x i16> zeroinitializer
6247 // CHECK: @llvm.ppc.altivec.lvsl
6248 // CHECK: @llvm.ppc.altivec.vperm
6249 // CHECK-LE: @llvm.ppc.altivec.lvx
6250 // CHECK-LE: store <8 x i16> zeroinitializer
6251 // CHECK-LE: @llvm.ppc.altivec.lvsl
6252 // CHECK-LE: @llvm.ppc.altivec.vperm
6253
6254 res_vi = vec_lvlx(0, param_i_ld);
6255 // CHECK: @llvm.ppc.altivec.lvx
6256 // CHECK: @llvm.ppc.altivec.lvsl
6257 // CHECK: store <4 x i32> zeroinitializer
6258 // CHECK: @llvm.ppc.altivec.vperm
6259 // CHECK-LE: @llvm.ppc.altivec.lvx
6260 // CHECK-LE: @llvm.ppc.altivec.lvsl
6261 // CHECK-LE: store <4 x i32> zeroinitializer
6262 // CHECK-LE: @llvm.ppc.altivec.vperm
6263
6264 res_vi = vec_lvlx(0, &vi);
6265 // CHECK: @llvm.ppc.altivec.lvx
6266 // CHECK: @llvm.ppc.altivec.lvsl
6267 // CHECK: store <4 x i32> zeroinitializer
6268 // CHECK: @llvm.ppc.altivec.vperm
6269 // CHECK-LE: @llvm.ppc.altivec.lvx
6270 // CHECK-LE: @llvm.ppc.altivec.lvsl
6271 // CHECK-LE: store <4 x i32> zeroinitializer
6272 // CHECK-LE: @llvm.ppc.altivec.vperm
6273
6274 res_vui = vec_lvlx(0, param_ui_ld);
6275 // CHECK: @llvm.ppc.altivec.lvx
6276 // CHECK: @llvm.ppc.altivec.lvsl
6277 // CHECK: store <4 x i32> zeroinitializer
6278 // CHECK: @llvm.ppc.altivec.vperm
6279 // CHECK-LE: @llvm.ppc.altivec.lvx
6280 // CHECK-LE: @llvm.ppc.altivec.lvsl
6281 // CHECK-LE: store <4 x i32> zeroinitializer
6282 // CHECK-LE: @llvm.ppc.altivec.vperm
6283
6284 res_vui = vec_lvlx(0, &vui);
6285 // CHECK: @llvm.ppc.altivec.lvx
6286 // CHECK: @llvm.ppc.altivec.lvsl
6287 // CHECK: store <4 x i32> zeroinitializer
6288 // CHECK: @llvm.ppc.altivec.vperm
6289 // CHECK-LE: @llvm.ppc.altivec.lvx
6290 // CHECK-LE: @llvm.ppc.altivec.lvsl
6291 // CHECK-LE: store <4 x i32> zeroinitializer
6292 // CHECK-LE: @llvm.ppc.altivec.vperm
6293
6294 res_vbi = vec_lvlx(0, &vbi);
6295 // CHECK: @llvm.ppc.altivec.lvx
6296 // CHECK: store <4 x i32> zeroinitializer
6297 // CHECK: @llvm.ppc.altivec.lvsl
6298 // CHECK: @llvm.ppc.altivec.vperm
6299 // CHECK-LE: @llvm.ppc.altivec.lvx
6300 // CHECK-LE: store <4 x i32> zeroinitializer
6301 // CHECK-LE: @llvm.ppc.altivec.lvsl
6302 // CHECK-LE: @llvm.ppc.altivec.vperm
6303
6304 res_vf = vec_lvlx(0, &vf);
6305 // CHECK: @llvm.ppc.altivec.lvx
6306 // CHECK: @llvm.ppc.altivec.lvsl
6307 // CHECK: store <4 x float> zeroinitializer
6308 // CHECK: @llvm.ppc.altivec.vperm
6309 // CHECK-LE: @llvm.ppc.altivec.lvx
6310 // CHECK-LE: @llvm.ppc.altivec.lvsl
6311 // CHECK-LE: store <4 x float> zeroinitializer
6312 // CHECK-LE: @llvm.ppc.altivec.vperm
6313
6314 /* vec_lvlxl */
6315 res_vsc = vec_lvlxl(0, param_sc_ld);
6316 // CHECK: @llvm.ppc.altivec.lvxl
6317 // CHECK: @llvm.ppc.altivec.lvsl
6318 // CHECK: store <16 x i8> zeroinitializer
6319 // CHECK: @llvm.ppc.altivec.vperm
6320 // CHECK-LE: @llvm.ppc.altivec.lvxl
6321 // CHECK-LE: @llvm.ppc.altivec.lvsl
6322 // CHECK-LE: store <16 x i8> zeroinitializer
6323 // CHECK-LE: @llvm.ppc.altivec.vperm
6324
6325 res_vsc = vec_lvlxl(0, &vsc);
6326 // CHECK: @llvm.ppc.altivec.lvxl
6327 // CHECK: @llvm.ppc.altivec.lvsl
6328 // CHECK: store <16 x i8> zeroinitializer
6329 // CHECK: @llvm.ppc.altivec.vperm
6330 // CHECK-LE: @llvm.ppc.altivec.lvxl
6331 // CHECK-LE: @llvm.ppc.altivec.lvsl
6332 // CHECK-LE: store <16 x i8> zeroinitializer
6333 // CHECK-LE: @llvm.ppc.altivec.vperm
6334
6335 res_vuc = vec_lvlxl(0, param_uc_ld);
6336 // CHECK: @llvm.ppc.altivec.lvxl
6337 // CHECK: @llvm.ppc.altivec.lvsl
6338 // CHECK: store <16 x i8> zeroinitializer
6339 // CHECK: @llvm.ppc.altivec.vperm
6340 // CHECK-LE: @llvm.ppc.altivec.lvxl
6341 // CHECK-LE: @llvm.ppc.altivec.lvsl
6342 // CHECK-LE: store <16 x i8> zeroinitializer
6343 // CHECK-LE: @llvm.ppc.altivec.vperm
6344
6345 res_vuc = vec_lvlxl(0, &vuc);
6346 // CHECK: @llvm.ppc.altivec.lvxl
6347 // CHECK: @llvm.ppc.altivec.lvsl
6348 // CHECK: store <16 x i8> zeroinitializer
6349 // CHECK: @llvm.ppc.altivec.vperm
6350 // CHECK-LE: @llvm.ppc.altivec.lvxl
6351 // CHECK-LE: @llvm.ppc.altivec.lvsl
6352 // CHECK-LE: store <16 x i8> zeroinitializer
6353 // CHECK-LE: @llvm.ppc.altivec.vperm
6354
6355 res_vbc = vec_lvlxl(0, &vbc);
6356 // CHECK: @llvm.ppc.altivec.lvxl
6357 // CHECK: store <16 x i8> zeroinitializer
6358 // CHECK: @llvm.ppc.altivec.lvsl
6359 // CHECK: @llvm.ppc.altivec.vperm
6360 // CHECK-LE: @llvm.ppc.altivec.lvxl
6361 // CHECK-LE: store <16 x i8> zeroinitializer
6362 // CHECK-LE: @llvm.ppc.altivec.lvsl
6363 // CHECK-LE: @llvm.ppc.altivec.vperm
6364
6365 res_vs = vec_lvlxl(0, param_s_ld);
6366 // CHECK: @llvm.ppc.altivec.lvxl
6367 // CHECK: @llvm.ppc.altivec.lvsl
6368 // CHECK: store <8 x i16> zeroinitializer
6369 // CHECK: @llvm.ppc.altivec.vperm
6370 // CHECK-LE: @llvm.ppc.altivec.lvxl
6371 // CHECK-LE: @llvm.ppc.altivec.lvsl
6372 // CHECK-LE: store <8 x i16> zeroinitializer
6373 // CHECK-LE: @llvm.ppc.altivec.vperm
6374
6375 res_vs = vec_lvlxl(0, &vs);
6376 // CHECK: @llvm.ppc.altivec.lvxl
6377 // CHECK: @llvm.ppc.altivec.lvsl
6378 // CHECK: store <8 x i16> zeroinitializer
6379 // CHECK: @llvm.ppc.altivec.vperm
6380 // CHECK-LE: @llvm.ppc.altivec.lvxl
6381 // CHECK-LE: @llvm.ppc.altivec.lvsl
6382 // CHECK-LE: store <8 x i16> zeroinitializer
6383 // CHECK-LE: @llvm.ppc.altivec.vperm
6384
6385 res_vus = vec_lvlxl(0, param_us_ld);
6386 // CHECK: @llvm.ppc.altivec.lvxl
6387 // CHECK: @llvm.ppc.altivec.lvsl
6388 // CHECK: store <8 x i16> zeroinitializer
6389 // CHECK: @llvm.ppc.altivec.vperm
6390 // CHECK-LE: @llvm.ppc.altivec.lvxl
6391 // CHECK-LE: @llvm.ppc.altivec.lvsl
6392 // CHECK-LE: store <8 x i16> zeroinitializer
6393 // CHECK-LE: @llvm.ppc.altivec.vperm
6394
6395 res_vus = vec_lvlxl(0, &vus);
6396 // CHECK: @llvm.ppc.altivec.lvxl
6397 // CHECK: @llvm.ppc.altivec.lvsl
6398 // CHECK: store <8 x i16> zeroinitializer
6399 // CHECK: @llvm.ppc.altivec.vperm
6400 // CHECK-LE: @llvm.ppc.altivec.lvxl
6401 // CHECK-LE: @llvm.ppc.altivec.lvsl
6402 // CHECK-LE: store <8 x i16> zeroinitializer
6403 // CHECK-LE: @llvm.ppc.altivec.vperm
6404
6405 res_vbs = vec_lvlxl(0, &vbs);
6406 // CHECK: @llvm.ppc.altivec.lvxl
6407 // CHECK: store <8 x i16> zeroinitializer
6408 // CHECK: @llvm.ppc.altivec.lvsl
6409 // CHECK: @llvm.ppc.altivec.vperm
6410 // CHECK-LE: @llvm.ppc.altivec.lvxl
6411 // CHECK-LE: store <8 x i16> zeroinitializer
6412 // CHECK-LE: @llvm.ppc.altivec.lvsl
6413 // CHECK-LE: @llvm.ppc.altivec.vperm
6414
6415 res_vp = vec_lvlxl(0, &vp);
6416 // CHECK: @llvm.ppc.altivec.lvxl
6417 // CHECK: store <8 x i16> zeroinitializer
6418 // CHECK: @llvm.ppc.altivec.lvsl
6419 // CHECK: @llvm.ppc.altivec.vperm
6420 // CHECK-LE: @llvm.ppc.altivec.lvxl
6421 // CHECK-LE: store <8 x i16> zeroinitializer
6422 // CHECK-LE: @llvm.ppc.altivec.lvsl
6423 // CHECK-LE: @llvm.ppc.altivec.vperm
6424
6425 res_vi = vec_lvlxl(0, param_i_ld);
6426 // CHECK: @llvm.ppc.altivec.lvxl
6427 // CHECK: @llvm.ppc.altivec.lvsl
6428 // CHECK: store <4 x i32> zeroinitializer
6429 // CHECK: @llvm.ppc.altivec.vperm
6430 // CHECK-LE: @llvm.ppc.altivec.lvxl
6431 // CHECK-LE: @llvm.ppc.altivec.lvsl
6432 // CHECK-LE: store <4 x i32> zeroinitializer
6433 // CHECK-LE: @llvm.ppc.altivec.vperm
6434
6435 res_vi = vec_lvlxl(0, &vi);
6436 // CHECK: @llvm.ppc.altivec.lvxl
6437 // CHECK: @llvm.ppc.altivec.lvsl
6438 // CHECK: store <4 x i32> zeroinitializer
6439 // CHECK: @llvm.ppc.altivec.vperm
6440 // CHECK-LE: @llvm.ppc.altivec.lvxl
6441 // CHECK-LE: @llvm.ppc.altivec.lvsl
6442 // CHECK-LE: store <4 x i32> zeroinitializer
6443 // CHECK-LE: @llvm.ppc.altivec.vperm
6444
6445 res_vui = vec_lvlxl(0, param_ui_ld);
6446 // CHECK: @llvm.ppc.altivec.lvxl
6447 // CHECK: @llvm.ppc.altivec.lvsl
6448 // CHECK: store <4 x i32> zeroinitializer
6449 // CHECK: @llvm.ppc.altivec.vperm
6450 // CHECK-LE: @llvm.ppc.altivec.lvxl
6451 // CHECK-LE: @llvm.ppc.altivec.lvsl
6452 // CHECK-LE: store <4 x i32> zeroinitializer
6453 // CHECK-LE: @llvm.ppc.altivec.vperm
6454
6455 res_vui = vec_lvlxl(0, &vui);
6456 // CHECK: @llvm.ppc.altivec.lvxl
6457 // CHECK: @llvm.ppc.altivec.lvsl
6458 // CHECK: store <4 x i32> zeroinitializer
6459 // CHECK: @llvm.ppc.altivec.vperm
6460 // CHECK-LE: @llvm.ppc.altivec.lvxl
6461 // CHECK-LE: @llvm.ppc.altivec.lvsl
6462 // CHECK-LE: store <4 x i32> zeroinitializer
6463 // CHECK-LE: @llvm.ppc.altivec.vperm
6464
6465 res_vbi = vec_lvlxl(0, &vbi);
6466 // CHECK: @llvm.ppc.altivec.lvxl
6467 // CHECK: store <4 x i32> zeroinitializer
6468 // CHECK: @llvm.ppc.altivec.lvsl
6469 // CHECK: @llvm.ppc.altivec.vperm
6470 // CHECK-LE: @llvm.ppc.altivec.lvxl
6471 // CHECK-LE: store <4 x i32> zeroinitializer
6472 // CHECK-LE: @llvm.ppc.altivec.lvsl
6473 // CHECK-LE: @llvm.ppc.altivec.vperm
6474
6475 res_vf = vec_lvlxl(0, &vf);
6476 // CHECK: @llvm.ppc.altivec.lvxl
6477 // CHECK: @llvm.ppc.altivec.lvsl
6478 // CHECK: store <4 x float> zeroinitializer
6479 // CHECK: @llvm.ppc.altivec.vperm
6480 // CHECK-LE: @llvm.ppc.altivec.lvxl
6481 // CHECK-LE: @llvm.ppc.altivec.lvsl
6482 // CHECK-LE: store <4 x float> zeroinitializer
6483 // CHECK-LE: @llvm.ppc.altivec.vperm
6484
6485 /* vec_lvrx */
6486 res_vsc = vec_lvrx(0, param_sc_ld);
6487 // CHECK: @llvm.ppc.altivec.lvx
6488 // CHECK: @llvm.ppc.altivec.lvsl
6489 // CHECK: store <16 x i8> zeroinitializer
6490 // CHECK: @llvm.ppc.altivec.vperm
6491 // CHECK-LE: @llvm.ppc.altivec.lvx
6492 // CHECK-LE: @llvm.ppc.altivec.lvsl
6493 // CHECK-LE: store <16 x i8> zeroinitializer
6494 // CHECK-LE: @llvm.ppc.altivec.vperm
6495
6496 res_vsc = vec_lvrx(0, &vsc);
6497 // CHECK: @llvm.ppc.altivec.lvx
6498 // CHECK: @llvm.ppc.altivec.lvsl
6499 // CHECK: store <16 x i8> zeroinitializer
6500 // CHECK: @llvm.ppc.altivec.vperm
6501 // CHECK-LE: @llvm.ppc.altivec.lvx
6502 // CHECK-LE: @llvm.ppc.altivec.lvsl
6503 // CHECK-LE: store <16 x i8> zeroinitializer
6504 // CHECK-LE: @llvm.ppc.altivec.vperm
6505
6506 res_vuc = vec_lvrx(0, param_uc_ld);
6507 // CHECK: @llvm.ppc.altivec.lvx
6508 // CHECK: @llvm.ppc.altivec.lvsl
6509 // CHECK: store <16 x i8> zeroinitializer
6510 // CHECK: @llvm.ppc.altivec.vperm
6511 // CHECK-LE: @llvm.ppc.altivec.lvx
6512 // CHECK-LE: @llvm.ppc.altivec.lvsl
6513 // CHECK-LE: store <16 x i8> zeroinitializer
6514 // CHECK-LE: @llvm.ppc.altivec.vperm
6515
6516 res_vuc = vec_lvrx(0, &vuc);
6517 // CHECK: @llvm.ppc.altivec.lvx
6518 // CHECK: @llvm.ppc.altivec.lvsl
6519 // CHECK: store <16 x i8> zeroinitializer
6520 // CHECK: @llvm.ppc.altivec.vperm
6521 // CHECK-LE: @llvm.ppc.altivec.lvx
6522 // CHECK-LE: @llvm.ppc.altivec.lvsl
6523 // CHECK-LE: store <16 x i8> zeroinitializer
6524 // CHECK-LE: @llvm.ppc.altivec.vperm
6525
6526 res_vbc = vec_lvrx(0, &vbc);
6527 // CHECK: store <16 x i8> zeroinitializer
6528 // CHECK: @llvm.ppc.altivec.lvx
6529 // CHECK: @llvm.ppc.altivec.lvsl
6530 // CHECK: @llvm.ppc.altivec.vperm
6531 // CHECK-LE: store <16 x i8> zeroinitializer
6532 // CHECK-LE: @llvm.ppc.altivec.lvx
6533 // CHECK-LE: @llvm.ppc.altivec.lvsl
6534 // CHECK-LE: @llvm.ppc.altivec.vperm
6535
6536 res_vs = vec_lvrx(0, param_s_ld);
6537 // CHECK: @llvm.ppc.altivec.lvx
6538 // CHECK: @llvm.ppc.altivec.lvsl
6539 // CHECK: store <8 x i16> zeroinitializer
6540 // CHECK: @llvm.ppc.altivec.vperm
6541 // CHECK-LE: @llvm.ppc.altivec.lvx
6542 // CHECK-LE: @llvm.ppc.altivec.lvsl
6543 // CHECK-LE: store <8 x i16> zeroinitializer
6544 // CHECK-LE: @llvm.ppc.altivec.vperm
6545
6546 res_vs = vec_lvrx(0, &vs);
6547 // CHECK: @llvm.ppc.altivec.lvx
6548 // CHECK: @llvm.ppc.altivec.lvsl
6549 // CHECK: store <8 x i16> zeroinitializer
6550 // CHECK: @llvm.ppc.altivec.vperm
6551 // CHECK-LE: @llvm.ppc.altivec.lvx
6552 // CHECK-LE: @llvm.ppc.altivec.lvsl
6553 // CHECK-LE: store <8 x i16> zeroinitializer
6554 // CHECK-LE: @llvm.ppc.altivec.vperm
6555
6556 res_vus = vec_lvrx(0, param_us_ld);
6557 // CHECK: @llvm.ppc.altivec.lvx
6558 // CHECK: @llvm.ppc.altivec.lvsl
6559 // CHECK: store <8 x i16> zeroinitializer
6560 // CHECK: @llvm.ppc.altivec.vperm
6561 // CHECK-LE: @llvm.ppc.altivec.lvx
6562 // CHECK-LE: @llvm.ppc.altivec.lvsl
6563 // CHECK-LE: store <8 x i16> zeroinitializer
6564 // CHECK-LE: @llvm.ppc.altivec.vperm
6565
6566 res_vus = vec_lvrx(0, &vus);
6567 // CHECK: @llvm.ppc.altivec.lvx
6568 // CHECK: @llvm.ppc.altivec.lvsl
6569 // CHECK: store <8 x i16> zeroinitializer
6570 // CHECK: @llvm.ppc.altivec.vperm
6571 // CHECK-LE: @llvm.ppc.altivec.lvx
6572 // CHECK-LE: @llvm.ppc.altivec.lvsl
6573 // CHECK-LE: store <8 x i16> zeroinitializer
6574 // CHECK-LE: @llvm.ppc.altivec.vperm
6575
6576 res_vbs = vec_lvrx(0, &vbs);
6577 // CHECK: store <8 x i16> zeroinitializer
6578 // CHECK: @llvm.ppc.altivec.lvx
6579 // CHECK: @llvm.ppc.altivec.lvsl
6580 // CHECK: @llvm.ppc.altivec.vperm
6581 // CHECK-LE: store <8 x i16> zeroinitializer
6582 // CHECK-LE: @llvm.ppc.altivec.lvx
6583 // CHECK-LE: @llvm.ppc.altivec.lvsl
6584 // CHECK-LE: @llvm.ppc.altivec.vperm
6585
6586 res_vp = vec_lvrx(0, &vp);
6587 // CHECK: store <8 x i16> zeroinitializer
6588 // CHECK: @llvm.ppc.altivec.lvx
6589 // CHECK: @llvm.ppc.altivec.lvsl
6590 // CHECK: @llvm.ppc.altivec.vperm
6591 // CHECK-LE: store <8 x i16> zeroinitializer
6592 // CHECK-LE: @llvm.ppc.altivec.lvx
6593 // CHECK-LE: @llvm.ppc.altivec.lvsl
6594 // CHECK-LE: @llvm.ppc.altivec.vperm
6595
6596 res_vi = vec_lvrx(0, param_i_ld);
6597 // CHECK: @llvm.ppc.altivec.lvx
6598 // CHECK: @llvm.ppc.altivec.lvsl
6599 // CHECK: store <4 x i32> zeroinitializer
6600 // CHECK: @llvm.ppc.altivec.vperm
6601 // CHECK-LE: @llvm.ppc.altivec.lvx
6602 // CHECK-LE: @llvm.ppc.altivec.lvsl
6603 // CHECK-LE: store <4 x i32> zeroinitializer
6604 // CHECK-LE: @llvm.ppc.altivec.vperm
6605
6606 res_vi = vec_lvrx(0, &vi);
6607 // CHECK: @llvm.ppc.altivec.lvx
6608 // CHECK: @llvm.ppc.altivec.lvsl
6609 // CHECK: store <4 x i32> zeroinitializer
6610 // CHECK: @llvm.ppc.altivec.vperm
6611 // CHECK-LE: @llvm.ppc.altivec.lvx
6612 // CHECK-LE: @llvm.ppc.altivec.lvsl
6613 // CHECK-LE: store <4 x i32> zeroinitializer
6614 // CHECK-LE: @llvm.ppc.altivec.vperm
6615
6616 res_vui = vec_lvrx(0, param_ui_ld);
6617 // CHECK: @llvm.ppc.altivec.lvx
6618 // CHECK: @llvm.ppc.altivec.lvsl
6619 // CHECK: store <4 x i32> zeroinitializer
6620 // CHECK: @llvm.ppc.altivec.vperm
6621 // CHECK-LE: @llvm.ppc.altivec.lvx
6622 // CHECK-LE: @llvm.ppc.altivec.lvsl
6623 // CHECK-LE: store <4 x i32> zeroinitializer
6624 // CHECK-LE: @llvm.ppc.altivec.vperm
6625
6626 res_vui = vec_lvrx(0, &vui);
6627 // CHECK: @llvm.ppc.altivec.lvx
6628 // CHECK: @llvm.ppc.altivec.lvsl
6629 // CHECK: store <4 x i32> zeroinitializer
6630 // CHECK: @llvm.ppc.altivec.vperm
6631 // CHECK-LE: @llvm.ppc.altivec.lvx
6632 // CHECK-LE: @llvm.ppc.altivec.lvsl
6633 // CHECK-LE: store <4 x i32> zeroinitializer
6634 // CHECK-LE: @llvm.ppc.altivec.vperm
6635
6636 res_vbi = vec_lvrx(0, &vbi);
6637 // CHECK: store <4 x i32> zeroinitializer
6638 // CHECK: @llvm.ppc.altivec.lvx
6639 // CHECK: @llvm.ppc.altivec.lvsl
6640 // CHECK: @llvm.ppc.altivec.vperm
6641 // CHECK-LE: store <4 x i32> zeroinitializer
6642 // CHECK-LE: @llvm.ppc.altivec.lvx
6643 // CHECK-LE: @llvm.ppc.altivec.lvsl
6644 // CHECK-LE: @llvm.ppc.altivec.vperm
6645
6646 res_vf = vec_lvrx(0, &vf);
6647 // CHECK: @llvm.ppc.altivec.lvx
6648 // CHECK: @llvm.ppc.altivec.lvsl
6649 // CHECK: store <4 x float> zeroinitializer
6650 // CHECK: @llvm.ppc.altivec.vperm
6651 // CHECK-LE: @llvm.ppc.altivec.lvx
6652 // CHECK-LE: @llvm.ppc.altivec.lvsl
6653 // CHECK-LE: store <4 x float> zeroinitializer
6654 // CHECK-LE: @llvm.ppc.altivec.vperm
6655
6656 /* vec_lvrxl */
6657 res_vsc = vec_lvrxl(0, param_sc_ld);
6658 // CHECK: @llvm.ppc.altivec.lvxl
6659 // CHECK: @llvm.ppc.altivec.lvsl
6660 // CHECK: store <16 x i8> zeroinitializer
6661 // CHECK: @llvm.ppc.altivec.vperm
6662 // CHECK-LE: @llvm.ppc.altivec.lvxl
6663 // CHECK-LE: @llvm.ppc.altivec.lvsl
6664 // CHECK-LE: store <16 x i8> zeroinitializer
6665 // CHECK-LE: @llvm.ppc.altivec.vperm
6666
6667 res_vsc = vec_lvrxl(0, &vsc);
6668 // CHECK: @llvm.ppc.altivec.lvxl
6669 // CHECK: @llvm.ppc.altivec.lvsl
6670 // CHECK: store <16 x i8> zeroinitializer
6671 // CHECK: @llvm.ppc.altivec.vperm
6672 // CHECK-LE: @llvm.ppc.altivec.lvxl
6673 // CHECK-LE: @llvm.ppc.altivec.lvsl
6674 // CHECK-LE: store <16 x i8> zeroinitializer
6675 // CHECK-LE: @llvm.ppc.altivec.vperm
6676
6677 res_vuc = vec_lvrxl(0, param_uc_ld);
6678 // CHECK: @llvm.ppc.altivec.lvxl
6679 // CHECK: @llvm.ppc.altivec.lvsl
6680 // CHECK: store <16 x i8> zeroinitializer
6681 // CHECK: @llvm.ppc.altivec.vperm
6682 // CHECK-LE: @llvm.ppc.altivec.lvxl
6683 // CHECK-LE: @llvm.ppc.altivec.lvsl
6684 // CHECK-LE: store <16 x i8> zeroinitializer
6685 // CHECK-LE: @llvm.ppc.altivec.vperm
6686
6687 res_vuc = vec_lvrxl(0, &vuc);
6688 // CHECK: @llvm.ppc.altivec.lvxl
6689 // CHECK: @llvm.ppc.altivec.lvsl
6690 // CHECK: store <16 x i8> zeroinitializer
6691 // CHECK: @llvm.ppc.altivec.vperm
6692 // CHECK-LE: @llvm.ppc.altivec.lvxl
6693 // CHECK-LE: @llvm.ppc.altivec.lvsl
6694 // CHECK-LE: store <16 x i8> zeroinitializer
6695 // CHECK-LE: @llvm.ppc.altivec.vperm
6696
6697 res_vbc = vec_lvrxl(0, &vbc);
6698 // CHECK: store <16 x i8> zeroinitializer
6699 // CHECK: @llvm.ppc.altivec.lvxl
6700 // CHECK: @llvm.ppc.altivec.lvsl
6701 // CHECK: @llvm.ppc.altivec.vperm
6702 // CHECK-LE: store <16 x i8> zeroinitializer
6703 // CHECK-LE: @llvm.ppc.altivec.lvxl
6704 // CHECK-LE: @llvm.ppc.altivec.lvsl
6705 // CHECK-LE: @llvm.ppc.altivec.vperm
6706
6707 res_vs = vec_lvrxl(0, param_s_ld);
6708 // CHECK: @llvm.ppc.altivec.lvxl
6709 // CHECK: @llvm.ppc.altivec.lvsl
6710 // CHECK: store <8 x i16> zeroinitializer
6711 // CHECK: @llvm.ppc.altivec.vperm
6712 // CHECK-LE: @llvm.ppc.altivec.lvxl
6713 // CHECK-LE: @llvm.ppc.altivec.lvsl
6714 // CHECK-LE: store <8 x i16> zeroinitializer
6715 // CHECK-LE: @llvm.ppc.altivec.vperm
6716
6717 res_vs = vec_lvrxl(0, &vs);
6718 // CHECK: @llvm.ppc.altivec.lvxl
6719 // CHECK: @llvm.ppc.altivec.lvsl
6720 // CHECK: store <8 x i16> zeroinitializer
6721 // CHECK: @llvm.ppc.altivec.vperm
6722 // CHECK-LE: @llvm.ppc.altivec.lvxl
6723 // CHECK-LE: @llvm.ppc.altivec.lvsl
6724 // CHECK-LE: store <8 x i16> zeroinitializer
6725 // CHECK-LE: @llvm.ppc.altivec.vperm
6726
6727 res_vus = vec_lvrxl(0, param_us_ld);
6728 // CHECK: @llvm.ppc.altivec.lvxl
6729 // CHECK: @llvm.ppc.altivec.lvsl
6730 // CHECK: store <8 x i16> zeroinitializer
6731 // CHECK: @llvm.ppc.altivec.vperm
6732 // CHECK-LE: @llvm.ppc.altivec.lvxl
6733 // CHECK-LE: @llvm.ppc.altivec.lvsl
6734 // CHECK-LE: store <8 x i16> zeroinitializer
6735 // CHECK-LE: @llvm.ppc.altivec.vperm
6736
6737 res_vus = vec_lvrxl(0, &vus);
6738 // CHECK: @llvm.ppc.altivec.lvxl
6739 // CHECK: @llvm.ppc.altivec.lvsl
6740 // CHECK: store <8 x i16> zeroinitializer
6741 // CHECK: @llvm.ppc.altivec.vperm
6742 // CHECK-LE: @llvm.ppc.altivec.lvxl
6743 // CHECK-LE: @llvm.ppc.altivec.lvsl
6744 // CHECK-LE: store <8 x i16> zeroinitializer
6745 // CHECK-LE: @llvm.ppc.altivec.vperm
6746
6747 res_vbs = vec_lvrxl(0, &vbs);
6748 // CHECK: store <8 x i16> zeroinitializer
6749 // CHECK: @llvm.ppc.altivec.lvxl
6750 // CHECK: @llvm.ppc.altivec.lvsl
6751 // CHECK: @llvm.ppc.altivec.vperm
6752 // CHECK-LE: store <8 x i16> zeroinitializer
6753 // CHECK-LE: @llvm.ppc.altivec.lvxl
6754 // CHECK-LE: @llvm.ppc.altivec.lvsl
6755 // CHECK-LE: @llvm.ppc.altivec.vperm
6756
6757 res_vp = vec_lvrxl(0, &vp);
6758 // CHECK: store <8 x i16> zeroinitializer
6759 // CHECK: @llvm.ppc.altivec.lvxl
6760 // CHECK: @llvm.ppc.altivec.lvsl
6761 // CHECK: @llvm.ppc.altivec.vperm
6762 // CHECK-LE: store <8 x i16> zeroinitializer
6763 // CHECK-LE: @llvm.ppc.altivec.lvxl
6764 // CHECK-LE: @llvm.ppc.altivec.lvsl
6765 // CHECK-LE: @llvm.ppc.altivec.vperm
6766
6767 res_vi = vec_lvrxl(0, param_i_ld);
6768 // CHECK: @llvm.ppc.altivec.lvxl
6769 // CHECK: @llvm.ppc.altivec.lvsl
6770 // CHECK: store <4 x i32> zeroinitializer
6771 // CHECK: @llvm.ppc.altivec.vperm
6772 // CHECK-LE: @llvm.ppc.altivec.lvxl
6773 // CHECK-LE: @llvm.ppc.altivec.lvsl
6774 // CHECK-LE: store <4 x i32> zeroinitializer
6775 // CHECK-LE: @llvm.ppc.altivec.vperm
6776
6777 res_vi = vec_lvrxl(0, &vi);
6778 // CHECK: @llvm.ppc.altivec.lvxl
6779 // CHECK: @llvm.ppc.altivec.lvsl
6780 // CHECK: store <4 x i32> zeroinitializer
6781 // CHECK: @llvm.ppc.altivec.vperm
6782 // CHECK-LE: @llvm.ppc.altivec.lvxl
6783 // CHECK-LE: @llvm.ppc.altivec.lvsl
6784 // CHECK-LE: store <4 x i32> zeroinitializer
6785 // CHECK-LE: @llvm.ppc.altivec.vperm
6786
6787 res_vui = vec_lvrxl(0, param_ui_ld);
6788 // CHECK: @llvm.ppc.altivec.lvxl
6789 // CHECK: @llvm.ppc.altivec.lvsl
6790 // CHECK: store <4 x i32> zeroinitializer
6791 // CHECK: @llvm.ppc.altivec.vperm
6792 // CHECK-LE: @llvm.ppc.altivec.lvxl
6793 // CHECK-LE: @llvm.ppc.altivec.lvsl
6794 // CHECK-LE: store <4 x i32> zeroinitializer
6795 // CHECK-LE: @llvm.ppc.altivec.vperm
6796
6797 res_vui = vec_lvrxl(0, &vui);
6798 // CHECK: @llvm.ppc.altivec.lvxl
6799 // CHECK: @llvm.ppc.altivec.lvsl
6800 // CHECK: store <4 x i32> zeroinitializer
6801 // CHECK: @llvm.ppc.altivec.vperm
6802 // CHECK-LE: @llvm.ppc.altivec.lvxl
6803 // CHECK-LE: @llvm.ppc.altivec.lvsl
6804 // CHECK-LE: store <4 x i32> zeroinitializer
6805 // CHECK-LE: @llvm.ppc.altivec.vperm
6806
6807 res_vbi = vec_lvrxl(0, &vbi);
6808 // CHECK: store <4 x i32> zeroinitializer
6809 // CHECK: @llvm.ppc.altivec.lvxl
6810 // CHECK: @llvm.ppc.altivec.lvsl
6811 // CHECK: @llvm.ppc.altivec.vperm
6812 // CHECK-LE: store <4 x i32> zeroinitializer
6813 // CHECK-LE: @llvm.ppc.altivec.lvxl
6814 // CHECK-LE: @llvm.ppc.altivec.lvsl
6815 // CHECK-LE: @llvm.ppc.altivec.vperm
6816
6817 res_vf = vec_lvrxl(0, &vf);
6818 // CHECK: @llvm.ppc.altivec.lvxl
6819 // CHECK: @llvm.ppc.altivec.lvsl
6820 // CHECK: store <4 x float> zeroinitializer
6821 // CHECK: @llvm.ppc.altivec.vperm
6822 // CHECK-LE: @llvm.ppc.altivec.lvxl
6823 // CHECK-LE: @llvm.ppc.altivec.lvsl
6824 // CHECK-LE: store <4 x float> zeroinitializer
6825 // CHECK-LE: @llvm.ppc.altivec.vperm
6826
6827 /* vec_stvlx */
6828 vec_stvlx(vsc, 0, ¶m_sc);
6829 // CHECK: @llvm.ppc.altivec.lvx
6830 // CHECK: @llvm.ppc.altivec.lvsl
6831 // CHECK: store <16 x i8> zeroinitializer
6832 // CHECK: @llvm.ppc.altivec.vperm
6833 // CHECK: @llvm.ppc.altivec.lvsr
6834 // CHECK: @llvm.ppc.altivec.vperm
6835 // CHECK: @llvm.ppc.altivec.stvx
6836 // CHECK-LE: @llvm.ppc.altivec.lvx
6837 // CHECK-LE: @llvm.ppc.altivec.lvsl
6838 // CHECK-LE: store <16 x i8> zeroinitializer
6839 // CHECK-LE: @llvm.ppc.altivec.vperm
6840 // CHECK-LE: @llvm.ppc.altivec.lvsr
6841 // CHECK-LE: @llvm.ppc.altivec.vperm
6842 // CHECK-LE: @llvm.ppc.altivec.stvx
6843
6844 vec_stvlx(vsc, 0, &vsc);
6845 // CHECK: @llvm.ppc.altivec.lvx
6846 // CHECK: @llvm.ppc.altivec.lvsl
6847 // CHECK: store <16 x i8> zeroinitializer
6848 // CHECK: @llvm.ppc.altivec.vperm
6849 // CHECK: @llvm.ppc.altivec.lvsr
6850 // CHECK: @llvm.ppc.altivec.vperm
6851 // CHECK: @llvm.ppc.altivec.stvx
6852 // CHECK-LE: @llvm.ppc.altivec.lvx
6853 // CHECK-LE: @llvm.ppc.altivec.lvsl
6854 // CHECK-LE: store <16 x i8> zeroinitializer
6855 // CHECK-LE: @llvm.ppc.altivec.vperm
6856 // CHECK-LE: @llvm.ppc.altivec.lvsr
6857 // CHECK-LE: @llvm.ppc.altivec.vperm
6858 // CHECK-LE: @llvm.ppc.altivec.stvx
6859
6860 vec_stvlx(vuc, 0, ¶m_uc);
6861 // CHECK: @llvm.ppc.altivec.lvx
6862 // CHECK: @llvm.ppc.altivec.lvsl
6863 // CHECK: store <16 x i8> zeroinitializer
6864 // CHECK: @llvm.ppc.altivec.vperm
6865 // CHECK: @llvm.ppc.altivec.lvsr
6866 // CHECK: @llvm.ppc.altivec.vperm
6867 // CHECK: @llvm.ppc.altivec.stvx
6868 // CHECK-LE: @llvm.ppc.altivec.lvx
6869 // CHECK-LE: @llvm.ppc.altivec.lvsl
6870 // CHECK-LE: store <16 x i8> zeroinitializer
6871 // CHECK-LE: @llvm.ppc.altivec.vperm
6872 // CHECK-LE: @llvm.ppc.altivec.lvsr
6873 // CHECK-LE: @llvm.ppc.altivec.vperm
6874 // CHECK-LE: @llvm.ppc.altivec.stvx
6875
6876 vec_stvlx(vuc, 0, &vuc);
6877 // CHECK: @llvm.ppc.altivec.lvx
6878 // CHECK: @llvm.ppc.altivec.lvsl
6879 // CHECK: store <16 x i8> zeroinitializer
6880 // CHECK: @llvm.ppc.altivec.vperm
6881 // CHECK: @llvm.ppc.altivec.lvsr
6882 // CHECK: @llvm.ppc.altivec.vperm
6883 // CHECK: @llvm.ppc.altivec.stvx
6884 // CHECK-LE: @llvm.ppc.altivec.lvx
6885 // CHECK-LE: @llvm.ppc.altivec.lvsl
6886 // CHECK-LE: store <16 x i8> zeroinitializer
6887 // CHECK-LE: @llvm.ppc.altivec.vperm
6888 // CHECK-LE: @llvm.ppc.altivec.lvsr
6889 // CHECK-LE: @llvm.ppc.altivec.vperm
6890 // CHECK-LE: @llvm.ppc.altivec.stvx
6891
6892 vec_stvlx(vbc, 0, &vbc);
6893 // CHECK: store <16 x i8> zeroinitializer
6894 // CHECK: @llvm.ppc.altivec.lvx
6895 // CHECK: @llvm.ppc.altivec.lvsl
6896 // CHECK: @llvm.ppc.altivec.vperm
6897 // CHECK: @llvm.ppc.altivec.lvsr
6898 // CHECK: @llvm.ppc.altivec.vperm
6899 // CHECK: @llvm.ppc.altivec.stvx
6900 // CHECK-LE: store <16 x i8> zeroinitializer
6901 // CHECK-LE: @llvm.ppc.altivec.lvx
6902 // CHECK-LE: @llvm.ppc.altivec.lvsl
6903 // CHECK-LE: @llvm.ppc.altivec.vperm
6904 // CHECK-LE: @llvm.ppc.altivec.lvsr
6905 // CHECK-LE: @llvm.ppc.altivec.vperm
6906 // CHECK-LE: @llvm.ppc.altivec.stvx
6907
6908 vec_stvlx(vs, 0, ¶m_s);
6909 // CHECK: @llvm.ppc.altivec.lvx
6910 // CHECK: @llvm.ppc.altivec.lvsl
6911 // CHECK: store <8 x i16> zeroinitializer
6912 // CHECK: @llvm.ppc.altivec.vperm
6913 // CHECK: @llvm.ppc.altivec.lvsr
6914 // CHECK: @llvm.ppc.altivec.vperm
6915 // CHECK: @llvm.ppc.altivec.stvx
6916 // CHECK-LE: @llvm.ppc.altivec.lvx
6917 // CHECK-LE: @llvm.ppc.altivec.lvsl
6918 // CHECK-LE: store <8 x i16> zeroinitializer
6919 // CHECK-LE: @llvm.ppc.altivec.vperm
6920 // CHECK-LE: @llvm.ppc.altivec.lvsr
6921 // CHECK-LE: @llvm.ppc.altivec.vperm
6922 // CHECK-LE: @llvm.ppc.altivec.stvx
6923
6924 vec_stvlx(vs, 0, &vs);
6925 // CHECK: @llvm.ppc.altivec.lvx
6926 // CHECK: @llvm.ppc.altivec.lvsl
6927 // CHECK: store <8 x i16> zeroinitializer
6928 // CHECK: @llvm.ppc.altivec.vperm
6929 // CHECK: @llvm.ppc.altivec.lvsr
6930 // CHECK: @llvm.ppc.altivec.vperm
6931 // CHECK: @llvm.ppc.altivec.stvx
6932 // CHECK-LE: @llvm.ppc.altivec.lvx
6933 // CHECK-LE: @llvm.ppc.altivec.lvsl
6934 // CHECK-LE: store <8 x i16> zeroinitializer
6935 // CHECK-LE: @llvm.ppc.altivec.vperm
6936 // CHECK-LE: @llvm.ppc.altivec.lvsr
6937 // CHECK-LE: @llvm.ppc.altivec.vperm
6938 // CHECK-LE: @llvm.ppc.altivec.stvx
6939
6940 vec_stvlx(vus, 0, ¶m_us);
6941 // CHECK: @llvm.ppc.altivec.lvx
6942 // CHECK: @llvm.ppc.altivec.lvsl
6943 // CHECK: store <8 x i16> zeroinitializer
6944 // CHECK: @llvm.ppc.altivec.vperm
6945 // CHECK: @llvm.ppc.altivec.lvsr
6946 // CHECK: @llvm.ppc.altivec.vperm
6947 // CHECK: @llvm.ppc.altivec.stvx
6948 // CHECK-LE: @llvm.ppc.altivec.lvx
6949 // CHECK-LE: @llvm.ppc.altivec.lvsl
6950 // CHECK-LE: store <8 x i16> zeroinitializer
6951 // CHECK-LE: @llvm.ppc.altivec.vperm
6952 // CHECK-LE: @llvm.ppc.altivec.lvsr
6953 // CHECK-LE: @llvm.ppc.altivec.vperm
6954 // CHECK-LE: @llvm.ppc.altivec.stvx
6955
6956 vec_stvlx(vus, 0, &vus);
6957 // CHECK: @llvm.ppc.altivec.lvx
6958 // CHECK: @llvm.ppc.altivec.lvsl
6959 // CHECK: store <8 x i16> zeroinitializer
6960 // CHECK: @llvm.ppc.altivec.vperm
6961 // CHECK: @llvm.ppc.altivec.lvsr
6962 // CHECK: @llvm.ppc.altivec.vperm
6963 // CHECK: @llvm.ppc.altivec.stvx
6964 // CHECK-LE: @llvm.ppc.altivec.lvx
6965 // CHECK-LE: @llvm.ppc.altivec.lvsl
6966 // CHECK-LE: store <8 x i16> zeroinitializer
6967 // CHECK-LE: @llvm.ppc.altivec.vperm
6968 // CHECK-LE: @llvm.ppc.altivec.lvsr
6969 // CHECK-LE: @llvm.ppc.altivec.vperm
6970 // CHECK-LE: @llvm.ppc.altivec.stvx
6971
6972 vec_stvlx(vbs, 0, &vbs);
6973 // CHECK: store <8 x i16> zeroinitializer
6974 // CHECK: @llvm.ppc.altivec.lvx
6975 // CHECK: @llvm.ppc.altivec.lvsl
6976 // CHECK: @llvm.ppc.altivec.vperm
6977 // CHECK: @llvm.ppc.altivec.lvsr
6978 // CHECK: @llvm.ppc.altivec.vperm
6979 // CHECK: @llvm.ppc.altivec.stvx
6980 // CHECK-LE: store <8 x i16> zeroinitializer
6981 // CHECK-LE: @llvm.ppc.altivec.lvx
6982 // CHECK-LE: @llvm.ppc.altivec.lvsl
6983 // CHECK-LE: @llvm.ppc.altivec.vperm
6984 // CHECK-LE: @llvm.ppc.altivec.lvsr
6985 // CHECK-LE: @llvm.ppc.altivec.vperm
6986 // CHECK-LE: @llvm.ppc.altivec.stvx
6987
6988 vec_stvlx(vp, 0, &vp);
6989 // CHECK: store <8 x i16> zeroinitializer
6990 // CHECK: @llvm.ppc.altivec.lvx
6991 // CHECK: @llvm.ppc.altivec.lvsl
6992 // CHECK: @llvm.ppc.altivec.vperm
6993 // CHECK: @llvm.ppc.altivec.lvsr
6994 // CHECK: @llvm.ppc.altivec.vperm
6995 // CHECK: @llvm.ppc.altivec.stvx
6996 // CHECK-LE: store <8 x i16> zeroinitializer
6997 // CHECK-LE: @llvm.ppc.altivec.lvx
6998 // CHECK-LE: @llvm.ppc.altivec.lvsl
6999 // CHECK-LE: @llvm.ppc.altivec.vperm
7000 // CHECK-LE: @llvm.ppc.altivec.lvsr
7001 // CHECK-LE: @llvm.ppc.altivec.vperm
7002 // CHECK-LE: @llvm.ppc.altivec.stvx
7003
7004 vec_stvlx(vi, 0, ¶m_i);
7005 // CHECK: @llvm.ppc.altivec.lvx
7006 // CHECK: @llvm.ppc.altivec.lvsl
7007 // CHECK: store <4 x i32> zeroinitializer
7008 // CHECK: @llvm.ppc.altivec.vperm
7009 // CHECK: @llvm.ppc.altivec.lvsr
7010 // CHECK: @llvm.ppc.altivec.vperm
7011 // CHECK: @llvm.ppc.altivec.stvx
7012 // CHECK-LE: @llvm.ppc.altivec.lvx
7013 // CHECK-LE: @llvm.ppc.altivec.lvsl
7014 // CHECK-LE: store <4 x i32> zeroinitializer
7015 // CHECK-LE: @llvm.ppc.altivec.vperm
7016 // CHECK-LE: @llvm.ppc.altivec.lvsr
7017 // CHECK-LE: @llvm.ppc.altivec.vperm
7018 // CHECK-LE: @llvm.ppc.altivec.stvx
7019
7020 vec_stvlx(vi, 0, &vi);
7021 // CHECK: @llvm.ppc.altivec.lvx
7022 // CHECK: @llvm.ppc.altivec.lvsl
7023 // CHECK: store <4 x i32> zeroinitializer
7024 // CHECK: @llvm.ppc.altivec.vperm
7025 // CHECK: @llvm.ppc.altivec.lvsr
7026 // CHECK: @llvm.ppc.altivec.vperm
7027 // CHECK: @llvm.ppc.altivec.stvx
7028 // CHECK-LE: @llvm.ppc.altivec.lvx
7029 // CHECK-LE: @llvm.ppc.altivec.lvsl
7030 // CHECK-LE: store <4 x i32> zeroinitializer
7031 // CHECK-LE: @llvm.ppc.altivec.vperm
7032 // CHECK-LE: @llvm.ppc.altivec.lvsr
7033 // CHECK-LE: @llvm.ppc.altivec.vperm
7034 // CHECK-LE: @llvm.ppc.altivec.stvx
7035
7036 vec_stvlx(vui, 0, ¶m_ui);
7037 // CHECK: @llvm.ppc.altivec.lvx
7038 // CHECK: @llvm.ppc.altivec.lvsl
7039 // CHECK: store <4 x i32> zeroinitializer
7040 // CHECK: @llvm.ppc.altivec.vperm
7041 // CHECK: @llvm.ppc.altivec.lvsr
7042 // CHECK: @llvm.ppc.altivec.vperm
7043 // CHECK: @llvm.ppc.altivec.stvx
7044 // CHECK-LE: @llvm.ppc.altivec.lvx
7045 // CHECK-LE: @llvm.ppc.altivec.lvsl
7046 // CHECK-LE: store <4 x i32> zeroinitializer
7047 // CHECK-LE: @llvm.ppc.altivec.vperm
7048 // CHECK-LE: @llvm.ppc.altivec.lvsr
7049 // CHECK-LE: @llvm.ppc.altivec.vperm
7050 // CHECK-LE: @llvm.ppc.altivec.stvx
7051
7052 vec_stvlx(vui, 0, &vui);
7053 // CHECK: @llvm.ppc.altivec.lvx
7054 // CHECK: @llvm.ppc.altivec.lvsl
7055 // CHECK: store <4 x i32> zeroinitializer
7056 // CHECK: @llvm.ppc.altivec.vperm
7057 // CHECK: @llvm.ppc.altivec.lvsr
7058 // CHECK: @llvm.ppc.altivec.vperm
7059 // CHECK: @llvm.ppc.altivec.stvx
7060 // CHECK-LE: @llvm.ppc.altivec.lvx
7061 // CHECK-LE: @llvm.ppc.altivec.lvsl
7062 // CHECK-LE: store <4 x i32> zeroinitializer
7063 // CHECK-LE: @llvm.ppc.altivec.vperm
7064 // CHECK-LE: @llvm.ppc.altivec.lvsr
7065 // CHECK-LE: @llvm.ppc.altivec.vperm
7066 // CHECK-LE: @llvm.ppc.altivec.stvx
7067
7068 vec_stvlx(vbi, 0, &vbi);
7069 // CHECK: store <4 x i32> zeroinitializer
7070 // CHECK: @llvm.ppc.altivec.lvx
7071 // CHECK: @llvm.ppc.altivec.lvsl
7072 // CHECK: @llvm.ppc.altivec.vperm
7073 // CHECK: @llvm.ppc.altivec.lvsr
7074 // CHECK: @llvm.ppc.altivec.vperm
7075 // CHECK: @llvm.ppc.altivec.stvx
7076 // CHECK-LE: store <4 x i32> zeroinitializer
7077 // CHECK-LE: @llvm.ppc.altivec.lvx
7078 // CHECK-LE: @llvm.ppc.altivec.lvsl
7079 // CHECK-LE: @llvm.ppc.altivec.vperm
7080 // CHECK-LE: @llvm.ppc.altivec.lvsr
7081 // CHECK-LE: @llvm.ppc.altivec.vperm
7082 // CHECK-LE: @llvm.ppc.altivec.stvx
7083
7084 vec_stvlx(vf, 0, &vf);
7085 // CHECK: @llvm.ppc.altivec.lvx
7086 // CHECK: @llvm.ppc.altivec.lvsl
7087 // CHECK: store <4 x float> zeroinitializer
7088 // CHECK: @llvm.ppc.altivec.vperm
7089 // CHECK: @llvm.ppc.altivec.lvsr
7090 // CHECK: @llvm.ppc.altivec.vperm
7091 // CHECK: @llvm.ppc.altivec.stvx
7092 // CHECK-LE: @llvm.ppc.altivec.lvx
7093 // CHECK-LE: @llvm.ppc.altivec.lvsl
7094 // CHECK-LE: store <4 x float> zeroinitializer
7095 // CHECK-LE: @llvm.ppc.altivec.vperm
7096 // CHECK-LE: @llvm.ppc.altivec.lvsr
7097 // CHECK-LE: @llvm.ppc.altivec.vperm
7098 // CHECK-LE: @llvm.ppc.altivec.stvx
7099
7100 /* vec_stvlxl */
7101 vec_stvlxl(vsc, 0, ¶m_sc);
7102 // CHECK: @llvm.ppc.altivec.lvx
7103 // CHECK: @llvm.ppc.altivec.lvsl
7104 // CHECK: store <16 x i8> zeroinitializer
7105 // CHECK: @llvm.ppc.altivec.vperm
7106 // CHECK: @llvm.ppc.altivec.lvsr
7107 // CHECK: @llvm.ppc.altivec.vperm
7108 // CHECK: @llvm.ppc.altivec.stvxl
7109 // CHECK-LE: @llvm.ppc.altivec.lvx
7110 // CHECK-LE: @llvm.ppc.altivec.lvsl
7111 // CHECK-LE: store <16 x i8> zeroinitializer
7112 // CHECK-LE: @llvm.ppc.altivec.vperm
7113 // CHECK-LE: @llvm.ppc.altivec.lvsr
7114 // CHECK-LE: @llvm.ppc.altivec.vperm
7115 // CHECK-LE: @llvm.ppc.altivec.stvxl
7116
7117 vec_stvlxl(vsc, 0, &vsc);
7118 // CHECK: @llvm.ppc.altivec.lvx
7119 // CHECK: @llvm.ppc.altivec.lvsl
7120 // CHECK: store <16 x i8> zeroinitializer
7121 // CHECK: @llvm.ppc.altivec.vperm
7122 // CHECK: @llvm.ppc.altivec.lvsr
7123 // CHECK: @llvm.ppc.altivec.vperm
7124 // CHECK: @llvm.ppc.altivec.stvxl
7125 // CHECK-LE: @llvm.ppc.altivec.lvx
7126 // CHECK-LE: @llvm.ppc.altivec.lvsl
7127 // CHECK-LE: store <16 x i8> zeroinitializer
7128 // CHECK-LE: @llvm.ppc.altivec.vperm
7129 // CHECK-LE: @llvm.ppc.altivec.lvsr
7130 // CHECK-LE: @llvm.ppc.altivec.vperm
7131 // CHECK-LE: @llvm.ppc.altivec.stvxl
7132
7133 vec_stvlxl(vuc, 0, ¶m_uc);
7134 // CHECK: @llvm.ppc.altivec.lvx
7135 // CHECK: @llvm.ppc.altivec.lvsl
7136 // CHECK: store <16 x i8> zeroinitializer
7137 // CHECK: @llvm.ppc.altivec.vperm
7138 // CHECK: @llvm.ppc.altivec.lvsr
7139 // CHECK: @llvm.ppc.altivec.vperm
7140 // CHECK: @llvm.ppc.altivec.stvxl
7141 // CHECK-LE: @llvm.ppc.altivec.lvx
7142 // CHECK-LE: @llvm.ppc.altivec.lvsl
7143 // CHECK-LE: store <16 x i8> zeroinitializer
7144 // CHECK-LE: @llvm.ppc.altivec.vperm
7145 // CHECK-LE: @llvm.ppc.altivec.lvsr
7146 // CHECK-LE: @llvm.ppc.altivec.vperm
7147 // CHECK-LE: @llvm.ppc.altivec.stvxl
7148
7149 vec_stvlxl(vuc, 0, &vuc);
7150 // CHECK: @llvm.ppc.altivec.lvx
7151 // CHECK: @llvm.ppc.altivec.lvsl
7152 // CHECK: store <16 x i8> zeroinitializer
7153 // CHECK: @llvm.ppc.altivec.vperm
7154 // CHECK: @llvm.ppc.altivec.lvsr
7155 // CHECK: @llvm.ppc.altivec.vperm
7156 // CHECK: @llvm.ppc.altivec.stvxl
7157 // CHECK-LE: @llvm.ppc.altivec.lvx
7158 // CHECK-LE: @llvm.ppc.altivec.lvsl
7159 // CHECK-LE: store <16 x i8> zeroinitializer
7160 // CHECK-LE: @llvm.ppc.altivec.vperm
7161 // CHECK-LE: @llvm.ppc.altivec.lvsr
7162 // CHECK-LE: @llvm.ppc.altivec.vperm
7163 // CHECK-LE: @llvm.ppc.altivec.stvxl
7164
7165 vec_stvlxl(vbc, 0, &vbc);
7166 // CHECK: store <16 x i8> zeroinitializer
7167 // CHECK: @llvm.ppc.altivec.lvx
7168 // CHECK: @llvm.ppc.altivec.lvsl
7169 // CHECK: @llvm.ppc.altivec.vperm
7170 // CHECK: @llvm.ppc.altivec.lvsr
7171 // CHECK: @llvm.ppc.altivec.vperm
7172 // CHECK: @llvm.ppc.altivec.stvxl
7173 // CHECK-LE: store <16 x i8> zeroinitializer
7174 // CHECK-LE: @llvm.ppc.altivec.lvx
7175 // CHECK-LE: @llvm.ppc.altivec.lvsl
7176 // CHECK-LE: @llvm.ppc.altivec.vperm
7177 // CHECK-LE: @llvm.ppc.altivec.lvsr
7178 // CHECK-LE: @llvm.ppc.altivec.vperm
7179 // CHECK-LE: @llvm.ppc.altivec.stvxl
7180
7181 vec_stvlxl(vs, 0, ¶m_s);
7182 // CHECK: @llvm.ppc.altivec.lvx
7183 // CHECK: @llvm.ppc.altivec.lvsl
7184 // CHECK: store <8 x i16> zeroinitializer
7185 // CHECK: @llvm.ppc.altivec.vperm
7186 // CHECK: @llvm.ppc.altivec.lvsr
7187 // CHECK: @llvm.ppc.altivec.vperm
7188 // CHECK: @llvm.ppc.altivec.stvxl
7189 // CHECK-LE: @llvm.ppc.altivec.lvx
7190 // CHECK-LE: @llvm.ppc.altivec.lvsl
7191 // CHECK-LE: store <8 x i16> zeroinitializer
7192 // CHECK-LE: @llvm.ppc.altivec.vperm
7193 // CHECK-LE: @llvm.ppc.altivec.lvsr
7194 // CHECK-LE: @llvm.ppc.altivec.vperm
7195 // CHECK-LE: @llvm.ppc.altivec.stvxl
7196
7197 vec_stvlxl(vs, 0, &vs);
7198 // CHECK: @llvm.ppc.altivec.lvx
7199 // CHECK: @llvm.ppc.altivec.lvsl
7200 // CHECK: store <8 x i16> zeroinitializer
7201 // CHECK: @llvm.ppc.altivec.vperm
7202 // CHECK: @llvm.ppc.altivec.lvsr
7203 // CHECK: @llvm.ppc.altivec.vperm
7204 // CHECK: @llvm.ppc.altivec.stvxl
7205 // CHECK-LE: @llvm.ppc.altivec.lvx
7206 // CHECK-LE: @llvm.ppc.altivec.lvsl
7207 // CHECK-LE: store <8 x i16> zeroinitializer
7208 // CHECK-LE: @llvm.ppc.altivec.vperm
7209 // CHECK-LE: @llvm.ppc.altivec.lvsr
7210 // CHECK-LE: @llvm.ppc.altivec.vperm
7211 // CHECK-LE: @llvm.ppc.altivec.stvxl
7212
7213 vec_stvlxl(vus, 0, ¶m_us);
7214 // CHECK: @llvm.ppc.altivec.lvx
7215 // CHECK: @llvm.ppc.altivec.lvsl
7216 // CHECK: store <8 x i16> zeroinitializer
7217 // CHECK: @llvm.ppc.altivec.vperm
7218 // CHECK: @llvm.ppc.altivec.lvsr
7219 // CHECK: @llvm.ppc.altivec.vperm
7220 // CHECK: @llvm.ppc.altivec.stvxl
7221 // CHECK-LE: @llvm.ppc.altivec.lvx
7222 // CHECK-LE: @llvm.ppc.altivec.lvsl
7223 // CHECK-LE: store <8 x i16> zeroinitializer
7224 // CHECK-LE: @llvm.ppc.altivec.vperm
7225 // CHECK-LE: @llvm.ppc.altivec.lvsr
7226 // CHECK-LE: @llvm.ppc.altivec.vperm
7227 // CHECK-LE: @llvm.ppc.altivec.stvxl
7228
7229 vec_stvlxl(vus, 0, &vus);
7230 // CHECK: @llvm.ppc.altivec.lvx
7231 // CHECK: @llvm.ppc.altivec.lvsl
7232 // CHECK: store <8 x i16> zeroinitializer
7233 // CHECK: @llvm.ppc.altivec.vperm
7234 // CHECK: @llvm.ppc.altivec.lvsr
7235 // CHECK: @llvm.ppc.altivec.vperm
7236 // CHECK: @llvm.ppc.altivec.stvxl
7237 // CHECK-LE: @llvm.ppc.altivec.lvx
7238 // CHECK-LE: @llvm.ppc.altivec.lvsl
7239 // CHECK-LE: store <8 x i16> zeroinitializer
7240 // CHECK-LE: @llvm.ppc.altivec.vperm
7241 // CHECK-LE: @llvm.ppc.altivec.lvsr
7242 // CHECK-LE: @llvm.ppc.altivec.vperm
7243 // CHECK-LE: @llvm.ppc.altivec.stvxl
7244
7245 vec_stvlxl(vbs, 0, &vbs);
7246 // CHECK: store <8 x i16> zeroinitializer
7247 // CHECK: @llvm.ppc.altivec.lvx
7248 // CHECK: @llvm.ppc.altivec.lvsl
7249 // CHECK: @llvm.ppc.altivec.vperm
7250 // CHECK: @llvm.ppc.altivec.lvsr
7251 // CHECK: @llvm.ppc.altivec.vperm
7252 // CHECK: @llvm.ppc.altivec.stvxl
7253 // CHECK-LE: store <8 x i16> zeroinitializer
7254 // CHECK-LE: @llvm.ppc.altivec.lvx
7255 // CHECK-LE: @llvm.ppc.altivec.lvsl
7256 // CHECK-LE: @llvm.ppc.altivec.vperm
7257 // CHECK-LE: @llvm.ppc.altivec.lvsr
7258 // CHECK-LE: @llvm.ppc.altivec.vperm
7259 // CHECK-LE: @llvm.ppc.altivec.stvxl
7260
7261 vec_stvlxl(vp, 0, &vp);
7262 // CHECK: store <8 x i16> zeroinitializer
7263 // CHECK: @llvm.ppc.altivec.lvx
7264 // CHECK: @llvm.ppc.altivec.lvsl
7265 // CHECK: @llvm.ppc.altivec.vperm
7266 // CHECK: @llvm.ppc.altivec.lvsr
7267 // CHECK: @llvm.ppc.altivec.vperm
7268 // CHECK: @llvm.ppc.altivec.stvxl
7269 // CHECK-LE: store <8 x i16> zeroinitializer
7270 // CHECK-LE: @llvm.ppc.altivec.lvx
7271 // CHECK-LE: @llvm.ppc.altivec.lvsl
7272 // CHECK-LE: @llvm.ppc.altivec.vperm
7273 // CHECK-LE: @llvm.ppc.altivec.lvsr
7274 // CHECK-LE: @llvm.ppc.altivec.vperm
7275 // CHECK-LE: @llvm.ppc.altivec.stvxl
7276
7277 vec_stvlxl(vi, 0, ¶m_i);
7278 // CHECK: @llvm.ppc.altivec.lvx
7279 // CHECK: @llvm.ppc.altivec.lvsl
7280 // CHECK: store <4 x i32> zeroinitializer
7281 // CHECK: @llvm.ppc.altivec.vperm
7282 // CHECK: @llvm.ppc.altivec.lvsr
7283 // CHECK: @llvm.ppc.altivec.vperm
7284 // CHECK: @llvm.ppc.altivec.stvxl
7285 // CHECK-LE: @llvm.ppc.altivec.lvx
7286 // CHECK-LE: @llvm.ppc.altivec.lvsl
7287 // CHECK-LE: store <4 x i32> zeroinitializer
7288 // CHECK-LE: @llvm.ppc.altivec.vperm
7289 // CHECK-LE: @llvm.ppc.altivec.lvsr
7290 // CHECK-LE: @llvm.ppc.altivec.vperm
7291 // CHECK-LE: @llvm.ppc.altivec.stvxl
7292
7293 vec_stvlxl(vi, 0, &vi);
7294 // CHECK: @llvm.ppc.altivec.lvx
7295 // CHECK: @llvm.ppc.altivec.lvsl
7296 // CHECK: store <4 x i32> zeroinitializer
7297 // CHECK: @llvm.ppc.altivec.vperm
7298 // CHECK: @llvm.ppc.altivec.lvsr
7299 // CHECK: @llvm.ppc.altivec.vperm
7300 // CHECK: @llvm.ppc.altivec.stvxl
7301 // CHECK-LE: @llvm.ppc.altivec.lvx
7302 // CHECK-LE: @llvm.ppc.altivec.lvsl
7303 // CHECK-LE: store <4 x i32> zeroinitializer
7304 // CHECK-LE: @llvm.ppc.altivec.vperm
7305 // CHECK-LE: @llvm.ppc.altivec.lvsr
7306 // CHECK-LE: @llvm.ppc.altivec.vperm
7307 // CHECK-LE: @llvm.ppc.altivec.stvxl
7308
7309 vec_stvlxl(vui, 0, ¶m_ui);
7310 // CHECK: @llvm.ppc.altivec.lvx
7311 // CHECK: @llvm.ppc.altivec.lvsl
7312 // CHECK: store <4 x i32> zeroinitializer
7313 // CHECK: @llvm.ppc.altivec.vperm
7314 // CHECK: @llvm.ppc.altivec.lvsr
7315 // CHECK: @llvm.ppc.altivec.vperm
7316 // CHECK: @llvm.ppc.altivec.stvxl
7317 // CHECK-LE: @llvm.ppc.altivec.lvx
7318 // CHECK-LE: @llvm.ppc.altivec.lvsl
7319 // CHECK-LE: store <4 x i32> zeroinitializer
7320 // CHECK-LE: @llvm.ppc.altivec.vperm
7321 // CHECK-LE: @llvm.ppc.altivec.lvsr
7322 // CHECK-LE: @llvm.ppc.altivec.vperm
7323 // CHECK-LE: @llvm.ppc.altivec.stvxl
7324
7325 vec_stvlxl(vui, 0, &vui);
7326 // CHECK: @llvm.ppc.altivec.lvx
7327 // CHECK: @llvm.ppc.altivec.lvsl
7328 // CHECK: store <4 x i32> zeroinitializer
7329 // CHECK: @llvm.ppc.altivec.vperm
7330 // CHECK: @llvm.ppc.altivec.lvsr
7331 // CHECK: @llvm.ppc.altivec.vperm
7332 // CHECK: @llvm.ppc.altivec.stvxl
7333 // CHECK-LE: @llvm.ppc.altivec.lvx
7334 // CHECK-LE: @llvm.ppc.altivec.lvsl
7335 // CHECK-LE: store <4 x i32> zeroinitializer
7336 // CHECK-LE: @llvm.ppc.altivec.vperm
7337 // CHECK-LE: @llvm.ppc.altivec.lvsr
7338 // CHECK-LE: @llvm.ppc.altivec.vperm
7339 // CHECK-LE: @llvm.ppc.altivec.stvxl
7340
7341 vec_stvlxl(vbi, 0, &vbi);
7342 // CHECK: store <4 x i32> zeroinitializer
7343 // CHECK: @llvm.ppc.altivec.lvx
7344 // CHECK: @llvm.ppc.altivec.lvsl
7345 // CHECK: @llvm.ppc.altivec.vperm
7346 // CHECK: @llvm.ppc.altivec.lvsr
7347 // CHECK: @llvm.ppc.altivec.vperm
7348 // CHECK: @llvm.ppc.altivec.stvxl
7349 // CHECK-LE: store <4 x i32> zeroinitializer
7350 // CHECK-LE: @llvm.ppc.altivec.lvx
7351 // CHECK-LE: @llvm.ppc.altivec.lvsl
7352 // CHECK-LE: @llvm.ppc.altivec.vperm
7353 // CHECK-LE: @llvm.ppc.altivec.lvsr
7354 // CHECK-LE: @llvm.ppc.altivec.vperm
7355 // CHECK-LE: @llvm.ppc.altivec.stvxl
7356
7357 vec_stvlxl(vf, 0, &vf);
7358 // CHECK: @llvm.ppc.altivec.lvx
7359 // CHECK: @llvm.ppc.altivec.lvsl
7360 // CHECK: store <4 x float> zeroinitializer
7361 // CHECK: @llvm.ppc.altivec.vperm
7362 // CHECK: @llvm.ppc.altivec.lvsr
7363 // CHECK: @llvm.ppc.altivec.vperm
7364 // CHECK: @llvm.ppc.altivec.stvxl
7365 // CHECK-LE: @llvm.ppc.altivec.lvx
7366 // CHECK-LE: @llvm.ppc.altivec.lvsl
7367 // CHECK-LE: store <4 x float> zeroinitializer
7368 // CHECK-LE: @llvm.ppc.altivec.vperm
7369 // CHECK-LE: @llvm.ppc.altivec.lvsr
7370 // CHECK-LE: @llvm.ppc.altivec.vperm
7371 // CHECK-LE: @llvm.ppc.altivec.stvxl
7372
7373 /* vec_stvrx */
7374 vec_stvrx(vsc, 0, ¶m_sc);
7375 // CHECK: @llvm.ppc.altivec.lvx
7376 // CHECK: @llvm.ppc.altivec.lvsl
7377 // CHECK: store <16 x i8> zeroinitializer
7378 // CHECK: @llvm.ppc.altivec.vperm
7379 // CHECK: @llvm.ppc.altivec.lvsr
7380 // CHECK: @llvm.ppc.altivec.vperm
7381 // CHECK: @llvm.ppc.altivec.stvx
7382 // CHECK-LE: @llvm.ppc.altivec.lvx
7383 // CHECK-LE: @llvm.ppc.altivec.lvsl
7384 // CHECK-LE: store <16 x i8> zeroinitializer
7385 // CHECK-LE: @llvm.ppc.altivec.vperm
7386 // CHECK-LE: @llvm.ppc.altivec.lvsr
7387 // CHECK-LE: @llvm.ppc.altivec.vperm
7388 // CHECK-LE: @llvm.ppc.altivec.stvx
7389
7390 vec_stvrx(vsc, 0, &vsc);
7391 // CHECK: @llvm.ppc.altivec.lvx
7392 // CHECK: @llvm.ppc.altivec.lvsl
7393 // CHECK: store <16 x i8> zeroinitializer
7394 // CHECK: @llvm.ppc.altivec.vperm
7395 // CHECK: @llvm.ppc.altivec.lvsr
7396 // CHECK: @llvm.ppc.altivec.vperm
7397 // CHECK: @llvm.ppc.altivec.stvx
7398 // CHECK-LE: @llvm.ppc.altivec.lvx
7399 // CHECK-LE: @llvm.ppc.altivec.lvsl
7400 // CHECK-LE: store <16 x i8> zeroinitializer
7401 // CHECK-LE: @llvm.ppc.altivec.vperm
7402 // CHECK-LE: @llvm.ppc.altivec.lvsr
7403 // CHECK-LE: @llvm.ppc.altivec.vperm
7404 // CHECK-LE: @llvm.ppc.altivec.stvx
7405
7406 vec_stvrx(vuc, 0, ¶m_uc);
7407 // CHECK: @llvm.ppc.altivec.lvx
7408 // CHECK: @llvm.ppc.altivec.lvsl
7409 // CHECK: store <16 x i8> zeroinitializer
7410 // CHECK: @llvm.ppc.altivec.vperm
7411 // CHECK: @llvm.ppc.altivec.lvsr
7412 // CHECK: @llvm.ppc.altivec.vperm
7413 // CHECK: @llvm.ppc.altivec.stvx
7414 // CHECK-LE: @llvm.ppc.altivec.lvx
7415 // CHECK-LE: @llvm.ppc.altivec.lvsl
7416 // CHECK-LE: store <16 x i8> zeroinitializer
7417 // CHECK-LE: @llvm.ppc.altivec.vperm
7418 // CHECK-LE: @llvm.ppc.altivec.lvsr
7419 // CHECK-LE: @llvm.ppc.altivec.vperm
7420 // CHECK-LE: @llvm.ppc.altivec.stvx
7421
7422 vec_stvrx(vuc, 0, &vuc);
7423 // CHECK: @llvm.ppc.altivec.lvx
7424 // CHECK: @llvm.ppc.altivec.lvsl
7425 // CHECK: store <16 x i8> zeroinitializer
7426 // CHECK: @llvm.ppc.altivec.vperm
7427 // CHECK: @llvm.ppc.altivec.lvsr
7428 // CHECK: @llvm.ppc.altivec.vperm
7429 // CHECK: @llvm.ppc.altivec.stvx
7430 // CHECK-LE: @llvm.ppc.altivec.lvx
7431 // CHECK-LE: @llvm.ppc.altivec.lvsl
7432 // CHECK-LE: store <16 x i8> zeroinitializer
7433 // CHECK-LE: @llvm.ppc.altivec.vperm
7434 // CHECK-LE: @llvm.ppc.altivec.lvsr
7435 // CHECK-LE: @llvm.ppc.altivec.vperm
7436 // CHECK-LE: @llvm.ppc.altivec.stvx
7437
7438 vec_stvrx(vbc, 0, &vbc);
7439 // CHECK: @llvm.ppc.altivec.lvx
7440 // CHECK: store <16 x i8> zeroinitializer
7441 // CHECK: @llvm.ppc.altivec.lvsl
7442 // CHECK: @llvm.ppc.altivec.vperm
7443 // CHECK: @llvm.ppc.altivec.lvsr
7444 // CHECK: @llvm.ppc.altivec.vperm
7445 // CHECK: @llvm.ppc.altivec.stvx
7446 // CHECK-LE: @llvm.ppc.altivec.lvx
7447 // CHECK-LE: store <16 x i8> zeroinitializer
7448 // CHECK-LE: @llvm.ppc.altivec.lvsl
7449 // CHECK-LE: @llvm.ppc.altivec.vperm
7450 // CHECK-LE: @llvm.ppc.altivec.lvsr
7451 // CHECK-LE: @llvm.ppc.altivec.vperm
7452 // CHECK-LE: @llvm.ppc.altivec.stvx
7453
7454 vec_stvrx(vs, 0, ¶m_s);
7455 // CHECK: @llvm.ppc.altivec.lvx
7456 // CHECK: @llvm.ppc.altivec.lvsl
7457 // CHECK: store <8 x i16> zeroinitializer
7458 // CHECK: @llvm.ppc.altivec.vperm
7459 // CHECK: @llvm.ppc.altivec.lvsr
7460 // CHECK: @llvm.ppc.altivec.vperm
7461 // CHECK: @llvm.ppc.altivec.stvx
7462 // CHECK-LE: @llvm.ppc.altivec.lvx
7463 // CHECK-LE: @llvm.ppc.altivec.lvsl
7464 // CHECK-LE: store <8 x i16> zeroinitializer
7465 // CHECK-LE: @llvm.ppc.altivec.vperm
7466 // CHECK-LE: @llvm.ppc.altivec.lvsr
7467 // CHECK-LE: @llvm.ppc.altivec.vperm
7468 // CHECK-LE: @llvm.ppc.altivec.stvx
7469
7470 vec_stvrx(vs, 0, &vs);
7471 // CHECK: @llvm.ppc.altivec.lvx
7472 // CHECK: @llvm.ppc.altivec.lvsl
7473 // CHECK: store <8 x i16> zeroinitializer
7474 // CHECK: @llvm.ppc.altivec.vperm
7475 // CHECK: @llvm.ppc.altivec.lvsr
7476 // CHECK: @llvm.ppc.altivec.vperm
7477 // CHECK: @llvm.ppc.altivec.stvx
7478 // CHECK-LE: @llvm.ppc.altivec.lvx
7479 // CHECK-LE: @llvm.ppc.altivec.lvsl
7480 // CHECK-LE: store <8 x i16> zeroinitializer
7481 // CHECK-LE: @llvm.ppc.altivec.vperm
7482 // CHECK-LE: @llvm.ppc.altivec.lvsr
7483 // CHECK-LE: @llvm.ppc.altivec.vperm
7484 // CHECK-LE: @llvm.ppc.altivec.stvx
7485
7486 vec_stvrx(vus, 0, ¶m_us);
7487 // CHECK: @llvm.ppc.altivec.lvx
7488 // CHECK: @llvm.ppc.altivec.lvsl
7489 // CHECK: store <8 x i16> zeroinitializer
7490 // CHECK: @llvm.ppc.altivec.vperm
7491 // CHECK: @llvm.ppc.altivec.lvsr
7492 // CHECK: @llvm.ppc.altivec.vperm
7493 // CHECK: @llvm.ppc.altivec.stvx
7494 // CHECK-LE: @llvm.ppc.altivec.lvx
7495 // CHECK-LE: @llvm.ppc.altivec.lvsl
7496 // CHECK-LE: store <8 x i16> zeroinitializer
7497 // CHECK-LE: @llvm.ppc.altivec.vperm
7498 // CHECK-LE: @llvm.ppc.altivec.lvsr
7499 // CHECK-LE: @llvm.ppc.altivec.vperm
7500 // CHECK-LE: @llvm.ppc.altivec.stvx
7501
7502 vec_stvrx(vus, 0, &vus);
7503 // CHECK: @llvm.ppc.altivec.lvx
7504 // CHECK: @llvm.ppc.altivec.lvsl
7505 // CHECK: store <8 x i16> zeroinitializer
7506 // CHECK: @llvm.ppc.altivec.vperm
7507 // CHECK: @llvm.ppc.altivec.lvsr
7508 // CHECK: @llvm.ppc.altivec.vperm
7509 // CHECK: @llvm.ppc.altivec.stvx
7510 // CHECK-LE: @llvm.ppc.altivec.lvx
7511 // CHECK-LE: @llvm.ppc.altivec.lvsl
7512 // CHECK-LE: store <8 x i16> zeroinitializer
7513 // CHECK-LE: @llvm.ppc.altivec.vperm
7514 // CHECK-LE: @llvm.ppc.altivec.lvsr
7515 // CHECK-LE: @llvm.ppc.altivec.vperm
7516 // CHECK-LE: @llvm.ppc.altivec.stvx
7517
7518 vec_stvrx(vbs, 0, &vbs);
7519 // CHECK: @llvm.ppc.altivec.lvx
7520 // CHECK: store <8 x i16> zeroinitializer
7521 // CHECK: @llvm.ppc.altivec.lvsl
7522 // CHECK: @llvm.ppc.altivec.vperm
7523 // CHECK: @llvm.ppc.altivec.lvsr
7524 // CHECK: @llvm.ppc.altivec.vperm
7525 // CHECK: @llvm.ppc.altivec.stvx
7526 // CHECK-LE: @llvm.ppc.altivec.lvx
7527 // CHECK-LE: store <8 x i16> zeroinitializer
7528 // CHECK-LE: @llvm.ppc.altivec.lvsl
7529 // CHECK-LE: @llvm.ppc.altivec.vperm
7530 // CHECK-LE: @llvm.ppc.altivec.lvsr
7531 // CHECK-LE: @llvm.ppc.altivec.vperm
7532 // CHECK-LE: @llvm.ppc.altivec.stvx
7533
7534 vec_stvrx(vp, 0, &vp);
7535 // CHECK: @llvm.ppc.altivec.lvx
7536 // CHECK: store <8 x i16> zeroinitializer
7537 // CHECK: @llvm.ppc.altivec.lvsl
7538 // CHECK: @llvm.ppc.altivec.vperm
7539 // CHECK: @llvm.ppc.altivec.lvsr
7540 // CHECK: @llvm.ppc.altivec.vperm
7541 // CHECK: @llvm.ppc.altivec.stvx
7542 // CHECK-LE: @llvm.ppc.altivec.lvx
7543 // CHECK-LE: store <8 x i16> zeroinitializer
7544 // CHECK-LE: @llvm.ppc.altivec.lvsl
7545 // CHECK-LE: @llvm.ppc.altivec.vperm
7546 // CHECK-LE: @llvm.ppc.altivec.lvsr
7547 // CHECK-LE: @llvm.ppc.altivec.vperm
7548 // CHECK-LE: @llvm.ppc.altivec.stvx
7549
7550 vec_stvrx(vi, 0, ¶m_i);
7551 // CHECK: @llvm.ppc.altivec.lvx
7552 // CHECK: @llvm.ppc.altivec.lvsl
7553 // CHECK: store <4 x i32> zeroinitializer
7554 // CHECK: @llvm.ppc.altivec.vperm
7555 // CHECK: @llvm.ppc.altivec.lvsr
7556 // CHECK: @llvm.ppc.altivec.vperm
7557 // CHECK: @llvm.ppc.altivec.stvx
7558 // CHECK-LE: @llvm.ppc.altivec.lvx
7559 // CHECK-LE: @llvm.ppc.altivec.lvsl
7560 // CHECK-LE: store <4 x i32> zeroinitializer
7561 // CHECK-LE: @llvm.ppc.altivec.vperm
7562 // CHECK-LE: @llvm.ppc.altivec.lvsr
7563 // CHECK-LE: @llvm.ppc.altivec.vperm
7564 // CHECK-LE: @llvm.ppc.altivec.stvx
7565
7566 vec_stvrx(vi, 0, &vi);
7567 // CHECK: @llvm.ppc.altivec.lvx
7568 // CHECK: @llvm.ppc.altivec.lvsl
7569 // CHECK: store <4 x i32> zeroinitializer
7570 // CHECK: @llvm.ppc.altivec.vperm
7571 // CHECK: @llvm.ppc.altivec.lvsr
7572 // CHECK: @llvm.ppc.altivec.vperm
7573 // CHECK: @llvm.ppc.altivec.stvx
7574 // CHECK-LE: @llvm.ppc.altivec.lvx
7575 // CHECK-LE: @llvm.ppc.altivec.lvsl
7576 // CHECK-LE: store <4 x i32> zeroinitializer
7577 // CHECK-LE: @llvm.ppc.altivec.vperm
7578 // CHECK-LE: @llvm.ppc.altivec.lvsr
7579 // CHECK-LE: @llvm.ppc.altivec.vperm
7580 // CHECK-LE: @llvm.ppc.altivec.stvx
7581
7582 vec_stvrx(vui, 0, ¶m_ui);
7583 // CHECK: @llvm.ppc.altivec.lvx
7584 // CHECK: @llvm.ppc.altivec.lvsl
7585 // CHECK: store <4 x i32> zeroinitializer
7586 // CHECK: @llvm.ppc.altivec.vperm
7587 // CHECK: @llvm.ppc.altivec.lvsr
7588 // CHECK: @llvm.ppc.altivec.vperm
7589 // CHECK: @llvm.ppc.altivec.stvx
7590 // CHECK-LE: @llvm.ppc.altivec.lvx
7591 // CHECK-LE: @llvm.ppc.altivec.lvsl
7592 // CHECK-LE: store <4 x i32> zeroinitializer
7593 // CHECK-LE: @llvm.ppc.altivec.vperm
7594 // CHECK-LE: @llvm.ppc.altivec.lvsr
7595 // CHECK-LE: @llvm.ppc.altivec.vperm
7596 // CHECK-LE: @llvm.ppc.altivec.stvx
7597
7598 vec_stvrx(vui, 0, &vui);
7599 // CHECK: @llvm.ppc.altivec.lvx
7600 // CHECK: @llvm.ppc.altivec.lvsl
7601 // CHECK: store <4 x i32> zeroinitializer
7602 // CHECK: @llvm.ppc.altivec.vperm
7603 // CHECK: @llvm.ppc.altivec.lvsr
7604 // CHECK: @llvm.ppc.altivec.vperm
7605 // CHECK: @llvm.ppc.altivec.stvx
7606 // CHECK-LE: @llvm.ppc.altivec.lvx
7607 // CHECK-LE: @llvm.ppc.altivec.lvsl
7608 // CHECK-LE: store <4 x i32> zeroinitializer
7609 // CHECK-LE: @llvm.ppc.altivec.vperm
7610 // CHECK-LE: @llvm.ppc.altivec.lvsr
7611 // CHECK-LE: @llvm.ppc.altivec.vperm
7612 // CHECK-LE: @llvm.ppc.altivec.stvx
7613
7614 vec_stvrx(vbi, 0, &vbi);
7615 // CHECK: @llvm.ppc.altivec.lvx
7616 // CHECK: store <4 x i32> zeroinitializer
7617 // CHECK: @llvm.ppc.altivec.lvsl
7618 // CHECK: @llvm.ppc.altivec.vperm
7619 // CHECK: @llvm.ppc.altivec.lvsr
7620 // CHECK: @llvm.ppc.altivec.vperm
7621 // CHECK: @llvm.ppc.altivec.stvx
7622 // CHECK-LE: @llvm.ppc.altivec.lvx
7623 // CHECK-LE: store <4 x i32> zeroinitializer
7624 // CHECK-LE: @llvm.ppc.altivec.lvsl
7625 // CHECK-LE: @llvm.ppc.altivec.vperm
7626 // CHECK-LE: @llvm.ppc.altivec.lvsr
7627 // CHECK-LE: @llvm.ppc.altivec.vperm
7628 // CHECK-LE: @llvm.ppc.altivec.stvx
7629
7630 vec_stvrx(vf, 0, &vf);
7631 // CHECK: @llvm.ppc.altivec.lvx
7632 // CHECK: @llvm.ppc.altivec.lvsl
7633 // CHECK: store <4 x float> zeroinitializer
7634 // CHECK: @llvm.ppc.altivec.vperm
7635 // CHECK: @llvm.ppc.altivec.lvsr
7636 // CHECK: @llvm.ppc.altivec.vperm
7637 // CHECK: @llvm.ppc.altivec.stvx
7638 // CHECK-LE: @llvm.ppc.altivec.lvx
7639 // CHECK-LE: @llvm.ppc.altivec.lvsl
7640 // CHECK-LE: store <4 x float> zeroinitializer
7641 // CHECK-LE: @llvm.ppc.altivec.vperm
7642 // CHECK-LE: @llvm.ppc.altivec.lvsr
7643 // CHECK-LE: @llvm.ppc.altivec.vperm
7644 // CHECK-LE: @llvm.ppc.altivec.stvx
7645
7646 /* vec_stvrxl */
7647 vec_stvrxl(vsc, 0, ¶m_sc);
7648 // CHECK: @llvm.ppc.altivec.lvx
7649 // CHECK: @llvm.ppc.altivec.lvsl
7650 // CHECK: store <16 x i8> zeroinitializer
7651 // CHECK: @llvm.ppc.altivec.vperm
7652 // CHECK: @llvm.ppc.altivec.lvsr
7653 // CHECK: @llvm.ppc.altivec.vperm
7654 // CHECK: @llvm.ppc.altivec.stvxl
7655 // CHECK-LE: @llvm.ppc.altivec.lvx
7656 // CHECK-LE: @llvm.ppc.altivec.lvsl
7657 // CHECK-LE: store <16 x i8> zeroinitializer
7658 // CHECK-LE: @llvm.ppc.altivec.vperm
7659 // CHECK-LE: @llvm.ppc.altivec.lvsr
7660 // CHECK-LE: @llvm.ppc.altivec.vperm
7661 // CHECK-LE: @llvm.ppc.altivec.stvxl
7662
7663 vec_stvrxl(vsc, 0, &vsc);
7664 // CHECK: @llvm.ppc.altivec.lvx
7665 // CHECK: @llvm.ppc.altivec.lvsl
7666 // CHECK: store <16 x i8> zeroinitializer
7667 // CHECK: @llvm.ppc.altivec.vperm
7668 // CHECK: @llvm.ppc.altivec.lvsr
7669 // CHECK: @llvm.ppc.altivec.vperm
7670 // CHECK: @llvm.ppc.altivec.stvxl
7671 // CHECK-LE: @llvm.ppc.altivec.lvx
7672 // CHECK-LE: @llvm.ppc.altivec.lvsl
7673 // CHECK-LE: store <16 x i8> zeroinitializer
7674 // CHECK-LE: @llvm.ppc.altivec.vperm
7675 // CHECK-LE: @llvm.ppc.altivec.lvsr
7676 // CHECK-LE: @llvm.ppc.altivec.vperm
7677 // CHECK-LE: @llvm.ppc.altivec.stvxl
7678
7679 vec_stvrxl(vuc, 0, ¶m_uc);
7680 // CHECK: @llvm.ppc.altivec.lvx
7681 // CHECK: @llvm.ppc.altivec.lvsl
7682 // CHECK: store <16 x i8> zeroinitializer
7683 // CHECK: @llvm.ppc.altivec.vperm
7684 // CHECK: @llvm.ppc.altivec.lvsr
7685 // CHECK: @llvm.ppc.altivec.vperm
7686 // CHECK: @llvm.ppc.altivec.stvxl
7687 // CHECK-LE: @llvm.ppc.altivec.lvx
7688 // CHECK-LE: @llvm.ppc.altivec.lvsl
7689 // CHECK-LE: store <16 x i8> zeroinitializer
7690 // CHECK-LE: @llvm.ppc.altivec.vperm
7691 // CHECK-LE: @llvm.ppc.altivec.lvsr
7692 // CHECK-LE: @llvm.ppc.altivec.vperm
7693 // CHECK-LE: @llvm.ppc.altivec.stvxl
7694
7695 vec_stvrxl(vuc, 0, &vuc);
7696 // CHECK: @llvm.ppc.altivec.lvx
7697 // CHECK: @llvm.ppc.altivec.lvsl
7698 // CHECK: store <16 x i8> zeroinitializer
7699 // CHECK: @llvm.ppc.altivec.vperm
7700 // CHECK: @llvm.ppc.altivec.lvsr
7701 // CHECK: @llvm.ppc.altivec.vperm
7702 // CHECK: @llvm.ppc.altivec.stvxl
7703 // CHECK-LE: @llvm.ppc.altivec.lvx
7704 // CHECK-LE: @llvm.ppc.altivec.lvsl
7705 // CHECK-LE: store <16 x i8> zeroinitializer
7706 // CHECK-LE: @llvm.ppc.altivec.vperm
7707 // CHECK-LE: @llvm.ppc.altivec.lvsr
7708 // CHECK-LE: @llvm.ppc.altivec.vperm
7709 // CHECK-LE: @llvm.ppc.altivec.stvxl
7710
7711 vec_stvrxl(vbc, 0, &vbc);
7712 // CHECK: @llvm.ppc.altivec.lvx
7713 // CHECK: store <16 x i8> zeroinitializer
7714 // CHECK: @llvm.ppc.altivec.lvsl
7715 // CHECK: @llvm.ppc.altivec.vperm
7716 // CHECK: @llvm.ppc.altivec.lvsr
7717 // CHECK: @llvm.ppc.altivec.vperm
7718 // CHECK: @llvm.ppc.altivec.stvxl
7719 // CHECK-LE: @llvm.ppc.altivec.lvx
7720 // CHECK-LE: store <16 x i8> zeroinitializer
7721 // CHECK-LE: @llvm.ppc.altivec.lvsl
7722 // CHECK-LE: @llvm.ppc.altivec.vperm
7723 // CHECK-LE: @llvm.ppc.altivec.lvsr
7724 // CHECK-LE: @llvm.ppc.altivec.vperm
7725 // CHECK-LE: @llvm.ppc.altivec.stvxl
7726
7727 vec_stvrxl(vs, 0, ¶m_s);
7728 // CHECK: @llvm.ppc.altivec.lvx
7729 // CHECK: @llvm.ppc.altivec.lvsl
7730 // CHECK: store <8 x i16> zeroinitializer
7731 // CHECK: @llvm.ppc.altivec.vperm
7732 // CHECK: @llvm.ppc.altivec.lvsr
7733 // CHECK: @llvm.ppc.altivec.vperm
7734 // CHECK: @llvm.ppc.altivec.stvxl
7735 // CHECK-LE: @llvm.ppc.altivec.lvx
7736 // CHECK-LE: @llvm.ppc.altivec.lvsl
7737 // CHECK-LE: store <8 x i16> zeroinitializer
7738 // CHECK-LE: @llvm.ppc.altivec.vperm
7739 // CHECK-LE: @llvm.ppc.altivec.lvsr
7740 // CHECK-LE: @llvm.ppc.altivec.vperm
7741 // CHECK-LE: @llvm.ppc.altivec.stvxl
7742
7743 vec_stvrxl(vs, 0, &vs);
7744 // CHECK: @llvm.ppc.altivec.lvx
7745 // CHECK: @llvm.ppc.altivec.lvsl
7746 // CHECK: store <8 x i16> zeroinitializer
7747 // CHECK: @llvm.ppc.altivec.vperm
7748 // CHECK: @llvm.ppc.altivec.lvsr
7749 // CHECK: @llvm.ppc.altivec.vperm
7750 // CHECK: @llvm.ppc.altivec.stvxl
7751 // CHECK-LE: @llvm.ppc.altivec.lvx
7752 // CHECK-LE: @llvm.ppc.altivec.lvsl
7753 // CHECK-LE: store <8 x i16> zeroinitializer
7754 // CHECK-LE: @llvm.ppc.altivec.vperm
7755 // CHECK-LE: @llvm.ppc.altivec.lvsr
7756 // CHECK-LE: @llvm.ppc.altivec.vperm
7757 // CHECK-LE: @llvm.ppc.altivec.stvxl
7758
7759 vec_stvrxl(vus, 0, ¶m_us);
7760 // CHECK: @llvm.ppc.altivec.lvx
7761 // CHECK: @llvm.ppc.altivec.lvsl
7762 // CHECK: store <8 x i16> zeroinitializer
7763 // CHECK: @llvm.ppc.altivec.vperm
7764 // CHECK: @llvm.ppc.altivec.lvsr
7765 // CHECK: @llvm.ppc.altivec.vperm
7766 // CHECK: @llvm.ppc.altivec.stvxl
7767 // CHECK-LE: @llvm.ppc.altivec.lvx
7768 // CHECK-LE: @llvm.ppc.altivec.lvsl
7769 // CHECK-LE: store <8 x i16> zeroinitializer
7770 // CHECK-LE: @llvm.ppc.altivec.vperm
7771 // CHECK-LE: @llvm.ppc.altivec.lvsr
7772 // CHECK-LE: @llvm.ppc.altivec.vperm
7773 // CHECK-LE: @llvm.ppc.altivec.stvxl
7774
7775 vec_stvrxl(vus, 0, &vus);
7776 // CHECK: @llvm.ppc.altivec.lvx
7777 // CHECK: @llvm.ppc.altivec.lvsl
7778 // CHECK: store <8 x i16> zeroinitializer
7779 // CHECK: @llvm.ppc.altivec.vperm
7780 // CHECK: @llvm.ppc.altivec.lvsr
7781 // CHECK: @llvm.ppc.altivec.vperm
7782 // CHECK: @llvm.ppc.altivec.stvxl
7783 // CHECK-LE: @llvm.ppc.altivec.lvx
7784 // CHECK-LE: @llvm.ppc.altivec.lvsl
7785 // CHECK-LE: store <8 x i16> zeroinitializer
7786 // CHECK-LE: @llvm.ppc.altivec.vperm
7787 // CHECK-LE: @llvm.ppc.altivec.lvsr
7788 // CHECK-LE: @llvm.ppc.altivec.vperm
7789 // CHECK-LE: @llvm.ppc.altivec.stvxl
7790
7791 vec_stvrxl(vbs, 0, &vbs);
7792 // CHECK: @llvm.ppc.altivec.lvx
7793 // CHECK: store <8 x i16> zeroinitializer
7794 // CHECK: @llvm.ppc.altivec.lvsl
7795 // CHECK: @llvm.ppc.altivec.vperm
7796 // CHECK: @llvm.ppc.altivec.lvsr
7797 // CHECK: @llvm.ppc.altivec.vperm
7798 // CHECK: @llvm.ppc.altivec.stvxl
7799 // CHECK-LE: @llvm.ppc.altivec.lvx
7800 // CHECK-LE: store <8 x i16> zeroinitializer
7801 // CHECK-LE: @llvm.ppc.altivec.lvsl
7802 // CHECK-LE: @llvm.ppc.altivec.vperm
7803 // CHECK-LE: @llvm.ppc.altivec.lvsr
7804 // CHECK-LE: @llvm.ppc.altivec.vperm
7805 // CHECK-LE: @llvm.ppc.altivec.stvxl
7806
7807 vec_stvrxl(vp, 0, &vp);
7808 // CHECK: @llvm.ppc.altivec.lvx
7809 // CHECK: store <8 x i16> zeroinitializer
7810 // CHECK: @llvm.ppc.altivec.lvsl
7811 // CHECK: @llvm.ppc.altivec.vperm
7812 // CHECK: @llvm.ppc.altivec.lvsr
7813 // CHECK: @llvm.ppc.altivec.vperm
7814 // CHECK: @llvm.ppc.altivec.stvxl
7815 // CHECK-LE: @llvm.ppc.altivec.lvx
7816 // CHECK-LE: store <8 x i16> zeroinitializer
7817 // CHECK-LE: @llvm.ppc.altivec.lvsl
7818 // CHECK-LE: @llvm.ppc.altivec.vperm
7819 // CHECK-LE: @llvm.ppc.altivec.lvsr
7820 // CHECK-LE: @llvm.ppc.altivec.vperm
7821 // CHECK-LE: @llvm.ppc.altivec.stvxl
7822
7823 vec_stvrxl(vi, 0, ¶m_i);
7824 // CHECK: @llvm.ppc.altivec.lvx
7825 // CHECK: @llvm.ppc.altivec.lvsl
7826 // CHECK: store <4 x i32> zeroinitializer
7827 // CHECK: @llvm.ppc.altivec.vperm
7828 // CHECK: @llvm.ppc.altivec.lvsr
7829 // CHECK: @llvm.ppc.altivec.vperm
7830 // CHECK: @llvm.ppc.altivec.stvxl
7831 // CHECK-LE: @llvm.ppc.altivec.lvx
7832 // CHECK-LE: @llvm.ppc.altivec.lvsl
7833 // CHECK-LE: store <4 x i32> zeroinitializer
7834 // CHECK-LE: @llvm.ppc.altivec.vperm
7835 // CHECK-LE: @llvm.ppc.altivec.lvsr
7836 // CHECK-LE: @llvm.ppc.altivec.vperm
7837 // CHECK-LE: @llvm.ppc.altivec.stvxl
7838
7839 vec_stvrxl(vi, 0, &vi);
7840 // CHECK: @llvm.ppc.altivec.lvx
7841 // CHECK: @llvm.ppc.altivec.lvsl
7842 // CHECK: store <4 x i32> zeroinitializer
7843 // CHECK: @llvm.ppc.altivec.vperm
7844 // CHECK: @llvm.ppc.altivec.lvsr
7845 // CHECK: @llvm.ppc.altivec.vperm
7846 // CHECK: @llvm.ppc.altivec.stvxl
7847 // CHECK-LE: @llvm.ppc.altivec.lvx
7848 // CHECK-LE: @llvm.ppc.altivec.lvsl
7849 // CHECK-LE: store <4 x i32> zeroinitializer
7850 // CHECK-LE: @llvm.ppc.altivec.vperm
7851 // CHECK-LE: @llvm.ppc.altivec.lvsr
7852 // CHECK-LE: @llvm.ppc.altivec.vperm
7853 // CHECK-LE: @llvm.ppc.altivec.stvxl
7854
7855 vec_stvrxl(vui, 0, ¶m_ui);
7856 // CHECK: @llvm.ppc.altivec.lvx
7857 // CHECK: @llvm.ppc.altivec.lvsl
7858 // CHECK: store <4 x i32> zeroinitializer
7859 // CHECK: @llvm.ppc.altivec.vperm
7860 // CHECK: @llvm.ppc.altivec.lvsr
7861 // CHECK: @llvm.ppc.altivec.vperm
7862 // CHECK: @llvm.ppc.altivec.stvxl
7863 // CHECK-LE: @llvm.ppc.altivec.lvx
7864 // CHECK-LE: @llvm.ppc.altivec.lvsl
7865 // CHECK-LE: store <4 x i32> zeroinitializer
7866 // CHECK-LE: @llvm.ppc.altivec.vperm
7867 // CHECK-LE: @llvm.ppc.altivec.lvsr
7868 // CHECK-LE: @llvm.ppc.altivec.vperm
7869 // CHECK-LE: @llvm.ppc.altivec.stvxl
7870
7871 vec_stvrxl(vui, 0, &vui);
7872 // CHECK: @llvm.ppc.altivec.lvx
7873 // CHECK: @llvm.ppc.altivec.lvsl
7874 // CHECK: store <4 x i32> zeroinitializer
7875 // CHECK: @llvm.ppc.altivec.vperm
7876 // CHECK: @llvm.ppc.altivec.lvsr
7877 // CHECK: @llvm.ppc.altivec.vperm
7878 // CHECK: @llvm.ppc.altivec.stvxl
7879 // CHECK-LE: @llvm.ppc.altivec.lvx
7880 // CHECK-LE: @llvm.ppc.altivec.lvsl
7881 // CHECK-LE: store <4 x i32> zeroinitializer
7882 // CHECK-LE: @llvm.ppc.altivec.vperm
7883 // CHECK-LE: @llvm.ppc.altivec.lvsr
7884 // CHECK-LE: @llvm.ppc.altivec.vperm
7885 // CHECK-LE: @llvm.ppc.altivec.stvxl
7886
7887 vec_stvrxl(vbi, 0, &vbi);
7888 // CHECK: @llvm.ppc.altivec.lvx
7889 // CHECK: store <4 x i32> zeroinitializer
7890 // CHECK: @llvm.ppc.altivec.lvsl
7891 // CHECK: @llvm.ppc.altivec.vperm
7892 // CHECK: @llvm.ppc.altivec.lvsr
7893 // CHECK: @llvm.ppc.altivec.vperm
7894 // CHECK: @llvm.ppc.altivec.stvxl
7895 // CHECK-LE: @llvm.ppc.altivec.lvx
7896 // CHECK-LE: store <4 x i32> zeroinitializer
7897 // CHECK-LE: @llvm.ppc.altivec.lvsl
7898 // CHECK-LE: @llvm.ppc.altivec.vperm
7899 // CHECK-LE: @llvm.ppc.altivec.lvsr
7900 // CHECK-LE: @llvm.ppc.altivec.vperm
7901 // CHECK-LE: @llvm.ppc.altivec.stvxl
7902
7903 vec_stvrxl(vf, 0, &vf);
7904 // CHECK: @llvm.ppc.altivec.lvx
7905 // CHECK: @llvm.ppc.altivec.lvsl
7906 // CHECK: store <4 x float> zeroinitializer
7907 // CHECK: @llvm.ppc.altivec.vperm
7908 // CHECK: @llvm.ppc.altivec.lvsr
7909 // CHECK: @llvm.ppc.altivec.vperm
7910 // CHECK: @llvm.ppc.altivec.stvxl
7911 // CHECK-LE: @llvm.ppc.altivec.lvx
7912 // CHECK-LE: @llvm.ppc.altivec.lvsl
7913 // CHECK-LE: store <4 x float> zeroinitializer
7914 // CHECK-LE: @llvm.ppc.altivec.vperm
7915 // CHECK-LE: @llvm.ppc.altivec.lvsr
7916 // CHECK-LE: @llvm.ppc.altivec.vperm
7917 // CHECK-LE: @llvm.ppc.altivec.stvxl
7918
7919 /* vec_promote */
7920 res_vsc = vec_promote(param_sc, 0);
7921 // CHECK: store <16 x i8> zeroinitializer
7922 // CHECK: insertelement <16 x i8>
7923 // CHECK-LE: store <16 x i8> zeroinitializer
7924 // CHECK-LE: insertelement <16 x i8>
7925
7926 res_vuc = vec_promote(param_uc, 0);
7927 // CHECK: store <16 x i8> zeroinitializer
7928 // CHECK: insertelement <16 x i8>
7929 // CHECK-LE: store <16 x i8> zeroinitializer
7930 // CHECK-LE: insertelement <16 x i8>
7931
7932 res_vs = vec_promote(param_s, 0);
7933 // CHECK: store <8 x i16> zeroinitializer
7934 // CHECK: insertelement <8 x i16>
7935 // CHECK-LE: store <8 x i16> zeroinitializer
7936 // CHECK-LE: insertelement <8 x i16>
7937
7938 res_vus = vec_promote(param_us, 0);
7939 // CHECK: store <8 x i16> zeroinitializer
7940 // CHECK: insertelement <8 x i16>
7941 // CHECK-LE: store <8 x i16> zeroinitializer
7942 // CHECK-LE: insertelement <8 x i16>
7943
7944 res_vi = vec_promote(param_i, 0);
7945 // CHECK: store <4 x i32> zeroinitializer
7946 // CHECK: insertelement <4 x i32>
7947 // CHECK-LE: store <4 x i32> zeroinitializer
7948 // CHECK-LE: insertelement <4 x i32>
7949
7950 res_vui = vec_promote(param_ui, 0);
7951 // CHECK: store <4 x i32> zeroinitializer
7952 // CHECK: insertelement <4 x i32>
7953 // CHECK-LE: store <4 x i32> zeroinitializer
7954 // CHECK-LE: insertelement <4 x i32>
7955
7956 res_vf = vec_promote(param_f, 0);
7957 // CHECK: store <4 x float> zeroinitializer
7958 // CHECK: insertelement <4 x float>
7959 // CHECK-LE: store <4 x float> zeroinitializer
7960 // CHECK-LE: insertelement <4 x float>
7961
7962 /* vec_splats */
7963 res_vsc = vec_splats(param_sc);
7964 // CHECK: insertelement <16 x i8>
7965 // CHECK-LE: insertelement <16 x i8>
7966
7967 res_vuc = vec_splats(param_uc);
7968 // CHECK: insertelement <16 x i8>
7969 // CHECK-LE: insertelement <16 x i8>
7970
7971 res_vs = vec_splats(param_s);
7972 // CHECK: insertelement <8 x i16>
7973 // CHECK-LE: insertelement <8 x i16>
7974
7975 res_vus = vec_splats(param_us);
7976 // CHECK: insertelement <8 x i16>
7977 // CHECK-LE: insertelement <8 x i16>
7978
7979 res_vi = vec_splats(param_i);
7980 // CHECK: insertelement <4 x i32>
7981 // CHECK-LE: insertelement <4 x i32>
7982
7983 res_vui = vec_splats(param_ui);
7984 // CHECK: insertelement <4 x i32>
7985 // CHECK-LE: insertelement <4 x i32>
7986
7987 res_vf = vec_splats(param_f);
7988 // CHECK: insertelement <4 x float>
7989 // CHECK-LE: insertelement <4 x float>
7990
7991 /* ------------------------------ predicates -------------------------------------- */
7992
7993 /* vec_all_eq */
7994 res_i = vec_all_eq(vsc, vsc);
7995 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7996 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7997
7998 res_i = vec_all_eq(vsc, vbc);
7999 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8000 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8001
8002 res_i = vec_all_eq(vuc, vuc);
8003 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8004 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8005
8006 res_i = vec_all_eq(vuc, vbc);
8007 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8008 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8009
8010 res_i = vec_all_eq(vbc, vsc);
8011 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8012 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8013
8014 res_i = vec_all_eq(vbc, vuc);
8015 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8016 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8017
8018 res_i = vec_all_eq(vbc, vbc);
8019 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8020 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8021
8022 res_i = vec_all_eq(vs, vs);
8023 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8024 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8025
8026 res_i = vec_all_eq(vs, vbs);
8027 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8028 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8029
8030 res_i = vec_all_eq(vus, vus);
8031 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8032 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8033
8034 res_i = vec_all_eq(vus, vbs);
8035 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8036 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8037
8038 res_i = vec_all_eq(vbs, vs);
8039 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8040 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8041
8042 res_i = vec_all_eq(vbs, vus);
8043 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8044 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8045
8046 res_i = vec_all_eq(vbs, vbs);
8047 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8048 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8049
8050 res_i = vec_all_eq(vp, vp);
8051 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8052 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8053
8054 res_i = vec_all_eq(vi, vi);
8055 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8056 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8057
8058 res_i = vec_all_eq(vi, vbi);
8059 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8060 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8061
8062 res_i = vec_all_eq(vui, vui);
8063 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8064 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8065
8066 res_i = vec_all_eq(vui, vbi);
8067 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8068 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8069
8070 res_i = vec_all_eq(vbi, vi);
8071 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8072 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8073
8074 res_i = vec_all_eq(vbi, vui);
8075 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8076 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8077
8078 res_i = vec_all_eq(vbi, vbi);
8079 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8080 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8081
8082 res_i = vec_all_eq(vf, vf);
8083 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8084 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8085
8086 /* vec_all_ge */
8087 res_i = vec_all_ge(vsc, vsc);
8088 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8089 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8090
8091 res_i = vec_all_ge(vsc, vbc);
8092 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8093 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8094
8095 res_i = vec_all_ge(vuc, vuc);
8096 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8097 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8098
8099 res_i = vec_all_ge(vuc, vbc);
8100 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8101 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8102
8103 res_i = vec_all_ge(vbc, vsc);
8104 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8105 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8106
8107 res_i = vec_all_ge(vbc, vuc);
8108 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8109 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8110
8111 res_i = vec_all_ge(vbc, vbc);
8112 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8113 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8114
8115 res_i = vec_all_ge(vs, vs);
8116 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8117 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8118
8119 res_i = vec_all_ge(vs, vbs);
8120 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8121 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8122
8123 res_i = vec_all_ge(vus, vus);
8124 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8125 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8126
8127 res_i = vec_all_ge(vus, vbs);
8128 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8130
8131 res_i = vec_all_ge(vbs, vs);
8132 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8134
8135 res_i = vec_all_ge(vbs, vus);
8136 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8138
8139 res_i = vec_all_ge(vbs, vbs);
8140 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8142
8143 res_i = vec_all_ge(vi, vi);
8144 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8145 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8146
8147 res_i = vec_all_ge(vi, vbi);
8148 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8149 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8150
8151 res_i = vec_all_ge(vui, vui);
8152 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8153 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8154
8155 res_i = vec_all_ge(vui, vbi);
8156 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8157 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8158
8159 res_i = vec_all_ge(vbi, vi);
8160 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8161 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8162
8163 res_i = vec_all_ge(vbi, vui);
8164 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8165 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8166
8167 res_i = vec_all_ge(vbi, vbi);
8168 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8169 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8170
8171 res_i = vec_all_ge(vf, vf);
8172 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8173 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8174
8175 /* vec_all_gt */
8176 res_i = vec_all_gt(vsc, vsc);
8177 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8178 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8179
8180 res_i = vec_all_gt(vsc, vbc);
8181 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8182 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8183
8184 res_i = vec_all_gt(vuc, vuc);
8185 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8186 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8187
8188 res_i = vec_all_gt(vuc, vbc);
8189 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8190 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8191
8192 res_i = vec_all_gt(vbc, vsc);
8193 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8194 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8195
8196 res_i = vec_all_gt(vbc, vuc);
8197 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8198 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8199
8200 res_i = vec_all_gt(vbc, vbc);
8201 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8202 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8203
8204 res_i = vec_all_gt(vs, vs);
8205 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8206 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8207
8208 res_i = vec_all_gt(vs, vbs);
8209 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8210 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8211
8212 res_i = vec_all_gt(vus, vus);
8213 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8214 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8215
8216 res_i = vec_all_gt(vus, vbs);
8217 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8218 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8219
8220 res_i = vec_all_gt(vbs, vs);
8221 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8222 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8223
8224 res_i = vec_all_gt(vbs, vus);
8225 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8226 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8227
8228 res_i = vec_all_gt(vbs, vbs);
8229 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8230 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8231
8232 res_i = vec_all_gt(vi, vi);
8233 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8234 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8235
8236 res_i = vec_all_gt(vi, vbi);
8237 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8238 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8239
8240 res_i = vec_all_gt(vui, vui);
8241 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8242 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8243
8244 res_i = vec_all_gt(vui, vbi);
8245 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8246 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8247
8248 res_i = vec_all_gt(vbi, vi);
8249 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8250 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8251
8252 res_i = vec_all_gt(vbi, vui);
8253 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8254 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8255
8256 res_i = vec_all_gt(vbi, vbi);
8257 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8258 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8259
8260 res_i = vec_all_gt(vf, vf);
8261 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8262 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8263
8264 /* vec_all_in */
8265 res_i = vec_all_in(vf, vf);
8266 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
8267 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8268
8269 /* vec_all_le */
8270 res_i = vec_all_le(vsc, vsc);
8271 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8272 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8273
8274 res_i = vec_all_le(vsc, vbc);
8275 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8276 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8277
8278 res_i = vec_all_le(vuc, vuc);
8279 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8280 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8281
8282 res_i = vec_all_le(vuc, vbc);
8283 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8284 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8285
8286 res_i = vec_all_le(vbc, vsc);
8287 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8288 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8289
8290 res_i = vec_all_le(vbc, vuc);
8291 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8292 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8293
8294 res_i = vec_all_le(vbc, vbc);
8295 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8296 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8297
8298 res_i = vec_all_le(vs, vs);
8299 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8300 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8301
8302 res_i = vec_all_le(vs, vbs);
8303 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8304 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8305
8306 res_i = vec_all_le(vus, vus);
8307 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8308 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8309
8310 res_i = vec_all_le(vus, vbs);
8311 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8312 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8313
8314 res_i = vec_all_le(vbs, vs);
8315 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8316 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8317
8318 res_i = vec_all_le(vbs, vus);
8319 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8320 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8321
8322 res_i = vec_all_le(vbs, vbs);
8323 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8324 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8325
8326 res_i = vec_all_le(vi, vi);
8327 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8328 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8329
8330 res_i = vec_all_le(vi, vbi);
8331 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8332 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8333
8334 res_i = vec_all_le(vui, vui);
8335 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8336 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8337
8338 res_i = vec_all_le(vui, vbi);
8339 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8340 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8341
8342 res_i = vec_all_le(vbi, vi);
8343 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8344 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8345
8346 res_i = vec_all_le(vbi, vui);
8347 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8348 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8349
8350 res_i = vec_all_le(vbi, vbi);
8351 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8352 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8353
8354 res_i = vec_all_le(vf, vf);
8355 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8356 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8357
8358 /* vec_all_lt */
8359 res_i = vec_all_lt(vsc, vsc);
8360 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8361 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8362
8363 res_i = vec_all_lt(vsc, vbc);
8364 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8365 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8366
8367 res_i = vec_all_lt(vuc, vuc);
8368 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8369 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8370
8371 res_i = vec_all_lt(vuc, vbc);
8372 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8373 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8374
8375 res_i = vec_all_lt(vbc, vsc);
8376 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8377 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8378
8379 res_i = vec_all_lt(vbc, vuc);
8380 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8381 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8382
8383 res_i = vec_all_lt(vbc, vbc);
8384 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8385 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8386
8387 res_i = vec_all_lt(vs, vs);
8388 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8389 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8390
8391 res_i = vec_all_lt(vs, vbs);
8392 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8393 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8394
8395 res_i = vec_all_lt(vus, vus);
8396 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8397 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8398
8399 res_i = vec_all_lt(vus, vbs);
8400 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8401 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8402
8403 res_i = vec_all_lt(vbs, vs);
8404 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8405 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8406
8407 res_i = vec_all_lt(vbs, vus);
8408 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8409 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8410
8411 res_i = vec_all_lt(vbs, vbs);
8412 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8413 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8414
8415 res_i = vec_all_lt(vi, vi);
8416 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8417 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8418
8419 res_i = vec_all_lt(vi, vbi);
8420 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8421 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8422
8423 res_i = vec_all_lt(vui, vui);
8424 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8425 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8426
8427 res_i = vec_all_lt(vui, vbi);
8428 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8429 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8430
8431 res_i = vec_all_lt(vbi, vi);
8432 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8433 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8434
8435 res_i = vec_all_lt(vbi, vui);
8436 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8437 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8438
8439 res_i = vec_all_lt(vbi, vbi);
8440 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8441 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8442
8443 res_i = vec_all_lt(vf, vf);
8444 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8445 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8446
8447 /* vec_all_nan */
8448 res_i = vec_all_nan(vf);
8449 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8450 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8451
8452 /* vec_all_ne */
8453 res_i = vec_all_ne(vsc, vsc);
8454 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8455 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8456
8457 res_i = vec_all_ne(vsc, vbc);
8458 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8459 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8460
8461 res_i = vec_all_ne(vuc, vuc);
8462 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8463 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8464
8465 res_i = vec_all_ne(vuc, vbc);
8466 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8467 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8468
8469 res_i = vec_all_ne(vbc, vsc);
8470 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8471 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8472
8473 res_i = vec_all_ne(vbc, vuc);
8474 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8475 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8476
8477 res_i = vec_all_ne(vbc, vbc);
8478 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8479 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8480
8481 res_i = vec_all_ne(vs, vs);
8482 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8483 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8484
8485 res_i = vec_all_ne(vs, vbs);
8486 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8487 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8488
8489 res_i = vec_all_ne(vus, vus);
8490 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8491 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8492
8493 res_i = vec_all_ne(vus, vbs);
8494 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8495 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8496
8497 res_i = vec_all_ne(vbs, vs);
8498 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8499 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8500
8501 res_i = vec_all_ne(vbs, vus);
8502 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8503 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8504
8505 res_i = vec_all_ne(vbs, vbs);
8506 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8507 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8508
8509 res_i = vec_all_ne(vp, vp);
8510 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8511 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8512
8513 res_i = vec_all_ne(vi, vi);
8514 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8515 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8516
8517 res_i = vec_all_ne(vi, vbi);
8518 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8519 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8520
8521 res_i = vec_all_ne(vui, vui);
8522 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8523 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8524
8525 res_i = vec_all_ne(vui, vbi);
8526 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8527 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8528
8529 res_i = vec_all_ne(vbi, vi);
8530 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8531 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8532
8533 res_i = vec_all_ne(vbi, vui);
8534 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8535 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8536
8537 res_i = vec_all_ne(vbi, vbi);
8538 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8539 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8540
8541 res_i = vec_all_ne(vf, vf);
8542 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8543 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8544
8545 /* vec_all_nge */
8546 res_i = vec_all_nge(vf, vf);
8547 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8548 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8549
8550 /* vec_all_ngt */
8551 res_i = vec_all_ngt(vf, vf);
8552 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8553 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8554
8555 /* vec_all_nle */
8556 res_i = vec_all_nle(vf, vf);
8557 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8558 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8559
8560 /* vec_all_nlt */
8561 res_i = vec_all_nlt(vf, vf);
8562 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8563 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8564
8565 /* vec_all_numeric */
8566 res_i = vec_all_numeric(vf);
8567 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8568 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8569
8570 /* vec_any_eq */
8571 res_i = vec_any_eq(vsc, vsc);
8572 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8573 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8574
8575 res_i = vec_any_eq(vsc, vbc);
8576 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8577 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8578
8579 res_i = vec_any_eq(vuc, vuc);
8580 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8581 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8582
8583 res_i = vec_any_eq(vuc, vbc);
8584 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8585 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8586
8587 res_i = vec_any_eq(vbc, vsc);
8588 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8589 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8590
8591 res_i = vec_any_eq(vbc, vuc);
8592 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8593 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8594
8595 res_i = vec_any_eq(vbc, vbc);
8596 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8597 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8598
8599 res_i = vec_any_eq(vs, vs);
8600 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8601 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8602
8603 res_i = vec_any_eq(vs, vbs);
8604 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8605 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8606
8607 res_i = vec_any_eq(vus, vus);
8608 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8609 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8610
8611 res_i = vec_any_eq(vus, vbs);
8612 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8613 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8614
8615 res_i = vec_any_eq(vbs, vs);
8616 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8617 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8618
8619 res_i = vec_any_eq(vbs, vus);
8620 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8621 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8622
8623 res_i = vec_any_eq(vbs, vbs);
8624 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8625 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8626
8627 res_i = vec_any_eq(vp, vp);
8628 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8629 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8630
8631 res_i = vec_any_eq(vi, vi);
8632 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8633 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8634
8635 res_i = vec_any_eq(vi, vbi);
8636 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8637 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8638
8639 res_i = vec_any_eq(vui, vui);
8640 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8641 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8642
8643 res_i = vec_any_eq(vui, vbi);
8644 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8645 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8646
8647 res_i = vec_any_eq(vbi, vi);
8648 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8649 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8650
8651 res_i = vec_any_eq(vbi, vui);
8652 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8653 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8654
8655 res_i = vec_any_eq(vbi, vbi);
8656 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8657 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8658
8659 res_i = vec_any_eq(vf, vf);
8660 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8661 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8662
8663 /* vec_any_ge */
8664 res_i = vec_any_ge(vsc, vsc);
8665 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8666 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8667
8668 res_i = vec_any_ge(vsc, vbc);
8669 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8670 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8671
8672 res_i = vec_any_ge(vuc, vuc);
8673 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8674 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8675
8676 res_i = vec_any_ge(vuc, vbc);
8677 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8678 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8679
8680 res_i = vec_any_ge(vbc, vsc);
8681 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8682 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8683
8684 res_i = vec_any_ge(vbc, vuc);
8685 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8686 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8687
8688 res_i = vec_any_ge(vbc, vbc);
8689 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8690 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8691
8692 res_i = vec_any_ge(vs, vs);
8693 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8694 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8695
8696 res_i = vec_any_ge(vs, vbs);
8697 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8698 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8699
8700 res_i = vec_any_ge(vus, vus);
8701 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8702 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8703
8704 res_i = vec_any_ge(vus, vbs);
8705 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8706 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8707
8708 res_i = vec_any_ge(vbs, vs);
8709 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8710 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8711
8712 res_i = vec_any_ge(vbs, vus);
8713 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8714 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8715
8716 res_i = vec_any_ge(vbs, vbs);
8717 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8718 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8719
8720 res_i = vec_any_ge(vi, vi);
8721 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8722 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8723
8724 res_i = vec_any_ge(vi, vbi);
8725 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8726 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8727
8728 res_i = vec_any_ge(vui, vui);
8729 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8730 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8731
8732 res_i = vec_any_ge(vui, vbi);
8733 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8734 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8735
8736 res_i = vec_any_ge(vbi, vi);
8737 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8738 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8739
8740 res_i = vec_any_ge(vbi, vui);
8741 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8742 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8743
8744 res_i = vec_any_ge(vbi, vbi);
8745 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8746 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8747
8748 res_i = vec_any_ge(vf, vf);
8749 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8750 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8751
8752 /* vec_any_gt */
8753 res_i = vec_any_gt(vsc, vsc);
8754 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8755 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8756
8757 res_i = vec_any_gt(vsc, vbc);
8758 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8759 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8760
8761 res_i = vec_any_gt(vuc, vuc);
8762 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8763 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8764
8765 res_i = vec_any_gt(vuc, vbc);
8766 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8767 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8768
8769 res_i = vec_any_gt(vbc, vsc);
8770 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8771 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8772
8773 res_i = vec_any_gt(vbc, vuc);
8774 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8775 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8776
8777 res_i = vec_any_gt(vbc, vbc);
8778 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8779 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8780
8781 res_i = vec_any_gt(vs, vs);
8782 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8783 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8784
8785 res_i = vec_any_gt(vs, vbs);
8786 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8787 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8788
8789 res_i = vec_any_gt(vus, vus);
8790 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8791 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8792
8793 res_i = vec_any_gt(vus, vbs);
8794 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8795 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8796
8797 res_i = vec_any_gt(vbs, vs);
8798 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8799 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8800
8801 res_i = vec_any_gt(vbs, vus);
8802 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8803 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8804
8805 res_i = vec_any_gt(vbs, vbs);
8806 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8807 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8808
8809 res_i = vec_any_gt(vi, vi);
8810 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8811 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8812
8813 res_i = vec_any_gt(vi, vbi);
8814 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8815 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8816
8817 res_i = vec_any_gt(vui, vui);
8818 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8819 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8820
8821 res_i = vec_any_gt(vui, vbi);
8822 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8823 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8824
8825 res_i = vec_any_gt(vbi, vi);
8826 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8827 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8828
8829 res_i = vec_any_gt(vbi, vui);
8830 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8831 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8832
8833 res_i = vec_any_gt(vbi, vbi);
8834 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8835 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8836
8837 res_i = vec_any_gt(vf, vf);
8838 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8839 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8840
8841 /* vec_any_le */
8842 res_i = vec_any_le(vsc, vsc);
8843 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8844 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8845
8846 res_i = vec_any_le(vsc, vbc);
8847 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8848 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8849
8850 res_i = vec_any_le(vuc, vuc);
8851 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8852 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8853
8854 res_i = vec_any_le(vuc, vbc);
8855 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8856 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8857
8858 res_i = vec_any_le(vbc, vsc);
8859 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8860 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8861
8862 res_i = vec_any_le(vbc, vuc);
8863 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8864 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8865
8866 res_i = vec_any_le(vbc, vbc);
8867 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8868 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8869
8870 res_i = vec_any_le(vs, vs);
8871 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8872 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8873
8874 res_i = vec_any_le(vs, vbs);
8875 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8876 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8877
8878 res_i = vec_any_le(vus, vus);
8879 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8880 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8881
8882 res_i = vec_any_le(vus, vbs);
8883 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8884 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8885
8886 res_i = vec_any_le(vbs, vs);
8887 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8888 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8889
8890 res_i = vec_any_le(vbs, vus);
8891 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8892 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8893
8894 res_i = vec_any_le(vbs, vbs);
8895 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8896 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8897
8898 res_i = vec_any_le(vi, vi);
8899 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8900 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8901
8902 res_i = vec_any_le(vi, vbi);
8903 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8904 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8905
8906 res_i = vec_any_le(vui, vui);
8907 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8908 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8909
8910 res_i = vec_any_le(vui, vbi);
8911 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8912 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8913
8914 res_i = vec_any_le(vbi, vi);
8915 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8916 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8917
8918 res_i = vec_any_le(vbi, vui);
8919 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8920 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8921
8922 res_i = vec_any_le(vbi, vbi);
8923 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8924 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8925
8926 res_i = vec_any_le(vf, vf);
8927 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8928 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8929
8930 /* vec_any_lt */
8931 res_i = vec_any_lt(vsc, vsc);
8932 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8933 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8934
8935 res_i = vec_any_lt(vsc, vbc);
8936 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8937 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8938
8939 res_i = vec_any_lt(vuc, vuc);
8940 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8941 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8942
8943 res_i = vec_any_lt(vuc, vbc);
8944 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8945 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8946
8947 res_i = vec_any_lt(vbc, vsc);
8948 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8949 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8950
8951 res_i = vec_any_lt(vbc, vuc);
8952 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8953 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8954
8955 res_i = vec_any_lt(vbc, vbc);
8956 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8957 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8958
8959 res_i = vec_any_lt(vs, vs);
8960 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8961 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8962
8963 res_i = vec_any_lt(vs, vbs);
8964 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8965 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8966
8967 res_i = vec_any_lt(vus, vus);
8968 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8969 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8970
8971 res_i = vec_any_lt(vus, vbs);
8972 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8973 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8974
8975 res_i = vec_any_lt(vbs, vs);
8976 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8977 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8978
8979 res_i = vec_any_lt(vbs, vus);
8980 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8981 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8982
8983 res_i = vec_any_lt(vbs, vbs);
8984 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8985 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8986
8987 res_i = vec_any_lt(vi, vi);
8988 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8989 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8990
8991 res_i = vec_any_lt(vi, vbi);
8992 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8993 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8994
8995 res_i = vec_any_lt(vui, vui);
8996 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8997 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8998
8999 res_i = vec_any_lt(vui, vbi);
9000 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9001 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9002
9003 res_i = vec_any_lt(vbi, vi);
9004 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
9005 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
9006
9007 res_i = vec_any_lt(vbi, vui);
9008 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9009 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9010
9011 res_i = vec_any_lt(vbi, vbi);
9012 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9014
9015 res_i = vec_any_lt(vf, vf);
9016 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9017 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9018
9019 /* vec_any_nan */
9020 res_i = vec_any_nan(vf);
9021 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9022 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9023
9024 /* vec_any_ne */
9025 res_i = vec_any_ne(vsc, vsc);
9026 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9027 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9028
9029 res_i = vec_any_ne(vsc, vbc);
9030 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9031 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9032
9033 res_i = vec_any_ne(vuc, vuc);
9034 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9035 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9036
9037 res_i = vec_any_ne(vuc, vbc);
9038 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9039 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9040
9041 res_i = vec_any_ne(vbc, vsc);
9042 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9043 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9044
9045 res_i = vec_any_ne(vbc, vuc);
9046 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9047 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9048
9049 res_i = vec_any_ne(vbc, vbc);
9050 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9051 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9052
9053 res_i = vec_any_ne(vs, vs);
9054 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9055 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9056
9057 res_i = vec_any_ne(vs, vbs);
9058 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9059 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9060
9061 res_i = vec_any_ne(vus, vus);
9062 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9063 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9064
9065 res_i = vec_any_ne(vus, vbs);
9066 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9067 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9068
9069 res_i = vec_any_ne(vbs, vs);
9070 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9071 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9072
9073 res_i = vec_any_ne(vbs, vus);
9074 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9075 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9076
9077 res_i = vec_any_ne(vbs, vbs);
9078 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9079 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9080
9081 res_i = vec_any_ne(vp, vp);
9082 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9083 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9084
9085 res_i = vec_any_ne(vi, vi);
9086 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9087 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9088
9089 res_i = vec_any_ne(vi, vbi);
9090 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9091 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9092
9093 res_i = vec_any_ne(vui, vui);
9094 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9095 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9096
9097 res_i = vec_any_ne(vui, vbi);
9098 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9099 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9100
9101 res_i = vec_any_ne(vbi, vi);
9102 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9103 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9104
9105 res_i = vec_any_ne(vbi, vui);
9106 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9107 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9108
9109 res_i = vec_any_ne(vbi, vbi);
9110 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9111 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9112
9113 res_i = vec_any_ne(vf, vf);
9114 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9115 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9116
9117 /* vec_any_nge */
9118 res_i = vec_any_nge(vf, vf);
9119 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9120 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9121
9122 /* vec_any_ngt */
9123 res_i = vec_any_ngt(vf, vf);
9124 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9125 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9126
9127 /* vec_any_nle */
9128 res_i = vec_any_nle(vf, vf);
9129 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9130 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9131
9132 /* vec_any_nlt */
9133 res_i = vec_any_nlt(vf, vf);
9134 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9135 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9136
9137 /* vec_any_numeric */
9138 res_i = vec_any_numeric(vf);
9139 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9140 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9141
9142 /* vec_any_out */
9143 res_i = vec_any_out(vf, vf);
9144 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
9145 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9146 }
9147
9148 /* ------------------------------ Relational Operators ------------------------------ */
9149 // CHECK-LABEL: define{{.*}} void @test7
test7()9150 void test7() {
9151 vector signed char vsc1 = (vector signed char)(-1);
9152 vector signed char vsc2 = (vector signed char)(-2);
9153 res_i = (vsc1 == vsc2);
9154 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9155 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9156
9157 res_i = (vsc1 != vsc2);
9158 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9159 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9160
9161 res_i = (vsc1 < vsc2);
9162 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9163 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9164
9165 res_i = (vsc1 > vsc2);
9166 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9167 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9168
9169 res_i = (vsc1 <= vsc2);
9170 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9171 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9172
9173 res_i = (vsc1 >= vsc2);
9174 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9175 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9176
9177 vector unsigned char vuc1 = (vector unsigned char)(1);
9178 vector unsigned char vuc2 = (vector unsigned char)(2);
9179 res_i = (vuc1 == vuc2);
9180 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9181 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9182
9183 res_i = (vuc1 != vuc2);
9184 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9185 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9186
9187 res_i = (vuc1 < vuc2);
9188 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9189 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9190
9191 res_i = (vuc1 > vuc2);
9192 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9193 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9194
9195 res_i = (vuc1 <= vuc2);
9196 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9197 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9198
9199 res_i = (vuc1 >= vuc2);
9200 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9201 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9202
9203 vector short vs1 = (vector short)(-1);
9204 vector short vs2 = (vector short)(-2);
9205 res_i = (vs1 == vs2);
9206 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9207 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9208
9209 res_i = (vs1 != vs2);
9210 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9211 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9212
9213 res_i = (vs1 < vs2);
9214 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9215 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9216
9217 res_i = (vs1 > vs2);
9218 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9219 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9220
9221 res_i = (vs1 <= vs2);
9222 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9223 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9224
9225 res_i = (vs1 >= vs2);
9226 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9227 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9228
9229 vector unsigned short vus1 = (vector unsigned short)(1);
9230 vector unsigned short vus2 = (vector unsigned short)(2);
9231 res_i = (vus1 == vus2);
9232 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9233 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9234
9235 res_i = (vus1 != vus2);
9236 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9237 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9238
9239 res_i = (vus1 < vus2);
9240 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9241 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9242
9243 res_i = (vus1 > vus2);
9244 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9245 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9246
9247 res_i = (vus1 <= vus2);
9248 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9249 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9250
9251 res_i = (vus1 >= vus2);
9252 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9254
9255 vector int vi1 = (vector int)(-1);
9256 vector int vi2 = (vector int)(-2);
9257 res_i = (vi1 == vi2);
9258 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9259 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9260
9261 res_i = (vi1 != vi2);
9262 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9263 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9264
9265 res_i = (vi1 < vi2);
9266 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9267 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9268
9269 res_i = (vi1 > vi2);
9270 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9271 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9272
9273 res_i = (vi1 <= vi2);
9274 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9275 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9276
9277 res_i = (vi1 >= vi2);
9278 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9279 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9280
9281 vector unsigned int vui1 = (vector unsigned int)(1);
9282 vector unsigned int vui2 = (vector unsigned int)(2);
9283 res_i = (vui1 == vui2);
9284 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9285 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9286
9287 res_i = (vui1 != vui2);
9288 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9289 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9290
9291 res_i = (vui1 < vui2);
9292 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9293 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9294
9295 res_i = (vui1 > vui2);
9296 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9297 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9298
9299 res_i = (vui1 <= vui2);
9300 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9301 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9302
9303 res_i = (vui1 >= vui2);
9304 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9305 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9306
9307 vector float vf1 = (vector float)(1.0);
9308 vector float vf2 = (vector float)(2.0);
9309 res_i = (vf1 == vf2);
9310 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9311 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9312
9313 res_i = (vf1 != vf2);
9314 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9315 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9316
9317 res_i = (vf1 < vf2);
9318 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9319 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9320
9321 res_i = (vf1 > vf2);
9322 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9323 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9324
9325 res_i = (vf1 <= vf2);
9326 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9327 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9328
9329 res_i = (vf1 >= vf2);
9330 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9331 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9332 }
9333
9334 /* ------------------------------ optional ---------------------------------- */
test8()9335 void test8() {
9336 // CHECK-LABEL: define{{.*}} void @test8
9337 // CHECK-LE-LABEL: define{{.*}} void @test8
9338 res_vbc = vec_reve(vbc);
9339 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9340 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9341
9342 res_vsc = vec_reve(vsc);
9343 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9344 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9345
9346 res_vuc = vec_reve(vuc);
9347 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9348 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9349
9350 res_vbi = vec_reve(vbi);
9351 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9352 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9353
9354 res_vi = vec_reve(vi);
9355 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9356 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9357
9358 res_vui = vec_reve(vui);
9359 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9360 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9361
9362 res_vbs = vec_reve(vbs);
9363 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9364 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9365
9366 res_vs = vec_reve(vs);
9367 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9368 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9369
9370 res_vus = vec_reve(vus);
9371 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9372 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9373
9374 res_vf = vec_reve(vf);
9375 // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9376 // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9377
9378 res_vbc = vec_revb(vbc);
9379 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9380 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9381 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9382 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9383 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9384 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9385 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9386 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9387
9388 res_vsc = vec_revb(vsc);
9389 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9390 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9391 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9392 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9393 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9394 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9395 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9396 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9397
9398 res_vuc = vec_revb(vuc);
9399 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9400 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9401 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9402 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9403 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9404 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9405 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9406 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9407
9408 res_vbs = vec_revb(vbs);
9409 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9410 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9411 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9412 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9413 // CHECK-LE: xor <16 x i8>
9414 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9415
9416 res_vs = vec_revb(vs);
9417 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9418 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9419 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9420 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9421 // CHECK-LE: xor <16 x i8>
9422 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9423
9424 res_vus = vec_revb(vus);
9425 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9426 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9427 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9428 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9429 // CHECK-LE: xor <16 x i8>
9430 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9431
9432 res_vbi = vec_revb(vbi);
9433 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9434 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9435 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9436 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9437 // CHECK-LE: xor <16 x i8>
9438 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9439
9440 res_vi = vec_revb(vi);
9441 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9442 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9443 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9444 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9445 // CHECK-LE: xor <16 x i8>
9446 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9447
9448 res_vui = vec_revb(vui);
9449 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9450 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9451 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9452 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9453 // CHECK-LE: xor <16 x i8>
9454 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9455
9456 res_vf = vec_revb(vf);
9457 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9458 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9459 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9460 // CHECK-LE: store <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>, <16 x i8>* {{%.+}}, align 16
9461 // CHECK-LE: xor <16 x i8>
9462 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9463 }
9464
9465 /* ------------------------------ vec_xl ------------------------------------ */
test9()9466 void test9() {
9467 // CHECK-LABEL: define{{.*}} void @test9
9468 // CHECK-LE-LABEL: define{{.*}} void @test9
9469 res_vsc = vec_xl(param_sll, param_sc_ld);
9470 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9471 // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9472
9473 res_vuc = vec_xl(param_sll, param_uc_ld);
9474 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9475 // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9476
9477 res_vs = vec_xl(param_sll, param_s_ld);
9478 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9479 // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9480
9481 res_vus = vec_xl(param_sll, param_us_ld);
9482 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9483 // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9484
9485 res_vi = vec_xl(param_sll, param_i_ld);
9486 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9487 // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9488
9489 res_vui = vec_xl(param_sll, param_ui_ld);
9490 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9491 // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9492
9493 res_vf = vec_xl(param_sll, param_f_ld);
9494 // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9495 // CHECK-LE: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9496 }
9497
9498 /* ------------------------------ vec_xst ----------------------------------- */
test10()9499 void test10() {
9500 // CHECK-LABEL: define{{.*}} void @test10
9501 // CHECK-LE-LABEL: define{{.*}} void @test10
9502 vec_xst(vsc, param_sll, ¶m_sc);
9503 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9504 // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9505
9506 vec_xst(vuc, param_sll, ¶m_uc);
9507 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9508 // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9509
9510 vec_xst(vs, param_sll, ¶m_s);
9511 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9512 // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9513
9514 vec_xst(vus, param_sll, ¶m_us);
9515 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9516 // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9517
9518 vec_xst(vi, param_sll, ¶m_i);
9519 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9520 // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9521
9522 vec_xst(vui, param_sll, ¶m_ui);
9523 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9524 // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9525
9526 vec_xst(vf, param_sll, ¶m_f);
9527 // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9528 // CHECK-LE: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9529 }
9530
9531 /* ----------------------------- vec_xl_be ---------------------------------- */
test11()9532 void test11() {
9533 // CHECK-LABEL: define{{.*}} void @test11
9534 // CHECK-LE-LABEL: define{{.*}} void @test11
9535 res_vsc = vec_xl_be(param_sll, param_sc_ld);
9536 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9537 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9538 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9539
9540 res_vuc = vec_xl_be(param_sll, param_uc_ld);
9541 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9542 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9543 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9544
9545 res_vs = vec_xl_be(param_sll, param_s_ld);
9546 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9547 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9548 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9549
9550 res_vus = vec_xl_be(param_sll, param_us_ld);
9551 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9552 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9553 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9554
9555 res_vi = vec_xl_be(param_sll, param_i_ld);
9556 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9557 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9558
9559 res_vui = vec_xl_be(param_sll, param_ui_ld);
9560 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9561 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9562
9563 res_vf = vec_xl_be(param_sll, param_f_ld);
9564 // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9565 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9566 }
9567
9568 /* ----------------------------- vec_xst_be --------------------------------- */
test12()9569 void test12() {
9570 // CHECK-LABEL: define{{.*}} void @test12
9571 // CHECK-LE-LABEL: define{{.*}} void @test12
9572 vec_xst_be(vsc, param_sll, ¶m_sc);
9573 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9574 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9575 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9576
9577 vec_xst_be(vuc, param_sll, ¶m_uc);
9578 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9579 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9580 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9581
9582 vec_xst_be(vs, param_sll, ¶m_s);
9583 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9584 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9585 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9586
9587 vec_xst_be(vus, param_sll, ¶m_us);
9588 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9589 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9590 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9591
9592 vec_xst_be(vi, param_sll, ¶m_i);
9593 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9594 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9595
9596 vec_xst_be(vui, param_sll, ¶m_ui);
9597 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9598 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9599
9600 vec_xst_be(vf, param_sll, ¶m_f);
9601 // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9602 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9603 }
9604
test_rsqrtf(vector float a,vector float b)9605 vector float test_rsqrtf(vector float a, vector float b) {
9606 // CHECK-LABEL: test_rsqrtf
9607 // CHECK: call fast <4 x float> @llvm.sqrt.v4f32
9608 // CHECK: fdiv fast <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
9609 // CHECK-LE-LABEL: test_rsqrtf
9610 // CHECK-LE: call fast <4 x float> @llvm.sqrt.v4f32
9611 // CHECK-LE: fdiv fast <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
9612 return vec_rsqrt(a);
9613 }
9614
test_recipdivf(vector float a,vector float b)9615 vector float test_recipdivf(vector float a, vector float b) {
9616 // CHECK-LABEL: test_recipdivf
9617 // CHECK: fdiv fast <4 x float>
9618 // CHECK-LE-LABEL: test_recipdivf
9619 // CHECK-LE: fdiv fast <4 x float>
9620 return vec_recipdiv(a, b);
9621 }
9622