xref: /llvm-project/clang/test/CodeGen/PowerPC/builtins-ppc-altivec.c (revision 38fffa630ee80163dc65e759392ad29798905679)
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
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: and <4 x i32> {{.*}}, splat (i32 2147483647)
96 // CHECK: store <4 x float> %{{.*}}, ptr @vf
97 // CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
98 // CHECK-LE: and <4 x i32> {{.*}}, splat (i32 2147483647)
99 // CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
100 // CHECK-LE: store <4 x float> %{{.*}}, ptr @vf
101 
102   vsc = vec_nabs(vsc);
103 // CHECK: sub <16 x i8> zeroinitializer
104 // CHECK: @llvm.ppc.altivec.vminsb
105 // CHECK-LE: sub <16 x i8> zeroinitializer
106 // CHECK-LE: @llvm.ppc.altivec.vminsb
107 
108   vs = vec_nabs(vs);
109 // CHECK: sub <8 x i16> zeroinitializer
110 // CHECK: @llvm.ppc.altivec.vminsh
111 // CHECK-LE: sub <8 x i16> zeroinitializer
112 // CHECK-LE: @llvm.ppc.altivec.vminsh
113 
114   vi = vec_nabs(vi);
115 // CHECK: sub <4 x i32> zeroinitializer
116 // CHECK: @llvm.ppc.altivec.vminsw
117 // CHECK-LE: sub <4 x i32> zeroinitializer
118 // CHECK-LE: @llvm.ppc.altivec.vminsw
119 
120   res_vi = vec_neg(vi);
121 // CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
122 // CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
123 
124   res_vs = vec_neg(vs);
125 // CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
126 // CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
127 
128   res_vsc = vec_neg(vsc);
129 // CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
130 // CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
131 
132 
133   /* vec_abs */
134   vsc = vec_abss(vsc);
135 // CHECK: @llvm.ppc.altivec.vsubsbs
136 // CHECK: @llvm.ppc.altivec.vmaxsb
137 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
138 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
139 
140   vs = vec_abss(vs);
141 // CHECK: @llvm.ppc.altivec.vsubshs
142 // CHECK: @llvm.ppc.altivec.vmaxsh
143 // CHECK-LE: @llvm.ppc.altivec.vsubshs
144 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
145 
146   vi = vec_abss(vi);
147 // CHECK: @llvm.ppc.altivec.vsubsws
148 // CHECK: @llvm.ppc.altivec.vmaxsw
149 // CHECK-LE: @llvm.ppc.altivec.vsubsws
150 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
151 
152   /*  vec_add */
153   res_vsc = vec_add(vsc, vsc);
154 // CHECK: add <16 x i8>
155 // CHECK-LE: add <16 x i8>
156 
157   res_vsc = vec_add(vbc, vsc);
158 // CHECK: add <16 x i8>
159 // CHECK-LE: add <16 x i8>
160 
161   res_vsc = vec_add(vsc, vbc);
162 // CHECK: add <16 x i8>
163 // CHECK-LE: add <16 x i8>
164 
165   res_vuc = vec_add(vuc, vuc);
166 // CHECK: add <16 x i8>
167 // CHECK-LE: add <16 x i8>
168 
169   res_vuc = vec_add(vbc, vuc);
170 // CHECK: add <16 x i8>
171 // CHECK-LE: add <16 x i8>
172 
173   res_vuc = vec_add(vuc, vbc);
174 // CHECK: add <16 x i8>
175 // CHECK-LE: add <16 x i8>
176 
177   res_vs  = vec_add(vs, vs);
178 // CHECK: add <8 x i16>
179 // CHECK-LE: add <8 x i16>
180 
181   res_vs  = vec_add(vbs, vs);
182 // CHECK: add <8 x i16>
183 // CHECK-LE: add <8 x i16>
184 
185   res_vs  = vec_add(vs, vbs);
186 // CHECK: add <8 x i16>
187 // CHECK-LE: add <8 x i16>
188 
189   res_vus = vec_add(vus, vus);
190 // CHECK: add <8 x i16>
191 // CHECK-LE: add <8 x i16>
192 
193   res_vus = vec_add(vbs, vus);
194 // CHECK: add <8 x i16>
195 // CHECK-LE: add <8 x i16>
196 
197   res_vus = vec_add(vus, vbs);
198 // CHECK: add <8 x i16>
199 // CHECK-LE: add <8 x i16>
200 
201   res_vi  = vec_add(vi, vi);
202 // CHECK: add <4 x i32>
203 // CHECK-LE: add <4 x i32>
204 
205   res_vi  = vec_add(vbi, vi);
206 // CHECK: add <4 x i32>
207 // CHECK-LE: add <4 x i32>
208 
209   res_vi  = vec_add(vi, vbi);
210 // CHECK: add <4 x i32>
211 // CHECK-LE: add <4 x i32>
212 
213   res_vui = vec_add(vui, vui);
214 // CHECK: add <4 x i32>
215 // CHECK-LE: add <4 x i32>
216 
217   res_vui = vec_add(vbi, vui);
218 // CHECK: add <4 x i32>
219 // CHECK-LE: add <4 x i32>
220 
221   res_vui = vec_add(vui, vbi);
222 // CHECK: add <4 x i32>
223 // CHECK-LE: add <4 x i32>
224 
225   res_vf  = vec_add(vf, vf);
226 // CHECK: fadd <4 x float>
227 // CHECK-LE: fadd <4 x float>
228 
229   res_vi  = vec_adde(vi, vi, vi);
230 // CHECK: and <4 x i32>
231 // CHECK: add <4 x i32>
232 // CHECK: add <4 x i32>
233 // CHECK-LE: and <4 x i32>
234 // CHECK-LE: add <4 x i32>
235 // CHECK-LE: add <4 x i32>
236 
237   res_vui  = vec_adde(vui, vui, vui);
238 // CHECK: and <4 x i32>
239 // CHECK: add <4 x i32>
240 // CHECK: add <4 x i32>
241 // CHECK-LE: and <4 x i32>
242 // CHECK-LE: add <4 x i32>
243 // CHECK-LE: add <4 x i32>
244 
245   res_vsc = vec_vaddubm(vsc, vsc);
246 // CHECK: add <16 x i8>
247 // CHECK-LE: add <16 x i8>
248 
249   res_vsc = vec_vaddubm(vbc, vsc);
250 // CHECK: add <16 x i8>
251 // CHECK-LE: add <16 x i8>
252 
253   res_vsc = vec_vaddubm(vsc, vbc);
254 // CHECK: add <16 x i8>
255 // CHECK-LE: add <16 x i8>
256 
257   res_vuc = vec_vaddubm(vuc, vuc);
258 // CHECK: add <16 x i8>
259 // CHECK-LE: add <16 x i8>
260 
261   res_vuc = vec_vaddubm(vbc, vuc);
262 // CHECK: add <16 x i8>
263 // CHECK-LE: add <16 x i8>
264 
265   res_vuc = vec_vaddubm(vuc, vbc);
266 // CHECK: add <16 x i8>
267 // CHECK-LE: add <16 x i8>
268 
269   res_vs  = vec_vadduhm(vs, vs);
270 // CHECK: add <8 x i16>
271 // CHECK-LE: add <8 x i16>
272 
273   res_vs  = vec_vadduhm(vbs, vs);
274 // CHECK: add <8 x i16>
275 // CHECK-LE: add <8 x i16>
276 
277   res_vs  = vec_vadduhm(vs, vbs);
278 // CHECK: add <8 x i16>
279 // CHECK-LE: add <8 x i16>
280 
281   res_vus = vec_vadduhm(vus, vus);
282 // CHECK: add <8 x i16>
283 // CHECK-LE: add <8 x i16>
284 
285   res_vus = vec_vadduhm(vbs, vus);
286 // CHECK: add <8 x i16>
287 // CHECK-LE: add <8 x i16>
288 
289   res_vus = vec_vadduhm(vus, vbs);
290 // CHECK: add <8 x i16>
291 // CHECK-LE: add <8 x i16>
292 
293   res_vi  = vec_vadduwm(vi, vi);
294 // CHECK: add <4 x i32>
295 // CHECK-LE: add <4 x i32>
296 
297   res_vi  = vec_vadduwm(vbi, vi);
298 // CHECK: add <4 x i32>
299 // CHECK-LE: add <4 x i32>
300 
301   res_vi  = vec_vadduwm(vi, vbi);
302 // CHECK: add <4 x i32>
303 // CHECK-LE: add <4 x i32>
304 
305   res_vui = vec_vadduwm(vui, vui);
306 // CHECK: add <4 x i32>
307 // CHECK-LE: add <4 x i32>
308 
309   res_vui = vec_vadduwm(vbi, vui);
310 // CHECK: add <4 x i32>
311 // CHECK-LE: add <4 x i32>
312 
313   res_vui = vec_vadduwm(vui, vbi);
314 // CHECK: add <4 x i32>
315 // CHECK-LE: add <4 x i32>
316 
317   res_vf  = vec_vaddfp(vf, vf);
318 // CHECK: fadd <4 x float>
319 // CHECK-LE: fadd <4 x float>
320 
321   /* vec_addc */
322   res_vui = vec_addc(vui, vui);
323 // CHECK: @llvm.ppc.altivec.vaddcuw
324 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
325 
326   res_vui = vec_vaddcuw(vui, vui);
327 // CHECK: @llvm.ppc.altivec.vaddcuw
328 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
329 
330   /* vec_adds */
331   res_vsc = vec_adds(vsc, vsc);
332 // CHECK: @llvm.ppc.altivec.vaddsbs
333 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
334 
335   res_vsc = vec_adds(vbc, vsc);
336 // CHECK: @llvm.ppc.altivec.vaddsbs
337 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
338 
339   res_vsc = vec_adds(vsc, vbc);
340 // CHECK: @llvm.ppc.altivec.vaddsbs
341 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
342 
343   res_vuc = vec_adds(vuc, vuc);
344 // CHECK: @llvm.ppc.altivec.vaddubs
345 // CHECK-LE: @llvm.ppc.altivec.vaddubs
346 
347   res_vuc = vec_adds(vbc, vuc);
348 // CHECK: @llvm.ppc.altivec.vaddubs
349 // CHECK-LE: @llvm.ppc.altivec.vaddubs
350 
351   res_vuc = vec_adds(vuc, vbc);
352 // CHECK: @llvm.ppc.altivec.vaddubs
353 // CHECK-LE: @llvm.ppc.altivec.vaddubs
354 
355   res_vs  = vec_adds(vs, vs);
356 // CHECK: @llvm.ppc.altivec.vaddshs
357 // CHECK-LE: @llvm.ppc.altivec.vaddshs
358 
359   res_vs  = vec_adds(vbs, vs);
360 // CHECK: @llvm.ppc.altivec.vaddshs
361 // CHECK-LE: @llvm.ppc.altivec.vaddshs
362 
363   res_vs  = vec_adds(vs, vbs);
364 // CHECK: @llvm.ppc.altivec.vaddshs
365 // CHECK-LE: @llvm.ppc.altivec.vaddshs
366 
367   res_vus = vec_adds(vus, vus);
368 // CHECK: @llvm.ppc.altivec.vadduhs
369 // CHECK-LE: @llvm.ppc.altivec.vadduhs
370 
371   res_vus = vec_adds(vbs, vus);
372 // CHECK: @llvm.ppc.altivec.vadduhs
373 // CHECK-LE: @llvm.ppc.altivec.vadduhs
374 
375   res_vus = vec_adds(vus, vbs);
376 // CHECK: @llvm.ppc.altivec.vadduhs
377 // CHECK-LE: @llvm.ppc.altivec.vadduhs
378 
379   res_vi  = vec_adds(vi, vi);
380 // CHECK: @llvm.ppc.altivec.vaddsws
381 // CHECK-LE: @llvm.ppc.altivec.vaddsws
382 
383   res_vi  = vec_adds(vbi, vi);
384 // CHECK: @llvm.ppc.altivec.vaddsws
385 // CHECK-LE: @llvm.ppc.altivec.vaddsws
386 
387   res_vi  = vec_adds(vi, vbi);
388 // CHECK: @llvm.ppc.altivec.vaddsws
389 // CHECK-LE: @llvm.ppc.altivec.vaddsws
390 
391   res_vui = vec_adds(vui, vui);
392 // CHECK: @llvm.ppc.altivec.vadduws
393 // CHECK-LE: @llvm.ppc.altivec.vadduws
394 
395   res_vui = vec_adds(vbi, vui);
396 // CHECK: @llvm.ppc.altivec.vadduws
397 // CHECK-LE: @llvm.ppc.altivec.vadduws
398 
399   res_vui = vec_adds(vui, vbi);
400 // CHECK: @llvm.ppc.altivec.vadduws
401 // CHECK-LE: @llvm.ppc.altivec.vadduws
402 
403   res_vsc = vec_vaddsbs(vsc, vsc);
404 // CHECK: @llvm.ppc.altivec.vaddsbs
405 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
406 
407   res_vsc = vec_vaddsbs(vbc, vsc);
408 // CHECK: @llvm.ppc.altivec.vaddsbs
409 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
410 
411   res_vsc = vec_vaddsbs(vsc, vbc);
412 // CHECK: @llvm.ppc.altivec.vaddsbs
413 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
414 
415   res_vuc = vec_vaddubs(vuc, vuc);
416 // CHECK: @llvm.ppc.altivec.vaddubs
417 // CHECK-LE: @llvm.ppc.altivec.vaddubs
418 
419   res_vuc = vec_vaddubs(vbc, vuc);
420 // CHECK: @llvm.ppc.altivec.vaddubs
421 // CHECK-LE: @llvm.ppc.altivec.vaddubs
422 
423   res_vuc = vec_vaddubs(vuc, vbc);
424 // CHECK: @llvm.ppc.altivec.vaddubs
425 // CHECK-LE: @llvm.ppc.altivec.vaddubs
426 
427   res_vs  = vec_vaddshs(vs, vs);
428 // CHECK: @llvm.ppc.altivec.vaddshs
429 // CHECK-LE: @llvm.ppc.altivec.vaddshs
430 
431   res_vs  = vec_vaddshs(vbs, vs);
432 // CHECK: @llvm.ppc.altivec.vaddshs
433 // CHECK-LE: @llvm.ppc.altivec.vaddshs
434 
435   res_vs  = vec_vaddshs(vs, vbs);
436 // CHECK: @llvm.ppc.altivec.vaddshs
437 // CHECK-LE: @llvm.ppc.altivec.vaddshs
438 
439   res_vus = vec_vadduhs(vus, vus);
440 // CHECK: @llvm.ppc.altivec.vadduhs
441 // CHECK-LE: @llvm.ppc.altivec.vadduhs
442 
443   res_vus = vec_vadduhs(vbs, vus);
444 // CHECK: @llvm.ppc.altivec.vadduhs
445 // CHECK-LE: @llvm.ppc.altivec.vadduhs
446 
447   res_vus = vec_vadduhs(vus, vbs);
448 // CHECK: @llvm.ppc.altivec.vadduhs
449 // CHECK-LE: @llvm.ppc.altivec.vadduhs
450 
451   res_vi  = vec_vaddsws(vi, vi);
452 // CHECK: @llvm.ppc.altivec.vaddsws
453 // CHECK-LE: @llvm.ppc.altivec.vaddsws
454 
455   res_vi  = vec_vaddsws(vbi, vi);
456 // CHECK: @llvm.ppc.altivec.vaddsws
457 // CHECK-LE: @llvm.ppc.altivec.vaddsws
458 
459   res_vi  = vec_vaddsws(vi, vbi);
460 // CHECK: @llvm.ppc.altivec.vaddsws
461 // CHECK-LE: @llvm.ppc.altivec.vaddsws
462 
463   res_vui = vec_vadduws(vui, vui);
464 // CHECK: @llvm.ppc.altivec.vadduws
465 // CHECK-LE: @llvm.ppc.altivec.vadduws
466 
467   res_vui = vec_vadduws(vbi, vui);
468 // CHECK: @llvm.ppc.altivec.vadduws
469 // CHECK-LE: @llvm.ppc.altivec.vadduws
470 
471   res_vui = vec_vadduws(vui, vbi);
472 // CHECK: @llvm.ppc.altivec.vadduws
473 // CHECK-LE: @llvm.ppc.altivec.vadduws
474 
475   /* vec_and */
476   res_vsc = vec_and(vsc, vsc);
477 // CHECK: and <16 x i8>
478 // CHECK-LE: and <16 x i8>
479 
480   res_vsc = vec_and(vbc, vsc);
481 // CHECK: and <16 x i8>
482 // CHECK-LE: and <16 x i8>
483 
484   res_vsc = vec_and(vsc, vbc);
485 // CHECK: and <16 x i8>
486 // CHECK-LE: and <16 x i8>
487 
488   res_vuc = vec_and(vuc, vuc);
489 // CHECK: and <16 x i8>
490 // CHECK-LE: and <16 x i8>
491 
492   res_vuc = vec_and(vbc, vuc);
493 // CHECK: and <16 x i8>
494 // CHECK-LE: and <16 x i8>
495 
496   res_vuc = vec_and(vuc, vbc);
497 // CHECK: and <16 x i8>
498 // CHECK-LE: and <16 x i8>
499 
500   res_vbc = vec_and(vbc, vbc);
501 // CHECK: and <16 x i8>
502 // CHECK-LE: and <16 x i8>
503 
504   res_vs  = vec_and(vs, vs);
505 // CHECK: and <8 x i16>
506 // CHECK-LE: and <8 x i16>
507 
508   res_vs  = vec_and(vbs, vs);
509 // CHECK: and <8 x i16>
510 // CHECK-LE: and <8 x i16>
511 
512   res_vs  = vec_and(vs, vbs);
513 // CHECK: and <8 x i16>
514 // CHECK-LE: and <8 x i16>
515 
516   res_vus = vec_and(vus, vus);
517 // CHECK: and <8 x i16>
518 // CHECK-LE: and <8 x i16>
519 
520   res_vus = vec_and(vbs, vus);
521 // CHECK: and <8 x i16>
522 // CHECK-LE: and <8 x i16>
523 
524   res_vus = vec_and(vus, vbs);
525 // CHECK: and <8 x i16>
526 // CHECK-LE: and <8 x i16>
527 
528   res_vbs = vec_and(vbs, vbs);
529 // CHECK: and <8 x i16>
530 // CHECK-LE: and <8 x i16>
531 
532   res_vi  = vec_and(vi, vi);
533 // CHECK: and <4 x i32>
534 // CHECK-LE: and <4 x i32>
535 
536   res_vi  = vec_and(vbi, vi);
537 // CHECK: and <4 x i32>
538 // CHECK-le: and <4 x i32>
539 
540   res_vi  = vec_and(vi, vbi);
541 // CHECK: and <4 x i32>
542 // CHECK-LE: and <4 x i32>
543 
544   res_vui = vec_and(vui, vui);
545 // CHECK: and <4 x i32>
546 // CHECK-LE: and <4 x i32>
547 
548   res_vui = vec_and(vbi, vui);
549 // CHECK: and <4 x i32>
550 // CHECK-LE: and <4 x i32>
551 
552   res_vui = vec_and(vui, vbi);
553 // CHECK: and <4 x i32>
554 // CHECK-LE: and <4 x i32>
555 
556   res_vbi = vec_and(vbi, vbi);
557 // CHECK: and <4 x i32>
558 // CHECK-LE: and <4 x i32>
559 
560   res_vsc = vec_vand(vsc, vsc);
561 // CHECK: and <16 x i8>
562 // CHECK-LE: and <16 x i8>
563 
564   res_vsc = vec_vand(vbc, vsc);
565 // CHECK: and <16 x i8>
566 // CHECK-LE: and <16 x i8>
567 
568   res_vsc = vec_vand(vsc, vbc);
569 // CHECK: and <16 x i8>
570 // CHECK-LE: and <16 x i8>
571 
572   res_vuc = vec_vand(vuc, vuc);
573 // CHECK: and <16 x i8>
574 // CHECK-LE: and <16 x i8>
575 
576   res_vuc = vec_vand(vbc, vuc);
577 // CHECK: and <16 x i8>
578 // CHECK-LE: and <16 x i8>
579 
580   res_vuc = vec_vand(vuc, vbc);
581 // CHECK: and <16 x i8>
582 // CHECK-LE: and <16 x i8>
583 
584   res_vbc = vec_vand(vbc, vbc);
585 // CHECK: and <16 x i8>
586 // CHECK-LE: and <16 x i8>
587 
588   res_vs  = vec_vand(vs, vs);
589 // CHECK: and <8 x i16>
590 // CHECK-LE: and <8 x i16>
591 
592   res_vs  = vec_vand(vbs, vs);
593 // CHECK: and <8 x i16>
594 // CHECK-LE: and <8 x i16>
595 
596   res_vs  = vec_vand(vs, vbs);
597 // CHECK: and <8 x i16>
598 // CHECK-LE: and <8 x i16>
599 
600   res_vus = vec_vand(vus, vus);
601 // CHECK: and <8 x i16>
602 // CHECK-LE: and <8 x i16>
603 
604   res_vus = vec_vand(vbs, vus);
605 // CHECK: and <8 x i16>
606 // CHECK-LE: and <8 x i16>
607 
608   res_vus = vec_vand(vus, vbs);
609 // CHECK: and <8 x i16>
610 // CHECK-LE: and <8 x i16>
611 
612   res_vbs = vec_vand(vbs, vbs);
613 // CHECK: and <8 x i16>
614 // CHECK-LE: and <8 x i16>
615 
616   res_vi  = vec_vand(vi, vi);
617 // CHECK: and <4 x i32>
618 // CHECK-LE: and <4 x i32>
619 
620   res_vi  = vec_vand(vbi, vi);
621 // CHECK: and <4 x i32>
622 // CHECK-LE: and <4 x i32>
623 
624   res_vi  = vec_vand(vi, vbi);
625 // CHECK: and <4 x i32>
626 // CHECK-LE: and <4 x i32>
627 
628   res_vui = vec_vand(vui, vui);
629 // CHECK: and <4 x i32>
630 // CHECK-LE: and <4 x i32>
631 
632   res_vui = vec_vand(vbi, vui);
633 // CHECK: and <4 x i32>
634 // CHECK-LE: and <4 x i32>
635 
636   res_vui = vec_vand(vui, vbi);
637 // CHECK: and <4 x i32>
638 // CHECK-LE: and <4 x i32>
639 
640   res_vbi = vec_vand(vbi, vbi);
641 // CHECK: and <4 x i32>
642 // CHECK-LE: and <4 x i32>
643 
644   /* vec_andc */
645   res_vsc = vec_andc(vsc, vsc);
646 // CHECK: xor <16 x i8>
647 // CHECK: and <16 x i8>
648 // CHECK-LE: xor <16 x i8>
649 // CHECK-LE: and <16 x i8>
650 
651   res_vsc = vec_andc(vbc, vsc);
652 // CHECK: xor <16 x i8>
653 // CHECK: and <16 x i8>
654 // CHECK-LE: xor <16 x i8>
655 // CHECK-LE: and <16 x i8>
656 
657   res_vsc = vec_andc(vsc, vbc);
658 // CHECK: xor <16 x i8>
659 // CHECK: and <16 x i8>
660 // CHECK-LE: xor <16 x i8>
661 // CHECK-LE: and <16 x i8>
662 
663   res_vuc = vec_andc(vuc, vuc);
664 // CHECK: xor <16 x i8>
665 // CHECK: and <16 x i8>
666 // CHECK-LE: xor <16 x i8>
667 // CHECK-LE: and <16 x i8>
668 
669   res_vuc = vec_andc(vbc, vuc);
670 // CHECK: xor <16 x i8>
671 // CHECK: and <16 x i8>
672 // CHECK-LE: xor <16 x i8>
673 // CHECK-LE: and <16 x i8>
674 
675   res_vuc = vec_andc(vuc, vbc);
676 // CHECK-LE: xor <16 x i8>
677 // CHECK-LE: and <16 x i8>
678 
679   res_vbc = vec_andc(vbc, vbc);
680 // CHECK: xor <16 x i8>
681 // CHECK: and <16 x i8>
682 // CHECK-LE: xor <16 x i8>
683 // CHECK-LE: and <16 x i8>
684 
685   res_vs  = vec_andc(vs, vs);
686 // CHECK: xor <8 x i16>
687 // CHECK: and <8 x i16>
688 // CHECK-LE: xor <8 x i16>
689 // CHECK-LE: and <8 x i16>
690 
691   res_vs  = vec_andc(vbs, vs);
692 // CHECK: xor <8 x i16>
693 // CHECK: and <8 x i16>
694 // CHECK-LE: xor <8 x i16>
695 // CHECK-LE: and <8 x i16>
696 
697   res_vs  = vec_andc(vs, vbs);
698 // CHECK: xor <8 x i16>
699 // CHECK: and <8 x i16>
700 // CHECK-LE: xor <8 x i16>
701 // CHECK-LE: and <8 x i16>
702 
703   res_vus = vec_andc(vus, vus);
704 // CHECK: xor <8 x i16>
705 // CHECK: and <8 x i16>
706 // CHECK-LE: xor <8 x i16>
707 // CHECK-LE: and <8 x i16>
708 
709   res_vus = vec_andc(vbs, vus);
710 // CHECK: xor <8 x i16>
711 // CHECK: and <8 x i16>
712 // CHECK-LE: xor <8 x i16>
713 // CHECK-LE: and <8 x i16>
714 
715   res_vus = vec_andc(vus, vbs);
716 // CHECK: xor <8 x i16>
717 // CHECK: and <8 x i16>
718 // CHECK-LE: xor <8 x i16>
719 // CHECK-LE: and <8 x i16>
720 
721   res_vbs = vec_andc(vbs, vbs);
722 // CHECK: xor <8 x i16>
723 // CHECK: and <8 x i16>
724 // CHECK-LE: xor <8 x i16>
725 // CHECK-LE: and <8 x i16>
726 
727   res_vi  = vec_andc(vi, vi);
728 // CHECK: xor <4 x i32>
729 // CHECK: and <4 x i32>
730 // CHECK-LE: xor <4 x i32>
731 // CHECK-LE: and <4 x i32>
732 
733   res_vi  = vec_andc(vbi, vi);
734 // CHECK: xor <4 x i32>
735 // CHECK: and <4 x i32>
736 // CHECK-LE: xor <4 x i32>
737 // CHECK-LE: and <4 x i32>
738 
739   res_vi  = vec_andc(vi, vbi);
740 // CHECK: xor <4 x i32>
741 // CHECK: and <4 x i32>
742 // CHECK-LE: xor <4 x i32>
743 // CHECK-LE: and <4 x i32>
744 
745   res_vui = vec_andc(vui, vui);
746 // CHECK: xor <4 x i32>
747 // CHECK: and <4 x i32>
748 // CHECK-LE: xor <4 x i32>
749 // CHECK-LE: and <4 x i32>
750 
751   res_vui = vec_andc(vbi, vui);
752 // CHECK: xor <4 x i32>
753 // CHECK: and <4 x i32>
754 // CHECK-LE: xor <4 x i32>
755 // CHECK-LE: and <4 x i32>
756 
757   res_vui = vec_andc(vui, vbi);
758 // CHECK: xor <4 x i32>
759 // CHECK: and <4 x i32>
760 // CHECK-LE: xor <4 x i32>
761 // CHECK-LE: and <4 x i32>
762 
763   res_vf = vec_andc(vf, vf);
764 // CHECK: xor <4 x i32>
765 // CHECK: and <4 x i32>
766 // CHECK-LE: xor <4 x i32>
767 // CHECK-LE: and <4 x i32>
768 
769   res_vf = vec_andc(vbi, vf);
770 // CHECK: xor <4 x i32>
771 // CHECK: and <4 x i32>
772 // CHECK-LE: xor <4 x i32>
773 // CHECK-LE: and <4 x i32>
774 
775   res_vf = vec_andc(vf, vbi);
776 // CHECK: xor <4 x i32>
777 // CHECK: and <4 x i32>
778 // CHECK-LE: xor <4 x i32>
779 // CHECK-LE: and <4 x i32>
780 
781   res_vsc = vec_vandc(vsc, vsc);
782 // CHECK: xor <16 x i8>
783 // CHECK: and <16 x i8>
784 // CHECK-LE: xor <16 x i8>
785 // CHECK-LE: and <16 x i8>
786 
787   res_vsc = vec_vandc(vbc, vsc);
788 // CHECK: xor <16 x i8>
789 // CHECK: and <16 x i8>
790 // CHECK-LE: xor <16 x i8>
791 // CHECK-LE: and <16 x i8>
792 
793   res_vsc = vec_vandc(vsc, vbc);
794 // CHECK: xor <16 x i8>
795 // CHECK: and <16 x i8>
796 // CHECK-LE: xor <16 x i8>
797 // CHECK-LE: and <16 x i8>
798 
799   res_vuc = vec_vandc(vuc, vuc);
800 // CHECK: xor <16 x i8>
801 // CHECK: and <16 x i8>
802 // CHECK-LE: xor <16 x i8>
803 // CHECK-LE: and <16 x i8>
804 
805   res_vuc = vec_vandc(vbc, vuc);
806 // CHECK: xor <16 x i8>
807 // CHECK: and <16 x i8>
808 // CHECK-LE: xor <16 x i8>
809 // CHECK-LE: and <16 x i8>
810 
811   res_vuc = vec_vandc(vuc, vbc);
812 // CHECK: xor <16 x i8>
813 // CHECK: and <16 x i8>
814 // CHECK-LE: xor <16 x i8>
815 // CHECK-LE: and <16 x i8>
816 
817   res_vbc = vec_vandc(vbc, vbc);
818 // CHECK: xor <16 x i8>
819 // CHECK: and <16 x i8>
820 // CHECK-LE: xor <16 x i8>
821 // CHECK-LE: and <16 x i8>
822 
823   res_vs  = vec_vandc(vs, vs);
824 // CHECK: xor <8 x i16>
825 // CHECK: and <8 x i16>
826 // CHECK-LE: xor <8 x i16>
827 // CHECK-LE: and <8 x i16>
828 
829   res_vs  = vec_vandc(vbs, vs);
830 // CHECK: xor <8 x i16>
831 // CHECK: and <8 x i16>
832 // CHECK-LE: xor <8 x i16>
833 // CHECK-LE: and <8 x i16>
834 
835   res_vs  = vec_vandc(vs, vbs);
836 // CHECK: xor <8 x i16>
837 // CHECK: and <8 x i16>
838 // CHECK-LE: xor <8 x i16>
839 // CHECK-LE: and <8 x i16>
840 
841   res_vus = vec_vandc(vus, vus);
842 // CHECK: xor <8 x i16>
843 // CHECK: and <8 x i16>
844 // CHECK-LE: xor <8 x i16>
845 // CHECK-LE: and <8 x i16>
846 
847   res_vus = vec_vandc(vbs, vus);
848 // CHECK: xor <8 x i16>
849 // CHECK: and <8 x i16>
850 // CHECK-LE: xor <8 x i16>
851 // CHECK-LE: and <8 x i16>
852 
853   res_vus = vec_vandc(vus, vbs);
854 // CHECK: xor <8 x i16>
855 // CHECK: and <8 x i16>
856 // CHECK-LE: xor <8 x i16>
857 // CHECK-LE: and <8 x i16>
858 
859   res_vbs = vec_vandc(vbs, vbs);
860 // CHECK: xor <8 x i16>
861 // CHECK: and <8 x i16>
862 // CHECK-LE: xor <8 x i16>
863 // CHECK-LE: and <8 x i16>
864 
865   res_vi  = vec_vandc(vi, vi);
866 // CHECK: xor <4 x i32>
867 // CHECK: and <4 x i32>
868 // CHECK-LE: xor <4 x i32>
869 // CHECK-LE: and <4 x i32>
870 
871   res_vi  = vec_vandc(vbi, vi);
872 // CHECK: xor <4 x i32>
873 // CHECK: and <4 x i32>
874 // CHECK-LE: xor <4 x i32>
875 // CHECK-LE: and <4 x i32>
876 
877   res_vi  = vec_vandc(vi, vbi);
878 // CHECK: xor <4 x i32>
879 // CHECK: and <4 x i32>
880 // CHECK-LE: xor <4 x i32>
881 // CHECK-LE: and <4 x i32>
882 
883   res_vui = vec_vandc(vui, vui);
884 // CHECK: xor <4 x i32>
885 // CHECK: and <4 x i32>
886 // CHECK-LE: xor <4 x i32>
887 // CHECK-LE: and <4 x i32>
888 
889   res_vui = vec_vandc(vbi, vui);
890 // CHECK: xor <4 x i32>
891 // CHECK: and <4 x i32>
892 // CHECK-LE: xor <4 x i32>
893 // CHECK-LE: and <4 x i32>
894 
895   res_vui = vec_vandc(vui, vbi);
896 // CHECK: xor <4 x i32>
897 // CHECK: and <4 x i32>
898 // CHECK-LE: xor <4 x i32>
899 // CHECK-LE: and <4 x i32>
900 
901   res_vf = vec_vandc(vf, vf);
902 // CHECK: xor <4 x i32>
903 // CHECK: and <4 x i32>
904 // CHECK-LE: xor <4 x i32>
905 // CHECK-LE: and <4 x i32>
906 
907   res_vf = vec_vandc(vbi, vf);
908 // CHECK: xor <4 x i32>
909 // CHECK: and <4 x i32>
910 // CHECK-LE: xor <4 x i32>
911 // CHECK-LE: and <4 x i32>
912 
913   res_vf = vec_vandc(vf, vbi);
914 // CHECK: xor <4 x i32>
915 // CHECK: and <4 x i32>
916 // CHECK-LE: xor <4 x i32>
917 // CHECK-LE: and <4 x i32>
918 
919 }
920 
921 // CHECK-LABEL: define{{.*}} void @test2
922 void test2() {
923   /* vec_avg */
924   res_vsc = vec_avg(vsc, vsc);
925 // CHECK: @llvm.ppc.altivec.vavgsb
926 // CHECK-LE: @llvm.ppc.altivec.vavgsb
927 
928   res_vuc = vec_avg(vuc, vuc);
929 // CHECK: @llvm.ppc.altivec.vavgub
930 // CHECK-LE: @llvm.ppc.altivec.vavgub
931 
932   res_vs  = vec_avg(vs, vs);
933 // CHECK: @llvm.ppc.altivec.vavgsh
934 // CHECK-LE: @llvm.ppc.altivec.vavgsh
935 
936   res_vus = vec_avg(vus, vus);
937 // CHECK: @llvm.ppc.altivec.vavguh
938 // CHECK-LE: @llvm.ppc.altivec.vavguh
939 
940   res_vi  = vec_avg(vi, vi);
941 // CHECK: @llvm.ppc.altivec.vavgsw
942 // CHECK-LE: @llvm.ppc.altivec.vavgsw
943 
944   res_vui = vec_avg(vui, vui);
945 // CHECK: @llvm.ppc.altivec.vavguw
946 // CHECK-LE: @llvm.ppc.altivec.vavguw
947 
948   res_vsc = vec_vavgsb(vsc, vsc);
949 // CHECK: @llvm.ppc.altivec.vavgsb
950 // CHECK-LE: @llvm.ppc.altivec.vavgsb
951 
952   res_vuc = vec_vavgub(vuc, vuc);
953 // CHECK: @llvm.ppc.altivec.vavgub
954 // CHECK-LE: @llvm.ppc.altivec.vavgub
955 
956   res_vs  = vec_vavgsh(vs, vs);
957 // CHECK: @llvm.ppc.altivec.vavgsh
958 // CHECK-LE: @llvm.ppc.altivec.vavgsh
959 
960   res_vus = vec_vavguh(vus, vus);
961 // CHECK: @llvm.ppc.altivec.vavguh
962 // CHECK-LE: @llvm.ppc.altivec.vavguh
963 
964   res_vi  = vec_vavgsw(vi, vi);
965 // CHECK: @llvm.ppc.altivec.vavgsw
966 // CHECK-LE: @llvm.ppc.altivec.vavgsw
967 
968   res_vui = vec_vavguw(vui, vui);
969 // CHECK: @llvm.ppc.altivec.vavguw
970 // CHECK-LE: @llvm.ppc.altivec.vavguw
971 
972   /* vec_ceil */
973   res_vf = vec_ceil(vf);
974 // CHECK: @llvm.ppc.altivec.vrfip
975 // CHECK-LE: @llvm.ppc.altivec.vrfip
976 
977   res_vf = vec_vrfip(vf);
978 // CHECK: @llvm.ppc.altivec.vrfip
979 // CHECK-LE: @llvm.ppc.altivec.vrfip
980 
981   /* vec_cmpb */
982   res_vi = vec_cmpb(vf, vf);
983 // CHECK: @llvm.ppc.altivec.vcmpbfp
984 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
985 
986   res_vi = vec_vcmpbfp(vf, vf);
987 // CHECK: @llvm.ppc.altivec.vcmpbfp
988 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
989 
990   /* vec_cmpeq */
991   res_vbc = vec_cmpeq(vsc, vsc);
992 // CHECK: @llvm.ppc.altivec.vcmpequb
993 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
994 
995   res_vbc = vec_cmpeq(vuc, vuc);
996 // CHECK: @llvm.ppc.altivec.vcmpequb
997 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
998 
999   res_vbc = vec_cmpeq(vbc, vbc);
1000 // CHECK: @llvm.ppc.altivec.vcmpequb
1001 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1002 
1003   res_vbc = vec_cmpeq(vbc, vbc);
1004 // CHECK: @llvm.ppc.altivec.vcmpequb
1005 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1006 
1007   res_vbs = vec_cmpeq(vs, vs);
1008 // CHECK: @llvm.ppc.altivec.vcmpequh
1009 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1010 
1011   res_vbs = vec_cmpeq(vus, vus);
1012 // CHECK: @llvm.ppc.altivec.vcmpequh
1013 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1014 
1015   res_vbs = vec_cmpeq(vbs, vbs);
1016 // CHECK: @llvm.ppc.altivec.vcmpequh
1017 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1018 
1019   res_vbs = vec_cmpeq(vbs, vbs);
1020 // CHECK: @llvm.ppc.altivec.vcmpequh
1021 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1022 
1023   res_vbi = vec_cmpeq(vi, vi);
1024 // CHECK: @llvm.ppc.altivec.vcmpequw
1025 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1026 
1027   res_vbi = vec_cmpeq(vui, vui);
1028 // CHECK: @llvm.ppc.altivec.vcmpequw
1029 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1030 
1031   res_vbi = vec_cmpeq(vbi, vbi);
1032 // CHECK: @llvm.ppc.altivec.vcmpequw
1033 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1034 
1035   res_vbi = vec_cmpeq(vbi, vbi);
1036 // CHECK: @llvm.ppc.altivec.vcmpequw
1037 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1038 
1039   res_vbi = vec_cmpeq(vf, vf);
1040 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1041 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1042 
1043   /* vec_cmpne */
1044   res_vbc = vec_cmpne(vsc, vsc);
1045 // CHECK: @llvm.ppc.altivec.vcmpequb
1046 // CHECK: xor
1047 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1048 // CHECK-LE: xor
1049 
1050   res_vbc = vec_cmpne(vuc, vuc);
1051 // CHECK: @llvm.ppc.altivec.vcmpequb
1052 // CHECK: xor
1053 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1054 // CHECK-LE: xor
1055 
1056   res_vbc = vec_cmpne(vbc, vbc);
1057 // CHECK: @llvm.ppc.altivec.vcmpequb
1058 // CHECK: xor
1059 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1060 // CHECK-LE: xor
1061 
1062   res_vbc = vec_cmpne(vbc, vbc);
1063 // CHECK: @llvm.ppc.altivec.vcmpequb
1064 // CHECK: xor
1065 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1066 // CHECK-LE: xor
1067 
1068   res_vbs = vec_cmpne(vs, vs);
1069 // CHECK: @llvm.ppc.altivec.vcmpequh
1070 // CHECK: xor
1071 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1072 // CHECK-LE: xor
1073 
1074   res_vbs = vec_cmpne(vus, vus);
1075 // CHECK: @llvm.ppc.altivec.vcmpequh
1076 // CHECK: xor
1077 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1078 // CHECK-LE: xor
1079 
1080   res_vbs = vec_cmpne(vbs, vbs);
1081 // CHECK: @llvm.ppc.altivec.vcmpequh
1082 // CHECK: xor
1083 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1084 // CHECK-LE: xor
1085 
1086   res_vbs = vec_cmpne(vbs, vbs);
1087 // CHECK: @llvm.ppc.altivec.vcmpequh
1088 // CHECK: xor
1089 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1090 // CHECK-LE: xor
1091 
1092   res_vbi = vec_cmpne(vi, vi);
1093 // CHECK: @llvm.ppc.altivec.vcmpequw
1094 // CHECK: xor
1095 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1096 // CHECK-LE: xor
1097 
1098   res_vbi = vec_cmpne(vui, vui);
1099 // CHECK: @llvm.ppc.altivec.vcmpequw
1100 // CHECK: xor
1101 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1102 // CHECK-LE: xor
1103 
1104   res_vbi = vec_cmpne(vbi, vbi);
1105 // CHECK: @llvm.ppc.altivec.vcmpequw
1106 // CHECK: xor
1107 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1108 // CHECK-LE: xor
1109 
1110   res_vbi = vec_cmpne(vbi, vbi);
1111 // CHECK: @llvm.ppc.altivec.vcmpequw
1112 // CHECK: xor
1113 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1114 // CHECK-LE: xor
1115 
1116   res_vbi = vec_cmpne(vf, vf);
1117 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1118 // CHECK: xor
1119 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1120 // CHECK-LE: xor
1121 
1122   /* vec_cmpge */
1123   res_vbc = vec_cmpge(vsc, vsc);
1124 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1125 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1126 
1127   res_vbc = vec_cmpge(vuc, vuc);
1128 // CHECK: @llvm.ppc.altivec.vcmpgtub
1129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1130 
1131   res_vbs = vec_cmpge(vs, vs);
1132 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1134 
1135   res_vbs = vec_cmpge(vus, vus);
1136 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1138 
1139   res_vbi = vec_cmpge(vi, vi);
1140 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1142 
1143   res_vbi = vec_cmpge(vui, vui);
1144 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1145 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1146 
1147   res_vbi = vec_cmpge(vf, vf);
1148 // CHECK: @llvm.ppc.altivec.vcmpgefp
1149 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1150 
1151   res_vbi = vec_vcmpgefp(vf, vf);
1152 // CHECK: @llvm.ppc.altivec.vcmpgefp
1153 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1154 }
1155 
1156 // CHECK-LABEL: define{{.*}} void @test5
1157 void test5() {
1158 
1159   /* vec_cmpgt */
1160   res_vbc = vec_cmpgt(vsc, vsc);
1161 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1162 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1163 
1164   res_vbc = vec_cmpgt(vuc, vuc);
1165 // CHECK: @llvm.ppc.altivec.vcmpgtub
1166 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1167 
1168   res_vbs = vec_cmpgt(vs, vs);
1169 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1170 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1171 
1172   res_vbs = vec_cmpgt(vus, vus);
1173 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1174 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1175 
1176   res_vbi = vec_cmpgt(vi, vi);
1177 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1178 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1179 
1180   res_vbi = vec_cmpgt(vui, vui);
1181 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1182 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1183 
1184   res_vbi = vec_cmpgt(vf, vf);
1185 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1186 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1187 
1188   res_vbc = vec_vcmpgtsb(vsc, vsc);
1189 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1190 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1191 
1192   res_vbc = vec_vcmpgtub(vuc, vuc);
1193 // CHECK: @llvm.ppc.altivec.vcmpgtub
1194 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1195 
1196   res_vbs = vec_vcmpgtsh(vs, vs);
1197 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1198 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1199 
1200   res_vbs = vec_vcmpgtuh(vus, vus);
1201 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1202 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1203 
1204   res_vbi = vec_vcmpgtsw(vi, vi);
1205 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1206 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1207 
1208   res_vbi = vec_vcmpgtuw(vui, vui);
1209 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1210 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1211 
1212   res_vbi = vec_vcmpgtfp(vf, vf);
1213 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1214 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1215 
1216   /* vec_cmple */
1217   res_vbc = vec_cmple(vsc, vsc);
1218 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1219 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1220 
1221   res_vbc = vec_cmple(vuc, vuc);
1222 // CHECK: @llvm.ppc.altivec.vcmpgtub
1223 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1224 
1225   res_vbs = vec_cmple(vs, vs);
1226 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1227 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1228 
1229   res_vbs = vec_cmple(vus, vus);
1230 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1231 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1232 
1233   res_vbi = vec_cmple(vi, vi);
1234 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1235 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1236 
1237   res_vbi = vec_cmple(vui, vui);
1238 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1239 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1240 
1241   res_vbi = vec_cmple(vf, vf);
1242 // CHECK: @llvm.ppc.altivec.vcmpgefp
1243 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1244 }
1245 
1246 // CHECK-LABEL: define{{.*}} void @test6
1247 void test6() {
1248   /* vec_cmplt */
1249   res_vbc = vec_cmplt(vsc, vsc);
1250 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1251 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1252 
1253   res_vbc = vec_cmplt(vuc, vuc);
1254 // CHECK: @llvm.ppc.altivec.vcmpgtub
1255 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1256 
1257   res_vbs = vec_cmplt(vs, vs);
1258 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1259 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1260 
1261   res_vbs = vec_cmplt(vus, vus);
1262 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1263 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1264 
1265   res_vbi = vec_cmplt(vi, vi);
1266 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1267 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1268 
1269   res_vbi = vec_cmplt(vui, vui);
1270 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1271 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1272 
1273   res_vbi = vec_cmplt(vf, vf);
1274 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1275 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1276 
1277   /* vec_ctf */
1278   res_vf  = vec_ctf(vi, 0);
1279 // CHECK: @llvm.ppc.altivec.vcfsx
1280 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1281 
1282   res_vf  = vec_ctf(vui, 0);
1283 // CHECK: @llvm.ppc.altivec.vcfux
1284 // CHECK-LE: @llvm.ppc.altivec.vcfux
1285 
1286   res_vf  = vec_vcfsx(vi, 0);
1287 // CHECK: @llvm.ppc.altivec.vcfsx
1288 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1289 
1290   res_vf  = vec_vcfux(vui, 0);
1291 // CHECK: @llvm.ppc.altivec.vcfux
1292 // CHECK-LE: @llvm.ppc.altivec.vcfux
1293 
1294   /* vec_cts */
1295   res_vi = vec_cts(vf, 0);
1296 // CHECK: @llvm.ppc.altivec.vctsxs
1297 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1298 
1299   res_vi = vec_vctsxs(vf, 0);
1300 // CHECK: @llvm.ppc.altivec.vctsxs
1301 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1302 
1303   /* vec_ctu */
1304   res_vui = vec_ctu(vf, 0);
1305 // CHECK: @llvm.ppc.altivec.vctuxs
1306 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1307 
1308   res_vui = vec_vctuxs(vf, 0);
1309 // CHECK: @llvm.ppc.altivec.vctuxs
1310 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1311 
1312   res_vi = vec_signed(vf);
1313 // CHECK: fptosi <4 x float>
1314 // CHECK-LE: fptosi <4 x float>
1315 
1316   res_vui = vec_unsigned(vf);
1317 // CHECK: fptoui <4 x float>
1318 // CHECK-LE: fptoui <4 x float>
1319 
1320   res_vf = vec_float(vi);
1321 // CHECK: sitofp <4 x i32>
1322 // CHECK-LE: sitofp <4 x i32>
1323 
1324   res_vf = vec_float(vui);
1325 // CHECK: uitofp <4 x i32>
1326 // CHECK-LE: uitofp <4 x i32>
1327 
1328   /* vec_div */
1329   res_vsc = vec_div(vsc, vsc);
1330 // CHECK: sdiv <16 x i8>
1331 // CHECK-LE: sdiv <16 x i8>
1332 
1333   res_vuc = vec_div(vuc, vuc);
1334 // CHECK: udiv <16 x i8>
1335 // CHECK-LE: udiv <16 x i8>
1336 
1337   res_vs = vec_div(vs, vs);
1338 // CHECK: sdiv <8 x i16>
1339 // CHECK-LE: sdiv <8 x i16>
1340 
1341   res_vus = vec_div(vus, vus);
1342 // CHECK: udiv <8 x i16>
1343 // CHECK-LE: udiv <8 x i16>
1344 
1345   res_vi = vec_div(vi, vi);
1346 // CHECK: sdiv <4 x i32>
1347 // CHECK-LE: sdiv <4 x i32>
1348 
1349   res_vui = vec_div(vui, vui);
1350 // CHECK: udiv <4 x i32>
1351 // CHECK-LE: udiv <4 x i32>
1352 
1353   /* vec_dss */
1354   vec_dss(0);
1355 // CHECK: @llvm.ppc.altivec.dss
1356 // CHECK-LE: @llvm.ppc.altivec.dss
1357 
1358   /* vec_dssall */
1359   vec_dssall();
1360 // CHECK: @llvm.ppc.altivec.dssall
1361 // CHECK-LE: @llvm.ppc.altivec.dssall
1362 
1363   /* vec_dst */
1364   vec_dst(&vsc, 0, 0);
1365 // CHECK: @llvm.ppc.altivec.dst
1366 // CHECK-LE: @llvm.ppc.altivec.dst
1367 
1368   /* vec_dstst */
1369   vec_dstst(&vs, 0, 0);
1370 // CHECK: @llvm.ppc.altivec.dstst
1371 // CHECK-LE: @llvm.ppc.altivec.dstst
1372 
1373   /* vec_dststt */
1374   vec_dststt(&param_i, 0, 0);
1375 // CHECK: @llvm.ppc.altivec.dststt
1376 // CHECK-LE: @llvm.ppc.altivec.dststt
1377 
1378   /* vec_dstt */
1379   vec_dstt(&vf, 0, 0);
1380 // CHECK: @llvm.ppc.altivec.dstt
1381 // CHECK-LE: @llvm.ppc.altivec.dstt
1382 
1383   /* vec_expte */
1384   res_vf = vec_expte(vf);
1385 // CHECK: @llvm.ppc.altivec.vexptefp
1386 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1387 
1388   res_vf = vec_vexptefp(vf);
1389 // CHECK: @llvm.ppc.altivec.vexptefp
1390 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1391 
1392   /* vec_floor */
1393   res_vf = vec_floor(vf);
1394 // CHECK: @llvm.ppc.altivec.vrfim
1395 // CHECK-LE: @llvm.ppc.altivec.vrfim
1396 
1397   res_vf = vec_vrfim(vf);
1398 // CHECK: @llvm.ppc.altivec.vrfim
1399 // CHECK-LE: @llvm.ppc.altivec.vrfim
1400 
1401   /* vec_ld */
1402   res_vsc = vec_ld(0, &vsc);
1403 // CHECK: @llvm.ppc.altivec.lvx
1404 // CHECK-LE: @llvm.ppc.altivec.lvx
1405 
1406   res_vsc = vec_ld(0, param_sc_ld);
1407 // CHECK: @llvm.ppc.altivec.lvx
1408 // CHECK-LE: @llvm.ppc.altivec.lvx
1409 
1410   res_vuc = vec_ld(0, &vuc);
1411 // CHECK: @llvm.ppc.altivec.lvx
1412 // CHECK-LE: @llvm.ppc.altivec.lvx
1413 
1414   res_vuc = vec_ld(0, param_uc_ld);
1415 // CHECK: @llvm.ppc.altivec.lvx
1416 // CHECK-LE: @llvm.ppc.altivec.lvx
1417 
1418   res_vbc = vec_ld(0, &vbc);
1419 // CHECK: @llvm.ppc.altivec.lvx
1420 // CHECK-LE: @llvm.ppc.altivec.lvx
1421 
1422   res_vs  = vec_ld(0, &vs);
1423 // CHECK: @llvm.ppc.altivec.lvx
1424 // CHECK-LE: @llvm.ppc.altivec.lvx
1425 
1426   res_vs  = vec_ld(0, param_s_ld);
1427 // CHECK: @llvm.ppc.altivec.lvx
1428 // CHECK-LE: @llvm.ppc.altivec.lvx
1429 
1430   res_vus = vec_ld(0, &vus);
1431 // CHECK: @llvm.ppc.altivec.lvx
1432 // CHECK-LE: @llvm.ppc.altivec.lvx
1433 
1434   res_vus = vec_ld(0, param_us_ld);
1435 // CHECK: @llvm.ppc.altivec.lvx
1436 // CHECK-LE: @llvm.ppc.altivec.lvx
1437 
1438   res_vbs = vec_ld(0, &vbs);
1439 // CHECK: @llvm.ppc.altivec.lvx
1440 // CHECK-LE: @llvm.ppc.altivec.lvx
1441 
1442   res_vp  = vec_ld(0, &vp);
1443 // CHECK: @llvm.ppc.altivec.lvx
1444 // CHECK-LE: @llvm.ppc.altivec.lvx
1445 
1446   res_vi  = vec_ld(0, &vi);
1447 // CHECK: @llvm.ppc.altivec.lvx
1448 // CHECK-LE: @llvm.ppc.altivec.lvx
1449 
1450   res_vi  = vec_ld(0, param_i_ld);
1451 // CHECK: @llvm.ppc.altivec.lvx
1452 // CHECK-LE: @llvm.ppc.altivec.lvx
1453 
1454   res_vui = vec_ld(0, &vui);
1455 // CHECK: @llvm.ppc.altivec.lvx
1456 // CHECK-LE: @llvm.ppc.altivec.lvx
1457 
1458   res_vui = vec_ld(0, param_ui_ld);
1459 // CHECK: @llvm.ppc.altivec.lvx
1460 // CHECK-LE: @llvm.ppc.altivec.lvx
1461 
1462   res_vbi = vec_ld(0, &vbi);
1463 // CHECK: @llvm.ppc.altivec.lvx
1464 // CHECK-LE: @llvm.ppc.altivec.lvx
1465 
1466   res_vf  = vec_ld(0, &vf);
1467 // CHECK: @llvm.ppc.altivec.lvx
1468 // CHECK-LE: @llvm.ppc.altivec.lvx
1469 
1470   res_vf  = vec_ld(0, param_f_ld);
1471 // CHECK: @llvm.ppc.altivec.lvx
1472 // CHECK-LE: @llvm.ppc.altivec.lvx
1473 
1474   res_vsc = vec_lvx(0, &vsc);
1475 // CHECK: @llvm.ppc.altivec.lvx
1476 // CHECK-LE: @llvm.ppc.altivec.lvx
1477 
1478   res_vsc = vec_lvx(0, param_sc_ld);
1479 // CHECK: @llvm.ppc.altivec.lvx
1480 // CHECK-LE: @llvm.ppc.altivec.lvx
1481 
1482   res_vuc = vec_lvx(0, &vuc);
1483 // CHECK: @llvm.ppc.altivec.lvx
1484 // CHECK-LE: @llvm.ppc.altivec.lvx
1485 
1486   res_vuc = vec_lvx(0, param_uc_ld);
1487 // CHECK: @llvm.ppc.altivec.lvx
1488 // CHECK-LE: @llvm.ppc.altivec.lvx
1489 
1490   res_vbc = vec_lvx(0, &vbc);
1491 // CHECK: @llvm.ppc.altivec.lvx
1492 // CHECK-LE: @llvm.ppc.altivec.lvx
1493 
1494   res_vs  = vec_lvx(0, &vs);
1495 // CHECK: @llvm.ppc.altivec.lvx
1496 // CHECK-LE: @llvm.ppc.altivec.lvx
1497 
1498   res_vs  = vec_lvx(0, param_s_ld);
1499 // CHECK: @llvm.ppc.altivec.lvx
1500 // CHECK-LE: @llvm.ppc.altivec.lvx
1501 
1502   res_vus = vec_lvx(0, &vus);
1503 // CHECK: @llvm.ppc.altivec.lvx
1504 // CHECK-LE: @llvm.ppc.altivec.lvx
1505 
1506   res_vus = vec_lvx(0, param_us_ld);
1507 // CHECK: @llvm.ppc.altivec.lvx
1508 // CHECK-LE: @llvm.ppc.altivec.lvx
1509 
1510   res_vbs = vec_lvx(0, &vbs);
1511 // CHECK: @llvm.ppc.altivec.lvx
1512 // CHECK-LE: @llvm.ppc.altivec.lvx
1513 
1514   res_vp  = vec_lvx(0, &vp);
1515 // CHECK: @llvm.ppc.altivec.lvx
1516 // CHECK-LE: @llvm.ppc.altivec.lvx
1517 
1518   res_vi  = vec_lvx(0, &vi);
1519 // CHECK: @llvm.ppc.altivec.lvx
1520 // CHECK-LE: @llvm.ppc.altivec.lvx
1521 
1522   res_vi  = vec_lvx(0, param_i_ld);
1523 // CHECK: @llvm.ppc.altivec.lvx
1524 // CHECK-LE: @llvm.ppc.altivec.lvx
1525 
1526   res_vui = vec_lvx(0, &vui);
1527 // CHECK: @llvm.ppc.altivec.lvx
1528 // CHECK-LE: @llvm.ppc.altivec.lvx
1529 
1530   res_vui = vec_lvx(0, param_ui_ld);
1531 // CHECK: @llvm.ppc.altivec.lvx
1532 // CHECK-LE: @llvm.ppc.altivec.lvx
1533 
1534   res_vbi = vec_lvx(0, &vbi);
1535 // CHECK: @llvm.ppc.altivec.lvx
1536 // CHECK-LE: @llvm.ppc.altivec.lvx
1537 
1538   res_vf  = vec_lvx(0, &vf);
1539 // CHECK: @llvm.ppc.altivec.lvx
1540 // CHECK-LE: @llvm.ppc.altivec.lvx
1541 
1542   res_vf  = vec_lvx(0, param_f_ld);
1543 // CHECK: @llvm.ppc.altivec.lvx
1544 // CHECK-LE: @llvm.ppc.altivec.lvx
1545 
1546   /* vec_lde */
1547   res_vsc = vec_lde(0, param_sc_ld);
1548 // CHECK: @llvm.ppc.altivec.lvebx
1549 // CHECK-LE: @llvm.ppc.altivec.lvebx
1550 
1551   res_vuc = vec_lde(0, param_uc_ld);
1552 // CHECK: @llvm.ppc.altivec.lvebx
1553 // CHECK-LE: @llvm.ppc.altivec.lvebx
1554 
1555   res_vs  = vec_lde(0, param_s_ld);
1556 // CHECK: @llvm.ppc.altivec.lvehx
1557 // CHECK-LE: @llvm.ppc.altivec.lvehx
1558 
1559   res_vus = vec_lde(0, param_us_ld);
1560 // CHECK: @llvm.ppc.altivec.lvehx
1561 // CHECK-LE: @llvm.ppc.altivec.lvehx
1562 
1563   res_vi  = vec_lde(0, param_i_ld);
1564 // CHECK: @llvm.ppc.altivec.lvewx
1565 // CHECK-LE: @llvm.ppc.altivec.lvewx
1566 
1567   res_vui = vec_lde(0, param_ui_ld);
1568 // CHECK: @llvm.ppc.altivec.lvewx
1569 // CHECK-LE: @llvm.ppc.altivec.lvewx
1570 
1571   res_vf  = vec_lde(0, param_f_ld);
1572 // CHECK: @llvm.ppc.altivec.lvewx
1573 // CHECK-LE: @llvm.ppc.altivec.lvewx
1574 
1575   res_vsc = vec_lvebx(0, param_sc_ld);
1576 // CHECK: @llvm.ppc.altivec.lvebx
1577 // CHECK-LE: @llvm.ppc.altivec.lvebx
1578 
1579   res_vuc = vec_lvebx(0, param_uc_ld);
1580 // CHECK: @llvm.ppc.altivec.lvebx
1581 // CHECK-LE: @llvm.ppc.altivec.lvebx
1582 
1583   res_vs  = vec_lvehx(0, param_s_ld);
1584 // CHECK: @llvm.ppc.altivec.lvehx
1585 // CHECK-LE: @llvm.ppc.altivec.lvehx
1586 
1587   res_vus = vec_lvehx(0, param_us_ld);
1588 // CHECK: @llvm.ppc.altivec.lvehx
1589 // CHECK-LE: @llvm.ppc.altivec.lvehx
1590 
1591   res_vi  = vec_lvewx(0, param_i_ld);
1592 // CHECK: @llvm.ppc.altivec.lvewx
1593 // CHECK-LE: @llvm.ppc.altivec.lvewx
1594 
1595   res_vui = vec_lvewx(0, param_ui_ld);
1596 // CHECK: @llvm.ppc.altivec.lvewx
1597 // CHECK-LE: @llvm.ppc.altivec.lvewx
1598 
1599   res_vf  = vec_lvewx(0, param_f_ld);
1600 // CHECK: @llvm.ppc.altivec.lvewx
1601 // CHECK-LE: @llvm.ppc.altivec.lvewx
1602 
1603   /* vec_ldl */
1604   res_vsc = vec_ldl(0, &vsc);
1605 // CHECK: @llvm.ppc.altivec.lvxl
1606 // CHECK-LE: @llvm.ppc.altivec.lvxl
1607 
1608   res_vsc = vec_ldl(0, param_sc_ld);
1609 // CHECK: @llvm.ppc.altivec.lvxl
1610 // CHECK-LE: @llvm.ppc.altivec.lvxl
1611 
1612   res_vuc = vec_ldl(0, &vuc);
1613 // CHECK: @llvm.ppc.altivec.lvxl
1614 // CHECK-LE: @llvm.ppc.altivec.lvxl
1615 
1616   res_vuc = vec_ldl(0, param_uc_ld);
1617 // CHECK: @llvm.ppc.altivec.lvxl
1618 // CHECK-LE: @llvm.ppc.altivec.lvxl
1619 
1620   res_vbc = vec_ldl(0, &vbc);
1621 // CHECK: @llvm.ppc.altivec.lvxl
1622 // CHECK-LE: @llvm.ppc.altivec.lvxl
1623 
1624   res_vs  = vec_ldl(0, &vs);
1625 // CHECK: @llvm.ppc.altivec.lvxl
1626 // CHECK-LE: @llvm.ppc.altivec.lvxl
1627 
1628   res_vs  = vec_ldl(0, param_s_ld);
1629 // CHECK: @llvm.ppc.altivec.lvxl
1630 // CHECK-LE: @llvm.ppc.altivec.lvxl
1631 
1632   res_vus = vec_ldl(0, &vus);
1633 // CHECK: @llvm.ppc.altivec.lvxl
1634 // CHECK-LE: @llvm.ppc.altivec.lvxl
1635 
1636   res_vus = vec_ldl(0, param_us_ld);
1637 // CHECK: @llvm.ppc.altivec.lvxl
1638 // CHECK-LE: @llvm.ppc.altivec.lvxl
1639 
1640   res_vbs = vec_ldl(0, &vbs);
1641 // CHECK: @llvm.ppc.altivec.lvxl
1642 // CHECK-LE: @llvm.ppc.altivec.lvxl
1643 
1644   res_vp  = vec_ldl(0, &vp);
1645 // CHECK: @llvm.ppc.altivec.lvxl
1646 // CHECK-LE: @llvm.ppc.altivec.lvxl
1647 
1648   res_vi  = vec_ldl(0, &vi);
1649 // CHECK: @llvm.ppc.altivec.lvxl
1650 // CHECK-LE: @llvm.ppc.altivec.lvxl
1651 
1652   res_vi  = vec_ldl(0, param_i_ld);
1653 // CHECK: @llvm.ppc.altivec.lvxl
1654 // CHECK-LE: @llvm.ppc.altivec.lvxl
1655 
1656   res_vui = vec_ldl(0, &vui);
1657 // CHECK: @llvm.ppc.altivec.lvxl
1658 // CHECK-LE: @llvm.ppc.altivec.lvxl
1659 
1660   res_vui = vec_ldl(0, param_ui_ld);
1661 // CHECK: @llvm.ppc.altivec.lvxl
1662 // CHECK-LE: @llvm.ppc.altivec.lvxl
1663 
1664   res_vbi = vec_ldl(0, &vbi);
1665 // CHECK: @llvm.ppc.altivec.lvxl
1666 // CHECK-LE: @llvm.ppc.altivec.lvxl
1667 
1668   res_vf  = vec_ldl(0, &vf);
1669 // CHECK: @llvm.ppc.altivec.lvxl
1670 // CHECK-LE: @llvm.ppc.altivec.lvxl
1671 
1672   res_vf  = vec_ldl(0, param_f_ld);
1673 // CHECK: @llvm.ppc.altivec.lvxl
1674 // CHECK-LE: @llvm.ppc.altivec.lvxl
1675 
1676   res_vsc = vec_lvxl(0, &vsc);
1677 // CHECK: @llvm.ppc.altivec.lvxl
1678 // CHECK-LE: @llvm.ppc.altivec.lvxl
1679 
1680   res_vsc = vec_lvxl(0, param_sc_ld);
1681 // CHECK: @llvm.ppc.altivec.lvxl
1682 // CHECK-LE: @llvm.ppc.altivec.lvxl
1683 
1684   res_vuc = vec_lvxl(0, &vuc);
1685 // CHECK: @llvm.ppc.altivec.lvxl
1686 // CHECK-LE: @llvm.ppc.altivec.lvxl
1687 
1688   res_vbc = vec_lvxl(0, &vbc);
1689 // CHECK: @llvm.ppc.altivec.lvxl
1690 // CHECK-LE: @llvm.ppc.altivec.lvxl
1691 
1692   res_vuc = vec_lvxl(0, param_uc_ld);
1693 // CHECK: @llvm.ppc.altivec.lvxl
1694 // CHECK-LE: @llvm.ppc.altivec.lvxl
1695 
1696   res_vs  = vec_lvxl(0, &vs);
1697 // CHECK: @llvm.ppc.altivec.lvxl
1698 // CHECK-LE: @llvm.ppc.altivec.lvxl
1699 
1700   res_vs  = vec_lvxl(0, param_s_ld);
1701 // CHECK: @llvm.ppc.altivec.lvxl
1702 // CHECK-LE: @llvm.ppc.altivec.lvxl
1703 
1704   res_vus = vec_lvxl(0, &vus);
1705 // CHECK: @llvm.ppc.altivec.lvxl
1706 // CHECK-LE: @llvm.ppc.altivec.lvxl
1707 
1708   res_vus = vec_lvxl(0, param_us_ld);
1709 // CHECK: @llvm.ppc.altivec.lvxl
1710 // CHECK-LE: @llvm.ppc.altivec.lvxl
1711 
1712   res_vbs = vec_lvxl(0, &vbs);
1713 // CHECK: @llvm.ppc.altivec.lvxl
1714 // CHECK-LE: @llvm.ppc.altivec.lvxl
1715 
1716   res_vp  = vec_lvxl(0, &vp);
1717 // CHECK: @llvm.ppc.altivec.lvxl
1718 // CHECK-LE: @llvm.ppc.altivec.lvxl
1719 
1720   res_vi  = vec_lvxl(0, &vi);
1721 // CHECK: @llvm.ppc.altivec.lvxl
1722 // CHECK-LE: @llvm.ppc.altivec.lvxl
1723 
1724   res_vi  = vec_lvxl(0, param_i_ld);
1725 // CHECK: @llvm.ppc.altivec.lvxl
1726 // CHECK-LE: @llvm.ppc.altivec.lvxl
1727 
1728   res_vui = vec_lvxl(0, &vui);
1729 // CHECK: @llvm.ppc.altivec.lvxl
1730 // CHECK-LE: @llvm.ppc.altivec.lvxl
1731 
1732   res_vui = vec_lvxl(0, param_ui_ld);
1733 // CHECK: @llvm.ppc.altivec.lvxl
1734 // CHECK-LE: @llvm.ppc.altivec.lvxl
1735 
1736   res_vbi = vec_lvxl(0, &vbi);
1737 // CHECK: @llvm.ppc.altivec.lvxl
1738 // CHECK-LE: @llvm.ppc.altivec.lvxl
1739 
1740   res_vf  = vec_lvxl(0, &vf);
1741 // CHECK: @llvm.ppc.altivec.lvxl
1742 // CHECK-LE: @llvm.ppc.altivec.lvxl
1743 
1744   res_vf  = vec_lvxl(0, param_f_ld);
1745 // CHECK: @llvm.ppc.altivec.lvxl
1746 // CHECK-LE: @llvm.ppc.altivec.lvxl
1747 
1748   /* vec_loge */
1749   res_vf = vec_loge(vf);
1750 // CHECK: @llvm.ppc.altivec.vlogefp
1751 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1752 
1753   res_vf = vec_vlogefp(vf);
1754 // CHECK: @llvm.ppc.altivec.vlogefp
1755 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1756 
1757   /* vec_lvsl */
1758   res_vuc = vec_lvsl(0, param_i_ld);
1759 // CHECK: @llvm.ppc.altivec.lvsl
1760 // CHECK-LE: @llvm.ppc.altivec.lvsl
1761 
1762   /* vec_lvsr */
1763   res_vuc = vec_lvsr(0, param_i_ld);
1764 // CHECK: @llvm.ppc.altivec.lvsr
1765 // CHECK-LE: @llvm.ppc.altivec.lvsr
1766 
1767   /* vec_madd */
1768   res_vf =vec_madd(vf, vf, vf);
1769 // CHECK: @llvm.ppc.altivec.vmaddfp
1770 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1771 
1772   res_vf = vec_vmaddfp(vf, vf, vf);
1773 // CHECK: @llvm.ppc.altivec.vmaddfp
1774 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1775 
1776   /* vec_madds */
1777   res_vs = vec_madds(vs, vs, vs);
1778 // CHECK: @llvm.ppc.altivec.vmhaddshs
1779 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1780 
1781   res_vs = vec_vmhaddshs(vs, vs, vs);
1782 // CHECK: @llvm.ppc.altivec.vmhaddshs
1783 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1784 
1785   /* vec_max */
1786   res_vsc = vec_max(vsc, vsc);
1787 // CHECK: @llvm.ppc.altivec.vmaxsb
1788 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1789 
1790   res_vsc = vec_max(vbc, vsc);
1791 // CHECK: @llvm.ppc.altivec.vmaxsb
1792 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1793 
1794   res_vsc = vec_max(vsc, vbc);
1795 // CHECK: @llvm.ppc.altivec.vmaxsb
1796 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1797 
1798   res_vuc = vec_max(vuc, vuc);
1799 // CHECK: @llvm.ppc.altivec.vmaxub
1800 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1801 
1802   res_vuc = vec_max(vbc, vuc);
1803 // CHECK: @llvm.ppc.altivec.vmaxub
1804 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1805 
1806   res_vuc = vec_max(vuc, vbc);
1807 // CHECK: @llvm.ppc.altivec.vmaxub
1808 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1809 
1810   res_vs  = vec_max(vs, vs);
1811 // CHECK: @llvm.ppc.altivec.vmaxsh
1812 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1813 
1814   res_vs  = vec_max(vbs, vs);
1815 // CHECK: @llvm.ppc.altivec.vmaxsh
1816 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1817 
1818   res_vs  = vec_max(vs, vbs);
1819 // CHECK: @llvm.ppc.altivec.vmaxsh
1820 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1821 
1822   res_vus = vec_max(vus, vus);
1823 // CHECK: @llvm.ppc.altivec.vmaxuh
1824 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1825 
1826   res_vus = vec_max(vbs, vus);
1827 // CHECK: @llvm.ppc.altivec.vmaxuh
1828 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1829 
1830   res_vus = vec_max(vus, vbs);
1831 // CHECK: @llvm.ppc.altivec.vmaxuh
1832 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1833 
1834   res_vi  = vec_max(vi, vi);
1835 // CHECK: @llvm.ppc.altivec.vmaxsw
1836 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1837 
1838   res_vi  = vec_max(vbi, vi);
1839 // CHECK: @llvm.ppc.altivec.vmaxsw
1840 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1841 
1842   res_vi  = vec_max(vi, vbi);
1843 // CHECK: @llvm.ppc.altivec.vmaxsw
1844 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1845 
1846   res_vui = vec_max(vui, vui);
1847 // CHECK: @llvm.ppc.altivec.vmaxuw
1848 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1849 
1850   res_vui = vec_max(vbi, vui);
1851 // CHECK: @llvm.ppc.altivec.vmaxuw
1852 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1853 
1854   res_vui = vec_max(vui, vbi);
1855 // CHECK: @llvm.ppc.altivec.vmaxuw
1856 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1857 
1858   res_vf  = vec_max(vf, vf);
1859 // CHECK: @llvm.ppc.altivec.vmaxfp
1860 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1861 
1862   res_vsc = vec_vmaxsb(vsc, vsc);
1863 // CHECK: @llvm.ppc.altivec.vmaxsb
1864 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1865 
1866   res_vsc = vec_vmaxsb(vbc, vsc);
1867 // CHECK: @llvm.ppc.altivec.vmaxsb
1868 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1869 
1870   res_vsc = vec_vmaxsb(vsc, vbc);
1871 // CHECK: @llvm.ppc.altivec.vmaxsb
1872 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1873 
1874   res_vuc = vec_vmaxub(vuc, vuc);
1875 // CHECK: @llvm.ppc.altivec.vmaxub
1876 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1877 
1878   res_vuc = vec_vmaxub(vbc, vuc);
1879 // CHECK: @llvm.ppc.altivec.vmaxub
1880 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1881 
1882   res_vuc = vec_vmaxub(vuc, vbc);
1883 // CHECK: @llvm.ppc.altivec.vmaxub
1884 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1885 
1886   res_vs  = vec_vmaxsh(vs, vs);
1887 // CHECK: @llvm.ppc.altivec.vmaxsh
1888 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1889 
1890   res_vs  = vec_vmaxsh(vbs, vs);
1891 // CHECK: @llvm.ppc.altivec.vmaxsh
1892 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1893 
1894   res_vs  = vec_vmaxsh(vs, vbs);
1895 // CHECK: @llvm.ppc.altivec.vmaxsh
1896 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1897 
1898   res_vus = vec_vmaxuh(vus, vus);
1899 // CHECK: @llvm.ppc.altivec.vmaxuh
1900 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1901 
1902   res_vus = vec_vmaxuh(vbs, vus);
1903 // CHECK: @llvm.ppc.altivec.vmaxuh
1904 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1905 
1906   res_vus = vec_vmaxuh(vus, vbs);
1907 // CHECK: @llvm.ppc.altivec.vmaxuh
1908 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1909 
1910   res_vi  = vec_vmaxsw(vi, vi);
1911 // CHECK: @llvm.ppc.altivec.vmaxsw
1912 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1913 
1914   res_vi  = vec_vmaxsw(vbi, vi);
1915 // CHECK: @llvm.ppc.altivec.vmaxsw
1916 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1917 
1918   res_vi  = vec_vmaxsw(vi, vbi);
1919 // CHECK: @llvm.ppc.altivec.vmaxsw
1920 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1921 
1922   res_vui = vec_vmaxuw(vui, vui);
1923 // CHECK: @llvm.ppc.altivec.vmaxuw
1924 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1925 
1926   res_vui = vec_vmaxuw(vbi, vui);
1927 // CHECK: @llvm.ppc.altivec.vmaxuw
1928 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1929 
1930   res_vui = vec_vmaxuw(vui, vbi);
1931 // CHECK: @llvm.ppc.altivec.vmaxuw
1932 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1933 
1934   res_vf  = vec_vmaxfp(vf, vf);
1935 // CHECK: @llvm.ppc.altivec.vmaxfp
1936 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1937 
1938   /* vec_mergeh */
1939   res_vsc = vec_mergeh(vsc, vsc);
1940 // CHECK: @llvm.ppc.altivec.vperm
1941 // CHECK-LE: @llvm.ppc.altivec.vperm
1942 
1943   res_vuc = vec_mergeh(vuc, vuc);
1944 // CHECK: @llvm.ppc.altivec.vperm
1945 // CHECK-LE: @llvm.ppc.altivec.vperm
1946 
1947   res_vbc = vec_mergeh(vbc, vbc);
1948 // CHECK: @llvm.ppc.altivec.vperm
1949 // CHECK-LE: @llvm.ppc.altivec.vperm
1950 
1951   res_vs  = vec_mergeh(vs, vs);
1952 // CHECK: @llvm.ppc.altivec.vperm
1953 // CHECK-LE: @llvm.ppc.altivec.vperm
1954 
1955   res_vp  = vec_mergeh(vp, vp);
1956 // CHECK: @llvm.ppc.altivec.vperm
1957 // CHECK-LE: @llvm.ppc.altivec.vperm
1958 
1959   res_vus = vec_mergeh(vus, vus);
1960 // CHECK: @llvm.ppc.altivec.vperm
1961 // CHECK-LE: @llvm.ppc.altivec.vperm
1962 
1963   res_vbs = vec_mergeh(vbs, vbs);
1964 // CHECK: @llvm.ppc.altivec.vperm
1965 // CHECK-LE: @llvm.ppc.altivec.vperm
1966 
1967   res_vi  = vec_mergeh(vi, vi);
1968 // CHECK: @llvm.ppc.altivec.vperm
1969 // CHECK-LE: @llvm.ppc.altivec.vperm
1970 
1971   res_vui = vec_mergeh(vui, vui);
1972 // CHECK: @llvm.ppc.altivec.vperm
1973 // CHECK-LE: @llvm.ppc.altivec.vperm
1974 
1975   res_vbi = vec_mergeh(vbi, vbi);
1976 // CHECK: @llvm.ppc.altivec.vperm
1977 // CHECK-LE: @llvm.ppc.altivec.vperm
1978 
1979   res_vf  = vec_mergeh(vf, vf);
1980 // CHECK: @llvm.ppc.altivec.vperm
1981 // CHECK-LE: @llvm.ppc.altivec.vperm
1982 
1983   res_vsc = vec_vmrghb(vsc, vsc);
1984 // CHECK: @llvm.ppc.altivec.vperm
1985 // CHECK-LE: @llvm.ppc.altivec.vperm
1986 
1987   res_vuc = vec_vmrghb(vuc, vuc);
1988 // CHECK: @llvm.ppc.altivec.vperm
1989 // CHECK-LE: @llvm.ppc.altivec.vperm
1990 
1991   res_vbc = vec_vmrghb(vbc, vbc);
1992 // CHECK: @llvm.ppc.altivec.vperm
1993 // CHECK-LE: @llvm.ppc.altivec.vperm
1994 
1995   res_vs  = vec_vmrghh(vs, vs);
1996 // CHECK: @llvm.ppc.altivec.vperm
1997 // CHECK-LE: @llvm.ppc.altivec.vperm
1998 
1999   res_vp  = vec_vmrghh(vp, vp);
2000 // CHECK: @llvm.ppc.altivec.vperm
2001 // CHECK-LE: @llvm.ppc.altivec.vperm
2002 
2003   res_vus = vec_vmrghh(vus, vus);
2004 // CHECK: @llvm.ppc.altivec.vperm
2005 // CHECK-LE: @llvm.ppc.altivec.vperm
2006 
2007   res_vbs = vec_vmrghh(vbs, vbs);
2008 // CHECK: @llvm.ppc.altivec.vperm
2009 // CHECK-LE: @llvm.ppc.altivec.vperm
2010 
2011   res_vi  = vec_vmrghw(vi, vi);
2012 // CHECK: @llvm.ppc.altivec.vperm
2013 // CHECK-LE: @llvm.ppc.altivec.vperm
2014 
2015   res_vui = vec_vmrghw(vui, vui);
2016 // CHECK: @llvm.ppc.altivec.vperm
2017 // CHECK-LE: @llvm.ppc.altivec.vperm
2018 
2019   res_vbi = vec_vmrghw(vbi, vbi);
2020 // CHECK: @llvm.ppc.altivec.vperm
2021 // CHECK-LE: @llvm.ppc.altivec.vperm
2022 
2023   res_vf  = vec_vmrghw(vf, vf);
2024 // CHECK: @llvm.ppc.altivec.vperm
2025 // CHECK-LE: @llvm.ppc.altivec.vperm
2026 
2027   /* vec_mergel */
2028   res_vsc = vec_mergel(vsc, vsc);
2029 // CHECK: @llvm.ppc.altivec.vperm
2030 // CHECK-LE: @llvm.ppc.altivec.vperm
2031 
2032   res_vuc = vec_mergel(vuc, vuc);
2033 // CHECK: @llvm.ppc.altivec.vperm
2034 // CHECK-LE: @llvm.ppc.altivec.vperm
2035 
2036   res_vbc = vec_mergel(vbc, vbc);
2037 // CHECK: @llvm.ppc.altivec.vperm
2038 // CHECK-LE: @llvm.ppc.altivec.vperm
2039 
2040   res_vs  = vec_mergel(vs, vs);
2041 // CHECK: @llvm.ppc.altivec.vperm
2042 // CHECK-LE: @llvm.ppc.altivec.vperm
2043 
2044   res_vp  = vec_mergeh(vp, vp);
2045 // CHECK: @llvm.ppc.altivec.vperm
2046 // CHECK-LE: @llvm.ppc.altivec.vperm
2047 
2048   res_vus = vec_mergel(vus, vus);
2049 // CHECK: @llvm.ppc.altivec.vperm
2050 // CHECK-LE: @llvm.ppc.altivec.vperm
2051 
2052   res_vbs = vec_mergel(vbs, vbs);
2053 // CHECK: @llvm.ppc.altivec.vperm
2054 // CHECK-LE: @llvm.ppc.altivec.vperm
2055 
2056   res_vi  = vec_mergel(vi, vi);
2057 // CHECK: @llvm.ppc.altivec.vperm
2058 // CHECK-LE: @llvm.ppc.altivec.vperm
2059 
2060   res_vui = vec_mergel(vui, vui);
2061 // CHECK: @llvm.ppc.altivec.vperm
2062 // CHECK-LE: @llvm.ppc.altivec.vperm
2063 
2064   res_vbi = vec_mergel(vbi, vbi);
2065 // CHECK: @llvm.ppc.altivec.vperm
2066 // CHECK-LE: @llvm.ppc.altivec.vperm
2067 
2068   res_vf  = vec_mergel(vf, vf);
2069 // CHECK: @llvm.ppc.altivec.vperm
2070 // CHECK-LE: @llvm.ppc.altivec.vperm
2071 
2072   res_vsc = vec_vmrglb(vsc, vsc);
2073 // CHECK: @llvm.ppc.altivec.vperm
2074 // CHECK-LE: @llvm.ppc.altivec.vperm
2075 
2076   res_vuc = vec_vmrglb(vuc, vuc);
2077 // CHECK: @llvm.ppc.altivec.vperm
2078 // CHECK-LE: @llvm.ppc.altivec.vperm
2079 
2080   res_vbc = vec_vmrglb(vbc, vbc);
2081 // CHECK: @llvm.ppc.altivec.vperm
2082 // CHECK-LE: @llvm.ppc.altivec.vperm
2083 
2084   res_vs  = vec_vmrglh(vs, vs);
2085 // CHECK: @llvm.ppc.altivec.vperm
2086 // CHECK-LE: @llvm.ppc.altivec.vperm
2087 
2088   res_vp  = vec_vmrglh(vp, vp);
2089 // CHECK: @llvm.ppc.altivec.vperm
2090 // CHECK-LE: @llvm.ppc.altivec.vperm
2091 
2092   res_vus = vec_vmrglh(vus, vus);
2093 // CHECK: @llvm.ppc.altivec.vperm
2094 // CHECK-LE: @llvm.ppc.altivec.vperm
2095 
2096   res_vbs = vec_vmrglh(vbs, vbs);
2097 // CHECK: @llvm.ppc.altivec.vperm
2098 // CHECK-LE: @llvm.ppc.altivec.vperm
2099 
2100   res_vi  = vec_vmrglw(vi, vi);
2101 // CHECK: @llvm.ppc.altivec.vperm
2102 // CHECK-LE: @llvm.ppc.altivec.vperm
2103 
2104   res_vui = vec_vmrglw(vui, vui);
2105 // CHECK: @llvm.ppc.altivec.vperm
2106 // CHECK-LE: @llvm.ppc.altivec.vperm
2107 
2108   res_vbi = vec_vmrglw(vbi, vbi);
2109 // CHECK: @llvm.ppc.altivec.vperm
2110 // CHECK-LE: @llvm.ppc.altivec.vperm
2111 
2112   res_vf  = vec_vmrglw(vf, vf);
2113 // CHECK: @llvm.ppc.altivec.vperm
2114 // CHECK-LE: @llvm.ppc.altivec.vperm
2115 
2116   /* vec_mfvscr */
2117   vus = vec_mfvscr();
2118 // CHECK: @llvm.ppc.altivec.mfvscr
2119 // CHECK-LE: @llvm.ppc.altivec.mfvscr
2120 
2121   /* vec_min */
2122   res_vsc = vec_min(vsc, vsc);
2123 // CHECK: @llvm.ppc.altivec.vminsb
2124 // CHECK-LE: @llvm.ppc.altivec.vminsb
2125 
2126   res_vsc = vec_min(vbc, vsc);
2127 // CHECK: @llvm.ppc.altivec.vminsb
2128 // CHECK-LE: @llvm.ppc.altivec.vminsb
2129 
2130   res_vsc = vec_min(vsc, vbc);
2131 // CHECK: @llvm.ppc.altivec.vminsb
2132 // CHECK-LE: @llvm.ppc.altivec.vminsb
2133 
2134   res_vuc = vec_min(vuc, vuc);
2135 // CHECK: @llvm.ppc.altivec.vminub
2136 // CHECK-LE: @llvm.ppc.altivec.vminub
2137 
2138   res_vuc = vec_min(vbc, vuc);
2139 // CHECK: @llvm.ppc.altivec.vminub
2140 // CHECK-LE: @llvm.ppc.altivec.vminub
2141 
2142   res_vuc = vec_min(vuc, vbc);
2143 // CHECK: @llvm.ppc.altivec.vminub
2144 // CHECK-LE: @llvm.ppc.altivec.vminub
2145 
2146   res_vs  = vec_min(vs, vs);
2147 // CHECK: @llvm.ppc.altivec.vminsh
2148 // CHECK-LE: @llvm.ppc.altivec.vminsh
2149 
2150   res_vs  = vec_min(vbs, vs);
2151 // CHECK: @llvm.ppc.altivec.vminsh
2152 // CHECK-LE: @llvm.ppc.altivec.vminsh
2153 
2154   res_vs  = vec_min(vs, vbs);
2155 // CHECK: @llvm.ppc.altivec.vminsh
2156 // CHECK-LE: @llvm.ppc.altivec.vminsh
2157 
2158   res_vus = vec_min(vus, vus);
2159 // CHECK: @llvm.ppc.altivec.vminuh
2160 // CHECK-LE: @llvm.ppc.altivec.vminuh
2161 
2162   res_vus = vec_min(vbs, vus);
2163 // CHECK: @llvm.ppc.altivec.vminuh
2164 // CHECK-LE: @llvm.ppc.altivec.vminuh
2165 
2166   res_vus = vec_min(vus, vbs);
2167 // CHECK: @llvm.ppc.altivec.vminuh
2168 // CHECK-LE: @llvm.ppc.altivec.vminuh
2169 
2170   res_vi  = vec_min(vi, vi);
2171 // CHECK: @llvm.ppc.altivec.vminsw
2172 // CHECK-LE: @llvm.ppc.altivec.vminsw
2173 
2174   res_vi  = vec_min(vbi, vi);
2175 // CHECK: @llvm.ppc.altivec.vminsw
2176 // CHECK-LE: @llvm.ppc.altivec.vminsw
2177 
2178   res_vi  = vec_min(vi, vbi);
2179 // CHECK: @llvm.ppc.altivec.vminsw
2180 // CHECK-LE: @llvm.ppc.altivec.vminsw
2181 
2182   res_vui = vec_min(vui, vui);
2183 // CHECK: @llvm.ppc.altivec.vminuw
2184 // CHECK-LE: @llvm.ppc.altivec.vminuw
2185 
2186   res_vui = vec_min(vbi, vui);
2187 // CHECK: @llvm.ppc.altivec.vminuw
2188 // CHECK-LE: @llvm.ppc.altivec.vminuw
2189 
2190   res_vui = vec_min(vui, vbi);
2191 // CHECK: @llvm.ppc.altivec.vminuw
2192 // CHECK-LE: @llvm.ppc.altivec.vminuw
2193 
2194   res_vf  = vec_min(vf, vf);
2195 // CHECK: @llvm.ppc.altivec.vminfp
2196 // CHECK-LE: @llvm.ppc.altivec.vminfp
2197 
2198   res_vsc = vec_vminsb(vsc, vsc);
2199 // CHECK: @llvm.ppc.altivec.vminsb
2200 // CHECK-LE: @llvm.ppc.altivec.vminsb
2201 
2202   res_vsc = vec_vminsb(vbc, vsc);
2203 // CHECK: @llvm.ppc.altivec.vminsb
2204 // CHECK-LE: @llvm.ppc.altivec.vminsb
2205 
2206   res_vsc = vec_vminsb(vsc, vbc);
2207 // CHECK: @llvm.ppc.altivec.vminsb
2208 // CHECK-LE: @llvm.ppc.altivec.vminsb
2209 
2210   res_vuc = vec_vminub(vuc, vuc);
2211 // CHECK: @llvm.ppc.altivec.vminub
2212 // CHECK-LE: @llvm.ppc.altivec.vminub
2213 
2214   res_vuc = vec_vminub(vbc, vuc);
2215 // CHECK: @llvm.ppc.altivec.vminub
2216 // CHECK-LE: @llvm.ppc.altivec.vminub
2217 
2218   res_vuc = vec_vminub(vuc, vbc);
2219 // CHECK: @llvm.ppc.altivec.vminub
2220 // CHECK-LE: @llvm.ppc.altivec.vminub
2221 
2222   res_vs  = vec_vminsh(vs, vs);
2223 // CHECK: @llvm.ppc.altivec.vminsh
2224 // CHECK-LE: @llvm.ppc.altivec.vminsh
2225 
2226   res_vs  = vec_vminsh(vbs, vs);
2227 // CHECK: @llvm.ppc.altivec.vminsh
2228 // CHECK-LE: @llvm.ppc.altivec.vminsh
2229 
2230   res_vs  = vec_vminsh(vs, vbs);
2231 // CHECK: @llvm.ppc.altivec.vminsh
2232 // CHECK-LE: @llvm.ppc.altivec.vminsh
2233 
2234   res_vus = vec_vminuh(vus, vus);
2235 // CHECK: @llvm.ppc.altivec.vminuh
2236 // CHECK-LE: @llvm.ppc.altivec.vminuh
2237 
2238   res_vus = vec_vminuh(vbs, vus);
2239 // CHECK: @llvm.ppc.altivec.vminuh
2240 // CHECK-LE: @llvm.ppc.altivec.vminuh
2241 
2242   res_vus = vec_vminuh(vus, vbs);
2243 // CHECK: @llvm.ppc.altivec.vminuh
2244 // CHECK-LE: @llvm.ppc.altivec.vminuh
2245 
2246   res_vi  = vec_vminsw(vi, vi);
2247 // CHECK: @llvm.ppc.altivec.vminsw
2248 // CHECK-LE: @llvm.ppc.altivec.vminsw
2249 
2250   res_vi  = vec_vminsw(vbi, vi);
2251 // CHECK: @llvm.ppc.altivec.vminsw
2252 // CHECK-LE: @llvm.ppc.altivec.vminsw
2253 
2254   res_vi  = vec_vminsw(vi, vbi);
2255 // CHECK: @llvm.ppc.altivec.vminsw
2256 // CHECK-LE: @llvm.ppc.altivec.vminsw
2257 
2258   res_vui = vec_vminuw(vui, vui);
2259 // CHECK: @llvm.ppc.altivec.vminuw
2260 // CHECK-LE: @llvm.ppc.altivec.vminuw
2261 
2262   res_vui = vec_vminuw(vbi, vui);
2263 // CHECK: @llvm.ppc.altivec.vminuw
2264 // CHECK-LE: @llvm.ppc.altivec.vminuw
2265 
2266   res_vui = vec_vminuw(vui, vbi);
2267 // CHECK: @llvm.ppc.altivec.vminuw
2268 // CHECK-LE: @llvm.ppc.altivec.vminuw
2269 
2270   res_vf  = vec_vminfp(vf, vf);
2271 // CHECK: @llvm.ppc.altivec.vminfp
2272 // CHECK-LE: @llvm.ppc.altivec.vminfp
2273 
2274   /* vec_mladd */
2275   res_vus = vec_mladd(vus, vus, vus);
2276 // CHECK: mul <8 x i16>
2277 // CHECK: add <8 x i16>
2278 // CHECK-LE: mul <8 x i16>
2279 // CHECK-LE: add <8 x i16>
2280 
2281   res_vs = vec_mladd(vus, vs, vs);
2282 // CHECK: mul <8 x i16>
2283 // CHECK: add <8 x i16>
2284 // CHECK-LE: mul <8 x i16>
2285 // CHECK-LE: add <8 x i16>
2286 
2287   res_vs = vec_mladd(vs, vus, vus);
2288 // CHECK: mul <8 x i16>
2289 // CHECK: add <8 x i16>
2290 // CHECK-LE: mul <8 x i16>
2291 // CHECK-LE: add <8 x i16>
2292 
2293   res_vs = vec_mladd(vs, vs, vs);
2294 // CHECK: mul <8 x i16>
2295 // CHECK: add <8 x i16>
2296 // CHECK-LE: mul <8 x i16>
2297 // CHECK-LE: add <8 x i16>
2298 
2299   /* vec_mradds */
2300   res_vs = vec_mradds(vs, vs, vs);
2301 // CHECK: @llvm.ppc.altivec.vmhraddshs
2302 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2303 
2304   res_vs = vec_vmhraddshs(vs, vs, vs);
2305 // CHECK: @llvm.ppc.altivec.vmhraddshs
2306 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2307 
2308   /* vec_msum */
2309   res_vi  = vec_msum(vsc, vuc, vi);
2310 // CHECK: @llvm.ppc.altivec.vmsummbm
2311 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2312 
2313   res_vui = vec_msum(vuc, vuc, vui);
2314 // CHECK: @llvm.ppc.altivec.vmsumubm
2315 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2316 
2317   res_vi  = vec_msum(vs, vs, vi);
2318 // CHECK: @llvm.ppc.altivec.vmsumshm
2319 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2320 
2321   res_vui = vec_msum(vus, vus, vui);
2322 // CHECK: @llvm.ppc.altivec.vmsumuhm
2323 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2324 
2325   res_vi  = vec_vmsummbm(vsc, vuc, vi);
2326 // CHECK: @llvm.ppc.altivec.vmsummbm
2327 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2328 
2329   res_vui = vec_vmsumubm(vuc, vuc, vui);
2330 // CHECK: @llvm.ppc.altivec.vmsumubm
2331 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2332 
2333   res_vi  = vec_vmsumshm(vs, vs, vi);
2334 // CHECK: @llvm.ppc.altivec.vmsumshm
2335 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2336 
2337   res_vui = vec_vmsumuhm(vus, vus, vui);
2338 // CHECK: @llvm.ppc.altivec.vmsumuhm
2339 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2340 
2341   /* vec_msums */
2342   res_vi  = vec_msums(vs, vs, vi);
2343 // CHECK: @llvm.ppc.altivec.vmsumshs
2344 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2345 
2346   res_vui = vec_msums(vus, vus, vui);
2347 // CHECK: @llvm.ppc.altivec.vmsumuhs
2348 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2349 
2350   res_vi  = vec_vmsumshs(vs, vs, vi);
2351 // CHECK: @llvm.ppc.altivec.vmsumshs
2352 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2353 
2354   res_vui = vec_vmsumuhs(vus, vus, vui);
2355 // CHECK: @llvm.ppc.altivec.vmsumuhs
2356 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2357 
2358   /* vec_mtvscr */
2359   vec_mtvscr(vsc);
2360 // CHECK: @llvm.ppc.altivec.mtvscr
2361 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2362 
2363   vec_mtvscr(vuc);
2364 // CHECK: @llvm.ppc.altivec.mtvscr
2365 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2366 
2367   vec_mtvscr(vbc);
2368 // CHECK: @llvm.ppc.altivec.mtvscr
2369 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2370 
2371   vec_mtvscr(vs);
2372 // CHECK: @llvm.ppc.altivec.mtvscr
2373 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2374 
2375   vec_mtvscr(vus);
2376 // CHECK: @llvm.ppc.altivec.mtvscr
2377 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2378 
2379   vec_mtvscr(vbs);
2380 // CHECK: @llvm.ppc.altivec.mtvscr
2381 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2382 
2383   vec_mtvscr(vp);
2384 // CHECK: @llvm.ppc.altivec.mtvscr
2385 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2386 
2387   vec_mtvscr(vi);
2388 // CHECK: @llvm.ppc.altivec.mtvscr
2389 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2390 
2391   vec_mtvscr(vui);
2392 // CHECK: @llvm.ppc.altivec.mtvscr
2393 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2394 
2395   vec_mtvscr(vbi);
2396 // CHECK: @llvm.ppc.altivec.mtvscr
2397 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2398 
2399   /* vec_mul */
2400   res_vsc = vec_mul(vsc, vsc);
2401 // CHECK: mul <16 x i8>
2402 // CHECK-LE: mul <16 x i8>
2403 
2404   res_vuc = vec_mul(vuc, vuc);
2405 // CHECK: mul <16 x i8>
2406 // CHECK-LE: mul <16 x i8>
2407 
2408   res_vs = vec_mul(vs, vs);
2409 // CHECK: mul <8 x i16>
2410 // CHECK-LE: mul <8 x i16>
2411 
2412   res_vus = vec_mul(vus, vus);
2413 // CHECK: mul <8 x i16>
2414 // CHECK-LE: mul <8 x i16>
2415 
2416   res_vi = vec_mul(vi, vi);
2417 // CHECK: mul <4 x i32>
2418 // CHECK-LE: mul <4 x i32>
2419 
2420   res_vui = vec_mul(vui, vui);
2421 // CHECK: mul <4 x i32>
2422 // CHECK-LE: mul <4 x i32>
2423 
2424   /* vec_mule */
2425   res_vs  = vec_mule(vsc, vsc);
2426 // CHECK: @llvm.ppc.altivec.vmulesb
2427 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2428 
2429   res_vus = vec_mule(vuc, vuc);
2430 // CHECK: @llvm.ppc.altivec.vmuleub
2431 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2432 
2433   res_vi  = vec_mule(vs, vs);
2434 // CHECK: @llvm.ppc.altivec.vmulesh
2435 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2436 
2437   res_vui = vec_mule(vus, vus);
2438 // CHECK: @llvm.ppc.altivec.vmuleuh
2439 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2440 
2441   res_vs  = vec_vmulesb(vsc, vsc);
2442 // CHECK: @llvm.ppc.altivec.vmulesb
2443 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2444 
2445   res_vus = vec_vmuleub(vuc, vuc);
2446 // CHECK: @llvm.ppc.altivec.vmuleub
2447 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2448 
2449   res_vi  = vec_vmulesh(vs, vs);
2450 // CHECK: @llvm.ppc.altivec.vmulesh
2451 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2452 
2453   res_vui = vec_vmuleuh(vus, vus);
2454 // CHECK: @llvm.ppc.altivec.vmuleuh
2455 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2456 
2457   /* vec_mulo */
2458   res_vs  = vec_mulo(vsc, vsc);
2459 // CHECK: @llvm.ppc.altivec.vmulosb
2460 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2461 
2462   res_vus = vec_mulo(vuc, vuc);
2463 // CHECK: @llvm.ppc.altivec.vmuloub
2464 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2465 
2466   res_vi  = vec_mulo(vs, vs);
2467 // CHECK: @llvm.ppc.altivec.vmulosh
2468 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2469 
2470   res_vui = vec_mulo(vus, vus);
2471 // CHECK: @llvm.ppc.altivec.vmulouh
2472 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2473 
2474   res_vs  = vec_vmulosb(vsc, vsc);
2475 // CHECK: @llvm.ppc.altivec.vmulosb
2476 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2477 
2478   res_vus = vec_vmuloub(vuc, vuc);
2479 // CHECK: @llvm.ppc.altivec.vmuloub
2480 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2481 
2482   res_vi  = vec_vmulosh(vs, vs);
2483 // CHECK: @llvm.ppc.altivec.vmulosh
2484 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2485 
2486   res_vui = vec_vmulouh(vus, vus);
2487 // CHECK: @llvm.ppc.altivec.vmulouh
2488 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2489 
2490   /* vec_nmsub */
2491   res_vf = vec_nmsub(vf, vf, vf);
2492 // CHECK: @llvm.ppc.altivec.vnmsubfp
2493 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2494 
2495   res_vf = vec_vnmsubfp(vf, vf, vf);
2496 // CHECK: @llvm.ppc.altivec.vnmsubfp
2497 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2498 
2499   /* vec_nor */
2500   res_vsc = vec_nor(vsc, vsc);
2501 // CHECK: or <16 x i8>
2502 // CHECK: xor <16 x i8>
2503 // CHECK-LE: or <16 x i8>
2504 // CHECK-LE: xor <16 x i8>
2505 
2506   res_vuc = vec_nor(vuc, vuc);
2507 // CHECK: or <16 x i8>
2508 // CHECK: xor <16 x i8>
2509 // CHECK-LE: or <16 x i8>
2510 // CHECK-LE: xor <16 x i8>
2511 
2512   res_vbc = vec_nor(vbc, vbc);
2513 // CHECK: or <16 x i8>
2514 // CHECK: xor <16 x i8>
2515 // CHECK-LE: or <16 x i8>
2516 // CHECK-LE: xor <16 x i8>
2517 
2518   res_vs  = vec_nor(vs, vs);
2519 // CHECK: or <8 x i16>
2520 // CHECK: xor <8 x i16>
2521 // CHECK-LE: or <8 x i16>
2522 // CHECK-LE: xor <8 x i16>
2523 
2524   res_vus = vec_nor(vus, vus);
2525 // CHECK: or <8 x i16>
2526 // CHECK: xor <8 x i16>
2527 // CHECK-LE: or <8 x i16>
2528 // CHECK-LE: xor <8 x i16>
2529 
2530   res_vbs = vec_nor(vbs, vbs);
2531 // CHECK: or <8 x i16>
2532 // CHECK: xor <8 x i16>
2533 // CHECK-LE: or <8 x i16>
2534 // CHECK-LE: xor <8 x i16>
2535 
2536   res_vi  = vec_nor(vi, vi);
2537 // CHECK: or <4 x i32>
2538 // CHECK: xor <4 x i32>
2539 // CHECK-LE: or <4 x i32>
2540 // CHECK-LE: xor <4 x i32>
2541 
2542   res_vui = vec_nor(vui, vui);
2543 // CHECK: or <4 x i32>
2544 // CHECK: xor <4 x i32>
2545 // CHECK-LE: or <4 x i32>
2546 // CHECK-LE: xor <4 x i32>
2547 
2548   res_vbi = vec_nor(vbi, vbi);
2549 // CHECK: or <4 x i32>
2550 // CHECK: xor <4 x i32>
2551 // CHECK-LE: or <4 x i32>
2552 // CHECK-LE: xor <4 x i32>
2553 
2554   res_vf  = vec_nor(vf, vf);
2555 // CHECK: or <4 x i32>
2556 // CHECK: xor <4 x i32>
2557 // CHECK-LE: or <4 x i32>
2558 // CHECK-LE: xor <4 x i32>
2559 
2560   res_vsc = vec_vnor(vsc, vsc);
2561 // CHECK: or <16 x i8>
2562 // CHECK: xor <16 x i8>
2563 // CHECK-LE: or <16 x i8>
2564 // CHECK-LE: xor <16 x i8>
2565 
2566   res_vuc = vec_vnor(vuc, vuc);
2567 // CHECK: or <16 x i8>
2568 // CHECK: xor <16 x i8>
2569 // CHECK-LE: or <16 x i8>
2570 // CHECK-LE: xor <16 x i8>
2571 
2572   res_vbc = vec_vnor(vbc, vbc);
2573 // CHECK: or <16 x i8>
2574 // CHECK: xor <16 x i8>
2575 // CHECK-LE: or <16 x i8>
2576 // CHECK-LE: xor <16 x i8>
2577 
2578   res_vs  = vec_vnor(vs, vs);
2579 // CHECK: or <8 x i16>
2580 // CHECK: xor <8 x i16>
2581 // CHECK-LE: or <8 x i16>
2582 // CHECK-LE: xor <8 x i16>
2583 
2584   res_vus = vec_vnor(vus, vus);
2585 // CHECK: or <8 x i16>
2586 // CHECK: xor <8 x i16>
2587 // CHECK-LE: or <8 x i16>
2588 // CHECK-LE: xor <8 x i16>
2589 
2590   res_vbs = vec_vnor(vbs, vbs);
2591 // CHECK: or <8 x i16>
2592 // CHECK: xor <8 x i16>
2593 // CHECK-LE: or <8 x i16>
2594 // CHECK-LE: xor <8 x i16>
2595 
2596   res_vi  = vec_vnor(vi, vi);
2597 // CHECK: or <4 x i32>
2598 // CHECK: xor <4 x i32>
2599 // CHECK-LE: or <4 x i32>
2600 // CHECK-LE: xor <4 x i32>
2601 
2602   res_vui = vec_vnor(vui, vui);
2603 // CHECK: or <4 x i32>
2604 // CHECK: xor <4 x i32>
2605 // CHECK-LE: or <4 x i32>
2606 // CHECK-LE: xor <4 x i32>
2607 
2608   res_vbi = vec_vnor(vbi, vbi);
2609 // CHECK: or <4 x i32>
2610 // CHECK: xor <4 x i32>
2611 // CHECK-LE: or <4 x i32>
2612 // CHECK-LE: xor <4 x i32>
2613 
2614   res_vf  = vec_vnor(vf, vf);
2615 // CHECK: or <4 x i32>
2616 // CHECK: xor <4 x i32>
2617 // CHECK-LE: or <4 x i32>
2618 // CHECK-LE: xor <4 x i32>
2619 
2620   /* vec_or */
2621   res_vsc = vec_or(vsc, vsc);
2622 // CHECK: or <16 x i8>
2623 // CHECK-LE: or <16 x i8>
2624 
2625   res_vsc = vec_or(vbc, vsc);
2626 // CHECK: or <16 x i8>
2627 // CHECK-LE: or <16 x i8>
2628 
2629   res_vsc = vec_or(vsc, vbc);
2630 // CHECK: or <16 x i8>
2631 // CHECK-LE: or <16 x i8>
2632 
2633   res_vuc = vec_or(vuc, vuc);
2634 // CHECK: or <16 x i8>
2635 // CHECK-LE: or <16 x i8>
2636 
2637   res_vuc = vec_or(vbc, vuc);
2638 // CHECK: or <16 x i8>
2639 // CHECK-LE: or <16 x i8>
2640 
2641   res_vuc = vec_or(vuc, vbc);
2642 // CHECK: or <16 x i8>
2643 // CHECK-LE: or <16 x i8>
2644 
2645   res_vbc = vec_or(vbc, vbc);
2646 // CHECK: or <16 x i8>
2647 // CHECK-LE: or <16 x i8>
2648 
2649   res_vs  = vec_or(vs, vs);
2650 // CHECK: or <8 x i16>
2651 // CHECK-LE: or <8 x i16>
2652 
2653   res_vs  = vec_or(vbs, vs);
2654 // CHECK: or <8 x i16>
2655 // CHECK-LE: or <8 x i16>
2656 
2657   res_vs  = vec_or(vs, vbs);
2658 // CHECK: or <8 x i16>
2659 // CHECK-LE: or <8 x i16>
2660 
2661   res_vus = vec_or(vus, vus);
2662 // CHECK: or <8 x i16>
2663 // CHECK-LE: or <8 x i16>
2664 
2665   res_vus = vec_or(vbs, vus);
2666 // CHECK: or <8 x i16>
2667 // CHECK-LE: or <8 x i16>
2668 
2669   res_vus = vec_or(vus, vbs);
2670 // CHECK: or <8 x i16>
2671 // CHECK-LE: or <8 x i16>
2672 
2673   res_vbs = vec_or(vbs, vbs);
2674 // CHECK: or <8 x i16>
2675 // CHECK-LE: or <8 x i16>
2676 
2677   res_vi  = vec_or(vi, vi);
2678 // CHECK: or <4 x i32>
2679 // CHECK-LE: or <4 x i32>
2680 
2681   res_vi  = vec_or(vbi, vi);
2682 // CHECK: or <4 x i32>
2683 // CHECK-LE: or <4 x i32>
2684 
2685   res_vi  = vec_or(vi, vbi);
2686 // CHECK: or <4 x i32>
2687 // CHECK-LE: or <4 x i32>
2688 
2689   res_vui = vec_or(vui, vui);
2690 // CHECK: or <4 x i32>
2691 // CHECK-LE: or <4 x i32>
2692 
2693   res_vui = vec_or(vbi, vui);
2694 // CHECK: or <4 x i32>
2695 // CHECK-LE: or <4 x i32>
2696 
2697   res_vui = vec_or(vui, vbi);
2698 // CHECK: or <4 x i32>
2699 // CHECK-LE: or <4 x i32>
2700 
2701   res_vbi = vec_or(vbi, vbi);
2702 // CHECK: or <4 x i32>
2703 // CHECK-LE: or <4 x i32>
2704 
2705   res_vf  = vec_or(vf, vf);
2706 // CHECK: or <4 x i32>
2707 // CHECK-LE: or <4 x i32>
2708 
2709   res_vf  = vec_or(vbi, vf);
2710 // CHECK: or <4 x i32>
2711 // CHECK-LE: or <4 x i32>
2712 
2713   res_vf  = vec_or(vf, vbi);
2714 // CHECK: or <4 x i32>
2715 // CHECK-LE: or <4 x i32>
2716 
2717   res_vsc = vec_vor(vsc, vsc);
2718 // CHECK: or <16 x i8>
2719 // CHECK-LE: or <16 x i8>
2720 
2721   res_vsc = vec_vor(vbc, vsc);
2722 // CHECK: or <16 x i8>
2723 // CHECK-LE: or <16 x i8>
2724 
2725   res_vsc = vec_vor(vsc, vbc);
2726 // CHECK: or <16 x i8>
2727 // CHECK-LE: or <16 x i8>
2728 
2729   res_vuc = vec_vor(vuc, vuc);
2730 // CHECK: or <16 x i8>
2731 // CHECK-LE: or <16 x i8>
2732 
2733   res_vuc = vec_vor(vbc, vuc);
2734 // CHECK: or <16 x i8>
2735 // CHECK-LE: or <16 x i8>
2736 
2737   res_vuc = vec_vor(vuc, vbc);
2738 // CHECK: or <16 x i8>
2739 // CHECK-LE: or <16 x i8>
2740 
2741   res_vbc = vec_vor(vbc, vbc);
2742 // CHECK: or <16 x i8>
2743 // CHECK-LE: or <16 x i8>
2744 
2745   res_vs  = vec_vor(vs, vs);
2746 // CHECK: or <8 x i16>
2747 // CHECK-LE: or <8 x i16>
2748 
2749   res_vs  = vec_vor(vbs, vs);
2750 // CHECK: or <8 x i16>
2751 // CHECK-LE: or <8 x i16>
2752 
2753   res_vs  = vec_vor(vs, vbs);
2754 // CHECK: or <8 x i16>
2755 // CHECK-LE: or <8 x i16>
2756 
2757   res_vus = vec_vor(vus, vus);
2758 // CHECK: or <8 x i16>
2759 // CHECK-LE: or <8 x i16>
2760 
2761   res_vus = vec_vor(vbs, vus);
2762 // CHECK: or <8 x i16>
2763 // CHECK-LE: or <8 x i16>
2764 
2765   res_vus = vec_vor(vus, vbs);
2766 // CHECK: or <8 x i16>
2767 // CHECK-LE: or <8 x i16>
2768 
2769   res_vbs = vec_vor(vbs, vbs);
2770 // CHECK: or <8 x i16>
2771 // CHECK-LE: or <8 x i16>
2772 
2773   res_vi  = vec_vor(vi, vi);
2774 // CHECK: or <4 x i32>
2775 // CHECK-LE: or <4 x i32>
2776 
2777   res_vi  = vec_vor(vbi, vi);
2778 // CHECK: or <4 x i32>
2779 // CHECK-LE: or <4 x i32>
2780 
2781   res_vi  = vec_vor(vi, vbi);
2782 // CHECK: or <4 x i32>
2783 // CHECK-LE: or <4 x i32>
2784 
2785   res_vui = vec_vor(vui, vui);
2786 // CHECK: or <4 x i32>
2787 // CHECK-LE: or <4 x i32>
2788 
2789   res_vui = vec_vor(vbi, vui);
2790 // CHECK: or <4 x i32>
2791 // CHECK-LE: or <4 x i32>
2792 
2793   res_vui = vec_vor(vui, vbi);
2794 // CHECK: or <4 x i32>
2795 // CHECK-LE: or <4 x i32>
2796 
2797   res_vbi = vec_vor(vbi, vbi);
2798 // CHECK: or <4 x i32>
2799 // CHECK-LE: or <4 x i32>
2800 
2801   res_vf  = vec_vor(vf, vf);
2802 // CHECK: or <4 x i32>
2803 // CHECK-LE: or <4 x i32>
2804 
2805   res_vf  = vec_vor(vbi, vf);
2806 // CHECK: or <4 x i32>
2807 // CHECK-LE: or <4 x i32>
2808 
2809   res_vf  = vec_vor(vf, vbi);
2810 // CHECK: or <4 x i32>
2811 // CHECK-LE: or <4 x i32>
2812 
2813   /* vec_pack */
2814   res_vsc = vec_pack(vs, vs);
2815 // CHECK: @llvm.ppc.altivec.vperm
2816 // CHECK-LE: @llvm.ppc.altivec.vperm
2817 
2818   res_vuc = vec_pack(vus, vus);
2819 // CHECK: @llvm.ppc.altivec.vperm
2820 // CHECK-LE: @llvm.ppc.altivec.vperm
2821 
2822   res_vbc = vec_pack(vbs, vbs);
2823 // CHECK: @llvm.ppc.altivec.vperm
2824 // CHECK-LE: @llvm.ppc.altivec.vperm
2825 
2826   res_vs  = vec_pack(vi, vi);
2827 // CHECK: @llvm.ppc.altivec.vperm
2828 // CHECK-LE: @llvm.ppc.altivec.vperm
2829 
2830   res_vus = vec_pack(vui, vui);
2831 // CHECK: @llvm.ppc.altivec.vperm
2832 // CHECK-LE: @llvm.ppc.altivec.vperm
2833 
2834   res_vbs = vec_pack(vbi, vbi);
2835 // CHECK: @llvm.ppc.altivec.vperm
2836 // CHECK-LE: @llvm.ppc.altivec.vperm
2837 
2838   res_vsc = vec_vpkuhum(vs, vs);
2839 // CHECK: @llvm.ppc.altivec.vperm
2840 // CHECK-LE: @llvm.ppc.altivec.vperm
2841 
2842   res_vuc = vec_vpkuhum(vus, vus);
2843 // CHECK: @llvm.ppc.altivec.vperm
2844 // CHECK-LE: @llvm.ppc.altivec.vperm
2845 
2846   res_vbc = vec_vpkuhum(vbs, vbs);
2847 // CHECK: @llvm.ppc.altivec.vperm
2848 // CHECK-LE: @llvm.ppc.altivec.vperm
2849 
2850   res_vs  = vec_vpkuwum(vi, vi);
2851 // CHECK: @llvm.ppc.altivec.vperm
2852 // CHECK-LE: @llvm.ppc.altivec.vperm
2853 
2854   res_vus = vec_vpkuwum(vui, vui);
2855 // CHECK: @llvm.ppc.altivec.vperm
2856 // CHECK-LE: @llvm.ppc.altivec.vperm
2857 
2858   res_vbs = vec_vpkuwum(vbi, vbi);
2859 // CHECK: @llvm.ppc.altivec.vperm
2860 // CHECK-LE: @llvm.ppc.altivec.vperm
2861 
2862   /* vec_packpx */
2863   res_vp = vec_packpx(vui, vui);
2864 // CHECK: @llvm.ppc.altivec.vpkpx
2865 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2866 
2867   res_vp = vec_vpkpx(vui, vui);
2868 // CHECK: @llvm.ppc.altivec.vpkpx
2869 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2870 
2871   /* vec_packs */
2872   res_vsc = vec_packs(vs, vs);
2873 // CHECK: @llvm.ppc.altivec.vpkshss
2874 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2875 
2876   res_vuc = vec_packs(vus, vus);
2877 // CHECK: @llvm.ppc.altivec.vpkuhus
2878 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2879 
2880   res_vs  = vec_packs(vi, vi);
2881 // CHECK: @llvm.ppc.altivec.vpkswss
2882 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2883 
2884   res_vus = vec_packs(vui, vui);
2885 // CHECK: @llvm.ppc.altivec.vpkuwus
2886 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2887 
2888   res_vsc = vec_vpkshss(vs, vs);
2889 // CHECK: @llvm.ppc.altivec.vpkshss
2890 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2891 
2892   res_vuc = vec_vpkuhus(vus, vus);
2893 // CHECK: @llvm.ppc.altivec.vpkuhus
2894 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2895 
2896   res_vs  = vec_vpkswss(vi, vi);
2897 // CHECK: @llvm.ppc.altivec.vpkswss
2898 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2899 
2900   res_vus = vec_vpkuwus(vui, vui);
2901 // CHECK: @llvm.ppc.altivec.vpkuwus
2902 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2903 
2904   /* vec_packsu */
2905   res_vuc = vec_packsu(vs, vs);
2906 // CHECK: @llvm.ppc.altivec.vpkshus
2907 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2908 
2909   res_vuc = vec_packsu(vus, vus);
2910 // CHECK: @llvm.ppc.altivec.vpkuhus
2911 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2912 
2913   res_vus = vec_packsu(vi, vi);
2914 // CHECK: @llvm.ppc.altivec.vpkswus
2915 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2916 
2917   res_vus = vec_packsu(vui, vui);
2918 // CHECK: @llvm.ppc.altivec.vpkuwus
2919 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2920 
2921   res_vuc = vec_vpkshus(vs, vs);
2922 // CHECK: @llvm.ppc.altivec.vpkshus
2923 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2924 
2925   res_vuc = vec_vpkshus(vus, vus);
2926 // CHECK: @llvm.ppc.altivec.vpkuhus
2927 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2928 
2929   res_vus = vec_vpkswus(vi, vi);
2930 // CHECK: @llvm.ppc.altivec.vpkswus
2931 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2932 
2933   res_vus = vec_vpkswus(vui, vui);
2934 // CHECK: @llvm.ppc.altivec.vpkuwus
2935 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2936 
2937   /* vec_perm */
2938   res_vsc = vec_perm(vsc, vsc, vuc);
2939 // CHECK: @llvm.ppc.altivec.vperm
2940 // CHECK-LE: @llvm.ppc.altivec.vperm
2941 
2942   res_vuc = vec_perm(vuc, vuc, vuc);
2943 // CHECK: @llvm.ppc.altivec.vperm
2944 // CHECK-LE: @llvm.ppc.altivec.vperm
2945 
2946   res_vbc = vec_perm(vbc, vbc, vuc);
2947 // CHECK: @llvm.ppc.altivec.vperm
2948 // CHECK-LE: @llvm.ppc.altivec.vperm
2949 
2950   res_vs  = vec_perm(vs, vs, vuc);
2951 // CHECK: @llvm.ppc.altivec.vperm
2952 // CHECK-LE: @llvm.ppc.altivec.vperm
2953 
2954   res_vus = vec_perm(vus, vus, vuc);
2955 // CHECK: @llvm.ppc.altivec.vperm
2956 // CHECK-LE: @llvm.ppc.altivec.vperm
2957 
2958   res_vbs = vec_perm(vbs, vbs, vuc);
2959 // CHECK: @llvm.ppc.altivec.vperm
2960 // CHECK-LE: @llvm.ppc.altivec.vperm
2961 
2962   res_vp  = vec_perm(vp, vp, vuc);
2963 // CHECK: @llvm.ppc.altivec.vperm
2964 // CHECK-LE: @llvm.ppc.altivec.vperm
2965 
2966   res_vi  = vec_perm(vi, vi, vuc);
2967 // CHECK: @llvm.ppc.altivec.vperm
2968 // CHECK-LE: @llvm.ppc.altivec.vperm
2969 
2970   res_vui = vec_perm(vui, vui, vuc);
2971 // CHECK: @llvm.ppc.altivec.vperm
2972 // CHECK-LE: @llvm.ppc.altivec.vperm
2973 
2974   res_vbi = vec_perm(vbi, vbi, vuc);
2975 // CHECK: @llvm.ppc.altivec.vperm
2976 // CHECK-LE: @llvm.ppc.altivec.vperm
2977 
2978   res_vf  = vec_perm(vf, vf, vuc);
2979 // CHECK: @llvm.ppc.altivec.vperm
2980 // CHECK-LE: @llvm.ppc.altivec.vperm
2981 
2982   res_vsc = vec_vperm(vsc, vsc, vuc);
2983 // CHECK: @llvm.ppc.altivec.vperm
2984 // CHECK-LE: @llvm.ppc.altivec.vperm
2985 
2986   res_vuc = vec_vperm(vuc, vuc, vuc);
2987 // CHECK: @llvm.ppc.altivec.vperm
2988 // CHECK-LE: @llvm.ppc.altivec.vperm
2989 
2990   res_vbc = vec_vperm(vbc, vbc, vuc);
2991 // CHECK: @llvm.ppc.altivec.vperm
2992 // CHECK-LE: @llvm.ppc.altivec.vperm
2993 
2994   res_vs  = vec_vperm(vs, vs, vuc);
2995 // CHECK: @llvm.ppc.altivec.vperm
2996 // CHECK-LE: @llvm.ppc.altivec.vperm
2997 
2998   res_vus = vec_vperm(vus, vus, vuc);
2999 // CHECK: @llvm.ppc.altivec.vperm
3000 // CHECK-LE: @llvm.ppc.altivec.vperm
3001 
3002   res_vbs = vec_vperm(vbs, vbs, vuc);
3003 // CHECK: @llvm.ppc.altivec.vperm
3004 // CHECK-LE: @llvm.ppc.altivec.vperm
3005 
3006   res_vp  = vec_vperm(vp, vp, vuc);
3007 // CHECK: @llvm.ppc.altivec.vperm
3008 // CHECK-LE: @llvm.ppc.altivec.vperm
3009 
3010   res_vi  = vec_vperm(vi, vi, vuc);
3011 // CHECK: @llvm.ppc.altivec.vperm
3012 // CHECK-LE: @llvm.ppc.altivec.vperm
3013 
3014   res_vui = vec_vperm(vui, vui, vuc);
3015 // CHECK: @llvm.ppc.altivec.vperm
3016 // CHECK-LE: @llvm.ppc.altivec.vperm
3017 
3018   res_vbi = vec_vperm(vbi, vbi, vuc);
3019 // CHECK: @llvm.ppc.altivec.vperm
3020 // CHECK-LE: @llvm.ppc.altivec.vperm
3021 
3022   res_vf  = vec_vperm(vf, vf, vuc);
3023 // CHECK: @llvm.ppc.altivec.vperm
3024 // CHECK-LE: @llvm.ppc.altivec.vperm
3025 
3026   /* vec_re */
3027   res_vf = vec_re(vf);
3028 // CHECK: @llvm.ppc.altivec.vrefp
3029 // CHECK-LE: @llvm.ppc.altivec.vrefp
3030 
3031   res_vf = vec_vrefp(vf);
3032 // CHECK: @llvm.ppc.altivec.vrefp
3033 // CHECK-LE: @llvm.ppc.altivec.vrefp
3034 
3035   /* vec_rl */
3036   res_vsc = vec_rl(vsc, vuc);
3037 // CHECK: @llvm.ppc.altivec.vrlb
3038 // CHECK-LE: @llvm.ppc.altivec.vrlb
3039 
3040   res_vuc = vec_rl(vuc, vuc);
3041 // CHECK: @llvm.ppc.altivec.vrlb
3042 // CHECK-LE: @llvm.ppc.altivec.vrlb
3043 
3044   res_vs  = vec_rl(vs, vus);
3045 // CHECK: @llvm.ppc.altivec.vrlh
3046 // CHECK-LE: @llvm.ppc.altivec.vrlh
3047 
3048   res_vus = vec_rl(vus, vus);
3049 // CHECK: @llvm.ppc.altivec.vrlh
3050 // CHECK-LE: @llvm.ppc.altivec.vrlh
3051 
3052   res_vi  = vec_rl(vi, vui);
3053 // CHECK: @llvm.ppc.altivec.vrlw
3054 // CHECK-LE: @llvm.ppc.altivec.vrlw
3055 
3056   res_vui = vec_rl(vui, vui);
3057 // CHECK: @llvm.ppc.altivec.vrlw
3058 // CHECK-LE: @llvm.ppc.altivec.vrlw
3059 
3060   res_vsc = vec_vrlb(vsc, vuc);
3061 // CHECK: @llvm.ppc.altivec.vrlb
3062 // CHECK-LE: @llvm.ppc.altivec.vrlb
3063 
3064   res_vuc = vec_vrlb(vuc, vuc);
3065 // CHECK: @llvm.ppc.altivec.vrlb
3066 // CHECK-LE: @llvm.ppc.altivec.vrlb
3067 
3068   res_vs  = vec_vrlh(vs, vus);
3069 // CHECK: @llvm.ppc.altivec.vrlh
3070 // CHECK-LE: @llvm.ppc.altivec.vrlh
3071 
3072   res_vus = vec_vrlh(vus, vus);
3073 // CHECK: @llvm.ppc.altivec.vrlh
3074 // CHECK-LE: @llvm.ppc.altivec.vrlh
3075 
3076   res_vi  = vec_vrlw(vi, vui);
3077 // CHECK: @llvm.ppc.altivec.vrlw
3078 // CHECK-LE: @llvm.ppc.altivec.vrlw
3079 
3080   res_vui = vec_vrlw(vui, vui);
3081 // CHECK: @llvm.ppc.altivec.vrlw
3082 // CHECK-LE: @llvm.ppc.altivec.vrlw
3083 
3084   /* vec_round */
3085   res_vf = vec_round(vf);
3086 // CHECK: @llvm.ppc.altivec.vrfin
3087 // CHECK-LE: @llvm.ppc.altivec.vrfin
3088 
3089   res_vf = vec_vrfin(vf);
3090 // CHECK: @llvm.ppc.altivec.vrfin
3091 // CHECK-LE: @llvm.ppc.altivec.vrfin
3092 
3093   /* vec_rsqrte */
3094   res_vf = vec_rsqrte(vf);
3095 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3096 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3097 
3098   res_vf = vec_vrsqrtefp(vf);
3099 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3100 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3101 
3102   /* vec_sel */
3103   res_vsc = vec_sel(vsc, vsc, vuc);
3104 // CHECK: xor <16 x i8>
3105 // CHECK: and <16 x i8>
3106 // CHECK: and <16 x i8>
3107 // CHECK: or <16 x i8>
3108 // CHECK-LE: xor <16 x i8>
3109 // CHECK-LE: and <16 x i8>
3110 // CHECK-LE: and <16 x i8>
3111 // CHECK-LE: or <16 x i8>
3112 
3113   res_vsc = vec_sel(vsc, vsc, vbc);
3114 // CHECK: xor <16 x i8>
3115 // CHECK: and <16 x i8>
3116 // CHECK: and <16 x i8>
3117 // CHECK: or <16 x i8>
3118 // CHECK-LE: xor <16 x i8>
3119 // CHECK-LE: and <16 x i8>
3120 // CHECK-LE: and <16 x i8>
3121 // CHECK-LE: or <16 x i8>
3122 
3123   res_vuc = vec_sel(vuc, vuc, vuc);
3124 // CHECK: xor <16 x i8>
3125 // CHECK: and <16 x i8>
3126 // CHECK: and <16 x i8>
3127 // CHECK: or <16 x i8>
3128 // CHECK-LE: xor <16 x i8>
3129 // CHECK-LE: and <16 x i8>
3130 // CHECK-LE: and <16 x i8>
3131 // CHECK-LE: or <16 x i8>
3132 
3133   res_vuc = vec_sel(vuc, vuc, vbc);
3134 // CHECK: xor <16 x i8>
3135 // CHECK: and <16 x i8>
3136 // CHECK: and <16 x i8>
3137 // CHECK: or <16 x i8>
3138 // CHECK-LE: xor <16 x i8>
3139 // CHECK-LE: and <16 x i8>
3140 // CHECK-LE: and <16 x i8>
3141 // CHECK-LE: or <16 x i8>
3142 
3143   res_vbc = vec_sel(vbc, vbc, vuc);
3144 // CHECK: xor <16 x i8>
3145 // CHECK: and <16 x i8>
3146 // CHECK: and <16 x i8>
3147 // CHECK: or <16 x i8>
3148 // CHECK-LE: xor <16 x i8>
3149 // CHECK-LE: and <16 x i8>
3150 // CHECK-LE: and <16 x i8>
3151 // CHECK-LE: or <16 x i8>
3152 
3153   res_vbc = vec_sel(vbc, vbc, vbc);
3154 // CHECK: xor <16 x i8>
3155 // CHECK: and <16 x i8>
3156 // CHECK: and <16 x i8>
3157 // CHECK: or <16 x i8>
3158 // CHECK-LE: xor <16 x i8>
3159 // CHECK-LE: and <16 x i8>
3160 // CHECK-LE: and <16 x i8>
3161 // CHECK-LE: or <16 x i8>
3162 
3163   res_vs  = vec_sel(vs, vs, vus);
3164 // CHECK: xor <8 x i16>
3165 // CHECK: and <8 x i16>
3166 // CHECK: and <8 x i16>
3167 // CHECK: or <8 x i16>
3168 // CHECK-LE: xor <8 x i16>
3169 // CHECK-LE: and <8 x i16>
3170 // CHECK-LE: and <8 x i16>
3171 // CHECK-LE: or <8 x i16>
3172 
3173   res_vs  = vec_sel(vs, vs, vbs);
3174 // CHECK: xor <8 x i16>
3175 // CHECK: and <8 x i16>
3176 // CHECK: and <8 x i16>
3177 // CHECK: or <8 x i16>
3178 // CHECK-LE: xor <8 x i16>
3179 // CHECK-LE: and <8 x i16>
3180 // CHECK-LE: and <8 x i16>
3181 // CHECK-LE: or <8 x i16>
3182 
3183   res_vus = vec_sel(vus, vus, vus);
3184 // CHECK: xor <8 x i16>
3185 // CHECK: and <8 x i16>
3186 // CHECK: and <8 x i16>
3187 // CHECK: or <8 x i16>
3188 // CHECK-LE: xor <8 x i16>
3189 // CHECK-LE: and <8 x i16>
3190 // CHECK-LE: and <8 x i16>
3191 // CHECK-LE: or <8 x i16>
3192 
3193   res_vus = vec_sel(vus, vus, vbs);
3194 // CHECK: xor <8 x i16>
3195 // CHECK: and <8 x i16>
3196 // CHECK: and <8 x i16>
3197 // CHECK: or <8 x i16>
3198 // CHECK-LE: xor <8 x i16>
3199 // CHECK-LE: and <8 x i16>
3200 // CHECK-LE: and <8 x i16>
3201 // CHECK-LE: or <8 x i16>
3202 
3203   res_vbs = vec_sel(vbs, vbs, vus);
3204 // CHECK: xor <8 x i16>
3205 // CHECK: and <8 x i16>
3206 // CHECK: and <8 x i16>
3207 // CHECK: or <8 x i16>
3208 // CHECK-LE: xor <8 x i16>
3209 // CHECK-LE: and <8 x i16>
3210 // CHECK-LE: and <8 x i16>
3211 // CHECK-LE: or <8 x i16>
3212 
3213   res_vbs = vec_sel(vbs, vbs, vbs);
3214 // CHECK: xor <8 x i16>
3215 // CHECK: and <8 x i16>
3216 // CHECK: and <8 x i16>
3217 // CHECK: or <8 x i16>
3218 // CHECK-LE: xor <8 x i16>
3219 // CHECK-LE: and <8 x i16>
3220 // CHECK-LE: and <8 x i16>
3221 // CHECK-LE: or <8 x i16>
3222 
3223   res_vi  = vec_sel(vi, vi, vui);
3224 // CHECK: xor <4 x i32>
3225 // CHECK: and <4 x i32>
3226 // CHECK: and <4 x i32>
3227 // CHECK: or <4 x i32>
3228 // CHECK-LE: xor <4 x i32>
3229 // CHECK-LE: and <4 x i32>
3230 // CHECK-LE: and <4 x i32>
3231 // CHECK-LE: or <4 x i32>
3232 
3233   res_vi  = vec_sel(vi, vi, vbi);
3234 // CHECK: xor <4 x i32>
3235 // CHECK: and <4 x i32>
3236 // CHECK: and <4 x i32>
3237 // CHECK: or <4 x i32>
3238 // CHECK-LE: xor <4 x i32>
3239 // CHECK-LE: and <4 x i32>
3240 // CHECK-LE: and <4 x i32>
3241 // CHECK-LE: or <4 x i32>
3242 
3243   res_vui = vec_sel(vui, vui, vui);
3244 // CHECK: xor <4 x i32>
3245 // CHECK: and <4 x i32>
3246 // CHECK: and <4 x i32>
3247 // CHECK: or <4 x i32>
3248 // CHECK-LE: xor <4 x i32>
3249 // CHECK-LE: and <4 x i32>
3250 // CHECK-LE: and <4 x i32>
3251 // CHECK-LE: or <4 x i32>
3252 
3253   res_vui = vec_sel(vui, vui, vbi);
3254 // CHECK: xor <4 x i32>
3255 // CHECK: and <4 x i32>
3256 // CHECK: and <4 x i32>
3257 // CHECK: or <4 x i32>
3258 // CHECK-LE: xor <4 x i32>
3259 // CHECK-LE: and <4 x i32>
3260 // CHECK-LE: and <4 x i32>
3261 // CHECK-LE: or <4 x i32>
3262 
3263   res_vbi = vec_sel(vbi, vbi, vui);
3264 // CHECK: xor <4 x i32>
3265 // CHECK: and <4 x i32>
3266 // CHECK: and <4 x i32>
3267 // CHECK: or <4 x i32>
3268 // CHECK-LE: xor <4 x i32>
3269 // CHECK-LE: and <4 x i32>
3270 // CHECK-LE: and <4 x i32>
3271 // CHECK-LE: or <4 x i32>
3272 
3273   res_vbi = vec_sel(vbi, vbi, vbi);
3274 // CHECK: xor <4 x i32>
3275 // CHECK: and <4 x i32>
3276 // CHECK: and <4 x i32>
3277 // CHECK: or <4 x i32>
3278 // CHECK-LE: xor <4 x i32>
3279 // CHECK-LE: and <4 x i32>
3280 // CHECK-LE: and <4 x i32>
3281 // CHECK-LE: or <4 x i32>
3282 
3283   res_vf  = vec_sel(vf, vf, vui);
3284 // CHECK: xor <4 x i32>
3285 // CHECK: and <4 x i32>
3286 // CHECK: and <4 x i32>
3287 // CHECK: or <4 x i32>
3288 // CHECK-LE: xor <4 x i32>
3289 // CHECK-LE: and <4 x i32>
3290 // CHECK-LE: and <4 x i32>
3291 // CHECK-LE: or <4 x i32>
3292 
3293   res_vf  = vec_sel(vf, vf, vbi);
3294 // CHECK: xor <4 x i32>
3295 // CHECK: and <4 x i32>
3296 // CHECK: and <4 x i32>
3297 // CHECK: or <4 x i32>
3298 // CHECK-LE: xor <4 x i32>
3299 // CHECK-LE: and <4 x i32>
3300 // CHECK-LE: and <4 x i32>
3301 // CHECK-LE: or <4 x i32>
3302 
3303   res_vsc = vec_vsel(vsc, vsc, vuc);
3304 // CHECK: xor <16 x i8>
3305 // CHECK: and <16 x i8>
3306 // CHECK: and <16 x i8>
3307 // CHECK: or <16 x i8>
3308 // CHECK-LE: xor <16 x i8>
3309 // CHECK-LE: and <16 x i8>
3310 // CHECK-LE: and <16 x i8>
3311 // CHECK-LE: or <16 x i8>
3312 
3313   res_vsc = vec_vsel(vsc, vsc, vbc);
3314 // CHECK: xor <16 x i8>
3315 // CHECK: and <16 x i8>
3316 // CHECK: and <16 x i8>
3317 // CHECK: or <16 x i8>
3318 // CHECK-LE: xor <16 x i8>
3319 // CHECK-LE: and <16 x i8>
3320 // CHECK-LE: and <16 x i8>
3321 // CHECK-LE: or <16 x i8>
3322 
3323   res_vuc = vec_vsel(vuc, vuc, vuc);
3324 // CHECK: xor <16 x i8>
3325 // CHECK: and <16 x i8>
3326 // CHECK: and <16 x i8>
3327 // CHECK: or <16 x i8>
3328 // CHECK-LE: xor <16 x i8>
3329 // CHECK-LE: and <16 x i8>
3330 // CHECK-LE: and <16 x i8>
3331 // CHECK-LE: or <16 x i8>
3332 
3333   res_vuc = vec_vsel(vuc, vuc, vbc);
3334 // CHECK: xor <16 x i8>
3335 // CHECK: and <16 x i8>
3336 // CHECK: and <16 x i8>
3337 // CHECK: or <16 x i8>
3338 // CHECK-LE: xor <16 x i8>
3339 // CHECK-LE: and <16 x i8>
3340 // CHECK-LE: and <16 x i8>
3341 // CHECK-LE: or <16 x i8>
3342 
3343   res_vbc = vec_vsel(vbc, vbc, vuc);
3344 // CHECK: xor <16 x i8>
3345 // CHECK: and <16 x i8>
3346 // CHECK: and <16 x i8>
3347 // CHECK: or <16 x i8>
3348 // CHECK-LE: xor <16 x i8>
3349 // CHECK-LE: and <16 x i8>
3350 // CHECK-LE: and <16 x i8>
3351 // CHECK-LE: or <16 x i8>
3352 
3353   res_vbc = vec_vsel(vbc, vbc, vbc);
3354 // CHECK: xor <16 x i8>
3355 // CHECK: and <16 x i8>
3356 // CHECK: and <16 x i8>
3357 // CHECK: or <16 x i8>
3358 // CHECK-LE: xor <16 x i8>
3359 // CHECK-LE: and <16 x i8>
3360 // CHECK-LE: and <16 x i8>
3361 // CHECK-LE: or <16 x i8>
3362 
3363   res_vs  = vec_vsel(vs, vs, vus);
3364 // CHECK: xor <8 x i16>
3365 // CHECK: and <8 x i16>
3366 // CHECK: and <8 x i16>
3367 // CHECK: or <8 x i16>
3368 // CHECK-LE: xor <8 x i16>
3369 // CHECK-LE: and <8 x i16>
3370 // CHECK-LE: and <8 x i16>
3371 // CHECK-LE: or <8 x i16>
3372 
3373   res_vs  = vec_vsel(vs, vs, vbs);
3374 // CHECK: xor <8 x i16>
3375 // CHECK: and <8 x i16>
3376 // CHECK: and <8 x i16>
3377 // CHECK: or <8 x i16>
3378 // CHECK-LE: xor <8 x i16>
3379 // CHECK-LE: and <8 x i16>
3380 // CHECK-LE: and <8 x i16>
3381 // CHECK-LE: or <8 x i16>
3382 
3383   res_vus = vec_vsel(vus, vus, vus);
3384 // CHECK: xor <8 x i16>
3385 // CHECK: and <8 x i16>
3386 // CHECK: and <8 x i16>
3387 // CHECK: or <8 x i16>
3388 // CHECK-LE: xor <8 x i16>
3389 // CHECK-LE: and <8 x i16>
3390 // CHECK-LE: and <8 x i16>
3391 // CHECK-LE: or <8 x i16>
3392 
3393   res_vus = vec_vsel(vus, vus, vbs);
3394 // CHECK: xor <8 x i16>
3395 // CHECK: and <8 x i16>
3396 // CHECK: and <8 x i16>
3397 // CHECK: or <8 x i16>
3398 // CHECK-LE: xor <8 x i16>
3399 // CHECK-LE: and <8 x i16>
3400 // CHECK-LE: and <8 x i16>
3401 // CHECK-LE: or <8 x i16>
3402 
3403   res_vbs = vec_vsel(vbs, vbs, vus);
3404 // CHECK: xor <8 x i16>
3405 // CHECK: and <8 x i16>
3406 // CHECK: and <8 x i16>
3407 // CHECK: or <8 x i16>
3408 // CHECK-LE: xor <8 x i16>
3409 // CHECK-LE: and <8 x i16>
3410 // CHECK-LE: and <8 x i16>
3411 // CHECK-LE: or <8 x i16>
3412 
3413   res_vbs = vec_vsel(vbs, vbs, vbs);
3414 // CHECK: xor <8 x i16>
3415 // CHECK: and <8 x i16>
3416 // CHECK: and <8 x i16>
3417 // CHECK: or <8 x i16>
3418 // CHECK-LE: xor <8 x i16>
3419 // CHECK-LE: and <8 x i16>
3420 // CHECK-LE: and <8 x i16>
3421 // CHECK-LE: or <8 x i16>
3422 
3423   res_vi  = vec_vsel(vi, vi, vui);
3424 // CHECK: xor <4 x i32>
3425 // CHECK: and <4 x i32>
3426 // CHECK: and <4 x i32>
3427 // CHECK: or <4 x i32>
3428 // CHECK-LE: xor <4 x i32>
3429 // CHECK-LE: and <4 x i32>
3430 // CHECK-LE: and <4 x i32>
3431 // CHECK-LE: or <4 x i32>
3432 
3433   res_vi  = vec_vsel(vi, vi, vbi);
3434 // CHECK: xor <4 x i32>
3435 // CHECK: and <4 x i32>
3436 // CHECK: and <4 x i32>
3437 // CHECK: or <4 x i32>
3438 // CHECK-LE: xor <4 x i32>
3439 // CHECK-LE: and <4 x i32>
3440 // CHECK-LE: and <4 x i32>
3441 // CHECK-LE: or <4 x i32>
3442 
3443   res_vui = vec_vsel(vui, vui, vui);
3444 // CHECK: xor <4 x i32>
3445 // CHECK: and <4 x i32>
3446 // CHECK: and <4 x i32>
3447 // CHECK: or <4 x i32>
3448 // CHECK-LE: xor <4 x i32>
3449 // CHECK-LE: and <4 x i32>
3450 // CHECK-LE: and <4 x i32>
3451 // CHECK-LE: or <4 x i32>
3452 
3453   res_vui = vec_vsel(vui, vui, vbi);
3454 // CHECK: xor <4 x i32>
3455 // CHECK: and <4 x i32>
3456 // CHECK: and <4 x i32>
3457 // CHECK: or <4 x i32>
3458 // CHECK-LE: xor <4 x i32>
3459 // CHECK-LE: and <4 x i32>
3460 // CHECK-LE: and <4 x i32>
3461 // CHECK-LE: or <4 x i32>
3462 
3463   res_vbi = vec_vsel(vbi, vbi, vui);
3464 // CHECK: xor <4 x i32>
3465 // CHECK: and <4 x i32>
3466 // CHECK: and <4 x i32>
3467 // CHECK: or <4 x i32>
3468 // CHECK-LE: xor <4 x i32>
3469 // CHECK-LE: and <4 x i32>
3470 // CHECK-LE: and <4 x i32>
3471 // CHECK-LE: or <4 x i32>
3472 
3473   res_vbi = vec_vsel(vbi, vbi, vbi);
3474 // CHECK: xor <4 x i32>
3475 // CHECK: and <4 x i32>
3476 // CHECK: and <4 x i32>
3477 // CHECK: or <4 x i32>
3478 // CHECK-LE: xor <4 x i32>
3479 // CHECK-LE: and <4 x i32>
3480 // CHECK-LE: and <4 x i32>
3481 // CHECK-LE: or <4 x i32>
3482 
3483   res_vf  = vec_vsel(vf, vf, vui);
3484 // CHECK: xor <4 x i32>
3485 // CHECK: and <4 x i32>
3486 // CHECK: and <4 x i32>
3487 // CHECK: or <4 x i32>
3488 // CHECK-LE: xor <4 x i32>
3489 // CHECK-LE: and <4 x i32>
3490 // CHECK-LE: and <4 x i32>
3491 // CHECK-LE: or <4 x i32>
3492 
3493   res_vf  = vec_vsel(vf, vf, vbi);
3494 // CHECK: xor <4 x i32>
3495 // CHECK: and <4 x i32>
3496 // CHECK: and <4 x i32>
3497 // CHECK: or <4 x i32>
3498 // CHECK-LE: xor <4 x i32>
3499 // CHECK-LE: and <4 x i32>
3500 // CHECK-LE: and <4 x i32>
3501 // CHECK-LE: or <4 x i32>
3502 
3503   /* vec_sl */
3504   res_vsc = vec_sl(vsc, vuc);
3505 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
3506 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3507 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
3508 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3509 
3510   res_vuc = vec_sl(vuc, vuc);
3511 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
3512 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3513 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
3514 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3515 
3516   res_vs  = vec_sl(vs, vus);
3517 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
3518 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3519 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
3520 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3521 
3522   res_vus = vec_sl(vus, vus);
3523 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
3524 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3525 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
3526 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3527 
3528   res_vi  = vec_sl(vi, vui);
3529 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
3530 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3531 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
3532 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3533 
3534   res_vui = vec_sl(vui, vui);
3535 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
3536 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3537 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
3538 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3539 
3540   res_vsc = vec_vslb(vsc, vuc);
3541 // CHECK: shl <16 x i8>
3542 // CHECK-LE: shl <16 x i8>
3543 
3544   res_vuc = vec_vslb(vuc, vuc);
3545 // CHECK: shl <16 x i8>
3546 // CHECK-LE: shl <16 x i8>
3547 
3548   res_vs  = vec_vslh(vs, vus);
3549 // CHECK: shl <8 x i16>
3550 // CHECK-LE: shl <8 x i16>
3551 
3552   res_vus = vec_vslh(vus, vus);
3553 // CHECK: shl <8 x i16>
3554 // CHECK-LE: shl <8 x i16>
3555 
3556   res_vi  = vec_vslw(vi, vui);
3557 // CHECK: shl <4 x i32>
3558 // CHECK-LE: shl <4 x i32>
3559 
3560   res_vui = vec_vslw(vui, vui);
3561 // CHECK: shl <4 x i32>
3562 // CHECK-LE: shl <4 x i32>
3563 
3564   /* vec_sld */
3565   res_vsc = vec_sld(vsc, vsc, 0);
3566 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3567 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3568 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3569 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3570 // CHECK: @llvm.ppc.altivec.vperm
3571 // CHECK-LE: sub nsw i32 16
3572 // CHECK-LE: sub nsw i32 17
3573 // CHECK-LE: sub nsw i32 18
3574 // CHECK-LE: sub nsw i32 31
3575 // CHECK-LE: @llvm.ppc.altivec.vperm
3576 
3577   res_vuc = vec_sld(vuc, vuc, 0);
3578 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3579 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3580 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3581 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3582 // CHECK: @llvm.ppc.altivec.vperm
3583 // CHECK-LE: sub nsw i32 16
3584 // CHECK-LE: sub nsw i32 17
3585 // CHECK-LE: sub nsw i32 18
3586 // CHECK-LE: sub nsw i32 31
3587 // CHECK-LE: @llvm.ppc.altivec.vperm
3588 
3589   res_vs  = vec_sld(vs, vs, 0);
3590 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3591 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3592 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3593 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3594 // CHECK: @llvm.ppc.altivec.vperm
3595 // CHECK-LE: sub nsw i32 16
3596 // CHECK-LE: sub nsw i32 17
3597 // CHECK-LE: sub nsw i32 18
3598 // CHECK-LE: sub nsw i32 31
3599 // CHECK-LE: @llvm.ppc.altivec.vperm
3600 
3601   res_vus = vec_sld(vus, vus, 0);
3602 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3603 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3604 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3605 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3606 // CHECK: @llvm.ppc.altivec.vperm
3607 // CHECK-LE: sub nsw i32 16
3608 // CHECK-LE: sub nsw i32 17
3609 // CHECK-LE: sub nsw i32 18
3610 // CHECK-LE: sub nsw i32 31
3611 // CHECK-LE: @llvm.ppc.altivec.vperm
3612 
3613   res_vbs = vec_sld(vbs, vbs, 0);
3614 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3615 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3616 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3617 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3618 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3619 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3620 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3621 // CHECK-LE: sub nsw i32 16
3622 // CHECK-LE: sub nsw i32 17
3623 // CHECK-LE: sub nsw i32 18
3624 // CHECK-LE: sub nsw i32 31
3625 // CHECK-LE: xor <16 x i8>
3626 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3627 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3628 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3629 
3630   res_vp  = vec_sld(vp, vp, 0);
3631 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3632 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3633 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3634 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3635 // CHECK: @llvm.ppc.altivec.vperm
3636 // CHECK-LE: sub nsw i32 16
3637 // CHECK-LE: sub nsw i32 17
3638 // CHECK-LE: sub nsw i32 18
3639 // CHECK-LE: sub nsw i32 31
3640 // CHECK-LE: @llvm.ppc.altivec.vperm
3641 
3642   res_vi  = vec_sld(vi, vi, 0);
3643 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3644 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3645 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3646 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3647 // CHECK: @llvm.ppc.altivec.vperm
3648 // CHECK-LE: sub nsw i32 16
3649 // CHECK-LE: sub nsw i32 17
3650 // CHECK-LE: sub nsw i32 18
3651 // CHECK-LE: sub nsw i32 31
3652 // CHECK-LE: @llvm.ppc.altivec.vperm
3653 
3654   res_vui = vec_sld(vui, vui, 0);
3655 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3656 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3657 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3658 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3659 // CHECK: @llvm.ppc.altivec.vperm
3660 // CHECK-LE: sub nsw i32 16
3661 // CHECK-LE: sub nsw i32 17
3662 // CHECK-LE: sub nsw i32 18
3663 // CHECK-LE: sub nsw i32 31
3664 // CHECK-LE: @llvm.ppc.altivec.vperm
3665 
3666   res_vbi = vec_sld(vbi, vbi, 0);
3667 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3668 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3669 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3670 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3671 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3672 // CHECK-LE: sub nsw i32 16
3673 // CHECK-LE: sub nsw i32 17
3674 // CHECK-LE: sub nsw i32 18
3675 // CHECK-LE: sub nsw i32 31
3676 // CHECK-LE: xor <16 x i8>
3677 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3678 
3679   res_vf  = vec_sld(vf, vf, 0);
3680 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3681 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3682 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3683 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3684 // CHECK: @llvm.ppc.altivec.vperm
3685 // CHECK-LE: sub nsw i32 16
3686 // CHECK-LE: sub nsw i32 17
3687 // CHECK-LE: sub nsw i32 18
3688 // CHECK-LE: sub nsw i32 31
3689 // CHECK-LE: @llvm.ppc.altivec.vperm
3690 
3691   /* vec_sldw */
3692   res_vsc = vec_sldw(vsc, vsc, 0);
3693   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3694   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3695   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3696   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3697   // CHECK: @llvm.ppc.altivec.vperm
3698   // CHECK-LE: sub nsw i32 16
3699   // CHECK-LE: sub nsw i32 17
3700   // CHECK-LE: sub nsw i32 18
3701   // CHECK-LE: sub nsw i32 31
3702   // CHECK-LE: @llvm.ppc.altivec.vperm
3703 
3704   res_vuc = vec_sldw(vuc, vuc, 0);
3705   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3706   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3707   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3708   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3709   // CHECK: @llvm.ppc.altivec.vperm
3710   // CHECK-LE: sub nsw i32 16
3711   // CHECK-LE: sub nsw i32 17
3712   // CHECK-LE: sub nsw i32 18
3713   // CHECK-LE: sub nsw i32 31
3714   // CHECK-LE: @llvm.ppc.altivec.vperm
3715 
3716   res_vi = vec_sldw(vi, vi, 0);
3717   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3718   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3719   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3720   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3721   // CHECK: @llvm.ppc.altivec.vperm
3722   // CHECK-LE: sub nsw i32 16
3723   // CHECK-LE: sub nsw i32 17
3724   // CHECK-LE: sub nsw i32 18
3725   // CHECK-LE: sub nsw i32 31
3726   // CHECK-LE: @llvm.ppc.altivec.vperm
3727 
3728   res_vui = vec_sldw(vui, vui, 0);
3729   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3730   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3731   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3732   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3733   // CHECK: @llvm.ppc.altivec.vperm
3734   // CHECK-LE: sub nsw i32 16
3735   // CHECK-LE: sub nsw i32 17
3736   // CHECK-LE: sub nsw i32 18
3737   // CHECK-LE: sub nsw i32 31
3738   // CHECK-LE: @llvm.ppc.altivec.vperm
3739 
3740   res_vs = vec_sldw(vs, vs, 0);
3741   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3742   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3743   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3744   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3745   // CHECK: @llvm.ppc.altivec.vperm
3746   // CHECK-LE: sub nsw i32 16
3747   // CHECK-LE: sub nsw i32 17
3748   // CHECK-LE: sub nsw i32 18
3749   // CHECK-LE: sub nsw i32 31
3750   // CHECK-LE: @llvm.ppc.altivec.vperm
3751 
3752   res_vus = vec_sldw(vus, vus, 0);
3753   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3754   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3755   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3756   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3757   // CHECK: @llvm.ppc.altivec.vperm
3758   // CHECK-LE: sub nsw i32 16
3759   // CHECK-LE: sub nsw i32 17
3760   // CHECK-LE: sub nsw i32 18
3761   // CHECK-LE: sub nsw i32 31
3762   // CHECK-LE: @llvm.ppc.altivec.vperm
3763 
3764   res_vf = vec_sldw(vf, vf, 0);
3765   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3766   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3767   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3768   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3769   // CHECK: @llvm.ppc.altivec.vperm
3770   // CHECK-LE: sub nsw i32 16
3771   // CHECK-LE: sub nsw i32 17
3772   // CHECK-LE: sub nsw i32 18
3773   // CHECK-LE: sub nsw i32 31
3774   // CHECK-LE: @llvm.ppc.altivec.vperm
3775 
3776   res_vsc = vec_vsldoi(vsc, vsc, 0);
3777 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3778 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3779 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3780 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3781 // CHECK: @llvm.ppc.altivec.vperm
3782 // CHECK-LE: sub nsw i32 16
3783 // CHECK-LE: sub nsw i32 17
3784 // CHECK-LE: sub nsw i32 18
3785 // CHECK-LE: sub nsw i32 31
3786 // CHECK-LE: @llvm.ppc.altivec.vperm
3787 
3788   res_vuc = vec_vsldoi(vuc, vuc, 0);
3789 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3790 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3791 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3792 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3793 // CHECK: @llvm.ppc.altivec.vperm
3794 // CHECK-LE: sub nsw i32 16
3795 // CHECK-LE: sub nsw i32 17
3796 // CHECK-LE: sub nsw i32 18
3797 // CHECK-LE: sub nsw i32 31
3798 // CHECK-LE: @llvm.ppc.altivec.vperm
3799 
3800   res_vs  = vec_vsldoi(vs, vs, 0);
3801 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3802 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3803 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3804 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3805 // CHECK: @llvm.ppc.altivec.vperm
3806 // CHECK-LE: sub nsw i32 16
3807 // CHECK-LE: sub nsw i32 17
3808 // CHECK-LE: sub nsw i32 18
3809 // CHECK-LE: sub nsw i32 31
3810 // CHECK-LE: @llvm.ppc.altivec.vperm
3811 
3812   res_vus = vec_vsldoi(vus, vus, 0);
3813 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3814 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3815 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3816 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3817 // CHECK: @llvm.ppc.altivec.vperm
3818 // CHECK-LE: sub nsw i32 16
3819 // CHECK-LE: sub nsw i32 17
3820 // CHECK-LE: sub nsw i32 18
3821 // CHECK-LE: sub nsw i32 31
3822 // CHECK-LE: @llvm.ppc.altivec.vperm
3823 
3824   res_vp  = vec_vsldoi(vp, vp, 0);
3825 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3826 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3827 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3828 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3829 // CHECK: @llvm.ppc.altivec.vperm
3830 // CHECK-LE: sub nsw i32 16
3831 // CHECK-LE: sub nsw i32 17
3832 // CHECK-LE: sub nsw i32 18
3833 // CHECK-LE: sub nsw i32 31
3834 // CHECK-LE: @llvm.ppc.altivec.vperm
3835 
3836   res_vi  = vec_vsldoi(vi, vi, 0);
3837 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3838 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3839 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3840 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3841 // CHECK: @llvm.ppc.altivec.vperm
3842 // CHECK-LE: sub nsw i32 16
3843 // CHECK-LE: sub nsw i32 17
3844 // CHECK-LE: sub nsw i32 18
3845 // CHECK-LE: sub nsw i32 31
3846 // CHECK-LE: @llvm.ppc.altivec.vperm
3847 
3848   res_vui = vec_vsldoi(vui, vui, 0);
3849 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3850 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3851 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3852 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3853 // CHECK: @llvm.ppc.altivec.vperm
3854 // CHECK-LE: sub nsw i32 16
3855 // CHECK-LE: sub nsw i32 17
3856 // CHECK-LE: sub nsw i32 18
3857 // CHECK-LE: sub nsw i32 31
3858 // CHECK-LE: @llvm.ppc.altivec.vperm
3859 
3860   res_vf  = vec_vsldoi(vf, vf, 0);
3861 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3862 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3863 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3864 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3865 // CHECK: @llvm.ppc.altivec.vperm
3866 // CHECK-LE: sub nsw i32 16
3867 // CHECK-LE: sub nsw i32 17
3868 // CHECK-LE: sub nsw i32 18
3869 // CHECK-LE: sub nsw i32 31
3870 // CHECK-LE: @llvm.ppc.altivec.vperm
3871 
3872   /* vec_sll */
3873   res_vsc = vec_sll(vsc, vuc);
3874 // CHECK: @llvm.ppc.altivec.vsl
3875 // CHECK-LE: @llvm.ppc.altivec.vsl
3876 
3877   res_vsc = vec_sll(vsc, vus);
3878 // CHECK: @llvm.ppc.altivec.vsl
3879 // CHECK-LE: @llvm.ppc.altivec.vsl
3880 
3881   res_vsc = vec_sll(vsc, vui);
3882 // CHECK: @llvm.ppc.altivec.vsl
3883 // CHECK-LE: @llvm.ppc.altivec.vsl
3884 
3885   res_vuc = vec_sll(vuc, vuc);
3886 // CHECK: @llvm.ppc.altivec.vsl
3887 // CHECK-LE: @llvm.ppc.altivec.vsl
3888 
3889   res_vuc = vec_sll(vuc, vus);
3890 // CHECK: @llvm.ppc.altivec.vsl
3891 // CHECK-LE: @llvm.ppc.altivec.vsl
3892 
3893   res_vuc = vec_sll(vuc, vui);
3894 // CHECK: @llvm.ppc.altivec.vsl
3895 // CHECK-LE: @llvm.ppc.altivec.vsl
3896 
3897   res_vbc = vec_sll(vbc, vuc);
3898 // CHECK: @llvm.ppc.altivec.vsl
3899 // CHECK-LE: @llvm.ppc.altivec.vsl
3900 
3901   res_vbc = vec_sll(vbc, vus);
3902 // CHECK: @llvm.ppc.altivec.vsl
3903 // CHECK-LE: @llvm.ppc.altivec.vsl
3904 
3905   res_vbc = vec_sll(vbc, vui);
3906 // CHECK: @llvm.ppc.altivec.vsl
3907 // CHECK-LE: @llvm.ppc.altivec.vsl
3908 
3909   res_vs  = vec_sll(vs, vuc);
3910 // CHECK: @llvm.ppc.altivec.vsl
3911 // CHECK-LE: @llvm.ppc.altivec.vsl
3912 
3913   res_vs  = vec_sll(vs, vus);
3914 // CHECK: @llvm.ppc.altivec.vsl
3915 // CHECK-LE: @llvm.ppc.altivec.vsl
3916 
3917   res_vs  = vec_sll(vs, vui);
3918 // CHECK: @llvm.ppc.altivec.vsl
3919 // CHECK-LE: @llvm.ppc.altivec.vsl
3920 
3921   res_vus = vec_sll(vus, vuc);
3922 // CHECK: @llvm.ppc.altivec.vsl
3923 // CHECK-LE: @llvm.ppc.altivec.vsl
3924 
3925   res_vus = vec_sll(vus, vus);
3926 // CHECK: @llvm.ppc.altivec.vsl
3927 // CHECK-LE: @llvm.ppc.altivec.vsl
3928 
3929   res_vus = vec_sll(vus, vui);
3930 // CHECK: @llvm.ppc.altivec.vsl
3931 // CHECK-LE: @llvm.ppc.altivec.vsl
3932 
3933   res_vbs = vec_sll(vbs, vuc);
3934 // CHECK: @llvm.ppc.altivec.vsl
3935 // CHECK-LE: @llvm.ppc.altivec.vsl
3936 
3937   res_vbs = vec_sll(vbs, vus);
3938 // CHECK: @llvm.ppc.altivec.vsl
3939 // CHECK-LE: @llvm.ppc.altivec.vsl
3940 
3941   res_vbs = vec_sll(vbs, vui);
3942 // CHECK: @llvm.ppc.altivec.vsl
3943 // CHECK-LE: @llvm.ppc.altivec.vsl
3944 
3945   res_vp  = vec_sll(vp, vuc);
3946 // CHECK: @llvm.ppc.altivec.vsl
3947 // CHECK-LE: @llvm.ppc.altivec.vsl
3948 
3949   res_vp  = vec_sll(vp, vus);
3950 // CHECK: @llvm.ppc.altivec.vsl
3951 // CHECK-LE: @llvm.ppc.altivec.vsl
3952 
3953   res_vp  = vec_sll(vp, vui);
3954 // CHECK: @llvm.ppc.altivec.vsl
3955 // CHECK-LE: @llvm.ppc.altivec.vsl
3956 
3957   res_vi  = vec_sll(vi, vuc);
3958 // CHECK: @llvm.ppc.altivec.vsl
3959 // CHECK-LE: @llvm.ppc.altivec.vsl
3960 
3961   res_vi  = vec_sll(vi, vus);
3962 // CHECK: @llvm.ppc.altivec.vsl
3963 // CHECK-LE: @llvm.ppc.altivec.vsl
3964 
3965   res_vi  = vec_sll(vi, vui);
3966 // CHECK: @llvm.ppc.altivec.vsl
3967 // CHECK-LE: @llvm.ppc.altivec.vsl
3968 
3969   res_vui = vec_sll(vui, vuc);
3970 // CHECK: @llvm.ppc.altivec.vsl
3971 // CHECK-LE: @llvm.ppc.altivec.vsl
3972 
3973   res_vui = vec_sll(vui, vus);
3974 // CHECK: @llvm.ppc.altivec.vsl
3975 // CHECK-LE: @llvm.ppc.altivec.vsl
3976 
3977   res_vui = vec_sll(vui, vui);
3978 // CHECK: @llvm.ppc.altivec.vsl
3979 // CHECK-LE: @llvm.ppc.altivec.vsl
3980 
3981   res_vbi = vec_sll(vbi, vuc);
3982 // CHECK: @llvm.ppc.altivec.vsl
3983 // CHECK-LE: @llvm.ppc.altivec.vsl
3984 
3985   res_vbi = vec_sll(vbi, vus);
3986 // CHECK: @llvm.ppc.altivec.vsl
3987 // CHECK-LE: @llvm.ppc.altivec.vsl
3988 
3989   res_vbi = vec_sll(vbi, vui);
3990 // CHECK: @llvm.ppc.altivec.vsl
3991 // CHECK-LE: @llvm.ppc.altivec.vsl
3992 
3993   res_vsc = vec_vsl(vsc, vuc);
3994 // CHECK: @llvm.ppc.altivec.vsl
3995 // CHECK-LE: @llvm.ppc.altivec.vsl
3996 
3997   res_vsc = vec_vsl(vsc, vus);
3998 // CHECK: @llvm.ppc.altivec.vsl
3999 // CHECK-LE: @llvm.ppc.altivec.vsl
4000 
4001   res_vsc = vec_vsl(vsc, vui);
4002 // CHECK: @llvm.ppc.altivec.vsl
4003 // CHECK-LE: @llvm.ppc.altivec.vsl
4004 
4005   res_vuc = vec_vsl(vuc, vuc);
4006 // CHECK: @llvm.ppc.altivec.vsl
4007 // CHECK-LE: @llvm.ppc.altivec.vsl
4008 
4009   res_vuc = vec_vsl(vuc, vus);
4010 // CHECK: @llvm.ppc.altivec.vsl
4011 // CHECK-LE: @llvm.ppc.altivec.vsl
4012 
4013   res_vuc = vec_vsl(vuc, vui);
4014 // CHECK: @llvm.ppc.altivec.vsl
4015 // CHECK-LE: @llvm.ppc.altivec.vsl
4016 
4017   res_vbc = vec_vsl(vbc, vuc);
4018 // CHECK: @llvm.ppc.altivec.vsl
4019 // CHECK-LE: @llvm.ppc.altivec.vsl
4020 
4021   res_vbc = vec_vsl(vbc, vus);
4022 // CHECK: @llvm.ppc.altivec.vsl
4023 // CHECK-LE: @llvm.ppc.altivec.vsl
4024 
4025   res_vbc = vec_vsl(vbc, vui);
4026 // CHECK: @llvm.ppc.altivec.vsl
4027 // CHECK-LE: @llvm.ppc.altivec.vsl
4028 
4029   res_vs  = vec_vsl(vs, vuc);
4030 // CHECK: @llvm.ppc.altivec.vsl
4031 // CHECK-LE: @llvm.ppc.altivec.vsl
4032 
4033   res_vs  = vec_vsl(vs, vus);
4034 // CHECK: @llvm.ppc.altivec.vsl
4035 // CHECK-LE: @llvm.ppc.altivec.vsl
4036 
4037   res_vs  = vec_vsl(vs, vui);
4038 // CHECK: @llvm.ppc.altivec.vsl
4039 // CHECK-LE: @llvm.ppc.altivec.vsl
4040 
4041   res_vus = vec_vsl(vus, vuc);
4042 // CHECK: @llvm.ppc.altivec.vsl
4043 // CHECK-LE: @llvm.ppc.altivec.vsl
4044 
4045   res_vus = vec_vsl(vus, vus);
4046 // CHECK: @llvm.ppc.altivec.vsl
4047 // CHECK-LE: @llvm.ppc.altivec.vsl
4048 
4049   res_vus = vec_vsl(vus, vui);
4050 // CHECK: @llvm.ppc.altivec.vsl
4051 // CHECK-LE: @llvm.ppc.altivec.vsl
4052 
4053   res_vbs = vec_vsl(vbs, vuc);
4054 // CHECK: @llvm.ppc.altivec.vsl
4055 // CHECK-LE: @llvm.ppc.altivec.vsl
4056 
4057   res_vbs = vec_vsl(vbs, vus);
4058 // CHECK: @llvm.ppc.altivec.vsl
4059 // CHECK-LE: @llvm.ppc.altivec.vsl
4060 
4061   res_vbs = vec_vsl(vbs, vui);
4062 // CHECK: @llvm.ppc.altivec.vsl
4063 // CHECK-LE: @llvm.ppc.altivec.vsl
4064 
4065   res_vp  = vec_vsl(vp, vuc);
4066 // CHECK: @llvm.ppc.altivec.vsl
4067 // CHECK-LE: @llvm.ppc.altivec.vsl
4068 
4069   res_vp  = vec_vsl(vp, vus);
4070 // CHECK: @llvm.ppc.altivec.vsl
4071 // CHECK-LE: @llvm.ppc.altivec.vsl
4072 
4073   res_vp  = vec_vsl(vp, vui);
4074 // CHECK: @llvm.ppc.altivec.vsl
4075 // CHECK-LE: @llvm.ppc.altivec.vsl
4076 
4077   res_vi  = vec_vsl(vi, vuc);
4078 // CHECK: @llvm.ppc.altivec.vsl
4079 // CHECK-LE: @llvm.ppc.altivec.vsl
4080 
4081   res_vi  = vec_vsl(vi, vus);
4082 // CHECK: @llvm.ppc.altivec.vsl
4083 // CHECK-LE: @llvm.ppc.altivec.vsl
4084 
4085   res_vi  = vec_vsl(vi, vui);
4086 // CHECK: @llvm.ppc.altivec.vsl
4087 // CHECK-LE: @llvm.ppc.altivec.vsl
4088 
4089   res_vui = vec_vsl(vui, vuc);
4090 // CHECK: @llvm.ppc.altivec.vsl
4091 // CHECK-LE: @llvm.ppc.altivec.vsl
4092 
4093   res_vui = vec_vsl(vui, vus);
4094 // CHECK: @llvm.ppc.altivec.vsl
4095 // CHECK-LE: @llvm.ppc.altivec.vsl
4096 
4097   res_vui = vec_vsl(vui, vui);
4098 // CHECK: @llvm.ppc.altivec.vsl
4099 // CHECK-LE: @llvm.ppc.altivec.vsl
4100 
4101   res_vbi = vec_vsl(vbi, vuc);
4102 // CHECK: @llvm.ppc.altivec.vsl
4103 // CHECK-LE: @llvm.ppc.altivec.vsl
4104 
4105   res_vbi = vec_vsl(vbi, vus);
4106 // CHECK: @llvm.ppc.altivec.vsl
4107 // CHECK-LE: @llvm.ppc.altivec.vsl
4108 
4109   res_vbi = vec_vsl(vbi, vui);
4110 // CHECK: @llvm.ppc.altivec.vsl
4111 // CHECK-LE: @llvm.ppc.altivec.vsl
4112 
4113   /* vec_slo */
4114   res_vsc = vec_slo(vsc, vsc);
4115 // CHECK: @llvm.ppc.altivec.vslo
4116 // CHECK-LE: @llvm.ppc.altivec.vslo
4117 
4118   res_vsc = vec_slo(vsc, vuc);
4119 // CHECK: @llvm.ppc.altivec.vslo
4120 // CHECK-LE: @llvm.ppc.altivec.vslo
4121 
4122   res_vuc = vec_slo(vuc, vsc);
4123 // CHECK: @llvm.ppc.altivec.vslo
4124 // CHECK-LE: @llvm.ppc.altivec.vslo
4125 
4126   res_vuc = vec_slo(vuc, vuc);
4127 // CHECK: @llvm.ppc.altivec.vslo
4128 // CHECK-LE: @llvm.ppc.altivec.vslo
4129 
4130   res_vs  = vec_slo(vs, vsc);
4131 // CHECK: @llvm.ppc.altivec.vslo
4132 // CHECK-LE: @llvm.ppc.altivec.vslo
4133 
4134   res_vs  = vec_slo(vs, vuc);
4135 // CHECK: @llvm.ppc.altivec.vslo
4136 // CHECK-LE: @llvm.ppc.altivec.vslo
4137 
4138   res_vus = vec_slo(vus, vsc);
4139 // CHECK: @llvm.ppc.altivec.vslo
4140 // CHECK-LE: @llvm.ppc.altivec.vslo
4141 
4142   res_vus = vec_slo(vus, vuc);
4143 // CHECK: @llvm.ppc.altivec.vslo
4144 // CHECK-LE: @llvm.ppc.altivec.vslo
4145 
4146   res_vp  = vec_slo(vp, vsc);
4147 // CHECK: @llvm.ppc.altivec.vslo
4148 // CHECK-LE: @llvm.ppc.altivec.vslo
4149 
4150   res_vp  = vec_slo(vp, vuc);
4151 // CHECK: @llvm.ppc.altivec.vslo
4152 // CHECK-LE: @llvm.ppc.altivec.vslo
4153 
4154   res_vi  = vec_slo(vi, vsc);
4155 // CHECK: @llvm.ppc.altivec.vslo
4156 // CHECK-LE: @llvm.ppc.altivec.vslo
4157 
4158   res_vi  = vec_slo(vi, vuc);
4159 // CHECK: @llvm.ppc.altivec.vslo
4160 // CHECK-LE: @llvm.ppc.altivec.vslo
4161 
4162   res_vui = vec_slo(vui, vsc);
4163 // CHECK: @llvm.ppc.altivec.vslo
4164 // CHECK-LE: @llvm.ppc.altivec.vslo
4165 
4166   res_vui = vec_slo(vui, vuc);
4167 // CHECK: @llvm.ppc.altivec.vslo
4168 // CHECK-LE: @llvm.ppc.altivec.vslo
4169 
4170   res_vf  = vec_slo(vf, vsc);
4171 // CHECK: @llvm.ppc.altivec.vslo
4172 // CHECK-LE: @llvm.ppc.altivec.vslo
4173 
4174   res_vf  = vec_slo(vf, vuc);
4175 // CHECK: @llvm.ppc.altivec.vslo
4176 // CHECK-LE: @llvm.ppc.altivec.vslo
4177 
4178   res_vsc = vec_vslo(vsc, vsc);
4179 // CHECK: @llvm.ppc.altivec.vslo
4180 // CHECK-LE: @llvm.ppc.altivec.vslo
4181 
4182   res_vsc = vec_vslo(vsc, vuc);
4183 // CHECK: @llvm.ppc.altivec.vslo
4184 // CHECK-LE: @llvm.ppc.altivec.vslo
4185 
4186   res_vuc = vec_vslo(vuc, vsc);
4187 // CHECK: @llvm.ppc.altivec.vslo
4188 // CHECK-LE: @llvm.ppc.altivec.vslo
4189 
4190   res_vuc = vec_vslo(vuc, vuc);
4191 // CHECK: @llvm.ppc.altivec.vslo
4192 // CHECK-LE: @llvm.ppc.altivec.vslo
4193 
4194   res_vs  = vec_vslo(vs, vsc);
4195 // CHECK: @llvm.ppc.altivec.vslo
4196 // CHECK-LE: @llvm.ppc.altivec.vslo
4197 
4198   res_vs  = vec_vslo(vs, vuc);
4199 // CHECK: @llvm.ppc.altivec.vslo
4200 // CHECK-LE: @llvm.ppc.altivec.vslo
4201 
4202   res_vus = vec_vslo(vus, vsc);
4203 // CHECK: @llvm.ppc.altivec.vslo
4204 // CHECK-LE: @llvm.ppc.altivec.vslo
4205 
4206   res_vus = vec_vslo(vus, vuc);
4207 // CHECK: @llvm.ppc.altivec.vslo
4208 // CHECK-LE: @llvm.ppc.altivec.vslo
4209 
4210   res_vp  = vec_vslo(vp, vsc);
4211 // CHECK: @llvm.ppc.altivec.vslo
4212 // CHECK-LE: @llvm.ppc.altivec.vslo
4213 
4214   res_vp  = vec_vslo(vp, vuc);
4215 // CHECK: @llvm.ppc.altivec.vslo
4216 // CHECK-LE: @llvm.ppc.altivec.vslo
4217 
4218   res_vi  = vec_vslo(vi, vsc);
4219 // CHECK: @llvm.ppc.altivec.vslo
4220 // CHECK-LE: @llvm.ppc.altivec.vslo
4221 
4222   res_vi  = vec_vslo(vi, vuc);
4223 // CHECK: @llvm.ppc.altivec.vslo
4224 // CHECK-LE: @llvm.ppc.altivec.vslo
4225 
4226   res_vui = vec_vslo(vui, vsc);
4227 // CHECK: @llvm.ppc.altivec.vslo
4228 // CHECK-LE: @llvm.ppc.altivec.vslo
4229 
4230   res_vui = vec_vslo(vui, vuc);
4231 // CHECK: @llvm.ppc.altivec.vslo
4232 // CHECK-LE: @llvm.ppc.altivec.vslo
4233 
4234   res_vf  = vec_vslo(vf, vsc);
4235 // CHECK: @llvm.ppc.altivec.vslo
4236 // CHECK-LE: @llvm.ppc.altivec.vslo
4237 
4238   res_vf  = vec_vslo(vf, vuc);
4239 // CHECK: @llvm.ppc.altivec.vslo
4240 // CHECK-LE: @llvm.ppc.altivec.vslo
4241 
4242   /* vec_splat */
4243   res_vsc = vec_splat(vsc, 0);
4244 // CHECK: @llvm.ppc.altivec.vperm
4245 // CHECK-LE: @llvm.ppc.altivec.vperm
4246 
4247   res_vuc = vec_splat(vuc, 0);
4248 // CHECK: @llvm.ppc.altivec.vperm
4249 // CHECK-LE: @llvm.ppc.altivec.vperm
4250 
4251   res_vbc = vec_splat(vbc, 0);
4252 // CHECK: @llvm.ppc.altivec.vperm
4253 // CHECK-LE: @llvm.ppc.altivec.vperm
4254 
4255   res_vs  = vec_splat(vs, 0);
4256 // CHECK: @llvm.ppc.altivec.vperm
4257 // CHECK-LE: @llvm.ppc.altivec.vperm
4258 
4259   res_vus = vec_splat(vus, 0);
4260 // CHECK: @llvm.ppc.altivec.vperm
4261 // CHECK-LE: @llvm.ppc.altivec.vperm
4262 
4263   res_vbs = vec_splat(vbs, 0);
4264 // CHECK: @llvm.ppc.altivec.vperm
4265 // CHECK-LE: @llvm.ppc.altivec.vperm
4266 
4267   res_vp  = vec_splat(vp, 0);
4268 // CHECK: @llvm.ppc.altivec.vperm
4269 // CHECK-LE: @llvm.ppc.altivec.vperm
4270 
4271   res_vi  = vec_splat(vi, 0);
4272 // CHECK: @llvm.ppc.altivec.vperm
4273 // CHECK-LE: @llvm.ppc.altivec.vperm
4274 
4275   res_vui = vec_splat(vui, 0);
4276 // CHECK: @llvm.ppc.altivec.vperm
4277 // CHECK-LE: @llvm.ppc.altivec.vperm
4278 
4279   res_vbi = vec_splat(vbi, 0);
4280 // CHECK: @llvm.ppc.altivec.vperm
4281 // CHECK-LE: @llvm.ppc.altivec.vperm
4282 
4283   res_vf  = vec_splat(vf, 0);
4284 // CHECK: @llvm.ppc.altivec.vperm
4285 // CHECK-LE: @llvm.ppc.altivec.vperm
4286 
4287   res_vsc = vec_vspltb(vsc, 0);
4288 // CHECK: @llvm.ppc.altivec.vperm
4289 // CHECK-LE: @llvm.ppc.altivec.vperm
4290 
4291   res_vuc = vec_vspltb(vuc, 0);
4292 // CHECK: @llvm.ppc.altivec.vperm
4293 // CHECK-LE: @llvm.ppc.altivec.vperm
4294 
4295   res_vbc = vec_vspltb(vbc, 0);
4296 // CHECK: @llvm.ppc.altivec.vperm
4297 // CHECK-LE: @llvm.ppc.altivec.vperm
4298 
4299   res_vs  = vec_vsplth(vs, 0);
4300 // CHECK: @llvm.ppc.altivec.vperm
4301 // CHECK-LE: @llvm.ppc.altivec.vperm
4302 
4303   res_vus = vec_vsplth(vus, 0);
4304 // CHECK: @llvm.ppc.altivec.vperm
4305 // CHECK-LE: @llvm.ppc.altivec.vperm
4306 
4307   res_vbs = vec_vsplth(vbs, 0);
4308 // CHECK: @llvm.ppc.altivec.vperm
4309 // CHECK-LE: @llvm.ppc.altivec.vperm
4310 
4311   res_vp  = vec_vsplth(vp, 0);
4312 // CHECK: @llvm.ppc.altivec.vperm
4313 // CHECK-LE: @llvm.ppc.altivec.vperm
4314 
4315   res_vi  = vec_vspltw(vi, 0);
4316 // CHECK: @llvm.ppc.altivec.vperm
4317 // CHECK-LE: @llvm.ppc.altivec.vperm
4318 
4319   res_vui = vec_vspltw(vui, 0);
4320 // CHECK: @llvm.ppc.altivec.vperm
4321 // CHECK-LE: @llvm.ppc.altivec.vperm
4322 
4323   res_vbi = vec_vspltw(vbi, 0);
4324 // CHECK: @llvm.ppc.altivec.vperm
4325 // CHECK-LE: @llvm.ppc.altivec.vperm
4326 
4327   res_vf  = vec_vspltw(vf, 0);
4328 // CHECK: @llvm.ppc.altivec.vperm
4329 // CHECK-LE: @llvm.ppc.altivec.vperm
4330 
4331   /* vec_splat_s8 */
4332   res_vsc = vec_splat_s8(0x09);                 // TODO: add check
4333   res_vsc = vec_vspltisb(0x09);                 // TODO: add check
4334 
4335   /* vec_splat_s16 */
4336   res_vs = vec_splat_s16(0x09);                 // TODO: add check
4337   res_vs = vec_vspltish(0x09);                  // TODO: add check
4338 
4339   /* vec_splat_s32 */
4340   res_vi = vec_splat_s32(0x09);                 // TODO: add check
4341   res_vi = vec_vspltisw(0x09);                  // TODO: add check
4342 
4343   /* vec_splat_u8 */
4344   res_vuc = vec_splat_u8(0x09);                 // TODO: add check
4345 
4346   /* vec_splat_u16 */
4347   res_vus = vec_splat_u16(0x09);                // TODO: add check
4348 
4349   /* vec_splat_u32 */
4350   res_vui = vec_splat_u32(0x09);                // TODO: add check
4351 
4352   /* vec_sr */
4353   res_vsc = vec_sr(vsc, vuc);
4354 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4355 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4356 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4357 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4358 
4359   res_vuc = vec_sr(vuc, vuc);
4360 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4361 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4362 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4363 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4364 
4365   res_vs  = vec_sr(vs, vus);
4366 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4367 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4368 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4369 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4370 
4371   res_vus = vec_sr(vus, vus);
4372 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4373 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4374 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4375 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4376 
4377   res_vi  = vec_sr(vi, vui);
4378 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4379 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4380 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4381 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4382 
4383   res_vui = vec_sr(vui, vui);
4384 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4385 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4386 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4387 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4388 
4389   res_vsc = vec_vsrb(vsc, vuc);
4390 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4391 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4392 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4393 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4394 
4395   res_vuc = vec_vsrb(vuc, vuc);
4396 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4397 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4398 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, splat (i8 8)
4399 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4400 
4401   res_vs  = vec_vsrh(vs, vus);
4402 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4403 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4404 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4405 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4406 
4407   res_vus = vec_vsrh(vus, vus);
4408 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4409 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4410 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, splat (i16 16)
4411 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4412 
4413   res_vi  = vec_vsrw(vi, vui);
4414 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4415 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4416 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4417 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4418 
4419   res_vui = vec_vsrw(vui, vui);
4420 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4421 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4422 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, splat (i32 32)
4423 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4424 
4425   /* vec_sra */
4426   res_vsc = vec_sra(vsc, vuc);
4427 // CHECK: @llvm.ppc.altivec.vsrab
4428 // CHECK-LE: @llvm.ppc.altivec.vsrab
4429 
4430   res_vuc = vec_sra(vuc, vuc);
4431 // CHECK: @llvm.ppc.altivec.vsrab
4432 // CHECK-LE: @llvm.ppc.altivec.vsrab
4433 
4434   res_vs  = vec_sra(vs, vus);
4435 // CHECK: @llvm.ppc.altivec.vsrah
4436 // CHECK-LE: @llvm.ppc.altivec.vsrah
4437 
4438   res_vus = vec_sra(vus, vus);
4439 // CHECK: @llvm.ppc.altivec.vsrah
4440 // CHECK-LE: @llvm.ppc.altivec.vsrah
4441 
4442   res_vi  = vec_sra(vi, vui);
4443 // CHECK: @llvm.ppc.altivec.vsraw
4444 // CHECK-LE: @llvm.ppc.altivec.vsraw
4445 
4446   res_vui = vec_sra(vui, vui);
4447 // CHECK: @llvm.ppc.altivec.vsraw
4448 // CHECK-LE: @llvm.ppc.altivec.vsraw
4449 
4450   res_vsc = vec_vsrab(vsc, vuc);
4451 // CHECK: @llvm.ppc.altivec.vsrab
4452 // CHECK-LE: @llvm.ppc.altivec.vsrab
4453 
4454   res_vuc = vec_vsrab(vuc, vuc);
4455 // CHECK: @llvm.ppc.altivec.vsrab
4456 // CHECK-LE: @llvm.ppc.altivec.vsrab
4457 
4458   res_vs  = vec_vsrah(vs, vus);
4459 // CHECK: @llvm.ppc.altivec.vsrah
4460 // CHECK-LE: @llvm.ppc.altivec.vsrah
4461 
4462   res_vus = vec_vsrah(vus, vus);
4463 // CHECK: @llvm.ppc.altivec.vsrah
4464 // CHECK-LE: @llvm.ppc.altivec.vsrah
4465 
4466   res_vi  = vec_vsraw(vi, vui);
4467 // CHECK: @llvm.ppc.altivec.vsraw
4468 // CHECK-LE: @llvm.ppc.altivec.vsraw
4469 
4470   res_vui = vec_vsraw(vui, vui);
4471 // CHECK: @llvm.ppc.altivec.vsraw
4472 // CHECK-LE: @llvm.ppc.altivec.vsraw
4473 
4474   /* vec_srl */
4475   res_vsc = vec_srl(vsc, vuc);
4476 // CHECK: @llvm.ppc.altivec.vsr
4477 // CHECK-LE: @llvm.ppc.altivec.vsr
4478 
4479   res_vsc = vec_srl(vsc, vus);
4480 // CHECK: @llvm.ppc.altivec.vsr
4481 // CHECK-LE: @llvm.ppc.altivec.vsr
4482 
4483   res_vsc = vec_srl(vsc, vui);
4484 // CHECK: @llvm.ppc.altivec.vsr
4485 // CHECK-LE: @llvm.ppc.altivec.vsr
4486 
4487   res_vuc = vec_srl(vuc, vuc);
4488 // CHECK: @llvm.ppc.altivec.vsr
4489 // CHECK-LE: @llvm.ppc.altivec.vsr
4490 
4491   res_vuc = vec_srl(vuc, vus);
4492 // CHECK: @llvm.ppc.altivec.vsr
4493 // CHECK-LE: @llvm.ppc.altivec.vsr
4494 
4495   res_vuc = vec_srl(vuc, vui);
4496 // CHECK: @llvm.ppc.altivec.vsr
4497 // CHECK-LE: @llvm.ppc.altivec.vsr
4498 
4499   res_vbc = vec_srl(vbc, vuc);
4500 // CHECK: @llvm.ppc.altivec.vsr
4501 // CHECK-LE: @llvm.ppc.altivec.vsr
4502 
4503   res_vbc = vec_srl(vbc, vus);
4504 // CHECK: @llvm.ppc.altivec.vsr
4505 // CHECK-LE: @llvm.ppc.altivec.vsr
4506 
4507   res_vbc = vec_srl(vbc, vui);
4508 // CHECK: @llvm.ppc.altivec.vsr
4509 // CHECK-LE: @llvm.ppc.altivec.vsr
4510 
4511   res_vs  = vec_srl(vs, vuc);
4512 // CHECK: @llvm.ppc.altivec.vsr
4513 // CHECK-LE: @llvm.ppc.altivec.vsr
4514 
4515   res_vs  = vec_srl(vs, vus);
4516 // CHECK: @llvm.ppc.altivec.vsr
4517 // CHECK-LE: @llvm.ppc.altivec.vsr
4518 
4519   res_vs  = vec_srl(vs, vui);
4520 // CHECK: @llvm.ppc.altivec.vsr
4521 // CHECK-LE: @llvm.ppc.altivec.vsr
4522 
4523   res_vus = vec_srl(vus, vuc);
4524 // CHECK: @llvm.ppc.altivec.vsr
4525 // CHECK-LE: @llvm.ppc.altivec.vsr
4526 
4527   res_vus = vec_srl(vus, vus);
4528 // CHECK: @llvm.ppc.altivec.vsr
4529 // CHECK-LE: @llvm.ppc.altivec.vsr
4530 
4531   res_vus = vec_srl(vus, vui);
4532 // CHECK: @llvm.ppc.altivec.vsr
4533 // CHECK-LE: @llvm.ppc.altivec.vsr
4534 
4535   res_vbs = vec_srl(vbs, vuc);
4536 // CHECK: @llvm.ppc.altivec.vsr
4537 // CHECK-LE: @llvm.ppc.altivec.vsr
4538 
4539   res_vbs = vec_srl(vbs, vus);
4540 // CHECK: @llvm.ppc.altivec.vsr
4541 // CHECK-LE: @llvm.ppc.altivec.vsr
4542 
4543   res_vbs = vec_srl(vbs, vui);
4544 // CHECK: @llvm.ppc.altivec.vsr
4545 // CHECK-LE: @llvm.ppc.altivec.vsr
4546 
4547   res_vp  = vec_srl(vp, vuc);
4548 // CHECK: @llvm.ppc.altivec.vsr
4549 // CHECK-LE: @llvm.ppc.altivec.vsr
4550 
4551   res_vp  = vec_srl(vp, vus);
4552 // CHECK: @llvm.ppc.altivec.vsr
4553 // CHECK-LE: @llvm.ppc.altivec.vsr
4554 
4555   res_vp  = vec_srl(vp, vui);
4556 // CHECK: @llvm.ppc.altivec.vsr
4557 // CHECK-LE: @llvm.ppc.altivec.vsr
4558 
4559   res_vi  = vec_srl(vi, vuc);
4560 // CHECK: @llvm.ppc.altivec.vsr
4561 // CHECK-LE: @llvm.ppc.altivec.vsr
4562 
4563   res_vi  = vec_srl(vi, vus);
4564 // CHECK: @llvm.ppc.altivec.vsr
4565 // CHECK-LE: @llvm.ppc.altivec.vsr
4566 
4567   res_vi  = vec_srl(vi, vui);
4568 // CHECK: @llvm.ppc.altivec.vsr
4569 // CHECK-LE: @llvm.ppc.altivec.vsr
4570 
4571   res_vui = vec_srl(vui, vuc);
4572 // CHECK: @llvm.ppc.altivec.vsr
4573 // CHECK-LE: @llvm.ppc.altivec.vsr
4574 
4575   res_vui = vec_srl(vui, vus);
4576 // CHECK: @llvm.ppc.altivec.vsr
4577 // CHECK-LE: @llvm.ppc.altivec.vsr
4578 
4579   res_vui = vec_srl(vui, vui);
4580 // CHECK: @llvm.ppc.altivec.vsr
4581 // CHECK-LE: @llvm.ppc.altivec.vsr
4582 
4583   res_vbi = vec_srl(vbi, vuc);
4584 // CHECK: @llvm.ppc.altivec.vsr
4585 // CHECK-LE: @llvm.ppc.altivec.vsr
4586 
4587   res_vbi = vec_srl(vbi, vus);
4588 // CHECK: @llvm.ppc.altivec.vsr
4589 // CHECK-LE: @llvm.ppc.altivec.vsr
4590 
4591   res_vbi = vec_srl(vbi, vui);
4592 // CHECK: @llvm.ppc.altivec.vsr
4593 // CHECK-LE: @llvm.ppc.altivec.vsr
4594 
4595   res_vsc = vec_vsr(vsc, vuc);
4596 // CHECK: @llvm.ppc.altivec.vsr
4597 // CHECK-LE: @llvm.ppc.altivec.vsr
4598 
4599   res_vsc = vec_vsr(vsc, vus);
4600 // CHECK: @llvm.ppc.altivec.vsr
4601 // CHECK-LE: @llvm.ppc.altivec.vsr
4602 
4603   res_vsc = vec_vsr(vsc, vui);
4604 // CHECK: @llvm.ppc.altivec.vsr
4605 // CHECK-LE: @llvm.ppc.altivec.vsr
4606 
4607   res_vuc = vec_vsr(vuc, vuc);
4608 // CHECK: @llvm.ppc.altivec.vsr
4609 // CHECK-LE: @llvm.ppc.altivec.vsr
4610 
4611   res_vuc = vec_vsr(vuc, vus);
4612 // CHECK: @llvm.ppc.altivec.vsr
4613 // CHECK-LE: @llvm.ppc.altivec.vsr
4614 
4615   res_vuc = vec_vsr(vuc, vui);
4616 // CHECK: @llvm.ppc.altivec.vsr
4617 // CHECK-LE: @llvm.ppc.altivec.vsr
4618 
4619   res_vbc = vec_vsr(vbc, vuc);
4620 // CHECK: @llvm.ppc.altivec.vsr
4621 // CHECK-LE: @llvm.ppc.altivec.vsr
4622 
4623   res_vbc = vec_vsr(vbc, vus);
4624 // CHECK: @llvm.ppc.altivec.vsr
4625 // CHECK-LE: @llvm.ppc.altivec.vsr
4626 
4627   res_vbc = vec_vsr(vbc, vui);
4628 // CHECK: @llvm.ppc.altivec.vsr
4629 // CHECK-LE: @llvm.ppc.altivec.vsr
4630 
4631   res_vs  = vec_vsr(vs, vuc);
4632 // CHECK: @llvm.ppc.altivec.vsr
4633 // CHECK-LE: @llvm.ppc.altivec.vsr
4634 
4635   res_vs  = vec_vsr(vs, vus);
4636 // CHECK: @llvm.ppc.altivec.vsr
4637 // CHECK-LE: @llvm.ppc.altivec.vsr
4638 
4639   res_vs  = vec_vsr(vs, vui);
4640 // CHECK: @llvm.ppc.altivec.vsr
4641 // CHECK-LE: @llvm.ppc.altivec.vsr
4642 
4643   res_vus = vec_vsr(vus, vuc);
4644 // CHECK: @llvm.ppc.altivec.vsr
4645 // CHECK-LE: @llvm.ppc.altivec.vsr
4646 
4647   res_vus = vec_vsr(vus, vus);
4648 // CHECK: @llvm.ppc.altivec.vsr
4649 // CHECK-LE: @llvm.ppc.altivec.vsr
4650 
4651   res_vus = vec_vsr(vus, vui);
4652 // CHECK: @llvm.ppc.altivec.vsr
4653 // CHECK-LE: @llvm.ppc.altivec.vsr
4654 
4655   res_vbs = vec_vsr(vbs, vuc);
4656 // CHECK: @llvm.ppc.altivec.vsr
4657 // CHECK-LE: @llvm.ppc.altivec.vsr
4658 
4659   res_vbs = vec_vsr(vbs, vus);
4660 // CHECK: @llvm.ppc.altivec.vsr
4661 // CHECK-LE: @llvm.ppc.altivec.vsr
4662 
4663   res_vbs = vec_vsr(vbs, vui);
4664 // CHECK: @llvm.ppc.altivec.vsr
4665 // CHECK-LE: @llvm.ppc.altivec.vsr
4666 
4667   res_vp  = vec_vsr(vp, vuc);
4668 // CHECK: @llvm.ppc.altivec.vsr
4669 // CHECK-LE: @llvm.ppc.altivec.vsr
4670 
4671   res_vp  = vec_vsr(vp, vus);
4672 // CHECK: @llvm.ppc.altivec.vsr
4673 // CHECK-LE: @llvm.ppc.altivec.vsr
4674 
4675   res_vp  = vec_vsr(vp, vui);
4676 // CHECK: @llvm.ppc.altivec.vsr
4677 // CHECK-LE: @llvm.ppc.altivec.vsr
4678 
4679   res_vi  = vec_vsr(vi, vuc);
4680 // CHECK: @llvm.ppc.altivec.vsr
4681 // CHECK-LE: @llvm.ppc.altivec.vsr
4682 
4683   res_vi  = vec_vsr(vi, vus);
4684 // CHECK: @llvm.ppc.altivec.vsr
4685 // CHECK-LE: @llvm.ppc.altivec.vsr
4686 
4687   res_vi  = vec_vsr(vi, vui);
4688 // CHECK: @llvm.ppc.altivec.vsr
4689 // CHECK-LE: @llvm.ppc.altivec.vsr
4690 
4691   res_vui = vec_vsr(vui, vuc);
4692 // CHECK: @llvm.ppc.altivec.vsr
4693 // CHECK-LE: @llvm.ppc.altivec.vsr
4694 
4695   res_vui = vec_vsr(vui, vus);
4696 // CHECK: @llvm.ppc.altivec.vsr
4697 // CHECK-LE: @llvm.ppc.altivec.vsr
4698 
4699   res_vui = vec_vsr(vui, vui);
4700 // CHECK: @llvm.ppc.altivec.vsr
4701 // CHECK-LE: @llvm.ppc.altivec.vsr
4702 
4703   res_vbi = vec_vsr(vbi, vuc);
4704 // CHECK: @llvm.ppc.altivec.vsr
4705 // CHECK-LE: @llvm.ppc.altivec.vsr
4706 
4707   res_vbi = vec_vsr(vbi, vus);
4708 // CHECK: @llvm.ppc.altivec.vsr
4709 // CHECK-LE: @llvm.ppc.altivec.vsr
4710 
4711   res_vbi = vec_vsr(vbi, vui);
4712 // CHECK: @llvm.ppc.altivec.vsr
4713 // CHECK-LE: @llvm.ppc.altivec.vsr
4714 
4715   /* vec_sro */
4716   res_vsc = vec_sro(vsc, vsc);
4717 // CHECK: @llvm.ppc.altivec.vsro
4718 // CHECK-LE: @llvm.ppc.altivec.vsro
4719 
4720   res_vsc = vec_sro(vsc, vuc);
4721 // CHECK: @llvm.ppc.altivec.vsro
4722 // CHECK-LE: @llvm.ppc.altivec.vsro
4723 
4724   res_vuc = vec_sro(vuc, vsc);
4725 // CHECK: @llvm.ppc.altivec.vsro
4726 // CHECK-LE: @llvm.ppc.altivec.vsro
4727 
4728   res_vuc = vec_sro(vuc, vuc);
4729 // CHECK: @llvm.ppc.altivec.vsro
4730 // CHECK-LE: @llvm.ppc.altivec.vsro
4731 
4732   res_vs  = vec_sro(vs, vsc);
4733 // CHECK: @llvm.ppc.altivec.vsro
4734 // CHECK-LE: @llvm.ppc.altivec.vsro
4735 
4736   res_vs  = vec_sro(vs, vuc);
4737 // CHECK: @llvm.ppc.altivec.vsro
4738 // CHECK-LE: @llvm.ppc.altivec.vsro
4739 
4740   res_vus = vec_sro(vus, vsc);
4741 // CHECK: @llvm.ppc.altivec.vsro
4742 // CHECK-LE: @llvm.ppc.altivec.vsro
4743 
4744   res_vus = vec_sro(vus, vuc);
4745 // CHECK: @llvm.ppc.altivec.vsro
4746 // CHECK-LE: @llvm.ppc.altivec.vsro
4747 
4748   res_vp  = vec_sro(vp, vsc);
4749 // CHECK: @llvm.ppc.altivec.vsro
4750 // CHECK-LE: @llvm.ppc.altivec.vsro
4751 
4752   res_vp  = vec_sro(vp, vuc);
4753 // CHECK: @llvm.ppc.altivec.vsro
4754 // CHECK-LE: @llvm.ppc.altivec.vsro
4755 
4756   res_vi  = vec_sro(vi, vsc);
4757 // CHECK: @llvm.ppc.altivec.vsro
4758 // CHECK-LE: @llvm.ppc.altivec.vsro
4759 
4760   res_vi  = vec_sro(vi, vuc);
4761 // CHECK: @llvm.ppc.altivec.vsro
4762 // CHECK-LE: @llvm.ppc.altivec.vsro
4763 
4764   res_vui = vec_sro(vui, vsc);
4765 // CHECK: @llvm.ppc.altivec.vsro
4766 // CHECK-LE: @llvm.ppc.altivec.vsro
4767 
4768   res_vui = vec_sro(vui, vuc);
4769 // CHECK: @llvm.ppc.altivec.vsro
4770 // CHECK-LE: @llvm.ppc.altivec.vsro
4771 
4772   res_vf  = vec_sro(vf, vsc);
4773 // CHECK: @llvm.ppc.altivec.vsro
4774 // CHECK-LE: @llvm.ppc.altivec.vsro
4775 
4776   res_vf  = vec_sro(vf, vuc);
4777 // CHECK: @llvm.ppc.altivec.vsro
4778 // CHECK-LE: @llvm.ppc.altivec.vsro
4779 
4780   res_vsc = vec_vsro(vsc, vsc);
4781 // CHECK: @llvm.ppc.altivec.vsro
4782 // CHECK-LE: @llvm.ppc.altivec.vsro
4783 
4784   res_vsc = vec_vsro(vsc, vuc);
4785 // CHECK: @llvm.ppc.altivec.vsro
4786 // CHECK-LE: @llvm.ppc.altivec.vsro
4787 
4788   res_vuc = vec_vsro(vuc, vsc);
4789 // CHECK: @llvm.ppc.altivec.vsro
4790 // CHECK-LE: @llvm.ppc.altivec.vsro
4791 
4792   res_vuc = vec_vsro(vuc, vuc);
4793 // CHECK: @llvm.ppc.altivec.vsro
4794 // CHECK-LE: @llvm.ppc.altivec.vsro
4795 
4796   res_vs  = vec_vsro(vs, vsc);
4797 // CHECK: @llvm.ppc.altivec.vsro
4798 // CHECK-LE: @llvm.ppc.altivec.vsro
4799 
4800   res_vs  = vec_vsro(vs, vuc);
4801 // CHECK: @llvm.ppc.altivec.vsro
4802 // CHECK-LE: @llvm.ppc.altivec.vsro
4803 
4804   res_vus = vec_vsro(vus, vsc);
4805 // CHECK: @llvm.ppc.altivec.vsro
4806 // CHECK-LE: @llvm.ppc.altivec.vsro
4807 
4808   res_vus = vec_vsro(vus, vuc);
4809 // CHECK: @llvm.ppc.altivec.vsro
4810 // CHECK-LE: @llvm.ppc.altivec.vsro
4811 
4812   res_vp  = vec_vsro(vp, vsc);
4813 // CHECK: @llvm.ppc.altivec.vsro
4814 // CHECK-LE: @llvm.ppc.altivec.vsro
4815 
4816   res_vp  = vec_vsro(vp, vuc);
4817 // CHECK: @llvm.ppc.altivec.vsro
4818 // CHECK-LE: @llvm.ppc.altivec.vsro
4819 
4820   res_vi  = vec_vsro(vi, vsc);
4821 // CHECK: @llvm.ppc.altivec.vsro
4822 // CHECK-LE: @llvm.ppc.altivec.vsro
4823 
4824   res_vi  = vec_vsro(vi, vuc);
4825 // CHECK: @llvm.ppc.altivec.vsro
4826 // CHECK-LE: @llvm.ppc.altivec.vsro
4827 
4828   res_vui = vec_vsro(vui, vsc);
4829 // CHECK: @llvm.ppc.altivec.vsro
4830 // CHECK-LE: @llvm.ppc.altivec.vsro
4831 
4832   res_vui = vec_vsro(vui, vuc);
4833 // CHECK: @llvm.ppc.altivec.vsro
4834 // CHECK-LE: @llvm.ppc.altivec.vsro
4835 
4836   res_vf  = vec_vsro(vf, vsc);
4837 // CHECK: @llvm.ppc.altivec.vsro
4838 // CHECK-LE: @llvm.ppc.altivec.vsro
4839 
4840   res_vf  = vec_vsro(vf, vuc);
4841 // CHECK: @llvm.ppc.altivec.vsro
4842 // CHECK-LE: @llvm.ppc.altivec.vsro
4843 
4844   /* vec_st */
4845   vec_st(vsc, 0, &vsc);
4846 // CHECK: @llvm.ppc.altivec.stvx
4847 // CHECK-LE: @llvm.ppc.altivec.stvx
4848 
4849   vec_st(vsc, 0, &param_sc);
4850 // CHECK: @llvm.ppc.altivec.stvx
4851 // CHECK-LE: @llvm.ppc.altivec.stvx
4852 
4853   vec_st(vuc, 0, &vuc);
4854 // CHECK: @llvm.ppc.altivec.stvx
4855 // CHECK-LE: @llvm.ppc.altivec.stvx
4856 
4857   vec_st(vuc, 0, &param_uc);
4858 // CHECK: @llvm.ppc.altivec.stvx
4859 // CHECK-LE: @llvm.ppc.altivec.stvx
4860 
4861   vec_st(vbc, 0, &param_uc);
4862 // CHECK: @llvm.ppc.altivec.stvx
4863 // CHECK-LE: @llvm.ppc.altivec.stvx
4864 
4865   vec_st(vbc, 0, &param_uc);
4866 // CHECK: @llvm.ppc.altivec.stvx
4867 // CHECK-LE: @llvm.ppc.altivec.stvx
4868 
4869   vec_st(vbc, 0, &vbc);
4870 // CHECK: @llvm.ppc.altivec.stvx
4871 // CHECK-LE: @llvm.ppc.altivec.stvx
4872 
4873   vec_st(vs, 0, &vs);
4874 // CHECK: @llvm.ppc.altivec.stvx
4875 // CHECK-LE: @llvm.ppc.altivec.stvx
4876 
4877   vec_st(vs, 0, &param_s);
4878 // CHECK: @llvm.ppc.altivec.stvx
4879 // CHECK-LE: @llvm.ppc.altivec.stvx
4880 
4881   vec_st(vus, 0, &vus);
4882 // CHECK: @llvm.ppc.altivec.stvx
4883 // CHECK-LE: @llvm.ppc.altivec.stvx
4884 
4885   vec_st(vus, 0, &param_us);
4886 // CHECK: @llvm.ppc.altivec.stvx
4887 // CHECK-LE: @llvm.ppc.altivec.stvx
4888 
4889   vec_st(vbs, 0, &param_s);
4890 // CHECK: @llvm.ppc.altivec.stvx
4891 // CHECK-LE: @llvm.ppc.altivec.stvx
4892 
4893   vec_st(vbs, 0, &param_us);
4894 // CHECK: @llvm.ppc.altivec.stvx
4895 // CHECK-LE: @llvm.ppc.altivec.stvx
4896 
4897   vec_st(vbs, 0, &vbs);
4898 // CHECK: @llvm.ppc.altivec.stvx
4899 // CHECK-LE: @llvm.ppc.altivec.stvx
4900 
4901   vec_st(vp, 0, &param_s);
4902 // CHECK: @llvm.ppc.altivec.stvx
4903 // CHECK-LE: @llvm.ppc.altivec.stvx
4904 
4905   vec_st(vp, 0, &param_us);
4906 // CHECK: @llvm.ppc.altivec.stvx
4907 // CHECK-LE: @llvm.ppc.altivec.stvx
4908 
4909   vec_st(vp, 0, &vp);
4910 // CHECK: @llvm.ppc.altivec.stvx
4911 // CHECK-LE: @llvm.ppc.altivec.stvx
4912 
4913   vec_st(vi, 0, &vi);
4914 // CHECK: @llvm.ppc.altivec.stvx
4915 // CHECK-LE: @llvm.ppc.altivec.stvx
4916 
4917   vec_st(vi, 0, &param_i);
4918 // CHECK: @llvm.ppc.altivec.stvx
4919 // CHECK-LE: @llvm.ppc.altivec.stvx
4920 
4921   vec_st(vui, 0, &vui);
4922 // CHECK: @llvm.ppc.altivec.stvx
4923 // CHECK-LE: @llvm.ppc.altivec.stvx
4924 
4925   vec_st(vui, 0, &param_ui);
4926 // CHECK: @llvm.ppc.altivec.stvx
4927 // CHECK-LE: @llvm.ppc.altivec.stvx
4928 
4929   vec_st(vbi, 0, &param_i);
4930 // CHECK: @llvm.ppc.altivec.stvx
4931 // CHECK-LE: @llvm.ppc.altivec.stvx
4932 
4933   vec_st(vbi, 0, &param_ui);
4934 // CHECK: @llvm.ppc.altivec.stvx
4935 // CHECK-LE: @llvm.ppc.altivec.stvx
4936 
4937   vec_st(vbi, 0, &vbi);
4938 // CHECK: @llvm.ppc.altivec.stvx
4939 // CHECK-LE: @llvm.ppc.altivec.stvx
4940 
4941   vec_st(vf, 0, &vf);
4942 // CHECK: @llvm.ppc.altivec.stvx
4943 // CHECK-LE: @llvm.ppc.altivec.stvx
4944 
4945   vec_st(vf, 0, &param_f);
4946 // CHECK: @llvm.ppc.altivec.stvx
4947 // CHECK-LE: @llvm.ppc.altivec.stvx
4948 
4949   vec_stvx(vsc, 0, &vsc);
4950 // CHECK: @llvm.ppc.altivec.stvx
4951 // CHECK-LE: @llvm.ppc.altivec.stvx
4952 
4953   vec_stvx(vsc, 0, &param_sc);
4954 // CHECK: @llvm.ppc.altivec.stvx
4955 // CHECK-LE: @llvm.ppc.altivec.stvx
4956 
4957   vec_stvx(vuc, 0, &vuc);
4958 // CHECK: @llvm.ppc.altivec.stvx
4959 // CHECK-LE: @llvm.ppc.altivec.stvx
4960 
4961   vec_stvx(vuc, 0, &param_uc);
4962 // CHECK: @llvm.ppc.altivec.stvx
4963 // CHECK-LE: @llvm.ppc.altivec.stvx
4964 
4965   vec_stvx(vbc, 0, &param_uc);
4966 // CHECK: @llvm.ppc.altivec.stvx
4967 // CHECK-LE: @llvm.ppc.altivec.stvx
4968 
4969   vec_stvx(vbc, 0, &param_uc);
4970 // CHECK: @llvm.ppc.altivec.stvx
4971 // CHECK-LE: @llvm.ppc.altivec.stvx
4972 
4973   vec_stvx(vbc, 0, &vbc);
4974 // CHECK: @llvm.ppc.altivec.stvx
4975 // CHECK-LE: @llvm.ppc.altivec.stvx
4976 
4977   vec_stvx(vs, 0, &vs);
4978 // CHECK: @llvm.ppc.altivec.stvx
4979 // CHECK-LE: @llvm.ppc.altivec.stvx
4980 
4981   vec_stvx(vs, 0, &param_s);
4982 // CHECK: @llvm.ppc.altivec.stvx
4983 // CHECK-LE: @llvm.ppc.altivec.stvx
4984 
4985   vec_stvx(vus, 0, &vus);
4986 // CHECK: @llvm.ppc.altivec.stvx
4987 // CHECK-LE: @llvm.ppc.altivec.stvx
4988 
4989   vec_stvx(vus, 0, &param_us);
4990 // CHECK: @llvm.ppc.altivec.stvx
4991 // CHECK-LE: @llvm.ppc.altivec.stvx
4992 
4993   vec_stvx(vbs, 0, &param_s);
4994 // CHECK: @llvm.ppc.altivec.stvx
4995 // CHECK-LE: @llvm.ppc.altivec.stvx
4996 
4997   vec_stvx(vbs, 0, &param_us);
4998 // CHECK: @llvm.ppc.altivec.stvx
4999 // CHECK-LE: @llvm.ppc.altivec.stvx
5000 
5001   vec_stvx(vbs, 0, &vbs);
5002 // CHECK: @llvm.ppc.altivec.stvx
5003 // CHECK-LE: @llvm.ppc.altivec.stvx
5004 
5005   vec_stvx(vp, 0, &param_s);
5006 // CHECK: @llvm.ppc.altivec.stvx
5007 // CHECK-LE: @llvm.ppc.altivec.stvx
5008 
5009   vec_stvx(vp, 0, &param_us);
5010 // CHECK: @llvm.ppc.altivec.stvx
5011 // CHECK-LE: @llvm.ppc.altivec.stvx
5012 
5013   vec_stvx(vp, 0, &vp);
5014 // CHECK: @llvm.ppc.altivec.stvx
5015 // CHECK-LE: @llvm.ppc.altivec.stvx
5016 
5017   vec_stvx(vi, 0, &vi);
5018 // CHECK: @llvm.ppc.altivec.stvx
5019 // CHECK-LE: @llvm.ppc.altivec.stvx
5020 
5021   vec_stvx(vi, 0, &param_i);
5022 // CHECK: @llvm.ppc.altivec.stvx
5023 // CHECK-LE: @llvm.ppc.altivec.stvx
5024 
5025   vec_stvx(vui, 0, &vui);
5026 // CHECK: @llvm.ppc.altivec.stvx
5027 // CHECK-LE: @llvm.ppc.altivec.stvx
5028 
5029   vec_stvx(vui, 0, &param_ui);
5030 // CHECK: @llvm.ppc.altivec.stvx
5031 // CHECK-LE: @llvm.ppc.altivec.stvx
5032 
5033   vec_stvx(vbi, 0, &param_i);
5034 // CHECK: @llvm.ppc.altivec.stvx
5035 // CHECK-LE: @llvm.ppc.altivec.stvx
5036 
5037   vec_stvx(vbi, 0, &param_ui);
5038 // CHECK: @llvm.ppc.altivec.stvx
5039 // CHECK-LE: @llvm.ppc.altivec.stvx
5040 
5041   vec_stvx(vbi, 0, &vbi);
5042 // CHECK: @llvm.ppc.altivec.stvx
5043 // CHECK-LE: @llvm.ppc.altivec.stvx
5044 
5045   vec_stvx(vf, 0, &vf);
5046 // CHECK: @llvm.ppc.altivec.stvx
5047 // CHECK-LE: @llvm.ppc.altivec.stvx
5048 
5049   vec_stvx(vf, 0, &param_f);
5050 // CHECK: @llvm.ppc.altivec.stvx
5051 // CHECK-LE: @llvm.ppc.altivec.stvx
5052 
5053   /* vec_ste */
5054   vec_ste(vsc, 0, &param_sc);
5055 // CHECK: @llvm.ppc.altivec.stvebx
5056 // CHECK-LE: @llvm.ppc.altivec.stvebx
5057 
5058   vec_ste(vuc, 0, &param_uc);
5059 // CHECK: @llvm.ppc.altivec.stvebx
5060 // CHECK-LE: @llvm.ppc.altivec.stvebx
5061 
5062   vec_ste(vbc, 0, &param_sc);
5063 // CHECK: @llvm.ppc.altivec.stvebx
5064 // CHECK-LE: @llvm.ppc.altivec.stvebx
5065 
5066   vec_ste(vbc, 0, &param_uc);
5067 // CHECK: @llvm.ppc.altivec.stvebx
5068 // CHECK-LE: @llvm.ppc.altivec.stvebx
5069 
5070   vec_ste(vs, 0, &param_s);
5071 // CHECK: @llvm.ppc.altivec.stvehx
5072 // CHECK-LE: @llvm.ppc.altivec.stvehx
5073 
5074   vec_ste(vus, 0, &param_us);
5075 // CHECK: @llvm.ppc.altivec.stvehx
5076 // CHECK-LE: @llvm.ppc.altivec.stvehx
5077 
5078   vec_ste(vbs, 0, &param_s);
5079 // CHECK: @llvm.ppc.altivec.stvehx
5080 // CHECK-LE: @llvm.ppc.altivec.stvehx
5081 
5082   vec_ste(vbs, 0, &param_us);
5083 // CHECK: @llvm.ppc.altivec.stvehx
5084 // CHECK-LE: @llvm.ppc.altivec.stvehx
5085 
5086   vec_ste(vp, 0, &param_s);
5087 // CHECK: @llvm.ppc.altivec.stvehx
5088 // CHECK-LE: @llvm.ppc.altivec.stvehx
5089 
5090   vec_ste(vp, 0, &param_us);
5091 // CHECK: @llvm.ppc.altivec.stvehx
5092 // CHECK-LE: @llvm.ppc.altivec.stvehx
5093 
5094   vec_ste(vi, 0, &param_i);
5095 // CHECK: @llvm.ppc.altivec.stvewx
5096 // CHECK-LE: @llvm.ppc.altivec.stvewx
5097 
5098   vec_ste(vui, 0, &param_ui);
5099 // CHECK: @llvm.ppc.altivec.stvewx
5100 // CHECK-LE: @llvm.ppc.altivec.stvewx
5101 
5102   vec_ste(vbi, 0, &param_i);
5103 // CHECK: @llvm.ppc.altivec.stvewx
5104 // CHECK-LE: @llvm.ppc.altivec.stvewx
5105 
5106   vec_ste(vbi, 0, &param_ui);
5107 // CHECK: @llvm.ppc.altivec.stvewx
5108 // CHECK-LE: @llvm.ppc.altivec.stvewx
5109 
5110   vec_ste(vf, 0, &param_f);
5111 // CHECK: @llvm.ppc.altivec.stvewx
5112 // CHECK-LE: @llvm.ppc.altivec.stvewx
5113 
5114   vec_stvebx(vsc, 0, &param_sc);
5115 // CHECK: @llvm.ppc.altivec.stvebx
5116 // CHECK-LE: @llvm.ppc.altivec.stvebx
5117 
5118   vec_stvebx(vuc, 0, &param_uc);
5119 // CHECK: @llvm.ppc.altivec.stvebx
5120 // CHECK-LE: @llvm.ppc.altivec.stvebx
5121 
5122   vec_stvebx(vbc, 0, &param_sc);
5123 // CHECK: @llvm.ppc.altivec.stvebx
5124 // CHECK-LE: @llvm.ppc.altivec.stvebx
5125 
5126   vec_stvebx(vbc, 0, &param_uc);
5127 // CHECK: @llvm.ppc.altivec.stvebx
5128 // CHECK-LE: @llvm.ppc.altivec.stvebx
5129 
5130   vec_stvehx(vs, 0, &param_s);
5131 // CHECK: @llvm.ppc.altivec.stvehx
5132 // CHECK-LE: @llvm.ppc.altivec.stvehx
5133 
5134   vec_stvehx(vus, 0, &param_us);
5135 // CHECK: @llvm.ppc.altivec.stvehx
5136 // CHECK-LE: @llvm.ppc.altivec.stvehx
5137 
5138   vec_stvehx(vbs, 0, &param_s);
5139 // CHECK: @llvm.ppc.altivec.stvehx
5140 // CHECK-LE: @llvm.ppc.altivec.stvehx
5141 
5142   vec_stvehx(vbs, 0, &param_us);
5143 // CHECK: @llvm.ppc.altivec.stvehx
5144 // CHECK-LE: @llvm.ppc.altivec.stvehx
5145 
5146   vec_stvehx(vp, 0, &param_s);
5147 // CHECK: @llvm.ppc.altivec.stvehx
5148 // CHECK-LE: @llvm.ppc.altivec.stvehx
5149 
5150   vec_stvehx(vp, 0, &param_us);
5151 // CHECK: @llvm.ppc.altivec.stvehx
5152 // CHECK-LE: @llvm.ppc.altivec.stvehx
5153 
5154   vec_stvewx(vi, 0, &param_i);
5155 // CHECK: @llvm.ppc.altivec.stvewx
5156 // CHECK-LE: @llvm.ppc.altivec.stvewx
5157 
5158   vec_stvewx(vui, 0, &param_ui);
5159 // CHECK: @llvm.ppc.altivec.stvewx
5160 // CHECK-LE: @llvm.ppc.altivec.stvewx
5161 
5162   vec_stvewx(vbi, 0, &param_i);
5163 // CHECK: @llvm.ppc.altivec.stvewx
5164 // CHECK-LE: @llvm.ppc.altivec.stvewx
5165 
5166   vec_stvewx(vbi, 0, &param_ui);
5167 // CHECK: @llvm.ppc.altivec.stvewx
5168 // CHECK-LE: @llvm.ppc.altivec.stvewx
5169 
5170   vec_stvewx(vf, 0, &param_f);
5171 // CHECK: @llvm.ppc.altivec.stvewx
5172 // CHECK-LE: @llvm.ppc.altivec.stvewx
5173 
5174   /* vec_stl */
5175   vec_stl(vsc, 0, &vsc);
5176 // CHECK: @llvm.ppc.altivec.stvxl
5177 // CHECK-LE: @llvm.ppc.altivec.stvxl
5178 
5179   vec_stl(vsc, 0, &param_sc);
5180 // CHECK: @llvm.ppc.altivec.stvxl
5181 // CHECK-LE: @llvm.ppc.altivec.stvxl
5182 
5183   vec_stl(vuc, 0, &vuc);
5184 // CHECK: @llvm.ppc.altivec.stvxl
5185 // CHECK-LE: @llvm.ppc.altivec.stvxl
5186 
5187   vec_stl(vuc, 0, &param_uc);
5188 // CHECK: @llvm.ppc.altivec.stvxl
5189 // CHECK-LE: @llvm.ppc.altivec.stvxl
5190 
5191   vec_stl(vbc, 0, &param_sc);
5192 // CHECK: @llvm.ppc.altivec.stvxl
5193 // CHECK-LE: @llvm.ppc.altivec.stvxl
5194 
5195   vec_stl(vbc, 0, &param_uc);
5196 // CHECK: @llvm.ppc.altivec.stvxl
5197 // CHECK-LE: @llvm.ppc.altivec.stvxl
5198 
5199   vec_stl(vbc, 0, &vbc);
5200 // CHECK: @llvm.ppc.altivec.stvxl
5201 // CHECK-LE: @llvm.ppc.altivec.stvxl
5202 
5203   vec_stl(vs, 0, &vs);
5204 // CHECK: @llvm.ppc.altivec.stvxl
5205 // CHECK-LE: @llvm.ppc.altivec.stvxl
5206 
5207   vec_stl(vs, 0, &param_s);
5208 // CHECK: @llvm.ppc.altivec.stvxl
5209 // CHECK-LE: @llvm.ppc.altivec.stvxl
5210 
5211   vec_stl(vus, 0, &vus);
5212 // CHECK: @llvm.ppc.altivec.stvxl
5213 // CHECK-LE: @llvm.ppc.altivec.stvxl
5214 
5215   vec_stl(vus, 0, &param_us);
5216 // CHECK: @llvm.ppc.altivec.stvxl
5217 // CHECK-LE: @llvm.ppc.altivec.stvxl
5218 
5219   vec_stl(vbs, 0, &param_s);
5220 // CHECK: @llvm.ppc.altivec.stvxl
5221 // CHECK-LE: @llvm.ppc.altivec.stvxl
5222 
5223   vec_stl(vbs, 0, &param_us);
5224 // CHECK: @llvm.ppc.altivec.stvxl
5225 // CHECK-LE: @llvm.ppc.altivec.stvxl
5226 
5227   vec_stl(vbs, 0, &vbs);
5228 // CHECK: @llvm.ppc.altivec.stvxl
5229 // CHECK-LE: @llvm.ppc.altivec.stvxl
5230 
5231   vec_stl(vp, 0, &param_s);
5232 // CHECK: @llvm.ppc.altivec.stvxl
5233 // CHECK-LE: @llvm.ppc.altivec.stvxl
5234 
5235   vec_stl(vp, 0, &param_us);
5236 // CHECK: @llvm.ppc.altivec.stvxl
5237 // CHECK-LE: @llvm.ppc.altivec.stvxl
5238 
5239   vec_stl(vp, 0, &vp);
5240 // CHECK: @llvm.ppc.altivec.stvxl
5241 // CHECK-LE: @llvm.ppc.altivec.stvxl
5242 
5243   vec_stl(vi, 0, &vi);
5244 // CHECK: @llvm.ppc.altivec.stvxl
5245 // CHECK-LE: @llvm.ppc.altivec.stvxl
5246 
5247   vec_stl(vi, 0, &param_i);
5248 // CHECK: @llvm.ppc.altivec.stvxl
5249 // CHECK-LE: @llvm.ppc.altivec.stvxl
5250 
5251   vec_stl(vui, 0, &vui);
5252 // CHECK: @llvm.ppc.altivec.stvxl
5253 // CHECK-LE: @llvm.ppc.altivec.stvxl
5254 
5255   vec_stl(vui, 0, &param_ui);
5256 // CHECK: @llvm.ppc.altivec.stvxl
5257 // CHECK-LE: @llvm.ppc.altivec.stvxl
5258 
5259   vec_stl(vbi, 0, &param_i);
5260 // CHECK: @llvm.ppc.altivec.stvxl
5261 // CHECK-LE: @llvm.ppc.altivec.stvxl
5262 
5263   vec_stl(vbi, 0, &param_ui);
5264 // CHECK: @llvm.ppc.altivec.stvxl
5265 // CHECK-LE: @llvm.ppc.altivec.stvxl
5266 
5267   vec_stl(vbi, 0, &vbi);
5268 // CHECK: @llvm.ppc.altivec.stvxl
5269 // CHECK-LE: @llvm.ppc.altivec.stvxl
5270 
5271   vec_stl(vf, 0, &vf);
5272 // CHECK: @llvm.ppc.altivec.stvxl
5273 // CHECK-LE: @llvm.ppc.altivec.stvxl
5274 
5275   vec_stl(vf, 0, &param_f);
5276 // CHECK: @llvm.ppc.altivec.stvxl
5277 // CHECK-LE: @llvm.ppc.altivec.stvxl
5278 
5279   vec_stvxl(vsc, 0, &vsc);
5280 // CHECK: @llvm.ppc.altivec.stvxl
5281 // CHECK-LE: @llvm.ppc.altivec.stvxl
5282 
5283   vec_stvxl(vsc, 0, &param_sc);
5284 // CHECK: @llvm.ppc.altivec.stvxl
5285 // CHECK-LE: @llvm.ppc.altivec.stvxl
5286 
5287   vec_stvxl(vuc, 0, &vuc);
5288 // CHECK: @llvm.ppc.altivec.stvxl
5289 // CHECK-LE: @llvm.ppc.altivec.stvxl
5290 
5291   vec_stvxl(vuc, 0, &param_uc);
5292 // CHECK: @llvm.ppc.altivec.stvxl
5293 // CHECK-LE: @llvm.ppc.altivec.stvxl
5294 
5295   vec_stvxl(vbc, 0, &param_sc);
5296 // CHECK: @llvm.ppc.altivec.stvxl
5297 // CHECK-LE: @llvm.ppc.altivec.stvxl
5298 
5299   vec_stvxl(vbc, 0, &param_uc);
5300 // CHECK: @llvm.ppc.altivec.stvxl
5301 // CHECK-LE: @llvm.ppc.altivec.stvxl
5302 
5303   vec_stvxl(vbc, 0, &vbc);
5304 // CHECK: @llvm.ppc.altivec.stvxl
5305 // CHECK-LE: @llvm.ppc.altivec.stvxl
5306 
5307   vec_stvxl(vs, 0, &vs);
5308 // CHECK: @llvm.ppc.altivec.stvxl
5309 // CHECK-LE: @llvm.ppc.altivec.stvxl
5310 
5311   vec_stvxl(vs, 0, &param_s);
5312 // CHECK: @llvm.ppc.altivec.stvxl
5313 // CHECK-LE: @llvm.ppc.altivec.stvxl
5314 
5315   vec_stvxl(vus, 0, &vus);
5316 // CHECK: @llvm.ppc.altivec.stvxl
5317 // CHECK-LE: @llvm.ppc.altivec.stvxl
5318 
5319   vec_stvxl(vus, 0, &param_us);
5320 // CHECK: @llvm.ppc.altivec.stvxl
5321 // CHECK-LE: @llvm.ppc.altivec.stvxl
5322 
5323   vec_stvxl(vbs, 0, &param_s);
5324 // CHECK: @llvm.ppc.altivec.stvxl
5325 // CHECK-LE: @llvm.ppc.altivec.stvxl
5326 
5327   vec_stvxl(vbs, 0, &param_us);
5328 // CHECK: @llvm.ppc.altivec.stvxl
5329 // CHECK-LE: @llvm.ppc.altivec.stvxl
5330 
5331   vec_stvxl(vbs, 0, &vbs);
5332 // CHECK: @llvm.ppc.altivec.stvxl
5333 // CHECK-LE: @llvm.ppc.altivec.stvxl
5334 
5335   vec_stvxl(vp, 0, &param_s);
5336 // CHECK: @llvm.ppc.altivec.stvxl
5337 // CHECK-LE: @llvm.ppc.altivec.stvxl
5338 
5339   vec_stvxl(vp, 0, &param_us);
5340 // CHECK: @llvm.ppc.altivec.stvxl
5341 // CHECK-LE: @llvm.ppc.altivec.stvxl
5342 
5343   vec_stvxl(vp, 0, &vp);
5344 // CHECK: @llvm.ppc.altivec.stvxl
5345 // CHECK-LE: @llvm.ppc.altivec.stvxl
5346 
5347   vec_stvxl(vi, 0, &vi);
5348 // CHECK: @llvm.ppc.altivec.stvxl
5349 // CHECK-LE: @llvm.ppc.altivec.stvxl
5350 
5351   vec_stvxl(vi, 0, &param_i);
5352 // CHECK: @llvm.ppc.altivec.stvxl
5353 // CHECK-LE: @llvm.ppc.altivec.stvxl
5354 
5355   vec_stvxl(vui, 0, &vui);
5356 // CHECK: @llvm.ppc.altivec.stvxl
5357 // CHECK-LE: @llvm.ppc.altivec.stvxl
5358 
5359   vec_stvxl(vui, 0, &param_ui);
5360 // CHECK: @llvm.ppc.altivec.stvxl
5361 // CHECK-LE: @llvm.ppc.altivec.stvxl
5362 
5363   vec_stvxl(vbi, 0, &param_i);
5364 // CHECK: @llvm.ppc.altivec.stvxl
5365 // CHECK-LE: @llvm.ppc.altivec.stvxl
5366 
5367   vec_stvxl(vbi, 0, &param_ui);
5368 // CHECK: @llvm.ppc.altivec.stvxl
5369 // CHECK-LE: @llvm.ppc.altivec.stvxl
5370 
5371   vec_stvxl(vbi, 0, &vbi);
5372 // CHECK: @llvm.ppc.altivec.stvxl
5373 // CHECK-LE: @llvm.ppc.altivec.stvxl
5374 
5375   vec_stvxl(vf, 0, &vf);
5376 // CHECK: @llvm.ppc.altivec.stvxl
5377 // CHECK-LE: @llvm.ppc.altivec.stvxl
5378 
5379   vec_stvxl(vf, 0, &param_f);
5380 // CHECK: @llvm.ppc.altivec.stvxl
5381 // CHECK-LE: @llvm.ppc.altivec.stvxl
5382 
5383   /* vec_sub */
5384   res_vsc = vec_sub(vsc, vsc);
5385 // CHECK: sub <16 x i8>
5386 // CHECK-LE: sub <16 x i8>
5387 
5388   res_vsc = vec_sub(vbc, vsc);
5389 // CHECK: sub <16 x i8>
5390 // CHECK-LE: sub <16 x i8>
5391 
5392   res_vsc = vec_sub(vsc, vbc);
5393 // CHECK: sub <16 x i8>
5394 // CHECK-LE: sub <16 x i8>
5395 
5396   res_vuc = vec_sub(vuc, vuc);
5397 // CHECK: sub <16 x i8>
5398 // CHECK-LE: sub <16 x i8>
5399 
5400   res_vuc = vec_sub(vbc, vuc);
5401 // CHECK: sub <16 x i8>
5402 // CHECK-LE: sub <16 x i8>
5403 
5404   res_vuc = vec_sub(vuc, vbc);
5405 // CHECK: sub <16 x i8>
5406 // CHECK-LE: sub <16 x i8>
5407 
5408   res_vs  = vec_sub(vs, vs);
5409 // CHECK: sub <8 x i16>
5410 // CHECK-LE: sub <8 x i16>
5411 
5412   res_vs  = vec_sub(vbs, vs);
5413 // CHECK: sub <8 x i16>
5414 // CHECK-LE: sub <8 x i16>
5415 
5416   res_vs  = vec_sub(vs, vbs);
5417 // CHECK: sub <8 x i16>
5418 // CHECK-LE: sub <8 x i16>
5419 
5420   res_vus = vec_sub(vus, vus);
5421 // CHECK: sub <8 x i16>
5422 // CHECK-LE: sub <8 x i16>
5423 
5424   res_vus = vec_sub(vbs, vus);
5425 // CHECK: sub <8 x i16>
5426 // CHECK-LE: sub <8 x i16>
5427 
5428   res_vus = vec_sub(vus, vbs);
5429 // CHECK: sub <8 x i16>
5430 // CHECK-LE: sub <8 x i16>
5431 
5432   res_vi  = vec_sub(vi, vi);
5433 // CHECK: sub <4 x i32>
5434 // CHECK-LE: sub <4 x i32>
5435 
5436   res_vi  = vec_sub(vbi, vi);
5437 // CHECK: sub <4 x i32>
5438 // CHECK-LE: sub <4 x i32>
5439 
5440   res_vi  = vec_sub(vi, vbi);
5441 // CHECK: sub <4 x i32>
5442 // CHECK-LE: sub <4 x i32>
5443 
5444   res_vui = vec_sub(vui, vui);
5445 // CHECK: sub <4 x i32>
5446 // CHECK-LE: sub <4 x i32>
5447 
5448   res_vui = vec_sub(vbi, vui);
5449 // CHECK: sub <4 x i32>
5450 // CHECK-LE: sub <4 x i32>
5451 
5452   res_vui = vec_sub(vui, vbi);
5453 // CHECK: sub <4 x i32>
5454 // CHECK-LE: sub <4 x i32>
5455 
5456   res_vf  = vec_sub(vf, vf);
5457 // CHECK: fsub <4 x float>
5458 // CHECK-LE: fsub <4 x float>
5459 
5460 
5461 
5462   res_vsc = vec_vsububm(vsc, vsc);
5463 // CHECK: sub <16 x i8>
5464 // CHECK-LE: sub <16 x i8>
5465 
5466   res_vsc = vec_vsububm(vbc, vsc);
5467 // CHECK: sub <16 x i8>
5468 // CHECK-LE: sub <16 x i8>
5469 
5470   res_vsc = vec_vsububm(vsc, vbc);
5471 // CHECK: sub <16 x i8>
5472 // CHECK-LE: sub <16 x i8>
5473 
5474   res_vuc = vec_vsububm(vuc, vuc);
5475 // CHECK: sub <16 x i8>
5476 // CHECK-LE: sub <16 x i8>
5477 
5478   res_vuc = vec_vsububm(vbc, vuc);
5479 // CHECK: sub <16 x i8>
5480 // CHECK-LE: sub <16 x i8>
5481 
5482   res_vuc = vec_vsububm(vuc, vbc);
5483 // CHECK: sub <16 x i8>
5484 // CHECK-LE: sub <16 x i8>
5485 
5486   res_vs  = vec_vsubuhm(vs, vs);
5487 // CHECK: sub <8 x i16>
5488 // CHECK-LE: sub <8 x i16>
5489 
5490   res_vs  = vec_vsubuhm(vbs, vs);
5491 // CHECK: sub <8 x i16>
5492 // CHECK-LE: sub <8 x i16>
5493 
5494   res_vs  = vec_vsubuhm(vs, vbs);
5495 // CHECK: sub <8 x i16>
5496 // CHECK-LE: sub <8 x i16>
5497 
5498   res_vus = vec_vsubuhm(vus, vus);
5499 // CHECK: sub <8 x i16>
5500 // CHECK-LE: sub <8 x i16>
5501 
5502   res_vus = vec_vsubuhm(vbs, vus);
5503 // CHECK: sub <8 x i16>
5504 // CHECK-LE: sub <8 x i16>
5505 
5506   res_vus = vec_vsubuhm(vus, vbs);
5507 // CHECK: sub <8 x i16>
5508 // CHECK-LE: sub <8 x i16>
5509 
5510   res_vi  = vec_vsubuwm(vi, vi);
5511 // CHECK: sub <4 x i32>
5512 // CHECK-LE: sub <4 x i32>
5513 
5514   res_vi  = vec_vsubuwm(vbi, vi);
5515 // CHECK: sub <4 x i32>
5516 // CHECK-LE: sub <4 x i32>
5517 
5518   res_vi  = vec_vsubuwm(vi, vbi);
5519 // CHECK: sub <4 x i32>
5520 // CHECK-LE: sub <4 x i32>
5521 
5522   res_vui = vec_vsubuwm(vui, vui);
5523 // CHECK: sub <4 x i32>
5524 // CHECK-LE: sub <4 x i32>
5525 
5526   res_vui = vec_vsubuwm(vbi, vui);
5527 // CHECK: sub <4 x i32>
5528 // CHECK-LE: sub <4 x i32>
5529 
5530   res_vui = vec_vsubuwm(vui, vbi);
5531 // CHECK: sub <4 x i32>
5532 // CHECK-LE: sub <4 x i32>
5533 
5534   res_vf  = vec_vsubfp(vf, vf);
5535 // CHECK: fsub <4 x float>
5536 // CHECK-LE: fsub <4 x float>
5537 
5538   /* vec_subc */
5539   res_vui = vec_subc(vui, vui);
5540 // CHECK: @llvm.ppc.altivec.vsubcuw
5541 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5542 
5543   res_vi = vec_subc(vi, vi);
5544 // CHECK: @llvm.ppc.altivec.vsubcuw
5545 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5546 
5547   res_vui = vec_vsubcuw(vui, vui);
5548 // CHECK: @llvm.ppc.altivec.vsubcuw
5549 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5550 
5551   /* vec_subs */
5552   res_vsc = vec_subs(vsc, vsc);
5553 // CHECK: @llvm.ppc.altivec.vsubsbs
5554 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5555 
5556   res_vsc = vec_subs(vbc, vsc);
5557 // CHECK: @llvm.ppc.altivec.vsubsbs
5558 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5559 
5560   res_vsc = vec_subs(vsc, vbc);
5561 // CHECK: @llvm.ppc.altivec.vsubsbs
5562 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5563 
5564   res_vuc = vec_subs(vuc, vuc);
5565 // CHECK: @llvm.ppc.altivec.vsububs
5566 // CHECK-LE: @llvm.ppc.altivec.vsububs
5567 
5568   res_vuc = vec_subs(vbc, vuc);
5569 // CHECK: @llvm.ppc.altivec.vsububs
5570 // CHECK-LE: @llvm.ppc.altivec.vsububs
5571 
5572   res_vuc = vec_subs(vuc, vbc);
5573 // CHECK: @llvm.ppc.altivec.vsububs
5574 // CHECK-LE: @llvm.ppc.altivec.vsububs
5575 
5576   res_vs  = vec_subs(vs, vs);
5577 // CHECK: @llvm.ppc.altivec.vsubshs
5578 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5579 
5580   res_vs  = vec_subs(vbs, vs);
5581 // CHECK: @llvm.ppc.altivec.vsubshs
5582 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5583 
5584   res_vs  = vec_subs(vs, vbs);
5585 // CHECK: @llvm.ppc.altivec.vsubshs
5586 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5587 
5588   res_vus = vec_subs(vus, vus);
5589 // CHECK: @llvm.ppc.altivec.vsubuhs
5590 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5591 
5592   res_vus = vec_subs(vbs, vus);
5593 // CHECK: @llvm.ppc.altivec.vsubuhs
5594 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5595 
5596   res_vus = vec_subs(vus, vbs);
5597 // CHECK: @llvm.ppc.altivec.vsubuhs
5598 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5599 
5600   res_vi  = vec_subs(vi, vi);
5601 // CHECK: @llvm.ppc.altivec.vsubsws
5602 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5603 
5604   res_vi  = vec_subs(vbi, vi);
5605 // CHECK: @llvm.ppc.altivec.vsubsws
5606 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5607 
5608   res_vi  = vec_subs(vi, vbi);
5609 // CHECK: @llvm.ppc.altivec.vsubsws
5610 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5611 
5612   res_vui = vec_subs(vui, vui);
5613 // CHECK: @llvm.ppc.altivec.vsubuws
5614 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5615 
5616   res_vui = vec_subs(vbi, vui);
5617 // CHECK: @llvm.ppc.altivec.vsubuws
5618 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5619 
5620   res_vui = vec_subs(vui, vbi);
5621 // CHECK: @llvm.ppc.altivec.vsubuws
5622 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5623 
5624   res_vi = vec_sube(vi, vi, vi);
5625 // CHECK: and <4 x i32>
5626 // CHECK: xor <4 x i32> {{%[0-9]+}}, splat (i32 -1)
5627 // CHECK: add <4 x i32>
5628 // CHECK: add <4 x i32>
5629 // CHECK-LE: and <4 x i32>
5630 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, splat (i32 -1)
5631 // CHECK-LE: add <4 x i32>
5632 // CHECK-LE: add <4 x i32>
5633 
5634   res_vui = vec_sube(vui, vui, vui);
5635 // CHECK: and <4 x i32>
5636 // CHECK: xor <4 x i32> {{%[0-9]+}}, splat (i32 -1)
5637 // CHECK: add <4 x i32>
5638 // CHECK: add <4 x i32>
5639 // CHECK-LE: and <4 x i32>
5640 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, splat (i32 -1)
5641 // CHECK-LE: add <4 x i32>
5642 // CHECK-LE: add <4 x i32>
5643 
5644   res_vsc = vec_vsubsbs(vsc, vsc);
5645 // CHECK: @llvm.ppc.altivec.vsubsbs
5646 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5647 
5648   res_vsc = vec_vsubsbs(vbc, vsc);
5649 // CHECK: @llvm.ppc.altivec.vsubsbs
5650 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5651 
5652   res_vsc = vec_vsubsbs(vsc, vbc);
5653 // CHECK: @llvm.ppc.altivec.vsubsbs
5654 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5655 
5656   res_vuc = vec_vsububs(vuc, vuc);
5657 // CHECK: @llvm.ppc.altivec.vsububs
5658 // CHECK-LE: @llvm.ppc.altivec.vsububs
5659 
5660   res_vuc = vec_vsububs(vbc, vuc);
5661 // CHECK: @llvm.ppc.altivec.vsububs
5662 // CHECK-LE: @llvm.ppc.altivec.vsububs
5663 
5664   res_vuc = vec_vsububs(vuc, vbc);
5665 // CHECK: @llvm.ppc.altivec.vsububs
5666 // CHECK-LE: @llvm.ppc.altivec.vsububs
5667 
5668   res_vs  = vec_vsubshs(vs, vs);
5669 // CHECK: @llvm.ppc.altivec.vsubshs
5670 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5671 
5672   res_vs  = vec_vsubshs(vbs, vs);
5673 // CHECK: @llvm.ppc.altivec.vsubshs
5674 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5675 
5676   res_vs  = vec_vsubshs(vs, vbs);
5677 // CHECK: @llvm.ppc.altivec.vsubshs
5678 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5679 
5680   res_vus = vec_vsubuhs(vus, vus);
5681 // CHECK: @llvm.ppc.altivec.vsubuhs
5682 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5683 
5684   res_vus = vec_vsubuhs(vbs, vus);
5685 // CHECK: @llvm.ppc.altivec.vsubuhs
5686 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5687 
5688   res_vus = vec_vsubuhs(vus, vbs);
5689 // CHECK: @llvm.ppc.altivec.vsubuhs
5690 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5691 
5692   res_vi  = vec_vsubsws(vi, vi);
5693 // CHECK: @llvm.ppc.altivec.vsubsws
5694 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5695 
5696   res_vi  = vec_vsubsws(vbi, vi);
5697 // CHECK: @llvm.ppc.altivec.vsubsws
5698 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5699 
5700   res_vi  = vec_vsubsws(vi, vbi);
5701 // CHECK: @llvm.ppc.altivec.vsubsws
5702 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5703 
5704   res_vui = vec_vsubuws(vui, vui);
5705 // CHECK: @llvm.ppc.altivec.vsubuws
5706 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5707 
5708   res_vui = vec_vsubuws(vbi, vui);
5709 // CHECK: @llvm.ppc.altivec.vsubuws
5710 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5711 
5712   res_vui = vec_vsubuws(vui, vbi);
5713 // CHECK: @llvm.ppc.altivec.vsubuws
5714 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5715 
5716   /* vec_sum4s */
5717   res_vi  = vec_sum4s(vsc, vi);
5718 // CHECK: @llvm.ppc.altivec.vsum4sbs
5719 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5720 
5721   res_vui = vec_sum4s(vuc, vui);
5722 // CHECK: @llvm.ppc.altivec.vsum4ubs
5723 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5724 
5725   res_vi  = vec_sum4s(vs, vi);
5726 // CHECK: @llvm.ppc.altivec.vsum4shs
5727 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5728 
5729   res_vi  = vec_vsum4sbs(vsc, vi);
5730 // CHECK: @llvm.ppc.altivec.vsum4sbs
5731 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5732 
5733   res_vui = vec_vsum4ubs(vuc, vui);
5734 // CHECK: @llvm.ppc.altivec.vsum4ubs
5735 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5736 
5737   res_vi  = vec_vsum4shs(vs, vi);
5738 // CHECK: @llvm.ppc.altivec.vsum4shs
5739 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5740 
5741   /* vec_sum2s */
5742   res_vi = vec_sum2s(vi, vi);
5743 // CHECK: @llvm.ppc.altivec.vsum2sws
5744 // CHECK-LE: @llvm.ppc.altivec.vperm
5745 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5746 // CHECK-LE: @llvm.ppc.altivec.vperm
5747 
5748   res_vi = vec_vsum2sws(vi, vi);
5749 // CHECK: @llvm.ppc.altivec.vsum2sws
5750 // CHECK-LE: @llvm.ppc.altivec.vperm
5751 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5752 // CHECK-LE: @llvm.ppc.altivec.vperm
5753 
5754   /* vec_sums */
5755   res_vi = vec_sums(vi, vi);
5756 // CHECK: @llvm.ppc.altivec.vsumsws
5757 // CHECK-LE: @llvm.ppc.altivec.vperm
5758 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5759 
5760   res_vi = vec_vsumsws(vi, vi);
5761 // CHECK: @llvm.ppc.altivec.vsumsws
5762 // CHECK-LE: @llvm.ppc.altivec.vperm
5763 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5764 
5765   /* vec_trunc */
5766   res_vf = vec_trunc(vf);
5767 // CHECK: @llvm.ppc.altivec.vrfiz
5768 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5769 
5770   res_vf = vec_vrfiz(vf);
5771 // CHECK: @llvm.ppc.altivec.vrfiz
5772 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5773 
5774   /* vec_unpackh */
5775   res_vs  = vec_unpackh(vsc);
5776 // CHECK: @llvm.ppc.altivec.vupkhsb
5777 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5778 
5779   res_vbs = vec_unpackh(vbc);
5780 // CHECK: @llvm.ppc.altivec.vupkhsb
5781 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5782 
5783   res_vi  = vec_unpackh(vs);
5784 // CHECK: @llvm.ppc.altivec.vupkhsh
5785 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5786 
5787   res_vbi = vec_unpackh(vbs);
5788 // CHECK: @llvm.ppc.altivec.vupkhsh
5789 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5790 
5791   res_vui = vec_unpackh(vp);
5792 // CHECK: @llvm.ppc.altivec.vupkhpx
5793 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5794 
5795   res_vui = vec_vupkhpx(vp);
5796 // CHECK: @llvm.ppc.altivec.vupkhpx
5797 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5798 
5799   res_vs  = vec_vupkhsb(vsc);
5800 // CHECK: @llvm.ppc.altivec.vupkhsb
5801 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5802 
5803   res_vbs = vec_vupkhsb(vbc);
5804 // CHECK: @llvm.ppc.altivec.vupkhsb
5805 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5806 
5807   res_vi  = vec_vupkhsh(vs);
5808 // CHECK: @llvm.ppc.altivec.vupkhsh
5809 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5810 
5811   res_vbi = vec_vupkhsh(vbs);
5812 // CHECK: @llvm.ppc.altivec.vupkhsh
5813 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5814 
5815   res_vui = vec_vupkhsh(vp);
5816 // CHECK: @llvm.ppc.altivec.vupkhpx
5817 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5818 
5819   /* vec_unpackl */
5820   res_vs  = vec_unpackl(vsc);
5821 // CHECK: @llvm.ppc.altivec.vupklsb
5822 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5823 
5824   res_vbs = vec_unpackl(vbc);
5825 // CHECK: @llvm.ppc.altivec.vupklsb
5826 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5827 
5828   res_vi  = vec_unpackl(vs);
5829 // CHECK: @llvm.ppc.altivec.vupklsh
5830 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5831 
5832   res_vbi = vec_unpackl(vbs);
5833 // CHECK: @llvm.ppc.altivec.vupklsh
5834 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5835 
5836   res_vui = vec_unpackl(vp);
5837 // CHECK: @llvm.ppc.altivec.vupklpx
5838 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5839 
5840   res_vui = vec_vupklpx(vp);
5841 // CHECK: @llvm.ppc.altivec.vupklpx
5842 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5843 
5844   res_vs  = vec_vupklsb(vsc);
5845 // CHECK: @llvm.ppc.altivec.vupklsb
5846 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5847 
5848   res_vbs = vec_vupklsb(vbc);
5849 // CHECK: @llvm.ppc.altivec.vupklsb
5850 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5851 
5852   res_vi  = vec_vupklsh(vs);
5853 // CHECK: @llvm.ppc.altivec.vupklsh
5854 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5855 
5856   res_vbi = vec_vupklsh(vbs);
5857 // CHECK: @llvm.ppc.altivec.vupklsh
5858 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5859 
5860   res_vui = vec_vupklsh(vp);
5861 // CHECK: @llvm.ppc.altivec.vupklpx
5862 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5863 
5864   /* vec_xor */
5865   res_vsc = vec_xor(vsc, vsc);
5866 // CHECK: xor <16 x i8>
5867 // CHECK-LE: xor <16 x i8>
5868 
5869   res_vsc = vec_xor(vbc, vsc);
5870 // CHECK: xor <16 x i8>
5871 // CHECK-LE: xor <16 x i8>
5872 
5873   res_vsc = vec_xor(vsc, vbc);
5874 // CHECK: xor <16 x i8>
5875 // CHECK-LE: xor <16 x i8>
5876 
5877   res_vuc = vec_xor(vuc, vuc);
5878 // CHECK: xor <16 x i8>
5879 // CHECK-LE: xor <16 x i8>
5880 
5881   res_vuc = vec_xor(vbc, vuc);
5882 // CHECK: xor <16 x i8>
5883 // CHECK-LE: xor <16 x i8>
5884 
5885   res_vuc = vec_xor(vuc, vbc);
5886 // CHECK: xor <16 x i8>
5887 // CHECK-LE: xor <16 x i8>
5888 
5889   res_vbc = vec_xor(vbc, vbc);
5890 // CHECK: xor <16 x i8>
5891 // CHECK-LE: xor <16 x i8>
5892 
5893   res_vs  = vec_xor(vs, vs);
5894 // CHECK: xor <8 x i16>
5895 // CHECK-LE: xor <8 x i16>
5896 
5897   res_vs  = vec_xor(vbs, vs);
5898 // CHECK: xor <8 x i16>
5899 // CHECK-LE: xor <8 x i16>
5900 
5901   res_vs  = vec_xor(vs, vbs);
5902 // CHECK: xor <8 x i16>
5903 // CHECK-LE: xor <8 x i16>
5904 
5905   res_vus = vec_xor(vus, vus);
5906 // CHECK: xor <8 x i16>
5907 // CHECK-LE: xor <8 x i16>
5908 
5909   res_vus = vec_xor(vbs, vus);
5910 // CHECK: xor <8 x i16>
5911 // CHECK-LE: xor <8 x i16>
5912 
5913   res_vus = vec_xor(vus, vbs);
5914 // CHECK: xor <8 x i16>
5915 // CHECK-LE: xor <8 x i16>
5916 
5917   res_vbs = vec_xor(vbs, vbs);
5918 // CHECK: xor <8 x i16>
5919 // CHECK-LE: xor <8 x i16>
5920 
5921   res_vi  = vec_xor(vi, vi);
5922 // CHECK: xor <4 x i32>
5923 // CHECK-LE: xor <4 x i32>
5924 
5925   res_vi  = vec_xor(vbi, vi);
5926 // CHECK: xor <4 x i32>
5927 // CHECK-LE: xor <4 x i32>
5928 
5929   res_vi  = vec_xor(vi, vbi);
5930 // CHECK: xor <4 x i32>
5931 // CHECK-LE: xor <4 x i32>
5932 
5933   res_vui = vec_xor(vui, vui);
5934 // CHECK: xor <4 x i32>
5935 // CHECK-LE: xor <4 x i32>
5936 
5937   res_vui = vec_xor(vbi, vui);
5938 // CHECK: xor <4 x i32>
5939 // CHECK-LE: xor <4 x i32>
5940 
5941   res_vui = vec_xor(vui, vbi);
5942 // CHECK: xor <4 x i32>
5943 // CHECK-LE: xor <4 x i32>
5944 
5945   res_vbi = vec_xor(vbi, vbi);
5946 // CHECK: xor <4 x i32>
5947 // CHECK-LE: xor <4 x i32>
5948 
5949   res_vf  = vec_xor(vf, vf);
5950 // CHECK: xor <4 x i32>
5951 // CHECK-LE: xor <4 x i32>
5952 
5953   res_vf  = vec_xor(vbi, vf);
5954 // CHECK: xor <4 x i32>
5955 // CHECK-LE: xor <4 x i32>
5956 
5957   res_vf  = vec_xor(vf, vbi);
5958 // CHECK: xor <4 x i32>
5959 // CHECK-LE: xor <4 x i32>
5960 
5961   res_vsc = vec_vxor(vsc, vsc);
5962 // CHECK: xor <16 x i8>
5963 // CHECK-LE: xor <16 x i8>
5964 
5965   res_vsc = vec_vxor(vbc, vsc);
5966 // CHECK: xor <16 x i8>
5967 // CHECK-LE: xor <16 x i8>
5968 
5969   res_vsc = vec_vxor(vsc, vbc);
5970 // CHECK: xor <16 x i8>
5971 // CHECK-LE: xor <16 x i8>
5972 
5973   res_vuc = vec_vxor(vuc, vuc);
5974 // CHECK: xor <16 x i8>
5975 // CHECK-LE: xor <16 x i8>
5976 
5977   res_vuc = vec_vxor(vbc, vuc);
5978 // CHECK: xor <16 x i8>
5979 // CHECK-LE: xor <16 x i8>
5980 
5981   res_vuc = vec_vxor(vuc, vbc);
5982 // CHECK: xor <16 x i8>
5983 // CHECK-LE: xor <16 x i8>
5984 
5985   res_vbc = vec_vxor(vbc, vbc);
5986 // CHECK: xor <16 x i8>
5987 // CHECK-LE: xor <16 x i8>
5988 
5989   res_vs  = vec_vxor(vs, vs);
5990 // CHECK: xor <8 x i16>
5991 // CHECK-LE: xor <8 x i16>
5992 
5993   res_vs  = vec_vxor(vbs, vs);
5994 // CHECK: xor <8 x i16>
5995 // CHECK-LE: xor <8 x i16>
5996 
5997   res_vs  = vec_vxor(vs, vbs);
5998 // CHECK: xor <8 x i16>
5999 // CHECK-LE: xor <8 x i16>
6000 
6001   res_vus = vec_vxor(vus, vus);
6002 // CHECK: xor <8 x i16>
6003 // CHECK-LE: xor <8 x i16>
6004 
6005   res_vus = vec_vxor(vbs, vus);
6006 // CHECK: xor <8 x i16>
6007 // CHECK-LE: xor <8 x i16>
6008 
6009   res_vus = vec_vxor(vus, vbs);
6010 // CHECK: xor <8 x i16>
6011 // CHECK-LE: xor <8 x i16>
6012 
6013   res_vbs = vec_vxor(vbs, vbs);
6014 // CHECK: xor <8 x i16>
6015 // CHECK-LE: xor <8 x i16>
6016 
6017   res_vi  = vec_vxor(vi, vi);
6018 // CHECK: xor <4 x i32>
6019 // CHECK-LE: xor <4 x i32>
6020 
6021   res_vi  = vec_vxor(vbi, vi);
6022 // CHECK: xor <4 x i32>
6023 // CHECK-LE: xor <4 x i32>
6024 
6025   res_vi  = vec_vxor(vi, vbi);
6026 // CHECK: xor <4 x i32>
6027 // CHECK-LE: xor <4 x i32>
6028 
6029   res_vui = vec_vxor(vui, vui);
6030 // CHECK: xor <4 x i32>
6031 // CHECK-LE: xor <4 x i32>
6032 
6033   res_vui = vec_vxor(vbi, vui);
6034 // CHECK: xor <4 x i32>
6035 // CHECK-LE: xor <4 x i32>
6036 
6037   res_vui = vec_vxor(vui, vbi);
6038 // CHECK: xor <4 x i32>
6039 // CHECK-LE: xor <4 x i32>
6040 
6041   res_vbi = vec_vxor(vbi, vbi);
6042 // CHECK: xor <4 x i32>
6043 // CHECK-LE: xor <4 x i32>
6044 
6045   res_vf  = vec_vxor(vf, vf);
6046 // CHECK: xor <4 x i32>
6047 // CHECK-LE: xor <4 x i32>
6048 
6049   res_vf  = vec_vxor(vbi, vf);
6050 // CHECK: xor <4 x i32>
6051 // CHECK-LE: xor <4 x i32>
6052 
6053   res_vf  = vec_vxor(vf, vbi);
6054 // CHECK: xor <4 x i32>
6055 // CHECK-LE: xor <4 x i32>
6056 
6057   /* ------------------------------ extensions -------------------------------------- */
6058 
6059   /* vec_extract */
6060   res_sc = vec_extract(vsc, param_i);
6061 // CHECK: extractelement <16 x i8>
6062 // CHECK-LE: extractelement <16 x i8>
6063 
6064   res_uc = vec_extract(vuc, param_i);
6065 // CHECK: extractelement <16 x i8>
6066 // CHECK-LE: extractelement <16 x i8>
6067 
6068   res_uc = vec_extract(vbc, param_i);
6069 // CHECK: extractelement <16 x i8>
6070 // CHECK-LE: extractelement <16 x i8>
6071 
6072   res_s  = vec_extract(vs, param_i);
6073 // CHECK: extractelement <8 x i16>
6074 // CHECK-LE: extractelement <8 x i16>
6075 
6076   res_us = vec_extract(vus, param_i);
6077 // CHECK: extractelement <8 x i16>
6078 // CHECK-LE: extractelement <8 x i16>
6079 
6080   res_us = vec_extract(vbs, param_i);
6081 // CHECK: extractelement <8 x i16>
6082 // CHECK-LE: extractelement <8 x i16>
6083 
6084   res_i  = vec_extract(vi, param_i);
6085 // CHECK: extractelement <4 x i32>
6086 // CHECK-LE: extractelement <4 x i32>
6087 
6088   res_ui = vec_extract(vui, param_i);
6089 // CHECK: extractelement <4 x i32>
6090 // CHECK-LE: extractelement <4 x i32>
6091 
6092   res_ui = vec_extract(vbi, param_i);
6093 // CHECK: extractelement <4 x i32>
6094 // CHECK-LE: extractelement <4 x i32>
6095 
6096   res_f  = vec_extract(vf, param_i);
6097 // CHECK: extractelement <4 x float>
6098 // CHECK-LE: extractelement <4 x float>
6099 
6100   /* vec_insert */
6101   res_vsc = vec_insert(param_sc, vsc, param_i);
6102 // CHECK: insertelement <16 x i8>
6103 // CHECK-LE: insertelement <16 x i8>
6104 
6105   res_vuc = vec_insert(param_uc, vuc, param_i);
6106 // CHECK: insertelement <16 x i8>
6107 // CHECK-LE: insertelement <16 x i8>
6108 
6109   res_vbc = vec_insert(param_uc, vbc, param_i);
6110 // CHECK: insertelement <16 x i8>
6111 // CHECK-LE: insertelement <16 x i8>
6112 
6113   res_vs  = vec_insert(param_s, vs, param_i);
6114 // CHECK: insertelement <8 x i16>
6115 // CHECK-LE: insertelement <8 x i16>
6116 
6117   res_vus = vec_insert(param_us, vus, param_i);
6118 // CHECK: insertelement <8 x i16>
6119 // CHECK-LE: insertelement <8 x i16>
6120 
6121   res_vbs = vec_insert(param_us, vbs, param_i);
6122 // CHECK: insertelement <8 x i16>
6123 // CHECK-LE: insertelement <8 x i16>
6124 
6125   res_vi  = vec_insert(param_i, vi, param_i);
6126 // CHECK: insertelement <4 x i32>
6127 // CHECK-LE: insertelement <4 x i32>
6128 
6129   res_vui = vec_insert(param_ui, vui, param_i);
6130 // CHECK: insertelement <4 x i32>
6131 // CHECK-LE: insertelement <4 x i32>
6132 
6133   res_vbi = vec_insert(param_ui, vbi, param_i);
6134 // CHECK: insertelement <4 x i32>
6135 // CHECK-LE: insertelement <4 x i32>
6136 
6137   res_vf  = vec_insert(param_f, vf, param_i);
6138 // CHECK: insertelement <4 x float>
6139 // CHECK-LE: insertelement <4 x float>
6140 
6141   /* vec_lvlx */
6142   res_vsc = vec_lvlx(0, param_sc_ld);
6143 // CHECK: @llvm.ppc.altivec.lvx
6144 // CHECK: @llvm.ppc.altivec.lvsl
6145 // CHECK: store <16 x i8> zeroinitializer
6146 // CHECK: @llvm.ppc.altivec.vperm
6147 // CHECK-LE: @llvm.ppc.altivec.lvx
6148 // CHECK-LE: @llvm.ppc.altivec.lvsl
6149 // CHECK-LE: store <16 x i8> zeroinitializer
6150 // CHECK-LE: @llvm.ppc.altivec.vperm
6151 
6152   res_vsc = vec_lvlx(0, &vsc);
6153 // CHECK: @llvm.ppc.altivec.lvx
6154 // CHECK: @llvm.ppc.altivec.lvsl
6155 // CHECK: store <16 x i8> zeroinitializer
6156 // CHECK: @llvm.ppc.altivec.vperm
6157 // CHECK-LE: @llvm.ppc.altivec.lvx
6158 // CHECK-LE: @llvm.ppc.altivec.lvsl
6159 // CHECK-LE: store <16 x i8> zeroinitializer
6160 // CHECK-LE: @llvm.ppc.altivec.vperm
6161 
6162   res_vuc = vec_lvlx(0, param_uc_ld);
6163 // CHECK: @llvm.ppc.altivec.lvx
6164 // CHECK: @llvm.ppc.altivec.lvsl
6165 // CHECK: store <16 x i8> zeroinitializer
6166 // CHECK: @llvm.ppc.altivec.vperm
6167 // CHECK-LE: @llvm.ppc.altivec.lvx
6168 // CHECK-LE: @llvm.ppc.altivec.lvsl
6169 // CHECK-LE: store <16 x i8> zeroinitializer
6170 // CHECK-LE: @llvm.ppc.altivec.vperm
6171 
6172   res_vuc = vec_lvlx(0, &vuc);
6173 // CHECK: @llvm.ppc.altivec.lvx
6174 // CHECK: @llvm.ppc.altivec.lvsl
6175 // CHECK: store <16 x i8> zeroinitializer
6176 // CHECK: @llvm.ppc.altivec.vperm
6177 // CHECK-LE: @llvm.ppc.altivec.lvx
6178 // CHECK-LE: @llvm.ppc.altivec.lvsl
6179 // CHECK-LE: store <16 x i8> zeroinitializer
6180 // CHECK-LE: @llvm.ppc.altivec.vperm
6181 
6182   res_vbc = vec_lvlx(0, &vbc);
6183 // CHECK: @llvm.ppc.altivec.lvx
6184 // CHECK: store <16 x i8> zeroinitializer
6185 // CHECK: @llvm.ppc.altivec.lvsl
6186 // CHECK: @llvm.ppc.altivec.vperm
6187 // CHECK-LE: @llvm.ppc.altivec.lvx
6188 // CHECK-LE: store <16 x i8> zeroinitializer
6189 // CHECK-LE: @llvm.ppc.altivec.lvsl
6190 // CHECK-LE: @llvm.ppc.altivec.vperm
6191 
6192   res_vs  = vec_lvlx(0, param_s_ld);
6193 // CHECK: @llvm.ppc.altivec.lvx
6194 // CHECK: @llvm.ppc.altivec.lvsl
6195 // CHECK: store <8 x i16> zeroinitializer
6196 // CHECK: @llvm.ppc.altivec.vperm
6197 // CHECK-LE: @llvm.ppc.altivec.lvx
6198 // CHECK-LE: @llvm.ppc.altivec.lvsl
6199 // CHECK-LE: store <8 x i16> zeroinitializer
6200 // CHECK-LE: @llvm.ppc.altivec.vperm
6201 
6202   res_vs  = vec_lvlx(0, &vs);
6203 // CHECK: @llvm.ppc.altivec.lvx
6204 // CHECK: @llvm.ppc.altivec.lvsl
6205 // CHECK: store <8 x i16> zeroinitializer
6206 // CHECK: @llvm.ppc.altivec.vperm
6207 // CHECK-LE: @llvm.ppc.altivec.lvx
6208 // CHECK-LE: @llvm.ppc.altivec.lvsl
6209 // CHECK-LE: store <8 x i16> zeroinitializer
6210 // CHECK-LE: @llvm.ppc.altivec.vperm
6211 
6212   res_vus = vec_lvlx(0, param_us_ld);
6213 // CHECK: @llvm.ppc.altivec.lvx
6214 // CHECK: @llvm.ppc.altivec.lvsl
6215 // CHECK: store <8 x i16> zeroinitializer
6216 // CHECK: @llvm.ppc.altivec.vperm
6217 // CHECK-LE: @llvm.ppc.altivec.lvx
6218 // CHECK-LE: @llvm.ppc.altivec.lvsl
6219 // CHECK-LE: store <8 x i16> zeroinitializer
6220 // CHECK-LE: @llvm.ppc.altivec.vperm
6221 
6222   res_vus = vec_lvlx(0, &vus);
6223 // CHECK: @llvm.ppc.altivec.lvx
6224 // CHECK: @llvm.ppc.altivec.lvsl
6225 // CHECK: store <8 x i16> zeroinitializer
6226 // CHECK: @llvm.ppc.altivec.vperm
6227 // CHECK-LE: @llvm.ppc.altivec.lvx
6228 // CHECK-LE: @llvm.ppc.altivec.lvsl
6229 // CHECK-LE: store <8 x i16> zeroinitializer
6230 // CHECK-LE: @llvm.ppc.altivec.vperm
6231 
6232   res_vbs = vec_lvlx(0, &vbs);
6233 // CHECK: @llvm.ppc.altivec.lvx
6234 // CHECK: store <8 x i16> zeroinitializer
6235 // CHECK: @llvm.ppc.altivec.lvsl
6236 // CHECK: @llvm.ppc.altivec.vperm
6237 // CHECK-LE: @llvm.ppc.altivec.lvx
6238 // CHECK-LE: store <8 x i16> zeroinitializer
6239 // CHECK-LE: @llvm.ppc.altivec.lvsl
6240 // CHECK-LE: @llvm.ppc.altivec.vperm
6241 
6242   res_vp  = vec_lvlx(0, &vp);
6243 // CHECK: @llvm.ppc.altivec.lvx
6244 // CHECK: store <8 x i16> zeroinitializer
6245 // CHECK: @llvm.ppc.altivec.lvsl
6246 // CHECK: @llvm.ppc.altivec.vperm
6247 // CHECK-LE: @llvm.ppc.altivec.lvx
6248 // CHECK-LE: store <8 x i16> zeroinitializer
6249 // CHECK-LE: @llvm.ppc.altivec.lvsl
6250 // CHECK-LE: @llvm.ppc.altivec.vperm
6251 
6252   res_vi  = vec_lvlx(0, param_i_ld);
6253 // CHECK: @llvm.ppc.altivec.lvx
6254 // CHECK: @llvm.ppc.altivec.lvsl
6255 // CHECK: store <4 x i32> zeroinitializer
6256 // CHECK: @llvm.ppc.altivec.vperm
6257 // CHECK-LE: @llvm.ppc.altivec.lvx
6258 // CHECK-LE: @llvm.ppc.altivec.lvsl
6259 // CHECK-LE: store <4 x i32> zeroinitializer
6260 // CHECK-LE: @llvm.ppc.altivec.vperm
6261 
6262   res_vi  = vec_lvlx(0, &vi);
6263 // CHECK: @llvm.ppc.altivec.lvx
6264 // CHECK: @llvm.ppc.altivec.lvsl
6265 // CHECK: store <4 x i32> zeroinitializer
6266 // CHECK: @llvm.ppc.altivec.vperm
6267 // CHECK-LE: @llvm.ppc.altivec.lvx
6268 // CHECK-LE: @llvm.ppc.altivec.lvsl
6269 // CHECK-LE: store <4 x i32> zeroinitializer
6270 // CHECK-LE: @llvm.ppc.altivec.vperm
6271 
6272   res_vui = vec_lvlx(0, param_ui_ld);
6273 // CHECK: @llvm.ppc.altivec.lvx
6274 // CHECK: @llvm.ppc.altivec.lvsl
6275 // CHECK: store <4 x i32> zeroinitializer
6276 // CHECK: @llvm.ppc.altivec.vperm
6277 // CHECK-LE: @llvm.ppc.altivec.lvx
6278 // CHECK-LE: @llvm.ppc.altivec.lvsl
6279 // CHECK-LE: store <4 x i32> zeroinitializer
6280 // CHECK-LE: @llvm.ppc.altivec.vperm
6281 
6282   res_vui = vec_lvlx(0, &vui);
6283 // CHECK: @llvm.ppc.altivec.lvx
6284 // CHECK: @llvm.ppc.altivec.lvsl
6285 // CHECK: store <4 x i32> zeroinitializer
6286 // CHECK: @llvm.ppc.altivec.vperm
6287 // CHECK-LE: @llvm.ppc.altivec.lvx
6288 // CHECK-LE: @llvm.ppc.altivec.lvsl
6289 // CHECK-LE: store <4 x i32> zeroinitializer
6290 // CHECK-LE: @llvm.ppc.altivec.vperm
6291 
6292   res_vbi = vec_lvlx(0, &vbi);
6293 // CHECK: @llvm.ppc.altivec.lvx
6294 // CHECK: store <4 x i32> zeroinitializer
6295 // CHECK: @llvm.ppc.altivec.lvsl
6296 // CHECK: @llvm.ppc.altivec.vperm
6297 // CHECK-LE: @llvm.ppc.altivec.lvx
6298 // CHECK-LE: store <4 x i32> zeroinitializer
6299 // CHECK-LE: @llvm.ppc.altivec.lvsl
6300 // CHECK-LE: @llvm.ppc.altivec.vperm
6301 
6302   res_vf  = vec_lvlx(0, &vf);
6303 // CHECK: @llvm.ppc.altivec.lvx
6304 // CHECK: @llvm.ppc.altivec.lvsl
6305 // CHECK: store <4 x float> zeroinitializer
6306 // CHECK: @llvm.ppc.altivec.vperm
6307 // CHECK-LE: @llvm.ppc.altivec.lvx
6308 // CHECK-LE: @llvm.ppc.altivec.lvsl
6309 // CHECK-LE: store <4 x float> zeroinitializer
6310 // CHECK-LE: @llvm.ppc.altivec.vperm
6311 
6312   /* vec_lvlxl */
6313   res_vsc = vec_lvlxl(0, param_sc_ld);
6314 // CHECK: @llvm.ppc.altivec.lvxl
6315 // CHECK: @llvm.ppc.altivec.lvsl
6316 // CHECK: store <16 x i8> zeroinitializer
6317 // CHECK: @llvm.ppc.altivec.vperm
6318 // CHECK-LE: @llvm.ppc.altivec.lvxl
6319 // CHECK-LE: @llvm.ppc.altivec.lvsl
6320 // CHECK-LE: store <16 x i8> zeroinitializer
6321 // CHECK-LE: @llvm.ppc.altivec.vperm
6322 
6323   res_vsc = vec_lvlxl(0, &vsc);
6324 // CHECK: @llvm.ppc.altivec.lvxl
6325 // CHECK: @llvm.ppc.altivec.lvsl
6326 // CHECK: store <16 x i8> zeroinitializer
6327 // CHECK: @llvm.ppc.altivec.vperm
6328 // CHECK-LE: @llvm.ppc.altivec.lvxl
6329 // CHECK-LE: @llvm.ppc.altivec.lvsl
6330 // CHECK-LE: store <16 x i8> zeroinitializer
6331 // CHECK-LE: @llvm.ppc.altivec.vperm
6332 
6333   res_vuc = vec_lvlxl(0, param_uc_ld);
6334 // CHECK: @llvm.ppc.altivec.lvxl
6335 // CHECK: @llvm.ppc.altivec.lvsl
6336 // CHECK: store <16 x i8> zeroinitializer
6337 // CHECK: @llvm.ppc.altivec.vperm
6338 // CHECK-LE: @llvm.ppc.altivec.lvxl
6339 // CHECK-LE: @llvm.ppc.altivec.lvsl
6340 // CHECK-LE: store <16 x i8> zeroinitializer
6341 // CHECK-LE: @llvm.ppc.altivec.vperm
6342 
6343   res_vuc = vec_lvlxl(0, &vuc);
6344 // CHECK: @llvm.ppc.altivec.lvxl
6345 // CHECK: @llvm.ppc.altivec.lvsl
6346 // CHECK: store <16 x i8> zeroinitializer
6347 // CHECK: @llvm.ppc.altivec.vperm
6348 // CHECK-LE: @llvm.ppc.altivec.lvxl
6349 // CHECK-LE: @llvm.ppc.altivec.lvsl
6350 // CHECK-LE: store <16 x i8> zeroinitializer
6351 // CHECK-LE: @llvm.ppc.altivec.vperm
6352 
6353   res_vbc = vec_lvlxl(0, &vbc);
6354 // CHECK: @llvm.ppc.altivec.lvxl
6355 // CHECK: store <16 x i8> zeroinitializer
6356 // CHECK: @llvm.ppc.altivec.lvsl
6357 // CHECK: @llvm.ppc.altivec.vperm
6358 // CHECK-LE: @llvm.ppc.altivec.lvxl
6359 // CHECK-LE: store <16 x i8> zeroinitializer
6360 // CHECK-LE: @llvm.ppc.altivec.lvsl
6361 // CHECK-LE: @llvm.ppc.altivec.vperm
6362 
6363   res_vs  = vec_lvlxl(0, param_s_ld);
6364 // CHECK: @llvm.ppc.altivec.lvxl
6365 // CHECK: @llvm.ppc.altivec.lvsl
6366 // CHECK: store <8 x i16> zeroinitializer
6367 // CHECK: @llvm.ppc.altivec.vperm
6368 // CHECK-LE: @llvm.ppc.altivec.lvxl
6369 // CHECK-LE: @llvm.ppc.altivec.lvsl
6370 // CHECK-LE: store <8 x i16> zeroinitializer
6371 // CHECK-LE: @llvm.ppc.altivec.vperm
6372 
6373   res_vs  = vec_lvlxl(0, &vs);
6374 // CHECK: @llvm.ppc.altivec.lvxl
6375 // CHECK: @llvm.ppc.altivec.lvsl
6376 // CHECK: store <8 x i16> zeroinitializer
6377 // CHECK: @llvm.ppc.altivec.vperm
6378 // CHECK-LE: @llvm.ppc.altivec.lvxl
6379 // CHECK-LE: @llvm.ppc.altivec.lvsl
6380 // CHECK-LE: store <8 x i16> zeroinitializer
6381 // CHECK-LE: @llvm.ppc.altivec.vperm
6382 
6383   res_vus = vec_lvlxl(0, param_us_ld);
6384 // CHECK: @llvm.ppc.altivec.lvxl
6385 // CHECK: @llvm.ppc.altivec.lvsl
6386 // CHECK: store <8 x i16> zeroinitializer
6387 // CHECK: @llvm.ppc.altivec.vperm
6388 // CHECK-LE: @llvm.ppc.altivec.lvxl
6389 // CHECK-LE: @llvm.ppc.altivec.lvsl
6390 // CHECK-LE: store <8 x i16> zeroinitializer
6391 // CHECK-LE: @llvm.ppc.altivec.vperm
6392 
6393   res_vus = vec_lvlxl(0, &vus);
6394 // CHECK: @llvm.ppc.altivec.lvxl
6395 // CHECK: @llvm.ppc.altivec.lvsl
6396 // CHECK: store <8 x i16> zeroinitializer
6397 // CHECK: @llvm.ppc.altivec.vperm
6398 // CHECK-LE: @llvm.ppc.altivec.lvxl
6399 // CHECK-LE: @llvm.ppc.altivec.lvsl
6400 // CHECK-LE: store <8 x i16> zeroinitializer
6401 // CHECK-LE: @llvm.ppc.altivec.vperm
6402 
6403   res_vbs = vec_lvlxl(0, &vbs);
6404 // CHECK: @llvm.ppc.altivec.lvxl
6405 // CHECK: store <8 x i16> zeroinitializer
6406 // CHECK: @llvm.ppc.altivec.lvsl
6407 // CHECK: @llvm.ppc.altivec.vperm
6408 // CHECK-LE: @llvm.ppc.altivec.lvxl
6409 // CHECK-LE: store <8 x i16> zeroinitializer
6410 // CHECK-LE: @llvm.ppc.altivec.lvsl
6411 // CHECK-LE: @llvm.ppc.altivec.vperm
6412 
6413   res_vp  = vec_lvlxl(0, &vp);
6414 // CHECK: @llvm.ppc.altivec.lvxl
6415 // CHECK: store <8 x i16> zeroinitializer
6416 // CHECK: @llvm.ppc.altivec.lvsl
6417 // CHECK: @llvm.ppc.altivec.vperm
6418 // CHECK-LE: @llvm.ppc.altivec.lvxl
6419 // CHECK-LE: store <8 x i16> zeroinitializer
6420 // CHECK-LE: @llvm.ppc.altivec.lvsl
6421 // CHECK-LE: @llvm.ppc.altivec.vperm
6422 
6423   res_vi  = vec_lvlxl(0, param_i_ld);
6424 // CHECK: @llvm.ppc.altivec.lvxl
6425 // CHECK: @llvm.ppc.altivec.lvsl
6426 // CHECK: store <4 x i32> zeroinitializer
6427 // CHECK: @llvm.ppc.altivec.vperm
6428 // CHECK-LE: @llvm.ppc.altivec.lvxl
6429 // CHECK-LE: @llvm.ppc.altivec.lvsl
6430 // CHECK-LE: store <4 x i32> zeroinitializer
6431 // CHECK-LE: @llvm.ppc.altivec.vperm
6432 
6433   res_vi  = vec_lvlxl(0, &vi);
6434 // CHECK: @llvm.ppc.altivec.lvxl
6435 // CHECK: @llvm.ppc.altivec.lvsl
6436 // CHECK: store <4 x i32> zeroinitializer
6437 // CHECK: @llvm.ppc.altivec.vperm
6438 // CHECK-LE: @llvm.ppc.altivec.lvxl
6439 // CHECK-LE: @llvm.ppc.altivec.lvsl
6440 // CHECK-LE: store <4 x i32> zeroinitializer
6441 // CHECK-LE: @llvm.ppc.altivec.vperm
6442 
6443   res_vui = vec_lvlxl(0, param_ui_ld);
6444 // CHECK: @llvm.ppc.altivec.lvxl
6445 // CHECK: @llvm.ppc.altivec.lvsl
6446 // CHECK: store <4 x i32> zeroinitializer
6447 // CHECK: @llvm.ppc.altivec.vperm
6448 // CHECK-LE: @llvm.ppc.altivec.lvxl
6449 // CHECK-LE: @llvm.ppc.altivec.lvsl
6450 // CHECK-LE: store <4 x i32> zeroinitializer
6451 // CHECK-LE: @llvm.ppc.altivec.vperm
6452 
6453   res_vui = vec_lvlxl(0, &vui);
6454 // CHECK: @llvm.ppc.altivec.lvxl
6455 // CHECK: @llvm.ppc.altivec.lvsl
6456 // CHECK: store <4 x i32> zeroinitializer
6457 // CHECK: @llvm.ppc.altivec.vperm
6458 // CHECK-LE: @llvm.ppc.altivec.lvxl
6459 // CHECK-LE: @llvm.ppc.altivec.lvsl
6460 // CHECK-LE: store <4 x i32> zeroinitializer
6461 // CHECK-LE: @llvm.ppc.altivec.vperm
6462 
6463   res_vbi = vec_lvlxl(0, &vbi);
6464 // CHECK: @llvm.ppc.altivec.lvxl
6465 // CHECK: store <4 x i32> zeroinitializer
6466 // CHECK: @llvm.ppc.altivec.lvsl
6467 // CHECK: @llvm.ppc.altivec.vperm
6468 // CHECK-LE: @llvm.ppc.altivec.lvxl
6469 // CHECK-LE: store <4 x i32> zeroinitializer
6470 // CHECK-LE: @llvm.ppc.altivec.lvsl
6471 // CHECK-LE: @llvm.ppc.altivec.vperm
6472 
6473   res_vf  = vec_lvlxl(0, &vf);
6474 // CHECK: @llvm.ppc.altivec.lvxl
6475 // CHECK: @llvm.ppc.altivec.lvsl
6476 // CHECK: store <4 x float> zeroinitializer
6477 // CHECK: @llvm.ppc.altivec.vperm
6478 // CHECK-LE: @llvm.ppc.altivec.lvxl
6479 // CHECK-LE: @llvm.ppc.altivec.lvsl
6480 // CHECK-LE: store <4 x float> zeroinitializer
6481 // CHECK-LE: @llvm.ppc.altivec.vperm
6482 
6483   /* vec_lvrx */
6484   res_vsc = vec_lvrx(0, param_sc_ld);
6485 // CHECK: @llvm.ppc.altivec.lvx
6486 // CHECK: @llvm.ppc.altivec.lvsl
6487 // CHECK: store <16 x i8> zeroinitializer
6488 // CHECK: @llvm.ppc.altivec.vperm
6489 // CHECK-LE: @llvm.ppc.altivec.lvx
6490 // CHECK-LE: @llvm.ppc.altivec.lvsl
6491 // CHECK-LE: store <16 x i8> zeroinitializer
6492 // CHECK-LE: @llvm.ppc.altivec.vperm
6493 
6494   res_vsc = vec_lvrx(0, &vsc);
6495 // CHECK: @llvm.ppc.altivec.lvx
6496 // CHECK: @llvm.ppc.altivec.lvsl
6497 // CHECK: store <16 x i8> zeroinitializer
6498 // CHECK: @llvm.ppc.altivec.vperm
6499 // CHECK-LE: @llvm.ppc.altivec.lvx
6500 // CHECK-LE: @llvm.ppc.altivec.lvsl
6501 // CHECK-LE: store <16 x i8> zeroinitializer
6502 // CHECK-LE: @llvm.ppc.altivec.vperm
6503 
6504   res_vuc = vec_lvrx(0, param_uc_ld);
6505 // CHECK: @llvm.ppc.altivec.lvx
6506 // CHECK: @llvm.ppc.altivec.lvsl
6507 // CHECK: store <16 x i8> zeroinitializer
6508 // CHECK: @llvm.ppc.altivec.vperm
6509 // CHECK-LE: @llvm.ppc.altivec.lvx
6510 // CHECK-LE: @llvm.ppc.altivec.lvsl
6511 // CHECK-LE: store <16 x i8> zeroinitializer
6512 // CHECK-LE: @llvm.ppc.altivec.vperm
6513 
6514   res_vuc = vec_lvrx(0, &vuc);
6515 // CHECK: @llvm.ppc.altivec.lvx
6516 // CHECK: @llvm.ppc.altivec.lvsl
6517 // CHECK: store <16 x i8> zeroinitializer
6518 // CHECK: @llvm.ppc.altivec.vperm
6519 // CHECK-LE: @llvm.ppc.altivec.lvx
6520 // CHECK-LE: @llvm.ppc.altivec.lvsl
6521 // CHECK-LE: store <16 x i8> zeroinitializer
6522 // CHECK-LE: @llvm.ppc.altivec.vperm
6523 
6524   res_vbc = vec_lvrx(0, &vbc);
6525 // CHECK: store <16 x i8> zeroinitializer
6526 // CHECK: @llvm.ppc.altivec.lvx
6527 // CHECK: @llvm.ppc.altivec.lvsl
6528 // CHECK: @llvm.ppc.altivec.vperm
6529 // CHECK-LE: store <16 x i8> zeroinitializer
6530 // CHECK-LE: @llvm.ppc.altivec.lvx
6531 // CHECK-LE: @llvm.ppc.altivec.lvsl
6532 // CHECK-LE: @llvm.ppc.altivec.vperm
6533 
6534   res_vs  = vec_lvrx(0, param_s_ld);
6535 // CHECK: @llvm.ppc.altivec.lvx
6536 // CHECK: @llvm.ppc.altivec.lvsl
6537 // CHECK: store <8 x i16> zeroinitializer
6538 // CHECK: @llvm.ppc.altivec.vperm
6539 // CHECK-LE: @llvm.ppc.altivec.lvx
6540 // CHECK-LE: @llvm.ppc.altivec.lvsl
6541 // CHECK-LE: store <8 x i16> zeroinitializer
6542 // CHECK-LE: @llvm.ppc.altivec.vperm
6543 
6544   res_vs  = vec_lvrx(0, &vs);
6545 // CHECK: @llvm.ppc.altivec.lvx
6546 // CHECK: @llvm.ppc.altivec.lvsl
6547 // CHECK: store <8 x i16> zeroinitializer
6548 // CHECK: @llvm.ppc.altivec.vperm
6549 // CHECK-LE: @llvm.ppc.altivec.lvx
6550 // CHECK-LE: @llvm.ppc.altivec.lvsl
6551 // CHECK-LE: store <8 x i16> zeroinitializer
6552 // CHECK-LE: @llvm.ppc.altivec.vperm
6553 
6554   res_vus = vec_lvrx(0, param_us_ld);
6555 // CHECK: @llvm.ppc.altivec.lvx
6556 // CHECK: @llvm.ppc.altivec.lvsl
6557 // CHECK: store <8 x i16> zeroinitializer
6558 // CHECK: @llvm.ppc.altivec.vperm
6559 // CHECK-LE: @llvm.ppc.altivec.lvx
6560 // CHECK-LE: @llvm.ppc.altivec.lvsl
6561 // CHECK-LE: store <8 x i16> zeroinitializer
6562 // CHECK-LE: @llvm.ppc.altivec.vperm
6563 
6564   res_vus = vec_lvrx(0, &vus);
6565 // CHECK: @llvm.ppc.altivec.lvx
6566 // CHECK: @llvm.ppc.altivec.lvsl
6567 // CHECK: store <8 x i16> zeroinitializer
6568 // CHECK: @llvm.ppc.altivec.vperm
6569 // CHECK-LE: @llvm.ppc.altivec.lvx
6570 // CHECK-LE: @llvm.ppc.altivec.lvsl
6571 // CHECK-LE: store <8 x i16> zeroinitializer
6572 // CHECK-LE: @llvm.ppc.altivec.vperm
6573 
6574   res_vbs = vec_lvrx(0, &vbs);
6575 // CHECK: store <8 x i16> zeroinitializer
6576 // CHECK: @llvm.ppc.altivec.lvx
6577 // CHECK: @llvm.ppc.altivec.lvsl
6578 // CHECK: @llvm.ppc.altivec.vperm
6579 // CHECK-LE: store <8 x i16> zeroinitializer
6580 // CHECK-LE: @llvm.ppc.altivec.lvx
6581 // CHECK-LE: @llvm.ppc.altivec.lvsl
6582 // CHECK-LE: @llvm.ppc.altivec.vperm
6583 
6584   res_vp  = vec_lvrx(0, &vp);
6585 // CHECK: store <8 x i16> zeroinitializer
6586 // CHECK: @llvm.ppc.altivec.lvx
6587 // CHECK: @llvm.ppc.altivec.lvsl
6588 // CHECK: @llvm.ppc.altivec.vperm
6589 // CHECK-LE: store <8 x i16> zeroinitializer
6590 // CHECK-LE: @llvm.ppc.altivec.lvx
6591 // CHECK-LE: @llvm.ppc.altivec.lvsl
6592 // CHECK-LE: @llvm.ppc.altivec.vperm
6593 
6594   res_vi  = vec_lvrx(0, param_i_ld);
6595 // CHECK: @llvm.ppc.altivec.lvx
6596 // CHECK: @llvm.ppc.altivec.lvsl
6597 // CHECK: store <4 x i32> zeroinitializer
6598 // CHECK: @llvm.ppc.altivec.vperm
6599 // CHECK-LE: @llvm.ppc.altivec.lvx
6600 // CHECK-LE: @llvm.ppc.altivec.lvsl
6601 // CHECK-LE: store <4 x i32> zeroinitializer
6602 // CHECK-LE: @llvm.ppc.altivec.vperm
6603 
6604   res_vi  = vec_lvrx(0, &vi);
6605 // CHECK: @llvm.ppc.altivec.lvx
6606 // CHECK: @llvm.ppc.altivec.lvsl
6607 // CHECK: store <4 x i32> zeroinitializer
6608 // CHECK: @llvm.ppc.altivec.vperm
6609 // CHECK-LE: @llvm.ppc.altivec.lvx
6610 // CHECK-LE: @llvm.ppc.altivec.lvsl
6611 // CHECK-LE: store <4 x i32> zeroinitializer
6612 // CHECK-LE: @llvm.ppc.altivec.vperm
6613 
6614   res_vui = vec_lvrx(0, param_ui_ld);
6615 // CHECK: @llvm.ppc.altivec.lvx
6616 // CHECK: @llvm.ppc.altivec.lvsl
6617 // CHECK: store <4 x i32> zeroinitializer
6618 // CHECK: @llvm.ppc.altivec.vperm
6619 // CHECK-LE: @llvm.ppc.altivec.lvx
6620 // CHECK-LE: @llvm.ppc.altivec.lvsl
6621 // CHECK-LE: store <4 x i32> zeroinitializer
6622 // CHECK-LE: @llvm.ppc.altivec.vperm
6623 
6624   res_vui = vec_lvrx(0, &vui);
6625 // CHECK: @llvm.ppc.altivec.lvx
6626 // CHECK: @llvm.ppc.altivec.lvsl
6627 // CHECK: store <4 x i32> zeroinitializer
6628 // CHECK: @llvm.ppc.altivec.vperm
6629 // CHECK-LE: @llvm.ppc.altivec.lvx
6630 // CHECK-LE: @llvm.ppc.altivec.lvsl
6631 // CHECK-LE: store <4 x i32> zeroinitializer
6632 // CHECK-LE: @llvm.ppc.altivec.vperm
6633 
6634   res_vbi = vec_lvrx(0, &vbi);
6635 // CHECK: store <4 x i32> zeroinitializer
6636 // CHECK: @llvm.ppc.altivec.lvx
6637 // CHECK: @llvm.ppc.altivec.lvsl
6638 // CHECK: @llvm.ppc.altivec.vperm
6639 // CHECK-LE: store <4 x i32> zeroinitializer
6640 // CHECK-LE: @llvm.ppc.altivec.lvx
6641 // CHECK-LE: @llvm.ppc.altivec.lvsl
6642 // CHECK-LE: @llvm.ppc.altivec.vperm
6643 
6644   res_vf  = vec_lvrx(0, &vf);
6645 // CHECK: @llvm.ppc.altivec.lvx
6646 // CHECK: @llvm.ppc.altivec.lvsl
6647 // CHECK: store <4 x float> zeroinitializer
6648 // CHECK: @llvm.ppc.altivec.vperm
6649 // CHECK-LE: @llvm.ppc.altivec.lvx
6650 // CHECK-LE: @llvm.ppc.altivec.lvsl
6651 // CHECK-LE: store <4 x float> zeroinitializer
6652 // CHECK-LE: @llvm.ppc.altivec.vperm
6653 
6654   /* vec_lvrxl */
6655   res_vsc = vec_lvrxl(0, param_sc_ld);
6656 // CHECK: @llvm.ppc.altivec.lvxl
6657 // CHECK: @llvm.ppc.altivec.lvsl
6658 // CHECK: store <16 x i8> zeroinitializer
6659 // CHECK: @llvm.ppc.altivec.vperm
6660 // CHECK-LE: @llvm.ppc.altivec.lvxl
6661 // CHECK-LE: @llvm.ppc.altivec.lvsl
6662 // CHECK-LE: store <16 x i8> zeroinitializer
6663 // CHECK-LE: @llvm.ppc.altivec.vperm
6664 
6665   res_vsc = vec_lvrxl(0, &vsc);
6666 // CHECK: @llvm.ppc.altivec.lvxl
6667 // CHECK: @llvm.ppc.altivec.lvsl
6668 // CHECK: store <16 x i8> zeroinitializer
6669 // CHECK: @llvm.ppc.altivec.vperm
6670 // CHECK-LE: @llvm.ppc.altivec.lvxl
6671 // CHECK-LE: @llvm.ppc.altivec.lvsl
6672 // CHECK-LE: store <16 x i8> zeroinitializer
6673 // CHECK-LE: @llvm.ppc.altivec.vperm
6674 
6675   res_vuc = vec_lvrxl(0, param_uc_ld);
6676 // CHECK: @llvm.ppc.altivec.lvxl
6677 // CHECK: @llvm.ppc.altivec.lvsl
6678 // CHECK: store <16 x i8> zeroinitializer
6679 // CHECK: @llvm.ppc.altivec.vperm
6680 // CHECK-LE: @llvm.ppc.altivec.lvxl
6681 // CHECK-LE: @llvm.ppc.altivec.lvsl
6682 // CHECK-LE: store <16 x i8> zeroinitializer
6683 // CHECK-LE: @llvm.ppc.altivec.vperm
6684 
6685   res_vuc = vec_lvrxl(0, &vuc);
6686 // CHECK: @llvm.ppc.altivec.lvxl
6687 // CHECK: @llvm.ppc.altivec.lvsl
6688 // CHECK: store <16 x i8> zeroinitializer
6689 // CHECK: @llvm.ppc.altivec.vperm
6690 // CHECK-LE: @llvm.ppc.altivec.lvxl
6691 // CHECK-LE: @llvm.ppc.altivec.lvsl
6692 // CHECK-LE: store <16 x i8> zeroinitializer
6693 // CHECK-LE: @llvm.ppc.altivec.vperm
6694 
6695   res_vbc = vec_lvrxl(0, &vbc);
6696 // CHECK: store <16 x i8> zeroinitializer
6697 // CHECK: @llvm.ppc.altivec.lvxl
6698 // CHECK: @llvm.ppc.altivec.lvsl
6699 // CHECK: @llvm.ppc.altivec.vperm
6700 // CHECK-LE: store <16 x i8> zeroinitializer
6701 // CHECK-LE: @llvm.ppc.altivec.lvxl
6702 // CHECK-LE: @llvm.ppc.altivec.lvsl
6703 // CHECK-LE: @llvm.ppc.altivec.vperm
6704 
6705   res_vs  = vec_lvrxl(0, param_s_ld);
6706 // CHECK: @llvm.ppc.altivec.lvxl
6707 // CHECK: @llvm.ppc.altivec.lvsl
6708 // CHECK: store <8 x i16> zeroinitializer
6709 // CHECK: @llvm.ppc.altivec.vperm
6710 // CHECK-LE: @llvm.ppc.altivec.lvxl
6711 // CHECK-LE: @llvm.ppc.altivec.lvsl
6712 // CHECK-LE: store <8 x i16> zeroinitializer
6713 // CHECK-LE: @llvm.ppc.altivec.vperm
6714 
6715   res_vs  = vec_lvrxl(0, &vs);
6716 // CHECK: @llvm.ppc.altivec.lvxl
6717 // CHECK: @llvm.ppc.altivec.lvsl
6718 // CHECK: store <8 x i16> zeroinitializer
6719 // CHECK: @llvm.ppc.altivec.vperm
6720 // CHECK-LE: @llvm.ppc.altivec.lvxl
6721 // CHECK-LE: @llvm.ppc.altivec.lvsl
6722 // CHECK-LE: store <8 x i16> zeroinitializer
6723 // CHECK-LE: @llvm.ppc.altivec.vperm
6724 
6725   res_vus = vec_lvrxl(0, param_us_ld);
6726 // CHECK: @llvm.ppc.altivec.lvxl
6727 // CHECK: @llvm.ppc.altivec.lvsl
6728 // CHECK: store <8 x i16> zeroinitializer
6729 // CHECK: @llvm.ppc.altivec.vperm
6730 // CHECK-LE: @llvm.ppc.altivec.lvxl
6731 // CHECK-LE: @llvm.ppc.altivec.lvsl
6732 // CHECK-LE: store <8 x i16> zeroinitializer
6733 // CHECK-LE: @llvm.ppc.altivec.vperm
6734 
6735   res_vus = vec_lvrxl(0, &vus);
6736 // CHECK: @llvm.ppc.altivec.lvxl
6737 // CHECK: @llvm.ppc.altivec.lvsl
6738 // CHECK: store <8 x i16> zeroinitializer
6739 // CHECK: @llvm.ppc.altivec.vperm
6740 // CHECK-LE: @llvm.ppc.altivec.lvxl
6741 // CHECK-LE: @llvm.ppc.altivec.lvsl
6742 // CHECK-LE: store <8 x i16> zeroinitializer
6743 // CHECK-LE: @llvm.ppc.altivec.vperm
6744 
6745   res_vbs = vec_lvrxl(0, &vbs);
6746 // CHECK: store <8 x i16> zeroinitializer
6747 // CHECK: @llvm.ppc.altivec.lvxl
6748 // CHECK: @llvm.ppc.altivec.lvsl
6749 // CHECK: @llvm.ppc.altivec.vperm
6750 // CHECK-LE: store <8 x i16> zeroinitializer
6751 // CHECK-LE: @llvm.ppc.altivec.lvxl
6752 // CHECK-LE: @llvm.ppc.altivec.lvsl
6753 // CHECK-LE: @llvm.ppc.altivec.vperm
6754 
6755   res_vp  = vec_lvrxl(0, &vp);
6756 // CHECK: store <8 x i16> zeroinitializer
6757 // CHECK: @llvm.ppc.altivec.lvxl
6758 // CHECK: @llvm.ppc.altivec.lvsl
6759 // CHECK: @llvm.ppc.altivec.vperm
6760 // CHECK-LE: store <8 x i16> zeroinitializer
6761 // CHECK-LE: @llvm.ppc.altivec.lvxl
6762 // CHECK-LE: @llvm.ppc.altivec.lvsl
6763 // CHECK-LE: @llvm.ppc.altivec.vperm
6764 
6765   res_vi  = vec_lvrxl(0, param_i_ld);
6766 // CHECK: @llvm.ppc.altivec.lvxl
6767 // CHECK: @llvm.ppc.altivec.lvsl
6768 // CHECK: store <4 x i32> zeroinitializer
6769 // CHECK: @llvm.ppc.altivec.vperm
6770 // CHECK-LE: @llvm.ppc.altivec.lvxl
6771 // CHECK-LE: @llvm.ppc.altivec.lvsl
6772 // CHECK-LE: store <4 x i32> zeroinitializer
6773 // CHECK-LE: @llvm.ppc.altivec.vperm
6774 
6775   res_vi  = vec_lvrxl(0, &vi);
6776 // CHECK: @llvm.ppc.altivec.lvxl
6777 // CHECK: @llvm.ppc.altivec.lvsl
6778 // CHECK: store <4 x i32> zeroinitializer
6779 // CHECK: @llvm.ppc.altivec.vperm
6780 // CHECK-LE: @llvm.ppc.altivec.lvxl
6781 // CHECK-LE: @llvm.ppc.altivec.lvsl
6782 // CHECK-LE: store <4 x i32> zeroinitializer
6783 // CHECK-LE: @llvm.ppc.altivec.vperm
6784 
6785   res_vui = vec_lvrxl(0, param_ui_ld);
6786 // CHECK: @llvm.ppc.altivec.lvxl
6787 // CHECK: @llvm.ppc.altivec.lvsl
6788 // CHECK: store <4 x i32> zeroinitializer
6789 // CHECK: @llvm.ppc.altivec.vperm
6790 // CHECK-LE: @llvm.ppc.altivec.lvxl
6791 // CHECK-LE: @llvm.ppc.altivec.lvsl
6792 // CHECK-LE: store <4 x i32> zeroinitializer
6793 // CHECK-LE: @llvm.ppc.altivec.vperm
6794 
6795   res_vui = vec_lvrxl(0, &vui);
6796 // CHECK: @llvm.ppc.altivec.lvxl
6797 // CHECK: @llvm.ppc.altivec.lvsl
6798 // CHECK: store <4 x i32> zeroinitializer
6799 // CHECK: @llvm.ppc.altivec.vperm
6800 // CHECK-LE: @llvm.ppc.altivec.lvxl
6801 // CHECK-LE: @llvm.ppc.altivec.lvsl
6802 // CHECK-LE: store <4 x i32> zeroinitializer
6803 // CHECK-LE: @llvm.ppc.altivec.vperm
6804 
6805   res_vbi = vec_lvrxl(0, &vbi);
6806 // CHECK: store <4 x i32> zeroinitializer
6807 // CHECK: @llvm.ppc.altivec.lvxl
6808 // CHECK: @llvm.ppc.altivec.lvsl
6809 // CHECK: @llvm.ppc.altivec.vperm
6810 // CHECK-LE: store <4 x i32> zeroinitializer
6811 // CHECK-LE: @llvm.ppc.altivec.lvxl
6812 // CHECK-LE: @llvm.ppc.altivec.lvsl
6813 // CHECK-LE: @llvm.ppc.altivec.vperm
6814 
6815   res_vf  = vec_lvrxl(0, &vf);
6816 // CHECK: @llvm.ppc.altivec.lvxl
6817 // CHECK: @llvm.ppc.altivec.lvsl
6818 // CHECK: store <4 x float> zeroinitializer
6819 // CHECK: @llvm.ppc.altivec.vperm
6820 // CHECK-LE: @llvm.ppc.altivec.lvxl
6821 // CHECK-LE: @llvm.ppc.altivec.lvsl
6822 // CHECK-LE: store <4 x float> zeroinitializer
6823 // CHECK-LE: @llvm.ppc.altivec.vperm
6824 
6825   /* vec_stvlx */
6826   vec_stvlx(vsc, 0, &param_sc);
6827 // CHECK: @llvm.ppc.altivec.lvx
6828 // CHECK: @llvm.ppc.altivec.lvsl
6829 // CHECK: store <16 x i8> zeroinitializer
6830 // CHECK: @llvm.ppc.altivec.vperm
6831 // CHECK: @llvm.ppc.altivec.lvsr
6832 // CHECK: @llvm.ppc.altivec.vperm
6833 // CHECK: @llvm.ppc.altivec.stvx
6834 // CHECK-LE: @llvm.ppc.altivec.lvx
6835 // CHECK-LE: @llvm.ppc.altivec.lvsl
6836 // CHECK-LE: store <16 x i8> zeroinitializer
6837 // CHECK-LE: @llvm.ppc.altivec.vperm
6838 // CHECK-LE: @llvm.ppc.altivec.lvsr
6839 // CHECK-LE: @llvm.ppc.altivec.vperm
6840 // CHECK-LE: @llvm.ppc.altivec.stvx
6841 
6842   vec_stvlx(vsc, 0, &vsc);
6843 // CHECK: @llvm.ppc.altivec.lvx
6844 // CHECK: @llvm.ppc.altivec.lvsl
6845 // CHECK: store <16 x i8> zeroinitializer
6846 // CHECK: @llvm.ppc.altivec.vperm
6847 // CHECK: @llvm.ppc.altivec.lvsr
6848 // CHECK: @llvm.ppc.altivec.vperm
6849 // CHECK: @llvm.ppc.altivec.stvx
6850 // CHECK-LE: @llvm.ppc.altivec.lvx
6851 // CHECK-LE: @llvm.ppc.altivec.lvsl
6852 // CHECK-LE: store <16 x i8> zeroinitializer
6853 // CHECK-LE: @llvm.ppc.altivec.vperm
6854 // CHECK-LE: @llvm.ppc.altivec.lvsr
6855 // CHECK-LE: @llvm.ppc.altivec.vperm
6856 // CHECK-LE: @llvm.ppc.altivec.stvx
6857 
6858   vec_stvlx(vuc, 0, &param_uc);
6859 // CHECK: @llvm.ppc.altivec.lvx
6860 // CHECK: @llvm.ppc.altivec.lvsl
6861 // CHECK: store <16 x i8> zeroinitializer
6862 // CHECK: @llvm.ppc.altivec.vperm
6863 // CHECK: @llvm.ppc.altivec.lvsr
6864 // CHECK: @llvm.ppc.altivec.vperm
6865 // CHECK: @llvm.ppc.altivec.stvx
6866 // CHECK-LE: @llvm.ppc.altivec.lvx
6867 // CHECK-LE: @llvm.ppc.altivec.lvsl
6868 // CHECK-LE: store <16 x i8> zeroinitializer
6869 // CHECK-LE: @llvm.ppc.altivec.vperm
6870 // CHECK-LE: @llvm.ppc.altivec.lvsr
6871 // CHECK-LE: @llvm.ppc.altivec.vperm
6872 // CHECK-LE: @llvm.ppc.altivec.stvx
6873 
6874   vec_stvlx(vuc, 0, &vuc);
6875 // CHECK: @llvm.ppc.altivec.lvx
6876 // CHECK: @llvm.ppc.altivec.lvsl
6877 // CHECK: store <16 x i8> zeroinitializer
6878 // CHECK: @llvm.ppc.altivec.vperm
6879 // CHECK: @llvm.ppc.altivec.lvsr
6880 // CHECK: @llvm.ppc.altivec.vperm
6881 // CHECK: @llvm.ppc.altivec.stvx
6882 // CHECK-LE: @llvm.ppc.altivec.lvx
6883 // CHECK-LE: @llvm.ppc.altivec.lvsl
6884 // CHECK-LE: store <16 x i8> zeroinitializer
6885 // CHECK-LE: @llvm.ppc.altivec.vperm
6886 // CHECK-LE: @llvm.ppc.altivec.lvsr
6887 // CHECK-LE: @llvm.ppc.altivec.vperm
6888 // CHECK-LE: @llvm.ppc.altivec.stvx
6889 
6890   vec_stvlx(vbc, 0, &vbc);
6891 // CHECK: store <16 x i8> zeroinitializer
6892 // CHECK: @llvm.ppc.altivec.lvx
6893 // CHECK: @llvm.ppc.altivec.lvsl
6894 // CHECK: @llvm.ppc.altivec.vperm
6895 // CHECK: @llvm.ppc.altivec.lvsr
6896 // CHECK: @llvm.ppc.altivec.vperm
6897 // CHECK: @llvm.ppc.altivec.stvx
6898 // CHECK-LE: store <16 x i8> zeroinitializer
6899 // CHECK-LE: @llvm.ppc.altivec.lvx
6900 // CHECK-LE: @llvm.ppc.altivec.lvsl
6901 // CHECK-LE: @llvm.ppc.altivec.vperm
6902 // CHECK-LE: @llvm.ppc.altivec.lvsr
6903 // CHECK-LE: @llvm.ppc.altivec.vperm
6904 // CHECK-LE: @llvm.ppc.altivec.stvx
6905 
6906   vec_stvlx(vs, 0, &param_s);
6907 // CHECK: @llvm.ppc.altivec.lvx
6908 // CHECK: @llvm.ppc.altivec.lvsl
6909 // CHECK: store <8 x i16> zeroinitializer
6910 // CHECK: @llvm.ppc.altivec.vperm
6911 // CHECK: @llvm.ppc.altivec.lvsr
6912 // CHECK: @llvm.ppc.altivec.vperm
6913 // CHECK: @llvm.ppc.altivec.stvx
6914 // CHECK-LE: @llvm.ppc.altivec.lvx
6915 // CHECK-LE: @llvm.ppc.altivec.lvsl
6916 // CHECK-LE: store <8 x i16> zeroinitializer
6917 // CHECK-LE: @llvm.ppc.altivec.vperm
6918 // CHECK-LE: @llvm.ppc.altivec.lvsr
6919 // CHECK-LE: @llvm.ppc.altivec.vperm
6920 // CHECK-LE: @llvm.ppc.altivec.stvx
6921 
6922   vec_stvlx(vs, 0, &vs);
6923 // CHECK: @llvm.ppc.altivec.lvx
6924 // CHECK: @llvm.ppc.altivec.lvsl
6925 // CHECK: store <8 x i16> zeroinitializer
6926 // CHECK: @llvm.ppc.altivec.vperm
6927 // CHECK: @llvm.ppc.altivec.lvsr
6928 // CHECK: @llvm.ppc.altivec.vperm
6929 // CHECK: @llvm.ppc.altivec.stvx
6930 // CHECK-LE: @llvm.ppc.altivec.lvx
6931 // CHECK-LE: @llvm.ppc.altivec.lvsl
6932 // CHECK-LE: store <8 x i16> zeroinitializer
6933 // CHECK-LE: @llvm.ppc.altivec.vperm
6934 // CHECK-LE: @llvm.ppc.altivec.lvsr
6935 // CHECK-LE: @llvm.ppc.altivec.vperm
6936 // CHECK-LE: @llvm.ppc.altivec.stvx
6937 
6938   vec_stvlx(vus, 0, &param_us);
6939 // CHECK: @llvm.ppc.altivec.lvx
6940 // CHECK: @llvm.ppc.altivec.lvsl
6941 // CHECK: store <8 x i16> zeroinitializer
6942 // CHECK: @llvm.ppc.altivec.vperm
6943 // CHECK: @llvm.ppc.altivec.lvsr
6944 // CHECK: @llvm.ppc.altivec.vperm
6945 // CHECK: @llvm.ppc.altivec.stvx
6946 // CHECK-LE: @llvm.ppc.altivec.lvx
6947 // CHECK-LE: @llvm.ppc.altivec.lvsl
6948 // CHECK-LE: store <8 x i16> zeroinitializer
6949 // CHECK-LE: @llvm.ppc.altivec.vperm
6950 // CHECK-LE: @llvm.ppc.altivec.lvsr
6951 // CHECK-LE: @llvm.ppc.altivec.vperm
6952 // CHECK-LE: @llvm.ppc.altivec.stvx
6953 
6954   vec_stvlx(vus, 0, &vus);
6955 // CHECK: @llvm.ppc.altivec.lvx
6956 // CHECK: @llvm.ppc.altivec.lvsl
6957 // CHECK: store <8 x i16> zeroinitializer
6958 // CHECK: @llvm.ppc.altivec.vperm
6959 // CHECK: @llvm.ppc.altivec.lvsr
6960 // CHECK: @llvm.ppc.altivec.vperm
6961 // CHECK: @llvm.ppc.altivec.stvx
6962 // CHECK-LE: @llvm.ppc.altivec.lvx
6963 // CHECK-LE: @llvm.ppc.altivec.lvsl
6964 // CHECK-LE: store <8 x i16> zeroinitializer
6965 // CHECK-LE: @llvm.ppc.altivec.vperm
6966 // CHECK-LE: @llvm.ppc.altivec.lvsr
6967 // CHECK-LE: @llvm.ppc.altivec.vperm
6968 // CHECK-LE: @llvm.ppc.altivec.stvx
6969 
6970   vec_stvlx(vbs, 0, &vbs);
6971 // CHECK: store <8 x i16> zeroinitializer
6972 // CHECK: @llvm.ppc.altivec.lvx
6973 // CHECK: @llvm.ppc.altivec.lvsl
6974 // CHECK: @llvm.ppc.altivec.vperm
6975 // CHECK: @llvm.ppc.altivec.lvsr
6976 // CHECK: @llvm.ppc.altivec.vperm
6977 // CHECK: @llvm.ppc.altivec.stvx
6978 // CHECK-LE: store <8 x i16> zeroinitializer
6979 // CHECK-LE: @llvm.ppc.altivec.lvx
6980 // CHECK-LE: @llvm.ppc.altivec.lvsl
6981 // CHECK-LE: @llvm.ppc.altivec.vperm
6982 // CHECK-LE: @llvm.ppc.altivec.lvsr
6983 // CHECK-LE: @llvm.ppc.altivec.vperm
6984 // CHECK-LE: @llvm.ppc.altivec.stvx
6985 
6986   vec_stvlx(vp, 0, &vp);
6987 // CHECK: store <8 x i16> zeroinitializer
6988 // CHECK: @llvm.ppc.altivec.lvx
6989 // CHECK: @llvm.ppc.altivec.lvsl
6990 // CHECK: @llvm.ppc.altivec.vperm
6991 // CHECK: @llvm.ppc.altivec.lvsr
6992 // CHECK: @llvm.ppc.altivec.vperm
6993 // CHECK: @llvm.ppc.altivec.stvx
6994 // CHECK-LE: store <8 x i16> zeroinitializer
6995 // CHECK-LE: @llvm.ppc.altivec.lvx
6996 // CHECK-LE: @llvm.ppc.altivec.lvsl
6997 // CHECK-LE: @llvm.ppc.altivec.vperm
6998 // CHECK-LE: @llvm.ppc.altivec.lvsr
6999 // CHECK-LE: @llvm.ppc.altivec.vperm
7000 // CHECK-LE: @llvm.ppc.altivec.stvx
7001 
7002   vec_stvlx(vi, 0, &param_i);
7003 // CHECK: @llvm.ppc.altivec.lvx
7004 // CHECK: @llvm.ppc.altivec.lvsl
7005 // CHECK: store <4 x i32> zeroinitializer
7006 // CHECK: @llvm.ppc.altivec.vperm
7007 // CHECK: @llvm.ppc.altivec.lvsr
7008 // CHECK: @llvm.ppc.altivec.vperm
7009 // CHECK: @llvm.ppc.altivec.stvx
7010 // CHECK-LE: @llvm.ppc.altivec.lvx
7011 // CHECK-LE: @llvm.ppc.altivec.lvsl
7012 // CHECK-LE: store <4 x i32> zeroinitializer
7013 // CHECK-LE: @llvm.ppc.altivec.vperm
7014 // CHECK-LE: @llvm.ppc.altivec.lvsr
7015 // CHECK-LE: @llvm.ppc.altivec.vperm
7016 // CHECK-LE: @llvm.ppc.altivec.stvx
7017 
7018   vec_stvlx(vi, 0, &vi);
7019 // CHECK: @llvm.ppc.altivec.lvx
7020 // CHECK: @llvm.ppc.altivec.lvsl
7021 // CHECK: store <4 x i32> zeroinitializer
7022 // CHECK: @llvm.ppc.altivec.vperm
7023 // CHECK: @llvm.ppc.altivec.lvsr
7024 // CHECK: @llvm.ppc.altivec.vperm
7025 // CHECK: @llvm.ppc.altivec.stvx
7026 // CHECK-LE: @llvm.ppc.altivec.lvx
7027 // CHECK-LE: @llvm.ppc.altivec.lvsl
7028 // CHECK-LE: store <4 x i32> zeroinitializer
7029 // CHECK-LE: @llvm.ppc.altivec.vperm
7030 // CHECK-LE: @llvm.ppc.altivec.lvsr
7031 // CHECK-LE: @llvm.ppc.altivec.vperm
7032 // CHECK-LE: @llvm.ppc.altivec.stvx
7033 
7034   vec_stvlx(vui, 0, &param_ui);
7035 // CHECK: @llvm.ppc.altivec.lvx
7036 // CHECK: @llvm.ppc.altivec.lvsl
7037 // CHECK: store <4 x i32> zeroinitializer
7038 // CHECK: @llvm.ppc.altivec.vperm
7039 // CHECK: @llvm.ppc.altivec.lvsr
7040 // CHECK: @llvm.ppc.altivec.vperm
7041 // CHECK: @llvm.ppc.altivec.stvx
7042 // CHECK-LE: @llvm.ppc.altivec.lvx
7043 // CHECK-LE: @llvm.ppc.altivec.lvsl
7044 // CHECK-LE: store <4 x i32> zeroinitializer
7045 // CHECK-LE: @llvm.ppc.altivec.vperm
7046 // CHECK-LE: @llvm.ppc.altivec.lvsr
7047 // CHECK-LE: @llvm.ppc.altivec.vperm
7048 // CHECK-LE: @llvm.ppc.altivec.stvx
7049 
7050   vec_stvlx(vui, 0, &vui);
7051 // CHECK: @llvm.ppc.altivec.lvx
7052 // CHECK: @llvm.ppc.altivec.lvsl
7053 // CHECK: store <4 x i32> zeroinitializer
7054 // CHECK: @llvm.ppc.altivec.vperm
7055 // CHECK: @llvm.ppc.altivec.lvsr
7056 // CHECK: @llvm.ppc.altivec.vperm
7057 // CHECK: @llvm.ppc.altivec.stvx
7058 // CHECK-LE: @llvm.ppc.altivec.lvx
7059 // CHECK-LE: @llvm.ppc.altivec.lvsl
7060 // CHECK-LE: store <4 x i32> zeroinitializer
7061 // CHECK-LE: @llvm.ppc.altivec.vperm
7062 // CHECK-LE: @llvm.ppc.altivec.lvsr
7063 // CHECK-LE: @llvm.ppc.altivec.vperm
7064 // CHECK-LE: @llvm.ppc.altivec.stvx
7065 
7066   vec_stvlx(vbi, 0, &vbi);
7067 // CHECK: store <4 x i32> zeroinitializer
7068 // CHECK: @llvm.ppc.altivec.lvx
7069 // CHECK: @llvm.ppc.altivec.lvsl
7070 // CHECK: @llvm.ppc.altivec.vperm
7071 // CHECK: @llvm.ppc.altivec.lvsr
7072 // CHECK: @llvm.ppc.altivec.vperm
7073 // CHECK: @llvm.ppc.altivec.stvx
7074 // CHECK-LE: store <4 x i32> zeroinitializer
7075 // CHECK-LE: @llvm.ppc.altivec.lvx
7076 // CHECK-LE: @llvm.ppc.altivec.lvsl
7077 // CHECK-LE: @llvm.ppc.altivec.vperm
7078 // CHECK-LE: @llvm.ppc.altivec.lvsr
7079 // CHECK-LE: @llvm.ppc.altivec.vperm
7080 // CHECK-LE: @llvm.ppc.altivec.stvx
7081 
7082   vec_stvlx(vf, 0, &vf);
7083 // CHECK: @llvm.ppc.altivec.lvx
7084 // CHECK: @llvm.ppc.altivec.lvsl
7085 // CHECK: store <4 x float> zeroinitializer
7086 // CHECK: @llvm.ppc.altivec.vperm
7087 // CHECK: @llvm.ppc.altivec.lvsr
7088 // CHECK: @llvm.ppc.altivec.vperm
7089 // CHECK: @llvm.ppc.altivec.stvx
7090 // CHECK-LE: @llvm.ppc.altivec.lvx
7091 // CHECK-LE: @llvm.ppc.altivec.lvsl
7092 // CHECK-LE: store <4 x float> zeroinitializer
7093 // CHECK-LE: @llvm.ppc.altivec.vperm
7094 // CHECK-LE: @llvm.ppc.altivec.lvsr
7095 // CHECK-LE: @llvm.ppc.altivec.vperm
7096 // CHECK-LE: @llvm.ppc.altivec.stvx
7097 
7098   /* vec_stvlxl */
7099   vec_stvlxl(vsc, 0, &param_sc);
7100 // CHECK: @llvm.ppc.altivec.lvx
7101 // CHECK: @llvm.ppc.altivec.lvsl
7102 // CHECK: store <16 x i8> zeroinitializer
7103 // CHECK: @llvm.ppc.altivec.vperm
7104 // CHECK: @llvm.ppc.altivec.lvsr
7105 // CHECK: @llvm.ppc.altivec.vperm
7106 // CHECK: @llvm.ppc.altivec.stvxl
7107 // CHECK-LE: @llvm.ppc.altivec.lvx
7108 // CHECK-LE: @llvm.ppc.altivec.lvsl
7109 // CHECK-LE: store <16 x i8> zeroinitializer
7110 // CHECK-LE: @llvm.ppc.altivec.vperm
7111 // CHECK-LE: @llvm.ppc.altivec.lvsr
7112 // CHECK-LE: @llvm.ppc.altivec.vperm
7113 // CHECK-LE: @llvm.ppc.altivec.stvxl
7114 
7115   vec_stvlxl(vsc, 0, &vsc);
7116 // CHECK: @llvm.ppc.altivec.lvx
7117 // CHECK: @llvm.ppc.altivec.lvsl
7118 // CHECK: store <16 x i8> zeroinitializer
7119 // CHECK: @llvm.ppc.altivec.vperm
7120 // CHECK: @llvm.ppc.altivec.lvsr
7121 // CHECK: @llvm.ppc.altivec.vperm
7122 // CHECK: @llvm.ppc.altivec.stvxl
7123 // CHECK-LE: @llvm.ppc.altivec.lvx
7124 // CHECK-LE: @llvm.ppc.altivec.lvsl
7125 // CHECK-LE: store <16 x i8> zeroinitializer
7126 // CHECK-LE: @llvm.ppc.altivec.vperm
7127 // CHECK-LE: @llvm.ppc.altivec.lvsr
7128 // CHECK-LE: @llvm.ppc.altivec.vperm
7129 // CHECK-LE: @llvm.ppc.altivec.stvxl
7130 
7131   vec_stvlxl(vuc, 0, &param_uc);
7132 // CHECK: @llvm.ppc.altivec.lvx
7133 // CHECK: @llvm.ppc.altivec.lvsl
7134 // CHECK: store <16 x i8> zeroinitializer
7135 // CHECK: @llvm.ppc.altivec.vperm
7136 // CHECK: @llvm.ppc.altivec.lvsr
7137 // CHECK: @llvm.ppc.altivec.vperm
7138 // CHECK: @llvm.ppc.altivec.stvxl
7139 // CHECK-LE: @llvm.ppc.altivec.lvx
7140 // CHECK-LE: @llvm.ppc.altivec.lvsl
7141 // CHECK-LE: store <16 x i8> zeroinitializer
7142 // CHECK-LE: @llvm.ppc.altivec.vperm
7143 // CHECK-LE: @llvm.ppc.altivec.lvsr
7144 // CHECK-LE: @llvm.ppc.altivec.vperm
7145 // CHECK-LE: @llvm.ppc.altivec.stvxl
7146 
7147   vec_stvlxl(vuc, 0, &vuc);
7148 // CHECK: @llvm.ppc.altivec.lvx
7149 // CHECK: @llvm.ppc.altivec.lvsl
7150 // CHECK: store <16 x i8> zeroinitializer
7151 // CHECK: @llvm.ppc.altivec.vperm
7152 // CHECK: @llvm.ppc.altivec.lvsr
7153 // CHECK: @llvm.ppc.altivec.vperm
7154 // CHECK: @llvm.ppc.altivec.stvxl
7155 // CHECK-LE: @llvm.ppc.altivec.lvx
7156 // CHECK-LE: @llvm.ppc.altivec.lvsl
7157 // CHECK-LE: store <16 x i8> zeroinitializer
7158 // CHECK-LE: @llvm.ppc.altivec.vperm
7159 // CHECK-LE: @llvm.ppc.altivec.lvsr
7160 // CHECK-LE: @llvm.ppc.altivec.vperm
7161 // CHECK-LE: @llvm.ppc.altivec.stvxl
7162 
7163   vec_stvlxl(vbc, 0, &vbc);
7164 // CHECK: store <16 x i8> zeroinitializer
7165 // CHECK: @llvm.ppc.altivec.lvx
7166 // CHECK: @llvm.ppc.altivec.lvsl
7167 // CHECK: @llvm.ppc.altivec.vperm
7168 // CHECK: @llvm.ppc.altivec.lvsr
7169 // CHECK: @llvm.ppc.altivec.vperm
7170 // CHECK: @llvm.ppc.altivec.stvxl
7171 // CHECK-LE: store <16 x i8> zeroinitializer
7172 // CHECK-LE: @llvm.ppc.altivec.lvx
7173 // CHECK-LE: @llvm.ppc.altivec.lvsl
7174 // CHECK-LE: @llvm.ppc.altivec.vperm
7175 // CHECK-LE: @llvm.ppc.altivec.lvsr
7176 // CHECK-LE: @llvm.ppc.altivec.vperm
7177 // CHECK-LE: @llvm.ppc.altivec.stvxl
7178 
7179   vec_stvlxl(vs, 0, &param_s);
7180 // CHECK: @llvm.ppc.altivec.lvx
7181 // CHECK: @llvm.ppc.altivec.lvsl
7182 // CHECK: store <8 x i16> zeroinitializer
7183 // CHECK: @llvm.ppc.altivec.vperm
7184 // CHECK: @llvm.ppc.altivec.lvsr
7185 // CHECK: @llvm.ppc.altivec.vperm
7186 // CHECK: @llvm.ppc.altivec.stvxl
7187 // CHECK-LE: @llvm.ppc.altivec.lvx
7188 // CHECK-LE: @llvm.ppc.altivec.lvsl
7189 // CHECK-LE: store <8 x i16> zeroinitializer
7190 // CHECK-LE: @llvm.ppc.altivec.vperm
7191 // CHECK-LE: @llvm.ppc.altivec.lvsr
7192 // CHECK-LE: @llvm.ppc.altivec.vperm
7193 // CHECK-LE: @llvm.ppc.altivec.stvxl
7194 
7195   vec_stvlxl(vs, 0, &vs);
7196 // CHECK: @llvm.ppc.altivec.lvx
7197 // CHECK: @llvm.ppc.altivec.lvsl
7198 // CHECK: store <8 x i16> zeroinitializer
7199 // CHECK: @llvm.ppc.altivec.vperm
7200 // CHECK: @llvm.ppc.altivec.lvsr
7201 // CHECK: @llvm.ppc.altivec.vperm
7202 // CHECK: @llvm.ppc.altivec.stvxl
7203 // CHECK-LE: @llvm.ppc.altivec.lvx
7204 // CHECK-LE: @llvm.ppc.altivec.lvsl
7205 // CHECK-LE: store <8 x i16> zeroinitializer
7206 // CHECK-LE: @llvm.ppc.altivec.vperm
7207 // CHECK-LE: @llvm.ppc.altivec.lvsr
7208 // CHECK-LE: @llvm.ppc.altivec.vperm
7209 // CHECK-LE: @llvm.ppc.altivec.stvxl
7210 
7211   vec_stvlxl(vus, 0, &param_us);
7212 // CHECK: @llvm.ppc.altivec.lvx
7213 // CHECK: @llvm.ppc.altivec.lvsl
7214 // CHECK: store <8 x i16> zeroinitializer
7215 // CHECK: @llvm.ppc.altivec.vperm
7216 // CHECK: @llvm.ppc.altivec.lvsr
7217 // CHECK: @llvm.ppc.altivec.vperm
7218 // CHECK: @llvm.ppc.altivec.stvxl
7219 // CHECK-LE: @llvm.ppc.altivec.lvx
7220 // CHECK-LE: @llvm.ppc.altivec.lvsl
7221 // CHECK-LE: store <8 x i16> zeroinitializer
7222 // CHECK-LE: @llvm.ppc.altivec.vperm
7223 // CHECK-LE: @llvm.ppc.altivec.lvsr
7224 // CHECK-LE: @llvm.ppc.altivec.vperm
7225 // CHECK-LE: @llvm.ppc.altivec.stvxl
7226 
7227   vec_stvlxl(vus, 0, &vus);
7228 // CHECK: @llvm.ppc.altivec.lvx
7229 // CHECK: @llvm.ppc.altivec.lvsl
7230 // CHECK: store <8 x i16> zeroinitializer
7231 // CHECK: @llvm.ppc.altivec.vperm
7232 // CHECK: @llvm.ppc.altivec.lvsr
7233 // CHECK: @llvm.ppc.altivec.vperm
7234 // CHECK: @llvm.ppc.altivec.stvxl
7235 // CHECK-LE: @llvm.ppc.altivec.lvx
7236 // CHECK-LE: @llvm.ppc.altivec.lvsl
7237 // CHECK-LE: store <8 x i16> zeroinitializer
7238 // CHECK-LE: @llvm.ppc.altivec.vperm
7239 // CHECK-LE: @llvm.ppc.altivec.lvsr
7240 // CHECK-LE: @llvm.ppc.altivec.vperm
7241 // CHECK-LE: @llvm.ppc.altivec.stvxl
7242 
7243   vec_stvlxl(vbs, 0, &vbs);
7244 // CHECK: store <8 x i16> zeroinitializer
7245 // CHECK: @llvm.ppc.altivec.lvx
7246 // CHECK: @llvm.ppc.altivec.lvsl
7247 // CHECK: @llvm.ppc.altivec.vperm
7248 // CHECK: @llvm.ppc.altivec.lvsr
7249 // CHECK: @llvm.ppc.altivec.vperm
7250 // CHECK: @llvm.ppc.altivec.stvxl
7251 // CHECK-LE: store <8 x i16> zeroinitializer
7252 // CHECK-LE: @llvm.ppc.altivec.lvx
7253 // CHECK-LE: @llvm.ppc.altivec.lvsl
7254 // CHECK-LE: @llvm.ppc.altivec.vperm
7255 // CHECK-LE: @llvm.ppc.altivec.lvsr
7256 // CHECK-LE: @llvm.ppc.altivec.vperm
7257 // CHECK-LE: @llvm.ppc.altivec.stvxl
7258 
7259   vec_stvlxl(vp, 0, &vp);
7260 // CHECK: store <8 x i16> zeroinitializer
7261 // CHECK: @llvm.ppc.altivec.lvx
7262 // CHECK: @llvm.ppc.altivec.lvsl
7263 // CHECK: @llvm.ppc.altivec.vperm
7264 // CHECK: @llvm.ppc.altivec.lvsr
7265 // CHECK: @llvm.ppc.altivec.vperm
7266 // CHECK: @llvm.ppc.altivec.stvxl
7267 // CHECK-LE: store <8 x i16> zeroinitializer
7268 // CHECK-LE: @llvm.ppc.altivec.lvx
7269 // CHECK-LE: @llvm.ppc.altivec.lvsl
7270 // CHECK-LE: @llvm.ppc.altivec.vperm
7271 // CHECK-LE: @llvm.ppc.altivec.lvsr
7272 // CHECK-LE: @llvm.ppc.altivec.vperm
7273 // CHECK-LE: @llvm.ppc.altivec.stvxl
7274 
7275   vec_stvlxl(vi, 0, &param_i);
7276 // CHECK: @llvm.ppc.altivec.lvx
7277 // CHECK: @llvm.ppc.altivec.lvsl
7278 // CHECK: store <4 x i32> zeroinitializer
7279 // CHECK: @llvm.ppc.altivec.vperm
7280 // CHECK: @llvm.ppc.altivec.lvsr
7281 // CHECK: @llvm.ppc.altivec.vperm
7282 // CHECK: @llvm.ppc.altivec.stvxl
7283 // CHECK-LE: @llvm.ppc.altivec.lvx
7284 // CHECK-LE: @llvm.ppc.altivec.lvsl
7285 // CHECK-LE: store <4 x i32> zeroinitializer
7286 // CHECK-LE: @llvm.ppc.altivec.vperm
7287 // CHECK-LE: @llvm.ppc.altivec.lvsr
7288 // CHECK-LE: @llvm.ppc.altivec.vperm
7289 // CHECK-LE: @llvm.ppc.altivec.stvxl
7290 
7291   vec_stvlxl(vi, 0, &vi);
7292 // CHECK: @llvm.ppc.altivec.lvx
7293 // CHECK: @llvm.ppc.altivec.lvsl
7294 // CHECK: store <4 x i32> zeroinitializer
7295 // CHECK: @llvm.ppc.altivec.vperm
7296 // CHECK: @llvm.ppc.altivec.lvsr
7297 // CHECK: @llvm.ppc.altivec.vperm
7298 // CHECK: @llvm.ppc.altivec.stvxl
7299 // CHECK-LE: @llvm.ppc.altivec.lvx
7300 // CHECK-LE: @llvm.ppc.altivec.lvsl
7301 // CHECK-LE: store <4 x i32> zeroinitializer
7302 // CHECK-LE: @llvm.ppc.altivec.vperm
7303 // CHECK-LE: @llvm.ppc.altivec.lvsr
7304 // CHECK-LE: @llvm.ppc.altivec.vperm
7305 // CHECK-LE: @llvm.ppc.altivec.stvxl
7306 
7307   vec_stvlxl(vui, 0, &param_ui);
7308 // CHECK: @llvm.ppc.altivec.lvx
7309 // CHECK: @llvm.ppc.altivec.lvsl
7310 // CHECK: store <4 x i32> zeroinitializer
7311 // CHECK: @llvm.ppc.altivec.vperm
7312 // CHECK: @llvm.ppc.altivec.lvsr
7313 // CHECK: @llvm.ppc.altivec.vperm
7314 // CHECK: @llvm.ppc.altivec.stvxl
7315 // CHECK-LE: @llvm.ppc.altivec.lvx
7316 // CHECK-LE: @llvm.ppc.altivec.lvsl
7317 // CHECK-LE: store <4 x i32> zeroinitializer
7318 // CHECK-LE: @llvm.ppc.altivec.vperm
7319 // CHECK-LE: @llvm.ppc.altivec.lvsr
7320 // CHECK-LE: @llvm.ppc.altivec.vperm
7321 // CHECK-LE: @llvm.ppc.altivec.stvxl
7322 
7323   vec_stvlxl(vui, 0, &vui);
7324 // CHECK: @llvm.ppc.altivec.lvx
7325 // CHECK: @llvm.ppc.altivec.lvsl
7326 // CHECK: store <4 x i32> zeroinitializer
7327 // CHECK: @llvm.ppc.altivec.vperm
7328 // CHECK: @llvm.ppc.altivec.lvsr
7329 // CHECK: @llvm.ppc.altivec.vperm
7330 // CHECK: @llvm.ppc.altivec.stvxl
7331 // CHECK-LE: @llvm.ppc.altivec.lvx
7332 // CHECK-LE: @llvm.ppc.altivec.lvsl
7333 // CHECK-LE: store <4 x i32> zeroinitializer
7334 // CHECK-LE: @llvm.ppc.altivec.vperm
7335 // CHECK-LE: @llvm.ppc.altivec.lvsr
7336 // CHECK-LE: @llvm.ppc.altivec.vperm
7337 // CHECK-LE: @llvm.ppc.altivec.stvxl
7338 
7339   vec_stvlxl(vbi, 0, &vbi);
7340 // CHECK: store <4 x i32> zeroinitializer
7341 // CHECK: @llvm.ppc.altivec.lvx
7342 // CHECK: @llvm.ppc.altivec.lvsl
7343 // CHECK: @llvm.ppc.altivec.vperm
7344 // CHECK: @llvm.ppc.altivec.lvsr
7345 // CHECK: @llvm.ppc.altivec.vperm
7346 // CHECK: @llvm.ppc.altivec.stvxl
7347 // CHECK-LE: store <4 x i32> zeroinitializer
7348 // CHECK-LE: @llvm.ppc.altivec.lvx
7349 // CHECK-LE: @llvm.ppc.altivec.lvsl
7350 // CHECK-LE: @llvm.ppc.altivec.vperm
7351 // CHECK-LE: @llvm.ppc.altivec.lvsr
7352 // CHECK-LE: @llvm.ppc.altivec.vperm
7353 // CHECK-LE: @llvm.ppc.altivec.stvxl
7354 
7355   vec_stvlxl(vf, 0, &vf);
7356 // CHECK: @llvm.ppc.altivec.lvx
7357 // CHECK: @llvm.ppc.altivec.lvsl
7358 // CHECK: store <4 x float> zeroinitializer
7359 // CHECK: @llvm.ppc.altivec.vperm
7360 // CHECK: @llvm.ppc.altivec.lvsr
7361 // CHECK: @llvm.ppc.altivec.vperm
7362 // CHECK: @llvm.ppc.altivec.stvxl
7363 // CHECK-LE: @llvm.ppc.altivec.lvx
7364 // CHECK-LE: @llvm.ppc.altivec.lvsl
7365 // CHECK-LE: store <4 x float> zeroinitializer
7366 // CHECK-LE: @llvm.ppc.altivec.vperm
7367 // CHECK-LE: @llvm.ppc.altivec.lvsr
7368 // CHECK-LE: @llvm.ppc.altivec.vperm
7369 // CHECK-LE: @llvm.ppc.altivec.stvxl
7370 
7371   /* vec_stvrx */
7372   vec_stvrx(vsc, 0, &param_sc);
7373 // CHECK: @llvm.ppc.altivec.lvx
7374 // CHECK: @llvm.ppc.altivec.lvsl
7375 // CHECK: store <16 x i8> zeroinitializer
7376 // CHECK: @llvm.ppc.altivec.vperm
7377 // CHECK: @llvm.ppc.altivec.lvsr
7378 // CHECK: @llvm.ppc.altivec.vperm
7379 // CHECK: @llvm.ppc.altivec.stvx
7380 // CHECK-LE: @llvm.ppc.altivec.lvx
7381 // CHECK-LE: @llvm.ppc.altivec.lvsl
7382 // CHECK-LE: store <16 x i8> zeroinitializer
7383 // CHECK-LE: @llvm.ppc.altivec.vperm
7384 // CHECK-LE: @llvm.ppc.altivec.lvsr
7385 // CHECK-LE: @llvm.ppc.altivec.vperm
7386 // CHECK-LE: @llvm.ppc.altivec.stvx
7387 
7388   vec_stvrx(vsc, 0, &vsc);
7389 // CHECK: @llvm.ppc.altivec.lvx
7390 // CHECK: @llvm.ppc.altivec.lvsl
7391 // CHECK: store <16 x i8> zeroinitializer
7392 // CHECK: @llvm.ppc.altivec.vperm
7393 // CHECK: @llvm.ppc.altivec.lvsr
7394 // CHECK: @llvm.ppc.altivec.vperm
7395 // CHECK: @llvm.ppc.altivec.stvx
7396 // CHECK-LE: @llvm.ppc.altivec.lvx
7397 // CHECK-LE: @llvm.ppc.altivec.lvsl
7398 // CHECK-LE: store <16 x i8> zeroinitializer
7399 // CHECK-LE: @llvm.ppc.altivec.vperm
7400 // CHECK-LE: @llvm.ppc.altivec.lvsr
7401 // CHECK-LE: @llvm.ppc.altivec.vperm
7402 // CHECK-LE: @llvm.ppc.altivec.stvx
7403 
7404   vec_stvrx(vuc, 0, &param_uc);
7405 // CHECK: @llvm.ppc.altivec.lvx
7406 // CHECK: @llvm.ppc.altivec.lvsl
7407 // CHECK: store <16 x i8> zeroinitializer
7408 // CHECK: @llvm.ppc.altivec.vperm
7409 // CHECK: @llvm.ppc.altivec.lvsr
7410 // CHECK: @llvm.ppc.altivec.vperm
7411 // CHECK: @llvm.ppc.altivec.stvx
7412 // CHECK-LE: @llvm.ppc.altivec.lvx
7413 // CHECK-LE: @llvm.ppc.altivec.lvsl
7414 // CHECK-LE: store <16 x i8> zeroinitializer
7415 // CHECK-LE: @llvm.ppc.altivec.vperm
7416 // CHECK-LE: @llvm.ppc.altivec.lvsr
7417 // CHECK-LE: @llvm.ppc.altivec.vperm
7418 // CHECK-LE: @llvm.ppc.altivec.stvx
7419 
7420   vec_stvrx(vuc, 0, &vuc);
7421 // CHECK: @llvm.ppc.altivec.lvx
7422 // CHECK: @llvm.ppc.altivec.lvsl
7423 // CHECK: store <16 x i8> zeroinitializer
7424 // CHECK: @llvm.ppc.altivec.vperm
7425 // CHECK: @llvm.ppc.altivec.lvsr
7426 // CHECK: @llvm.ppc.altivec.vperm
7427 // CHECK: @llvm.ppc.altivec.stvx
7428 // CHECK-LE: @llvm.ppc.altivec.lvx
7429 // CHECK-LE: @llvm.ppc.altivec.lvsl
7430 // CHECK-LE: store <16 x i8> zeroinitializer
7431 // CHECK-LE: @llvm.ppc.altivec.vperm
7432 // CHECK-LE: @llvm.ppc.altivec.lvsr
7433 // CHECK-LE: @llvm.ppc.altivec.vperm
7434 // CHECK-LE: @llvm.ppc.altivec.stvx
7435 
7436   vec_stvrx(vbc, 0, &vbc);
7437 // CHECK: @llvm.ppc.altivec.lvx
7438 // CHECK: store <16 x i8> zeroinitializer
7439 // CHECK: @llvm.ppc.altivec.lvsl
7440 // CHECK: @llvm.ppc.altivec.vperm
7441 // CHECK: @llvm.ppc.altivec.lvsr
7442 // CHECK: @llvm.ppc.altivec.vperm
7443 // CHECK: @llvm.ppc.altivec.stvx
7444 // CHECK-LE: @llvm.ppc.altivec.lvx
7445 // CHECK-LE: store <16 x i8> zeroinitializer
7446 // CHECK-LE: @llvm.ppc.altivec.lvsl
7447 // CHECK-LE: @llvm.ppc.altivec.vperm
7448 // CHECK-LE: @llvm.ppc.altivec.lvsr
7449 // CHECK-LE: @llvm.ppc.altivec.vperm
7450 // CHECK-LE: @llvm.ppc.altivec.stvx
7451 
7452   vec_stvrx(vs, 0, &param_s);
7453 // CHECK: @llvm.ppc.altivec.lvx
7454 // CHECK: @llvm.ppc.altivec.lvsl
7455 // CHECK: store <8 x i16> zeroinitializer
7456 // CHECK: @llvm.ppc.altivec.vperm
7457 // CHECK: @llvm.ppc.altivec.lvsr
7458 // CHECK: @llvm.ppc.altivec.vperm
7459 // CHECK: @llvm.ppc.altivec.stvx
7460 // CHECK-LE: @llvm.ppc.altivec.lvx
7461 // CHECK-LE: @llvm.ppc.altivec.lvsl
7462 // CHECK-LE: store <8 x i16> zeroinitializer
7463 // CHECK-LE: @llvm.ppc.altivec.vperm
7464 // CHECK-LE: @llvm.ppc.altivec.lvsr
7465 // CHECK-LE: @llvm.ppc.altivec.vperm
7466 // CHECK-LE: @llvm.ppc.altivec.stvx
7467 
7468   vec_stvrx(vs, 0, &vs);
7469 // CHECK: @llvm.ppc.altivec.lvx
7470 // CHECK: @llvm.ppc.altivec.lvsl
7471 // CHECK: store <8 x i16> zeroinitializer
7472 // CHECK: @llvm.ppc.altivec.vperm
7473 // CHECK: @llvm.ppc.altivec.lvsr
7474 // CHECK: @llvm.ppc.altivec.vperm
7475 // CHECK: @llvm.ppc.altivec.stvx
7476 // CHECK-LE: @llvm.ppc.altivec.lvx
7477 // CHECK-LE: @llvm.ppc.altivec.lvsl
7478 // CHECK-LE: store <8 x i16> zeroinitializer
7479 // CHECK-LE: @llvm.ppc.altivec.vperm
7480 // CHECK-LE: @llvm.ppc.altivec.lvsr
7481 // CHECK-LE: @llvm.ppc.altivec.vperm
7482 // CHECK-LE: @llvm.ppc.altivec.stvx
7483 
7484   vec_stvrx(vus, 0, &param_us);
7485 // CHECK: @llvm.ppc.altivec.lvx
7486 // CHECK: @llvm.ppc.altivec.lvsl
7487 // CHECK: store <8 x i16> zeroinitializer
7488 // CHECK: @llvm.ppc.altivec.vperm
7489 // CHECK: @llvm.ppc.altivec.lvsr
7490 // CHECK: @llvm.ppc.altivec.vperm
7491 // CHECK: @llvm.ppc.altivec.stvx
7492 // CHECK-LE: @llvm.ppc.altivec.lvx
7493 // CHECK-LE: @llvm.ppc.altivec.lvsl
7494 // CHECK-LE: store <8 x i16> zeroinitializer
7495 // CHECK-LE: @llvm.ppc.altivec.vperm
7496 // CHECK-LE: @llvm.ppc.altivec.lvsr
7497 // CHECK-LE: @llvm.ppc.altivec.vperm
7498 // CHECK-LE: @llvm.ppc.altivec.stvx
7499 
7500   vec_stvrx(vus, 0, &vus);
7501 // CHECK: @llvm.ppc.altivec.lvx
7502 // CHECK: @llvm.ppc.altivec.lvsl
7503 // CHECK: store <8 x i16> zeroinitializer
7504 // CHECK: @llvm.ppc.altivec.vperm
7505 // CHECK: @llvm.ppc.altivec.lvsr
7506 // CHECK: @llvm.ppc.altivec.vperm
7507 // CHECK: @llvm.ppc.altivec.stvx
7508 // CHECK-LE: @llvm.ppc.altivec.lvx
7509 // CHECK-LE: @llvm.ppc.altivec.lvsl
7510 // CHECK-LE: store <8 x i16> zeroinitializer
7511 // CHECK-LE: @llvm.ppc.altivec.vperm
7512 // CHECK-LE: @llvm.ppc.altivec.lvsr
7513 // CHECK-LE: @llvm.ppc.altivec.vperm
7514 // CHECK-LE: @llvm.ppc.altivec.stvx
7515 
7516   vec_stvrx(vbs, 0, &vbs);
7517 // CHECK: @llvm.ppc.altivec.lvx
7518 // CHECK: store <8 x i16> zeroinitializer
7519 // CHECK: @llvm.ppc.altivec.lvsl
7520 // CHECK: @llvm.ppc.altivec.vperm
7521 // CHECK: @llvm.ppc.altivec.lvsr
7522 // CHECK: @llvm.ppc.altivec.vperm
7523 // CHECK: @llvm.ppc.altivec.stvx
7524 // CHECK-LE: @llvm.ppc.altivec.lvx
7525 // CHECK-LE: store <8 x i16> zeroinitializer
7526 // CHECK-LE: @llvm.ppc.altivec.lvsl
7527 // CHECK-LE: @llvm.ppc.altivec.vperm
7528 // CHECK-LE: @llvm.ppc.altivec.lvsr
7529 // CHECK-LE: @llvm.ppc.altivec.vperm
7530 // CHECK-LE: @llvm.ppc.altivec.stvx
7531 
7532   vec_stvrx(vp, 0, &vp);
7533 // CHECK: @llvm.ppc.altivec.lvx
7534 // CHECK: store <8 x i16> zeroinitializer
7535 // CHECK: @llvm.ppc.altivec.lvsl
7536 // CHECK: @llvm.ppc.altivec.vperm
7537 // CHECK: @llvm.ppc.altivec.lvsr
7538 // CHECK: @llvm.ppc.altivec.vperm
7539 // CHECK: @llvm.ppc.altivec.stvx
7540 // CHECK-LE: @llvm.ppc.altivec.lvx
7541 // CHECK-LE: store <8 x i16> zeroinitializer
7542 // CHECK-LE: @llvm.ppc.altivec.lvsl
7543 // CHECK-LE: @llvm.ppc.altivec.vperm
7544 // CHECK-LE: @llvm.ppc.altivec.lvsr
7545 // CHECK-LE: @llvm.ppc.altivec.vperm
7546 // CHECK-LE: @llvm.ppc.altivec.stvx
7547 
7548   vec_stvrx(vi, 0, &param_i);
7549 // CHECK: @llvm.ppc.altivec.lvx
7550 // CHECK: @llvm.ppc.altivec.lvsl
7551 // CHECK: store <4 x i32> zeroinitializer
7552 // CHECK: @llvm.ppc.altivec.vperm
7553 // CHECK: @llvm.ppc.altivec.lvsr
7554 // CHECK: @llvm.ppc.altivec.vperm
7555 // CHECK: @llvm.ppc.altivec.stvx
7556 // CHECK-LE: @llvm.ppc.altivec.lvx
7557 // CHECK-LE: @llvm.ppc.altivec.lvsl
7558 // CHECK-LE: store <4 x i32> zeroinitializer
7559 // CHECK-LE: @llvm.ppc.altivec.vperm
7560 // CHECK-LE: @llvm.ppc.altivec.lvsr
7561 // CHECK-LE: @llvm.ppc.altivec.vperm
7562 // CHECK-LE: @llvm.ppc.altivec.stvx
7563 
7564   vec_stvrx(vi, 0, &vi);
7565 // CHECK: @llvm.ppc.altivec.lvx
7566 // CHECK: @llvm.ppc.altivec.lvsl
7567 // CHECK: store <4 x i32> zeroinitializer
7568 // CHECK: @llvm.ppc.altivec.vperm
7569 // CHECK: @llvm.ppc.altivec.lvsr
7570 // CHECK: @llvm.ppc.altivec.vperm
7571 // CHECK: @llvm.ppc.altivec.stvx
7572 // CHECK-LE: @llvm.ppc.altivec.lvx
7573 // CHECK-LE: @llvm.ppc.altivec.lvsl
7574 // CHECK-LE: store <4 x i32> zeroinitializer
7575 // CHECK-LE: @llvm.ppc.altivec.vperm
7576 // CHECK-LE: @llvm.ppc.altivec.lvsr
7577 // CHECK-LE: @llvm.ppc.altivec.vperm
7578 // CHECK-LE: @llvm.ppc.altivec.stvx
7579 
7580   vec_stvrx(vui, 0, &param_ui);
7581 // CHECK: @llvm.ppc.altivec.lvx
7582 // CHECK: @llvm.ppc.altivec.lvsl
7583 // CHECK: store <4 x i32> zeroinitializer
7584 // CHECK: @llvm.ppc.altivec.vperm
7585 // CHECK: @llvm.ppc.altivec.lvsr
7586 // CHECK: @llvm.ppc.altivec.vperm
7587 // CHECK: @llvm.ppc.altivec.stvx
7588 // CHECK-LE: @llvm.ppc.altivec.lvx
7589 // CHECK-LE: @llvm.ppc.altivec.lvsl
7590 // CHECK-LE: store <4 x i32> zeroinitializer
7591 // CHECK-LE: @llvm.ppc.altivec.vperm
7592 // CHECK-LE: @llvm.ppc.altivec.lvsr
7593 // CHECK-LE: @llvm.ppc.altivec.vperm
7594 // CHECK-LE: @llvm.ppc.altivec.stvx
7595 
7596   vec_stvrx(vui, 0, &vui);
7597 // CHECK: @llvm.ppc.altivec.lvx
7598 // CHECK: @llvm.ppc.altivec.lvsl
7599 // CHECK: store <4 x i32> zeroinitializer
7600 // CHECK: @llvm.ppc.altivec.vperm
7601 // CHECK: @llvm.ppc.altivec.lvsr
7602 // CHECK: @llvm.ppc.altivec.vperm
7603 // CHECK: @llvm.ppc.altivec.stvx
7604 // CHECK-LE: @llvm.ppc.altivec.lvx
7605 // CHECK-LE: @llvm.ppc.altivec.lvsl
7606 // CHECK-LE: store <4 x i32> zeroinitializer
7607 // CHECK-LE: @llvm.ppc.altivec.vperm
7608 // CHECK-LE: @llvm.ppc.altivec.lvsr
7609 // CHECK-LE: @llvm.ppc.altivec.vperm
7610 // CHECK-LE: @llvm.ppc.altivec.stvx
7611 
7612   vec_stvrx(vbi, 0, &vbi);
7613 // CHECK: @llvm.ppc.altivec.lvx
7614 // CHECK: store <4 x i32> zeroinitializer
7615 // CHECK: @llvm.ppc.altivec.lvsl
7616 // CHECK: @llvm.ppc.altivec.vperm
7617 // CHECK: @llvm.ppc.altivec.lvsr
7618 // CHECK: @llvm.ppc.altivec.vperm
7619 // CHECK: @llvm.ppc.altivec.stvx
7620 // CHECK-LE: @llvm.ppc.altivec.lvx
7621 // CHECK-LE: store <4 x i32> zeroinitializer
7622 // CHECK-LE: @llvm.ppc.altivec.lvsl
7623 // CHECK-LE: @llvm.ppc.altivec.vperm
7624 // CHECK-LE: @llvm.ppc.altivec.lvsr
7625 // CHECK-LE: @llvm.ppc.altivec.vperm
7626 // CHECK-LE: @llvm.ppc.altivec.stvx
7627 
7628   vec_stvrx(vf, 0, &vf);
7629 // CHECK: @llvm.ppc.altivec.lvx
7630 // CHECK: @llvm.ppc.altivec.lvsl
7631 // CHECK: store <4 x float> zeroinitializer
7632 // CHECK: @llvm.ppc.altivec.vperm
7633 // CHECK: @llvm.ppc.altivec.lvsr
7634 // CHECK: @llvm.ppc.altivec.vperm
7635 // CHECK: @llvm.ppc.altivec.stvx
7636 // CHECK-LE: @llvm.ppc.altivec.lvx
7637 // CHECK-LE: @llvm.ppc.altivec.lvsl
7638 // CHECK-LE: store <4 x float> zeroinitializer
7639 // CHECK-LE: @llvm.ppc.altivec.vperm
7640 // CHECK-LE: @llvm.ppc.altivec.lvsr
7641 // CHECK-LE: @llvm.ppc.altivec.vperm
7642 // CHECK-LE: @llvm.ppc.altivec.stvx
7643 
7644   /* vec_stvrxl */
7645   vec_stvrxl(vsc, 0, &param_sc);
7646 // CHECK: @llvm.ppc.altivec.lvx
7647 // CHECK: @llvm.ppc.altivec.lvsl
7648 // CHECK: store <16 x i8> zeroinitializer
7649 // CHECK: @llvm.ppc.altivec.vperm
7650 // CHECK: @llvm.ppc.altivec.lvsr
7651 // CHECK: @llvm.ppc.altivec.vperm
7652 // CHECK: @llvm.ppc.altivec.stvxl
7653 // CHECK-LE: @llvm.ppc.altivec.lvx
7654 // CHECK-LE: @llvm.ppc.altivec.lvsl
7655 // CHECK-LE: store <16 x i8> zeroinitializer
7656 // CHECK-LE: @llvm.ppc.altivec.vperm
7657 // CHECK-LE: @llvm.ppc.altivec.lvsr
7658 // CHECK-LE: @llvm.ppc.altivec.vperm
7659 // CHECK-LE: @llvm.ppc.altivec.stvxl
7660 
7661   vec_stvrxl(vsc, 0, &vsc);
7662 // CHECK: @llvm.ppc.altivec.lvx
7663 // CHECK: @llvm.ppc.altivec.lvsl
7664 // CHECK: store <16 x i8> zeroinitializer
7665 // CHECK: @llvm.ppc.altivec.vperm
7666 // CHECK: @llvm.ppc.altivec.lvsr
7667 // CHECK: @llvm.ppc.altivec.vperm
7668 // CHECK: @llvm.ppc.altivec.stvxl
7669 // CHECK-LE: @llvm.ppc.altivec.lvx
7670 // CHECK-LE: @llvm.ppc.altivec.lvsl
7671 // CHECK-LE: store <16 x i8> zeroinitializer
7672 // CHECK-LE: @llvm.ppc.altivec.vperm
7673 // CHECK-LE: @llvm.ppc.altivec.lvsr
7674 // CHECK-LE: @llvm.ppc.altivec.vperm
7675 // CHECK-LE: @llvm.ppc.altivec.stvxl
7676 
7677   vec_stvrxl(vuc, 0, &param_uc);
7678 // CHECK: @llvm.ppc.altivec.lvx
7679 // CHECK: @llvm.ppc.altivec.lvsl
7680 // CHECK: store <16 x i8> zeroinitializer
7681 // CHECK: @llvm.ppc.altivec.vperm
7682 // CHECK: @llvm.ppc.altivec.lvsr
7683 // CHECK: @llvm.ppc.altivec.vperm
7684 // CHECK: @llvm.ppc.altivec.stvxl
7685 // CHECK-LE: @llvm.ppc.altivec.lvx
7686 // CHECK-LE: @llvm.ppc.altivec.lvsl
7687 // CHECK-LE: store <16 x i8> zeroinitializer
7688 // CHECK-LE: @llvm.ppc.altivec.vperm
7689 // CHECK-LE: @llvm.ppc.altivec.lvsr
7690 // CHECK-LE: @llvm.ppc.altivec.vperm
7691 // CHECK-LE: @llvm.ppc.altivec.stvxl
7692 
7693   vec_stvrxl(vuc, 0, &vuc);
7694 // CHECK: @llvm.ppc.altivec.lvx
7695 // CHECK: @llvm.ppc.altivec.lvsl
7696 // CHECK: store <16 x i8> zeroinitializer
7697 // CHECK: @llvm.ppc.altivec.vperm
7698 // CHECK: @llvm.ppc.altivec.lvsr
7699 // CHECK: @llvm.ppc.altivec.vperm
7700 // CHECK: @llvm.ppc.altivec.stvxl
7701 // CHECK-LE: @llvm.ppc.altivec.lvx
7702 // CHECK-LE: @llvm.ppc.altivec.lvsl
7703 // CHECK-LE: store <16 x i8> zeroinitializer
7704 // CHECK-LE: @llvm.ppc.altivec.vperm
7705 // CHECK-LE: @llvm.ppc.altivec.lvsr
7706 // CHECK-LE: @llvm.ppc.altivec.vperm
7707 // CHECK-LE: @llvm.ppc.altivec.stvxl
7708 
7709   vec_stvrxl(vbc, 0, &vbc);
7710 // CHECK: @llvm.ppc.altivec.lvx
7711 // CHECK: store <16 x i8> zeroinitializer
7712 // CHECK: @llvm.ppc.altivec.lvsl
7713 // CHECK: @llvm.ppc.altivec.vperm
7714 // CHECK: @llvm.ppc.altivec.lvsr
7715 // CHECK: @llvm.ppc.altivec.vperm
7716 // CHECK: @llvm.ppc.altivec.stvxl
7717 // CHECK-LE: @llvm.ppc.altivec.lvx
7718 // CHECK-LE: store <16 x i8> zeroinitializer
7719 // CHECK-LE: @llvm.ppc.altivec.lvsl
7720 // CHECK-LE: @llvm.ppc.altivec.vperm
7721 // CHECK-LE: @llvm.ppc.altivec.lvsr
7722 // CHECK-LE: @llvm.ppc.altivec.vperm
7723 // CHECK-LE: @llvm.ppc.altivec.stvxl
7724 
7725   vec_stvrxl(vs, 0, &param_s);
7726 // CHECK: @llvm.ppc.altivec.lvx
7727 // CHECK: @llvm.ppc.altivec.lvsl
7728 // CHECK: store <8 x i16> zeroinitializer
7729 // CHECK: @llvm.ppc.altivec.vperm
7730 // CHECK: @llvm.ppc.altivec.lvsr
7731 // CHECK: @llvm.ppc.altivec.vperm
7732 // CHECK: @llvm.ppc.altivec.stvxl
7733 // CHECK-LE: @llvm.ppc.altivec.lvx
7734 // CHECK-LE: @llvm.ppc.altivec.lvsl
7735 // CHECK-LE: store <8 x i16> zeroinitializer
7736 // CHECK-LE: @llvm.ppc.altivec.vperm
7737 // CHECK-LE: @llvm.ppc.altivec.lvsr
7738 // CHECK-LE: @llvm.ppc.altivec.vperm
7739 // CHECK-LE: @llvm.ppc.altivec.stvxl
7740 
7741   vec_stvrxl(vs, 0, &vs);
7742 // CHECK: @llvm.ppc.altivec.lvx
7743 // CHECK: @llvm.ppc.altivec.lvsl
7744 // CHECK: store <8 x i16> zeroinitializer
7745 // CHECK: @llvm.ppc.altivec.vperm
7746 // CHECK: @llvm.ppc.altivec.lvsr
7747 // CHECK: @llvm.ppc.altivec.vperm
7748 // CHECK: @llvm.ppc.altivec.stvxl
7749 // CHECK-LE: @llvm.ppc.altivec.lvx
7750 // CHECK-LE: @llvm.ppc.altivec.lvsl
7751 // CHECK-LE: store <8 x i16> zeroinitializer
7752 // CHECK-LE: @llvm.ppc.altivec.vperm
7753 // CHECK-LE: @llvm.ppc.altivec.lvsr
7754 // CHECK-LE: @llvm.ppc.altivec.vperm
7755 // CHECK-LE: @llvm.ppc.altivec.stvxl
7756 
7757   vec_stvrxl(vus, 0, &param_us);
7758 // CHECK: @llvm.ppc.altivec.lvx
7759 // CHECK: @llvm.ppc.altivec.lvsl
7760 // CHECK: store <8 x i16> zeroinitializer
7761 // CHECK: @llvm.ppc.altivec.vperm
7762 // CHECK: @llvm.ppc.altivec.lvsr
7763 // CHECK: @llvm.ppc.altivec.vperm
7764 // CHECK: @llvm.ppc.altivec.stvxl
7765 // CHECK-LE: @llvm.ppc.altivec.lvx
7766 // CHECK-LE: @llvm.ppc.altivec.lvsl
7767 // CHECK-LE: store <8 x i16> zeroinitializer
7768 // CHECK-LE: @llvm.ppc.altivec.vperm
7769 // CHECK-LE: @llvm.ppc.altivec.lvsr
7770 // CHECK-LE: @llvm.ppc.altivec.vperm
7771 // CHECK-LE: @llvm.ppc.altivec.stvxl
7772 
7773   vec_stvrxl(vus, 0, &vus);
7774 // CHECK: @llvm.ppc.altivec.lvx
7775 // CHECK: @llvm.ppc.altivec.lvsl
7776 // CHECK: store <8 x i16> zeroinitializer
7777 // CHECK: @llvm.ppc.altivec.vperm
7778 // CHECK: @llvm.ppc.altivec.lvsr
7779 // CHECK: @llvm.ppc.altivec.vperm
7780 // CHECK: @llvm.ppc.altivec.stvxl
7781 // CHECK-LE: @llvm.ppc.altivec.lvx
7782 // CHECK-LE: @llvm.ppc.altivec.lvsl
7783 // CHECK-LE: store <8 x i16> zeroinitializer
7784 // CHECK-LE: @llvm.ppc.altivec.vperm
7785 // CHECK-LE: @llvm.ppc.altivec.lvsr
7786 // CHECK-LE: @llvm.ppc.altivec.vperm
7787 // CHECK-LE: @llvm.ppc.altivec.stvxl
7788 
7789   vec_stvrxl(vbs, 0, &vbs);
7790 // CHECK: @llvm.ppc.altivec.lvx
7791 // CHECK: store <8 x i16> zeroinitializer
7792 // CHECK: @llvm.ppc.altivec.lvsl
7793 // CHECK: @llvm.ppc.altivec.vperm
7794 // CHECK: @llvm.ppc.altivec.lvsr
7795 // CHECK: @llvm.ppc.altivec.vperm
7796 // CHECK: @llvm.ppc.altivec.stvxl
7797 // CHECK-LE: @llvm.ppc.altivec.lvx
7798 // CHECK-LE: store <8 x i16> zeroinitializer
7799 // CHECK-LE: @llvm.ppc.altivec.lvsl
7800 // CHECK-LE: @llvm.ppc.altivec.vperm
7801 // CHECK-LE: @llvm.ppc.altivec.lvsr
7802 // CHECK-LE: @llvm.ppc.altivec.vperm
7803 // CHECK-LE: @llvm.ppc.altivec.stvxl
7804 
7805   vec_stvrxl(vp, 0, &vp);
7806 // CHECK: @llvm.ppc.altivec.lvx
7807 // CHECK: store <8 x i16> zeroinitializer
7808 // CHECK: @llvm.ppc.altivec.lvsl
7809 // CHECK: @llvm.ppc.altivec.vperm
7810 // CHECK: @llvm.ppc.altivec.lvsr
7811 // CHECK: @llvm.ppc.altivec.vperm
7812 // CHECK: @llvm.ppc.altivec.stvxl
7813 // CHECK-LE: @llvm.ppc.altivec.lvx
7814 // CHECK-LE: store <8 x i16> zeroinitializer
7815 // CHECK-LE: @llvm.ppc.altivec.lvsl
7816 // CHECK-LE: @llvm.ppc.altivec.vperm
7817 // CHECK-LE: @llvm.ppc.altivec.lvsr
7818 // CHECK-LE: @llvm.ppc.altivec.vperm
7819 // CHECK-LE: @llvm.ppc.altivec.stvxl
7820 
7821   vec_stvrxl(vi, 0, &param_i);
7822 // CHECK: @llvm.ppc.altivec.lvx
7823 // CHECK: @llvm.ppc.altivec.lvsl
7824 // CHECK: store <4 x i32> zeroinitializer
7825 // CHECK: @llvm.ppc.altivec.vperm
7826 // CHECK: @llvm.ppc.altivec.lvsr
7827 // CHECK: @llvm.ppc.altivec.vperm
7828 // CHECK: @llvm.ppc.altivec.stvxl
7829 // CHECK-LE: @llvm.ppc.altivec.lvx
7830 // CHECK-LE: @llvm.ppc.altivec.lvsl
7831 // CHECK-LE: store <4 x i32> zeroinitializer
7832 // CHECK-LE: @llvm.ppc.altivec.vperm
7833 // CHECK-LE: @llvm.ppc.altivec.lvsr
7834 // CHECK-LE: @llvm.ppc.altivec.vperm
7835 // CHECK-LE: @llvm.ppc.altivec.stvxl
7836 
7837   vec_stvrxl(vi, 0, &vi);
7838 // CHECK: @llvm.ppc.altivec.lvx
7839 // CHECK: @llvm.ppc.altivec.lvsl
7840 // CHECK: store <4 x i32> zeroinitializer
7841 // CHECK: @llvm.ppc.altivec.vperm
7842 // CHECK: @llvm.ppc.altivec.lvsr
7843 // CHECK: @llvm.ppc.altivec.vperm
7844 // CHECK: @llvm.ppc.altivec.stvxl
7845 // CHECK-LE: @llvm.ppc.altivec.lvx
7846 // CHECK-LE: @llvm.ppc.altivec.lvsl
7847 // CHECK-LE: store <4 x i32> zeroinitializer
7848 // CHECK-LE: @llvm.ppc.altivec.vperm
7849 // CHECK-LE: @llvm.ppc.altivec.lvsr
7850 // CHECK-LE: @llvm.ppc.altivec.vperm
7851 // CHECK-LE: @llvm.ppc.altivec.stvxl
7852 
7853   vec_stvrxl(vui, 0, &param_ui);
7854 // CHECK: @llvm.ppc.altivec.lvx
7855 // CHECK: @llvm.ppc.altivec.lvsl
7856 // CHECK: store <4 x i32> zeroinitializer
7857 // CHECK: @llvm.ppc.altivec.vperm
7858 // CHECK: @llvm.ppc.altivec.lvsr
7859 // CHECK: @llvm.ppc.altivec.vperm
7860 // CHECK: @llvm.ppc.altivec.stvxl
7861 // CHECK-LE: @llvm.ppc.altivec.lvx
7862 // CHECK-LE: @llvm.ppc.altivec.lvsl
7863 // CHECK-LE: store <4 x i32> zeroinitializer
7864 // CHECK-LE: @llvm.ppc.altivec.vperm
7865 // CHECK-LE: @llvm.ppc.altivec.lvsr
7866 // CHECK-LE: @llvm.ppc.altivec.vperm
7867 // CHECK-LE: @llvm.ppc.altivec.stvxl
7868 
7869   vec_stvrxl(vui, 0, &vui);
7870 // CHECK: @llvm.ppc.altivec.lvx
7871 // CHECK: @llvm.ppc.altivec.lvsl
7872 // CHECK: store <4 x i32> zeroinitializer
7873 // CHECK: @llvm.ppc.altivec.vperm
7874 // CHECK: @llvm.ppc.altivec.lvsr
7875 // CHECK: @llvm.ppc.altivec.vperm
7876 // CHECK: @llvm.ppc.altivec.stvxl
7877 // CHECK-LE: @llvm.ppc.altivec.lvx
7878 // CHECK-LE: @llvm.ppc.altivec.lvsl
7879 // CHECK-LE: store <4 x i32> zeroinitializer
7880 // CHECK-LE: @llvm.ppc.altivec.vperm
7881 // CHECK-LE: @llvm.ppc.altivec.lvsr
7882 // CHECK-LE: @llvm.ppc.altivec.vperm
7883 // CHECK-LE: @llvm.ppc.altivec.stvxl
7884 
7885   vec_stvrxl(vbi, 0, &vbi);
7886 // CHECK: @llvm.ppc.altivec.lvx
7887 // CHECK: store <4 x i32> zeroinitializer
7888 // CHECK: @llvm.ppc.altivec.lvsl
7889 // CHECK: @llvm.ppc.altivec.vperm
7890 // CHECK: @llvm.ppc.altivec.lvsr
7891 // CHECK: @llvm.ppc.altivec.vperm
7892 // CHECK: @llvm.ppc.altivec.stvxl
7893 // CHECK-LE: @llvm.ppc.altivec.lvx
7894 // CHECK-LE: store <4 x i32> zeroinitializer
7895 // CHECK-LE: @llvm.ppc.altivec.lvsl
7896 // CHECK-LE: @llvm.ppc.altivec.vperm
7897 // CHECK-LE: @llvm.ppc.altivec.lvsr
7898 // CHECK-LE: @llvm.ppc.altivec.vperm
7899 // CHECK-LE: @llvm.ppc.altivec.stvxl
7900 
7901   vec_stvrxl(vf, 0, &vf);
7902 // CHECK: @llvm.ppc.altivec.lvx
7903 // CHECK: @llvm.ppc.altivec.lvsl
7904 // CHECK: store <4 x float> zeroinitializer
7905 // CHECK: @llvm.ppc.altivec.vperm
7906 // CHECK: @llvm.ppc.altivec.lvsr
7907 // CHECK: @llvm.ppc.altivec.vperm
7908 // CHECK: @llvm.ppc.altivec.stvxl
7909 // CHECK-LE: @llvm.ppc.altivec.lvx
7910 // CHECK-LE: @llvm.ppc.altivec.lvsl
7911 // CHECK-LE: store <4 x float> zeroinitializer
7912 // CHECK-LE: @llvm.ppc.altivec.vperm
7913 // CHECK-LE: @llvm.ppc.altivec.lvsr
7914 // CHECK-LE: @llvm.ppc.altivec.vperm
7915 // CHECK-LE: @llvm.ppc.altivec.stvxl
7916 
7917   /* vec_promote */
7918   res_vsc = vec_promote(param_sc, 0);
7919 // CHECK: store <16 x i8> zeroinitializer
7920 // CHECK: insertelement <16 x i8>
7921 // CHECK-LE: store <16 x i8> zeroinitializer
7922 // CHECK-LE: insertelement <16 x i8>
7923 
7924   res_vuc = vec_promote(param_uc, 0);
7925 // CHECK: store <16 x i8> zeroinitializer
7926 // CHECK: insertelement <16 x i8>
7927 // CHECK-LE: store <16 x i8> zeroinitializer
7928 // CHECK-LE: insertelement <16 x i8>
7929 
7930   res_vs  = vec_promote(param_s, 0);
7931 // CHECK: store <8 x i16> zeroinitializer
7932 // CHECK: insertelement <8 x i16>
7933 // CHECK-LE: store <8 x i16> zeroinitializer
7934 // CHECK-LE: insertelement <8 x i16>
7935 
7936   res_vus = vec_promote(param_us, 0);
7937 // CHECK: store <8 x i16> zeroinitializer
7938 // CHECK: insertelement <8 x i16>
7939 // CHECK-LE: store <8 x i16> zeroinitializer
7940 // CHECK-LE: insertelement <8 x i16>
7941 
7942   res_vi  = vec_promote(param_i, 0);
7943 // CHECK: store <4 x i32> zeroinitializer
7944 // CHECK: insertelement <4 x i32>
7945 // CHECK-LE: store <4 x i32> zeroinitializer
7946 // CHECK-LE: insertelement <4 x i32>
7947 
7948   res_vui = vec_promote(param_ui, 0);
7949 // CHECK: store <4 x i32> zeroinitializer
7950 // CHECK: insertelement <4 x i32>
7951 // CHECK-LE: store <4 x i32> zeroinitializer
7952 // CHECK-LE: insertelement <4 x i32>
7953 
7954   res_vf  = vec_promote(param_f, 0);
7955 // CHECK: store <4 x float> zeroinitializer
7956 // CHECK: insertelement <4 x float>
7957 // CHECK-LE: store <4 x float> zeroinitializer
7958 // CHECK-LE: insertelement <4 x float>
7959 
7960   /* vec_splats */
7961   res_vsc = vec_splats(param_sc);
7962 // CHECK: insertelement <16 x i8>
7963 // CHECK-LE: insertelement <16 x i8>
7964 
7965   res_vuc = vec_splats(param_uc);
7966 // CHECK: insertelement <16 x i8>
7967 // CHECK-LE: insertelement <16 x i8>
7968 
7969   res_vs  = vec_splats(param_s);
7970 // CHECK: insertelement <8 x i16>
7971 // CHECK-LE: insertelement <8 x i16>
7972 
7973   res_vus = vec_splats(param_us);
7974 // CHECK: insertelement <8 x i16>
7975 // CHECK-LE: insertelement <8 x i16>
7976 
7977   res_vi  = vec_splats(param_i);
7978 // CHECK: insertelement <4 x i32>
7979 // CHECK-LE: insertelement <4 x i32>
7980 
7981   res_vui = vec_splats(param_ui);
7982 // CHECK: insertelement <4 x i32>
7983 // CHECK-LE: insertelement <4 x i32>
7984 
7985   res_vf  = vec_splats(param_f);
7986 // CHECK: insertelement <4 x float>
7987 // CHECK-LE: insertelement <4 x float>
7988 
7989   /* ------------------------------ predicates -------------------------------------- */
7990 
7991   /* vec_all_eq */
7992   res_i = vec_all_eq(vsc, vsc);
7993 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7994 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7995 
7996   res_i = vec_all_eq(vsc, vbc);
7997 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7998 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7999 
8000   res_i = vec_all_eq(vuc, vuc);
8001 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8002 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8003 
8004   res_i = vec_all_eq(vuc, vbc);
8005 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8006 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8007 
8008   res_i = vec_all_eq(vbc, vsc);
8009 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8010 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8011 
8012   res_i = vec_all_eq(vbc, vuc);
8013 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8014 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8015 
8016   res_i = vec_all_eq(vbc, vbc);
8017 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8018 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8019 
8020   res_i = vec_all_eq(vs, vs);
8021 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8022 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8023 
8024   res_i = vec_all_eq(vs, vbs);
8025 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8026 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8027 
8028   res_i = vec_all_eq(vus, vus);
8029 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8030 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8031 
8032   res_i = vec_all_eq(vus, vbs);
8033 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8034 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8035 
8036   res_i = vec_all_eq(vbs, vs);
8037 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8038 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8039 
8040   res_i = vec_all_eq(vbs, vus);
8041 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8042 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8043 
8044   res_i = vec_all_eq(vbs, vbs);
8045 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8046 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8047 
8048   res_i = vec_all_eq(vp, vp);
8049 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8050 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8051 
8052   res_i = vec_all_eq(vi, vi);
8053 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8054 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8055 
8056   res_i = vec_all_eq(vi, vbi);
8057 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8058 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8059 
8060   res_i = vec_all_eq(vui, vui);
8061 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8062 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8063 
8064   res_i = vec_all_eq(vui, vbi);
8065 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8066 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8067 
8068   res_i = vec_all_eq(vbi, vi);
8069 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8070 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8071 
8072   res_i = vec_all_eq(vbi, vui);
8073 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8074 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8075 
8076   res_i = vec_all_eq(vbi, vbi);
8077 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8078 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8079 
8080   res_i = vec_all_eq(vf, vf);
8081 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8082 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8083 
8084   /* vec_all_ge */
8085   res_i = vec_all_ge(vsc, vsc);
8086 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8087 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8088 
8089   res_i = vec_all_ge(vsc, vbc);
8090 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8091 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8092 
8093   res_i = vec_all_ge(vuc, vuc);
8094 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8095 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8096 
8097   res_i = vec_all_ge(vuc, vbc);
8098 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8099 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8100 
8101   res_i = vec_all_ge(vbc, vsc);
8102 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8103 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8104 
8105   res_i = vec_all_ge(vbc, vuc);
8106 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8107 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8108 
8109   res_i = vec_all_ge(vbc, vbc);
8110 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8111 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8112 
8113   res_i = vec_all_ge(vs, vs);
8114 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8115 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8116 
8117   res_i = vec_all_ge(vs, vbs);
8118 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8119 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8120 
8121   res_i = vec_all_ge(vus, vus);
8122 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8123 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8124 
8125   res_i = vec_all_ge(vus, vbs);
8126 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8127 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8128 
8129   res_i = vec_all_ge(vbs, vs);
8130 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8131 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8132 
8133   res_i = vec_all_ge(vbs, vus);
8134 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8135 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8136 
8137   res_i = vec_all_ge(vbs, vbs);
8138 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8139 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8140 
8141   res_i = vec_all_ge(vi, vi);
8142 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8143 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8144 
8145   res_i = vec_all_ge(vi, vbi);
8146 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8147 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8148 
8149   res_i = vec_all_ge(vui, vui);
8150 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8151 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8152 
8153   res_i = vec_all_ge(vui, vbi);
8154 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8155 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8156 
8157   res_i = vec_all_ge(vbi, vi);
8158 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8159 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8160 
8161   res_i = vec_all_ge(vbi, vui);
8162 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8163 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8164 
8165   res_i = vec_all_ge(vbi, vbi);
8166 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8167 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8168 
8169   res_i = vec_all_ge(vf, vf);
8170 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8171 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8172 
8173   /* vec_all_gt */
8174   res_i = vec_all_gt(vsc, vsc);
8175 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8176 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8177 
8178   res_i = vec_all_gt(vsc, vbc);
8179 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8180 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8181 
8182   res_i = vec_all_gt(vuc, vuc);
8183 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8184 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8185 
8186   res_i = vec_all_gt(vuc, vbc);
8187 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8189 
8190   res_i = vec_all_gt(vbc, vsc);
8191 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8192 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8193 
8194   res_i = vec_all_gt(vbc, vuc);
8195 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8196 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8197 
8198   res_i = vec_all_gt(vbc, vbc);
8199 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8200 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8201 
8202   res_i = vec_all_gt(vs, vs);
8203 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8204 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8205 
8206   res_i = vec_all_gt(vs, vbs);
8207 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8208 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8209 
8210   res_i = vec_all_gt(vus, vus);
8211 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8212 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8213 
8214   res_i = vec_all_gt(vus, vbs);
8215 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8216 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8217 
8218   res_i = vec_all_gt(vbs, vs);
8219 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8220 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8221 
8222   res_i = vec_all_gt(vbs, vus);
8223 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8224 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8225 
8226   res_i = vec_all_gt(vbs, vbs);
8227 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8228 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8229 
8230   res_i = vec_all_gt(vi, vi);
8231 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8232 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8233 
8234   res_i = vec_all_gt(vi, vbi);
8235 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8236 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8237 
8238   res_i = vec_all_gt(vui, vui);
8239 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8240 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8241 
8242   res_i = vec_all_gt(vui, vbi);
8243 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8244 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8245 
8246   res_i = vec_all_gt(vbi, vi);
8247 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8248 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8249 
8250   res_i = vec_all_gt(vbi, vui);
8251 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8252 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8253 
8254   res_i = vec_all_gt(vbi, vbi);
8255 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8256 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8257 
8258   res_i = vec_all_gt(vf, vf);
8259 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8260 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8261 
8262   /* vec_all_in */
8263   res_i = vec_all_in(vf, vf);
8264 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
8265 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8266 
8267   /* vec_all_le */
8268   res_i = vec_all_le(vsc, vsc);
8269 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8270 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8271 
8272   res_i = vec_all_le(vsc, vbc);
8273 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8274 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8275 
8276   res_i = vec_all_le(vuc, vuc);
8277 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8278 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8279 
8280   res_i = vec_all_le(vuc, vbc);
8281 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8282 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8283 
8284   res_i = vec_all_le(vbc, vsc);
8285 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8286 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8287 
8288   res_i = vec_all_le(vbc, vuc);
8289 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8290 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8291 
8292   res_i = vec_all_le(vbc, vbc);
8293 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8294 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8295 
8296   res_i = vec_all_le(vs, vs);
8297 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8298 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8299 
8300   res_i = vec_all_le(vs, vbs);
8301 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8302 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8303 
8304   res_i = vec_all_le(vus, vus);
8305 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8306 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8307 
8308   res_i = vec_all_le(vus, vbs);
8309 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8310 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8311 
8312   res_i = vec_all_le(vbs, vs);
8313 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8314 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8315 
8316   res_i = vec_all_le(vbs, vus);
8317 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8318 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8319 
8320   res_i = vec_all_le(vbs, vbs);
8321 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8322 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8323 
8324   res_i = vec_all_le(vi, vi);
8325 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8326 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8327 
8328   res_i = vec_all_le(vi, vbi);
8329 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8330 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8331 
8332   res_i = vec_all_le(vui, vui);
8333 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8334 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8335 
8336   res_i = vec_all_le(vui, vbi);
8337 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8338 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8339 
8340   res_i = vec_all_le(vbi, vi);
8341 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8342 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8343 
8344   res_i = vec_all_le(vbi, vui);
8345 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8346 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8347 
8348   res_i = vec_all_le(vbi, vbi);
8349 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8350 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8351 
8352   res_i = vec_all_le(vf, vf);
8353 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8354 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8355 
8356   /* vec_all_lt */
8357   res_i = vec_all_lt(vsc, vsc);
8358 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8359 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8360 
8361   res_i = vec_all_lt(vsc, vbc);
8362 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8363 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8364 
8365   res_i = vec_all_lt(vuc, vuc);
8366 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8367 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8368 
8369   res_i = vec_all_lt(vuc, vbc);
8370 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8371 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8372 
8373   res_i = vec_all_lt(vbc, vsc);
8374 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8375 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8376 
8377   res_i = vec_all_lt(vbc, vuc);
8378 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8379 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8380 
8381   res_i = vec_all_lt(vbc, vbc);
8382 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8383 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8384 
8385   res_i = vec_all_lt(vs, vs);
8386 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8387 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8388 
8389   res_i = vec_all_lt(vs, vbs);
8390 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8391 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8392 
8393   res_i = vec_all_lt(vus, vus);
8394 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8395 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8396 
8397   res_i = vec_all_lt(vus, vbs);
8398 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8399 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8400 
8401   res_i = vec_all_lt(vbs, vs);
8402 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8403 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8404 
8405   res_i = vec_all_lt(vbs, vus);
8406 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8407 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8408 
8409   res_i = vec_all_lt(vbs, vbs);
8410 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8411 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8412 
8413   res_i = vec_all_lt(vi, vi);
8414 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8415 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8416 
8417   res_i = vec_all_lt(vi, vbi);
8418 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8419 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8420 
8421   res_i = vec_all_lt(vui, vui);
8422 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8423 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8424 
8425   res_i = vec_all_lt(vui, vbi);
8426 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8427 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8428 
8429   res_i = vec_all_lt(vbi, vi);
8430 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8431 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8432 
8433   res_i = vec_all_lt(vbi, vui);
8434 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8435 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8436 
8437   res_i = vec_all_lt(vbi, vbi);
8438 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8439 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8440 
8441   res_i = vec_all_lt(vf, vf);
8442 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8443 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8444 
8445   /* vec_all_nan */
8446   res_i = vec_all_nan(vf);
8447 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8448 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8449 
8450   /*  vec_all_ne */
8451   res_i = vec_all_ne(vsc, vsc);
8452 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8453 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8454 
8455   res_i = vec_all_ne(vsc, vbc);
8456 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8457 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8458 
8459   res_i = vec_all_ne(vuc, vuc);
8460 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8461 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8462 
8463   res_i = vec_all_ne(vuc, vbc);
8464 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8465 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8466 
8467   res_i = vec_all_ne(vbc, vsc);
8468 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8469 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8470 
8471   res_i = vec_all_ne(vbc, vuc);
8472 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8473 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8474 
8475   res_i = vec_all_ne(vbc, vbc);
8476 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8477 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8478 
8479   res_i = vec_all_ne(vs, vs);
8480 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8481 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8482 
8483   res_i = vec_all_ne(vs, vbs);
8484 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8485 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8486 
8487   res_i = vec_all_ne(vus, vus);
8488 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8489 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8490 
8491   res_i = vec_all_ne(vus, vbs);
8492 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8493 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8494 
8495   res_i = vec_all_ne(vbs, vs);
8496 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8497 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8498 
8499   res_i = vec_all_ne(vbs, vus);
8500 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8501 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8502 
8503   res_i = vec_all_ne(vbs, vbs);
8504 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8505 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8506 
8507   res_i = vec_all_ne(vp, vp);
8508 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8509 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8510 
8511   res_i = vec_all_ne(vi, vi);
8512 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8513 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8514 
8515   res_i = vec_all_ne(vi, vbi);
8516 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8517 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8518 
8519   res_i = vec_all_ne(vui, vui);
8520 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8521 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8522 
8523   res_i = vec_all_ne(vui, vbi);
8524 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8525 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8526 
8527   res_i = vec_all_ne(vbi, vi);
8528 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8529 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8530 
8531   res_i = vec_all_ne(vbi, vui);
8532 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8533 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8534 
8535   res_i = vec_all_ne(vbi, vbi);
8536 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8537 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8538 
8539   res_i = vec_all_ne(vf, vf);
8540 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8541 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8542 
8543   /* vec_all_nge */
8544   res_i = vec_all_nge(vf, vf);
8545 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8546 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8547 
8548   /* vec_all_ngt */
8549   res_i = vec_all_ngt(vf, vf);
8550 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8551 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8552 
8553   /* vec_all_nle */
8554   res_i = vec_all_nle(vf, vf);
8555 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8556 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8557 
8558   /* vec_all_nlt */
8559   res_i = vec_all_nlt(vf, vf);
8560 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8561 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8562 
8563   /* vec_all_numeric */
8564   res_i = vec_all_numeric(vf);
8565 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8566 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8567 
8568   /*  vec_any_eq */
8569   res_i = vec_any_eq(vsc, vsc);
8570 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8571 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8572 
8573   res_i = vec_any_eq(vsc, vbc);
8574 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8575 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8576 
8577   res_i = vec_any_eq(vuc, vuc);
8578 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8579 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8580 
8581   res_i = vec_any_eq(vuc, vbc);
8582 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8583 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8584 
8585   res_i = vec_any_eq(vbc, vsc);
8586 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8587 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8588 
8589   res_i = vec_any_eq(vbc, vuc);
8590 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8591 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8592 
8593   res_i = vec_any_eq(vbc, vbc);
8594 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8595 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8596 
8597   res_i = vec_any_eq(vs, vs);
8598 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8599 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8600 
8601   res_i = vec_any_eq(vs, vbs);
8602 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8603 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8604 
8605   res_i = vec_any_eq(vus, vus);
8606 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8607 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8608 
8609   res_i = vec_any_eq(vus, vbs);
8610 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8611 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8612 
8613   res_i = vec_any_eq(vbs, vs);
8614 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8615 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8616 
8617   res_i = vec_any_eq(vbs, vus);
8618 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8619 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8620 
8621   res_i = vec_any_eq(vbs, vbs);
8622 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8623 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8624 
8625   res_i = vec_any_eq(vp, vp);
8626 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8627 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8628 
8629   res_i = vec_any_eq(vi, vi);
8630 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8631 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8632 
8633   res_i = vec_any_eq(vi, vbi);
8634 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8635 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8636 
8637   res_i = vec_any_eq(vui, vui);
8638 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8639 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8640 
8641   res_i = vec_any_eq(vui, vbi);
8642 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8643 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8644 
8645   res_i = vec_any_eq(vbi, vi);
8646 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8647 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8648 
8649   res_i = vec_any_eq(vbi, vui);
8650 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8651 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8652 
8653   res_i = vec_any_eq(vbi, vbi);
8654 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8655 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8656 
8657   res_i = vec_any_eq(vf, vf);
8658 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8659 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8660 
8661   /* vec_any_ge */
8662   res_i = vec_any_ge(vsc, vsc);
8663 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8664 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8665 
8666   res_i = vec_any_ge(vsc, vbc);
8667 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8668 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8669 
8670   res_i = vec_any_ge(vuc, vuc);
8671 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8672 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8673 
8674   res_i = vec_any_ge(vuc, vbc);
8675 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8676 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8677 
8678   res_i = vec_any_ge(vbc, vsc);
8679 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8680 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8681 
8682   res_i = vec_any_ge(vbc, vuc);
8683 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8684 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8685 
8686   res_i = vec_any_ge(vbc, vbc);
8687 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8688 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8689 
8690   res_i = vec_any_ge(vs, vs);
8691 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8692 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8693 
8694   res_i = vec_any_ge(vs, vbs);
8695 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8696 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8697 
8698   res_i = vec_any_ge(vus, vus);
8699 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8700 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8701 
8702   res_i = vec_any_ge(vus, vbs);
8703 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8704 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8705 
8706   res_i = vec_any_ge(vbs, vs);
8707 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8708 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8709 
8710   res_i = vec_any_ge(vbs, vus);
8711 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8712 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8713 
8714   res_i = vec_any_ge(vbs, vbs);
8715 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8716 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8717 
8718   res_i = vec_any_ge(vi, vi);
8719 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8720 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8721 
8722   res_i = vec_any_ge(vi, vbi);
8723 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8724 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8725 
8726   res_i = vec_any_ge(vui, vui);
8727 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8728 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8729 
8730   res_i = vec_any_ge(vui, vbi);
8731 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8732 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8733 
8734   res_i = vec_any_ge(vbi, vi);
8735 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8736 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8737 
8738   res_i = vec_any_ge(vbi, vui);
8739 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8740 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8741 
8742   res_i = vec_any_ge(vbi, vbi);
8743 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8744 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8745 
8746   res_i = vec_any_ge(vf, vf);
8747 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8748 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8749 
8750   /* vec_any_gt */
8751   res_i = vec_any_gt(vsc, vsc);
8752 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8753 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8754 
8755   res_i = vec_any_gt(vsc, vbc);
8756 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8757 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8758 
8759   res_i = vec_any_gt(vuc, vuc);
8760 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8761 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8762 
8763   res_i = vec_any_gt(vuc, vbc);
8764 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8765 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8766 
8767   res_i = vec_any_gt(vbc, vsc);
8768 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8769 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8770 
8771   res_i = vec_any_gt(vbc, vuc);
8772 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8773 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8774 
8775   res_i = vec_any_gt(vbc, vbc);
8776 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8777 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8778 
8779   res_i = vec_any_gt(vs, vs);
8780 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8781 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8782 
8783   res_i = vec_any_gt(vs, vbs);
8784 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8785 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8786 
8787   res_i = vec_any_gt(vus, vus);
8788 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8789 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8790 
8791   res_i = vec_any_gt(vus, vbs);
8792 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8793 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8794 
8795   res_i = vec_any_gt(vbs, vs);
8796 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8797 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8798 
8799   res_i = vec_any_gt(vbs, vus);
8800 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8801 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8802 
8803   res_i = vec_any_gt(vbs, vbs);
8804 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8805 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8806 
8807   res_i = vec_any_gt(vi, vi);
8808 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8809 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8810 
8811   res_i = vec_any_gt(vi, vbi);
8812 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8813 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8814 
8815   res_i = vec_any_gt(vui, vui);
8816 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8817 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8818 
8819   res_i = vec_any_gt(vui, vbi);
8820 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8821 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8822 
8823   res_i = vec_any_gt(vbi, vi);
8824 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8825 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8826 
8827   res_i = vec_any_gt(vbi, vui);
8828 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8829 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8830 
8831   res_i = vec_any_gt(vbi, vbi);
8832 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8833 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8834 
8835   res_i = vec_any_gt(vf, vf);
8836 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8837 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8838 
8839   /* vec_any_le */
8840   res_i = vec_any_le(vsc, vsc);
8841 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8842 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8843 
8844   res_i = vec_any_le(vsc, vbc);
8845 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8846 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8847 
8848   res_i = vec_any_le(vuc, vuc);
8849 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8850 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8851 
8852   res_i = vec_any_le(vuc, vbc);
8853 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8854 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8855 
8856   res_i = vec_any_le(vbc, vsc);
8857 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8858 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8859 
8860   res_i = vec_any_le(vbc, vuc);
8861 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8862 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8863 
8864   res_i = vec_any_le(vbc, vbc);
8865 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8866 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8867 
8868   res_i = vec_any_le(vs, vs);
8869 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8870 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8871 
8872   res_i = vec_any_le(vs, vbs);
8873 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8874 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8875 
8876   res_i = vec_any_le(vus, vus);
8877 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8878 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8879 
8880   res_i = vec_any_le(vus, vbs);
8881 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8882 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8883 
8884   res_i = vec_any_le(vbs, vs);
8885 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8886 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8887 
8888   res_i = vec_any_le(vbs, vus);
8889 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8890 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8891 
8892   res_i = vec_any_le(vbs, vbs);
8893 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8894 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8895 
8896   res_i = vec_any_le(vi, vi);
8897 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8898 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8899 
8900   res_i = vec_any_le(vi, vbi);
8901 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8902 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8903 
8904   res_i = vec_any_le(vui, vui);
8905 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8906 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8907 
8908   res_i = vec_any_le(vui, vbi);
8909 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8910 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8911 
8912   res_i = vec_any_le(vbi, vi);
8913 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8914 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8915 
8916   res_i = vec_any_le(vbi, vui);
8917 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8918 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8919 
8920   res_i = vec_any_le(vbi, vbi);
8921 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8922 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8923 
8924   res_i = vec_any_le(vf, vf);
8925 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8926 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8927 
8928   /* vec_any_lt */
8929   res_i = vec_any_lt(vsc, vsc);
8930 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8931 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8932 
8933   res_i = vec_any_lt(vsc, vbc);
8934 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8935 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8936 
8937   res_i = vec_any_lt(vuc, vuc);
8938 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8939 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8940 
8941   res_i = vec_any_lt(vuc, vbc);
8942 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8943 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8944 
8945   res_i = vec_any_lt(vbc, vsc);
8946 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8947 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8948 
8949   res_i = vec_any_lt(vbc, vuc);
8950 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8951 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8952 
8953   res_i = vec_any_lt(vbc, vbc);
8954 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8955 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8956 
8957   res_i = vec_any_lt(vs, vs);
8958 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8959 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8960 
8961   res_i = vec_any_lt(vs, vbs);
8962 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8963 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8964 
8965   res_i = vec_any_lt(vus, vus);
8966 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8967 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8968 
8969   res_i = vec_any_lt(vus, vbs);
8970 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8971 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8972 
8973   res_i = vec_any_lt(vbs, vs);
8974 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8975 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8976 
8977   res_i = vec_any_lt(vbs, vus);
8978 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8979 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8980 
8981   res_i = vec_any_lt(vbs, vbs);
8982 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8983 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8984 
8985   res_i = vec_any_lt(vi, vi);
8986 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8987 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8988 
8989   res_i = vec_any_lt(vi, vbi);
8990 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8991 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8992 
8993   res_i = vec_any_lt(vui, vui);
8994 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8995 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8996 
8997   res_i = vec_any_lt(vui, vbi);
8998 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8999 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9000 
9001   res_i = vec_any_lt(vbi, vi);
9002 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
9003 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
9004 
9005   res_i = vec_any_lt(vbi, vui);
9006 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9007 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9008 
9009   res_i = vec_any_lt(vbi, vbi);
9010 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9011 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9012 
9013   res_i = vec_any_lt(vf, vf);
9014 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9015 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9016 
9017   /* vec_any_nan */
9018   res_i = vec_any_nan(vf);
9019 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9020 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9021 
9022   /* vec_any_ne */
9023   res_i = vec_any_ne(vsc, vsc);
9024 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9025 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9026 
9027   res_i = vec_any_ne(vsc, vbc);
9028 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9029 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9030 
9031   res_i = vec_any_ne(vuc, vuc);
9032 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9033 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9034 
9035   res_i = vec_any_ne(vuc, vbc);
9036 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9037 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9038 
9039   res_i = vec_any_ne(vbc, vsc);
9040 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9041 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9042 
9043   res_i = vec_any_ne(vbc, vuc);
9044 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9045 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9046 
9047   res_i = vec_any_ne(vbc, vbc);
9048 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9049 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9050 
9051   res_i = vec_any_ne(vs, vs);
9052 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9053 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9054 
9055   res_i = vec_any_ne(vs, vbs);
9056 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9057 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9058 
9059   res_i = vec_any_ne(vus, vus);
9060 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9061 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9062 
9063   res_i = vec_any_ne(vus, vbs);
9064 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9065 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9066 
9067   res_i = vec_any_ne(vbs, vs);
9068 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9069 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9070 
9071   res_i = vec_any_ne(vbs, vus);
9072 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9073 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9074 
9075   res_i = vec_any_ne(vbs, vbs);
9076 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9077 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9078 
9079   res_i = vec_any_ne(vp, vp);
9080 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9081 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9082 
9083   res_i = vec_any_ne(vi, vi);
9084 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9085 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9086 
9087   res_i = vec_any_ne(vi, vbi);
9088 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9089 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9090 
9091   res_i = vec_any_ne(vui, vui);
9092 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9093 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9094 
9095   res_i = vec_any_ne(vui, vbi);
9096 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9097 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9098 
9099   res_i = vec_any_ne(vbi, vi);
9100 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9101 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9102 
9103   res_i = vec_any_ne(vbi, vui);
9104 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9105 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9106 
9107   res_i = vec_any_ne(vbi, vbi);
9108 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9109 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9110 
9111   res_i = vec_any_ne(vf, vf);
9112 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9113 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9114 
9115   /* vec_any_nge */
9116   res_i = vec_any_nge(vf, vf);
9117 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9118 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9119 
9120   /* vec_any_ngt */
9121   res_i = vec_any_ngt(vf, vf);
9122 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9123 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9124 
9125   /* vec_any_nle */
9126   res_i = vec_any_nle(vf, vf);
9127 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9128 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9129 
9130   /* vec_any_nlt */
9131   res_i = vec_any_nlt(vf, vf);
9132 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9134 
9135   /* vec_any_numeric */
9136   res_i = vec_any_numeric(vf);
9137 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9138 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9139 
9140   /* vec_any_out */
9141   res_i = vec_any_out(vf, vf);
9142 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
9143 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9144 }
9145 
9146 /* ------------------------------ Relational Operators ------------------------------ */
9147 // CHECK-LABEL: define{{.*}} void @test7
9148 void test7() {
9149   vector signed char vsc1 = (vector signed char)(-1);
9150   vector signed char vsc2 = (vector signed char)(-2);
9151   res_i = (vsc1 == vsc2);
9152 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9153 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9154 
9155   res_i = (vsc1 != vsc2);
9156 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9157 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9158 
9159   res_i = (vsc1 <  vsc2);
9160 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9161 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9162 
9163   res_i = (vsc1 >  vsc2);
9164 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9165 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9166 
9167   res_i = (vsc1 <= vsc2);
9168 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9169 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9170 
9171   res_i = (vsc1 >= vsc2);
9172 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9173 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9174 
9175   vector unsigned char vuc1 = (vector unsigned char)(1);
9176   vector unsigned char vuc2 = (vector unsigned char)(2);
9177   res_i = (vuc1 == vuc2);
9178 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9179 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9180 
9181   res_i = (vuc1 != vuc2);
9182 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9183 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9184 
9185   res_i = (vuc1 <  vuc2);
9186 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9187 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9188 
9189   res_i = (vuc1 >  vuc2);
9190 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9191 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9192 
9193   res_i = (vuc1 <= vuc2);
9194 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9195 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9196 
9197   res_i = (vuc1 >= vuc2);
9198 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9199 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9200 
9201   vector short vs1 = (vector short)(-1);
9202   vector short vs2 = (vector short)(-2);
9203   res_i = (vs1 == vs2);
9204 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9205 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9206 
9207   res_i = (vs1 != vs2);
9208 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9209 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9210 
9211   res_i = (vs1 <  vs2);
9212 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9213 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9214 
9215   res_i = (vs1 >  vs2);
9216 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9217 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9218 
9219   res_i = (vs1 <= vs2);
9220 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9221 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9222 
9223   res_i = (vs1 >= vs2);
9224 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9225 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9226 
9227   vector unsigned short vus1 = (vector unsigned short)(1);
9228   vector unsigned short vus2 = (vector unsigned short)(2);
9229   res_i = (vus1 == vus2);
9230 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9231 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9232 
9233   res_i = (vus1 != vus2);
9234 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9235 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9236 
9237   res_i = (vus1 <  vus2);
9238 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9239 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9240 
9241   res_i = (vus1 >  vus2);
9242 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9243 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9244 
9245   res_i = (vus1 <= vus2);
9246 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9247 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9248 
9249   res_i = (vus1 >= vus2);
9250 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9251 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9252 
9253   vector int vi1 = (vector int)(-1);
9254   vector int vi2 = (vector int)(-2);
9255   res_i = (vi1 == vi2);
9256 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9257 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9258 
9259   res_i = (vi1 != vi2);
9260 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9261 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9262 
9263   res_i = (vi1 <  vi2);
9264 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9265 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9266 
9267   res_i = (vi1 >  vi2);
9268 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9269 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9270 
9271   res_i = (vi1 <= vi2);
9272 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9273 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9274 
9275   res_i = (vi1 >= vi2);
9276 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9277 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9278 
9279   vector unsigned int vui1 = (vector unsigned int)(1);
9280   vector unsigned int vui2 = (vector unsigned int)(2);
9281   res_i = (vui1 == vui2);
9282 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9283 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9284 
9285   res_i = (vui1 != vui2);
9286 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9287 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9288 
9289   res_i = (vui1 <  vui2);
9290 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9291 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9292 
9293   res_i = (vui1 >  vui2);
9294 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9295 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9296 
9297   res_i = (vui1 <= vui2);
9298 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9299 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9300 
9301   res_i = (vui1 >= vui2);
9302 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9303 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9304 
9305   vector float vf1 = (vector float)(1.0);
9306   vector float vf2 = (vector float)(2.0);
9307   res_i = (vf1 == vf2);
9308 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9309 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9310 
9311   res_i = (vf1 != vf2);
9312 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9313 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9314 
9315   res_i = (vf1 <  vf2);
9316 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9317 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9318 
9319   res_i = (vf1 >  vf2);
9320 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9321 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9322 
9323   res_i = (vf1 <= vf2);
9324 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9325 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9326 
9327   res_i = (vf1 >= vf2);
9328 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9329 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9330 }
9331 
9332 /* ------------------------------ optional ---------------------------------- */
9333 void test8() {
9334 // CHECK-LABEL: define{{.*}} void @test8
9335 // CHECK-LE-LABEL: define{{.*}} void @test8
9336   res_vbc = vec_reve(vbc);
9337   // 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>
9338   // 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>
9339 
9340   res_vsc = vec_reve(vsc);
9341   // 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>
9342   // 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>
9343 
9344   res_vuc = vec_reve(vuc);
9345   // 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>
9346   // 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>
9347 
9348   res_vbi = vec_reve(vbi);
9349   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9350   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9351 
9352   res_vi = vec_reve(vi);
9353   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9354   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9355 
9356   res_vui = vec_reve(vui);
9357   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9358   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9359 
9360   res_vbs = vec_reve(vbs);
9361   // 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>
9362   // 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>
9363 
9364   res_vs = vec_reve(vs);
9365   // 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>
9366   // 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>
9367 
9368   res_vus = vec_reve(vus);
9369   // 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>
9370   // 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>
9371 
9372   res_vf = vec_reve(vf);
9373   // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9374   // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9375 
9376   res_vbc = vec_revb(vbc);
9377 // CHECK: [[T1:%.+]] = load <16 x i8>, ptr @vbc, align 16
9378 // CHECK: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9379 // CHECK: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9380 // CHECK: store <16 x i8> [[T3]], ptr @res_vbc, align 16
9381 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, ptr @vbc, align 16
9382 // CHECK-LE: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9383 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9384 // CHECK-LE: store <16 x i8> [[T3]], ptr @res_vbc, align 16
9385 
9386   res_vsc = vec_revb(vsc);
9387 // CHECK: [[T1:%.+]] = load <16 x i8>, ptr @vsc, align 16
9388 // CHECK: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9389 // CHECK: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9390 // CHECK: store <16 x i8> [[T3]], ptr @res_vsc, align 16
9391 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, ptr @vsc, align 16
9392 // CHECK-LE: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9393 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9394 // CHECK-LE: store <16 x i8> [[T3]], ptr @res_vsc, align 16
9395 
9396   res_vuc = vec_revb(vuc);
9397 // CHECK: [[T1:%.+]] = load <16 x i8>, ptr @vuc, align 16
9398 // CHECK: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9399 // CHECK: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9400 // CHECK: store <16 x i8> [[T3]], ptr @res_vuc, align 16
9401 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, ptr @vuc, align 16
9402 // CHECK-LE: store <16 x i8> [[T1]], ptr [[T2:%.+]], align 16
9403 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, ptr [[T2]], align 16
9404 // CHECK-LE: store <16 x i8> [[T3]], ptr @res_vuc, align 16
9405 
9406   res_vbs = vec_revb(vbs);
9407 // 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>, ptr {{%.+}}, align 16
9408 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9409 // 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>, ptr {{%.+}}, align 16
9410 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9411 // CHECK-LE: xor <16 x i8>
9412 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9413 
9414   res_vs = vec_revb(vs);
9415 // 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>, ptr {{%.+}}, align 16
9416 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9417 // 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>, ptr {{%.+}}, align 16
9418 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9419 // CHECK-LE: xor <16 x i8>
9420 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9421 
9422   res_vus = vec_revb(vus);
9423 // 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>, ptr {{%.+}}, align 16
9424 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9425 // 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>, ptr {{%.+}}, align 16
9426 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9427 // CHECK-LE: xor <16 x i8>
9428 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9429 
9430   res_vbi = vec_revb(vbi);
9431 // 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>, ptr {{%.+}}, align 16
9432 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9433 // 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>, ptr {{%.+}}, align 16
9434 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9435 // CHECK-LE: xor <16 x i8>
9436 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9437 
9438   res_vi = vec_revb(vi);
9439 // 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>, ptr {{%.+}}, align 16
9440 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9441 // 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>, ptr {{%.+}}, align 16
9442 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9443 // CHECK-LE: xor <16 x i8>
9444 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9445 
9446   res_vui = vec_revb(vui);
9447 // 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>, ptr {{%.+}}, align 16
9448 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9449 // 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>, ptr {{%.+}}, align 16
9450 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9451 // CHECK-LE: xor <16 x i8>
9452 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9453 
9454   res_vf = vec_revb(vf);
9455 // 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>, ptr {{%.+}}, align 16
9456 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9457 // 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>, ptr {{%.+}}, align 16
9458 // CHECK-LE: store <16 x i8> splat (i8 -1), ptr {{%.+}}, align 16
9459 // CHECK-LE: xor <16 x i8>
9460 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9461 }
9462 
9463 /* ------------------------------ vec_xl ------------------------------------ */
9464 void test9() {
9465   // CHECK-LABEL: define{{.*}} void @test9
9466   // CHECK-LE-LABEL: define{{.*}} void @test9
9467   res_vsc = vec_xl(param_sll, param_sc_ld);
9468   // CHECK: load <16 x i8>, ptr %{{.+}}, align 1
9469   // CHECK-LE: load <16 x i8>, ptr %{{.+}}, align 1
9470 
9471   res_vuc = vec_xl(param_sll, param_uc_ld);
9472   // CHECK: load <16 x i8>, ptr %{{.+}}, align 1
9473   // CHECK-LE: load <16 x i8>, ptr %{{.+}}, align 1
9474 
9475   res_vs = vec_xl(param_sll, param_s_ld);
9476   // CHECK: load <8 x i16>, ptr %{{.+}}, align 1
9477   // CHECK-LE: load <8 x i16>, ptr %{{.+}}, align 1
9478 
9479   res_vus = vec_xl(param_sll, param_us_ld);
9480   // CHECK: load <8 x i16>, ptr %{{.+}}, align 1
9481   // CHECK-LE: load <8 x i16>, ptr %{{.+}}, align 1
9482 
9483   res_vi = vec_xl(param_sll, param_i_ld);
9484   // CHECK: load <4 x i32>, ptr %{{.+}}, align 1
9485   // CHECK-LE: load <4 x i32>, ptr %{{.+}}, align 1
9486 
9487   res_vui = vec_xl(param_sll, param_ui_ld);
9488   // CHECK: load <4 x i32>, ptr %{{.+}}, align 1
9489   // CHECK-LE: load <4 x i32>, ptr %{{.+}}, align 1
9490 
9491   res_vf = vec_xl(param_sll, param_f_ld);
9492   // CHECK: load <4 x float>, ptr %{{.+}}, align 1
9493   // CHECK-LE: load <4 x float>, ptr %{{.+}}, align 1
9494 }
9495 
9496 /* ------------------------------ vec_xst ----------------------------------- */
9497 void test10() {
9498   // CHECK-LABEL: define{{.*}} void @test10
9499   // CHECK-LE-LABEL: define{{.*}} void @test10
9500   vec_xst(vsc, param_sll, &param_sc);
9501   // CHECK: store <16 x i8> %{{[0-9]+}}, ptr %{{.+}}, align 1
9502   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, ptr %{{.+}}, align 1
9503 
9504   vec_xst(vuc, param_sll, &param_uc);
9505   // CHECK: store <16 x i8> %{{[0-9]+}}, ptr %{{.+}}, align 1
9506   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, ptr %{{.+}}, align 1
9507 
9508   vec_xst(vs, param_sll, &param_s);
9509   // CHECK: store <8 x i16> %{{[0-9]+}}, ptr %{{.+}}, align 1
9510   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, ptr %{{.+}}, align 1
9511 
9512   vec_xst(vus, param_sll, &param_us);
9513   // CHECK: store <8 x i16> %{{[0-9]+}}, ptr %{{.+}}, align 1
9514   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, ptr %{{.+}}, align 1
9515 
9516   vec_xst(vi, param_sll, &param_i);
9517   // CHECK: store <4 x i32> %{{[0-9]+}}, ptr %{{.+}}, align 1
9518   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, ptr %{{.+}}, align 1
9519 
9520   vec_xst(vui, param_sll, &param_ui);
9521   // CHECK: store <4 x i32> %{{[0-9]+}}, ptr %{{.+}}, align 1
9522   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, ptr %{{.+}}, align 1
9523 
9524   vec_xst(vf, param_sll, &param_f);
9525   // CHECK: store <4 x float> %{{[0-9]+}}, ptr %{{.+}}, align 1
9526   // CHECK-LE: store <4 x float> %{{[0-9]+}}, ptr %{{.+}}, align 1
9527 }
9528 
9529 vector float test_rsqrtf(vector float a, vector float b) {
9530   // CHECK-LABEL: test_rsqrtf
9531   // CHECK: call fast <4 x float> @llvm.sqrt.v4f32
9532   // CHECK: fdiv fast <4 x float> splat (float 1.000000e+00)
9533   // CHECK-LE-LABEL: test_rsqrtf
9534   // CHECK-LE: call fast <4 x float> @llvm.sqrt.v4f32
9535   // CHECK-LE: fdiv fast <4 x float> splat (float 1.000000e+00)
9536   return vec_rsqrt(a);
9537 }
9538 
9539 vector float test_recipdivf(vector float a, vector float b) {
9540   // CHECK-LABEL: test_recipdivf
9541   // CHECK: fdiv fast <4 x float>
9542   // CHECK-LE-LABEL: test_recipdivf
9543   // CHECK-LE: fdiv fast <4 x float>
9544   return vec_recipdiv(a, b);
9545 }
9546