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 -o - | FileCheck %s
4 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown -emit-llvm %s \
5 // RUN:            -flax-vector-conversions=none -o - | FileCheck %s
6 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64le-unknown-unknown -emit-llvm %s \
7 // RUN:            -flax-vector-conversions=none -o - | FileCheck %s -check-prefix=CHECK-LE
8 // RUN: not %clang_cc1 -triple powerpc64le-unknown-unknown -emit-llvm %s \
9 // RUN:            -ferror-limit 0 -DNO_ALTIVEC -o - 2>&1 \
10 // RUN:            | FileCheck %s -check-prefix=CHECK-NOALTIVEC
11 #ifndef NO_ALTIVEC
12 #include <altivec.h>
13 #endif
14 
15 vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
16 vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
17 vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
18 vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
19 vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
20 vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
21 vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
22 vector bool int vbi = { 1, 0, 1, 0 };
23 vector int vi = { -1, 2, -3, 4 };
24 vector unsigned int vui = { 1, 2, 3, 4 };
25 vector float vf = { -1.5, 2.5, -3.5, 4.5 };
26 
27 vector bool char res_vbc;
28 vector signed char res_vsc;
29 vector unsigned char res_vuc;
30 vector bool short res_vbs;
31 vector short res_vs;
32 vector unsigned short res_vus;
33 vector pixel res_vp;
34 vector bool int res_vbi;
35 vector int res_vi;
36 vector unsigned int res_vui;
37 vector float res_vf;
38 
39 // CHECK-NOALTIVEC: error: unknown type name 'vector'
40 // CHECK-NOALTIVEC-NOT: '(error)'
41 
42 signed char param_sc;
43 unsigned char param_uc;
44 short param_s;
45 unsigned short param_us;
46 int param_i;
47 unsigned int param_ui;
48 float param_f;
49 signed long long param_sll;
50 
51 int res_sc;
52 int res_uc;
53 int res_s;
54 int res_us;
55 int res_i;
56 int res_ui;
57 int res_f;
58 
59 // CHECK-LABEL: define void @test1
test1()60 void test1() {
61 
62   /* vec_abs */
63   vsc = vec_abs(vsc);
64 // CHECK: sub <16 x i8> zeroinitializer
65 // CHECK: @llvm.ppc.altivec.vmaxsb
66 // CHECK-LE: sub <16 x i8> zeroinitializer
67 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
68 
69   vs = vec_abs(vs);
70 // CHECK: sub <8 x i16> zeroinitializer
71 // CHECK: @llvm.ppc.altivec.vmaxsh
72 // CHECK-LE: sub <8 x i16> zeroinitializer
73 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
74 
75   vi = vec_abs(vi);
76 // CHECK: sub <4 x i32> zeroinitializer
77 // CHECK: @llvm.ppc.altivec.vmaxsw
78 // CHECK-LE: sub <4 x i32> zeroinitializer
79 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
80 
81   vf = vec_abs(vf);
82 // CHECK: bitcast <4 x float> %{{.*}} to <4 x i32>
83 // CHECK: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
84 // CHECK: bitcast <4 x i32> %{{.*}} to <4 x float>
85 // CHECK: store <4 x float> %{{.*}}, <4 x float>* @vf
86 // CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
87 // CHECK-LE: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
88 // CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
89 // CHECK-LE: store <4 x float> %{{.*}}, <4 x float>* @vf
90 
91   vsc = vec_nabs(vsc);
92 // CHECK: sub <16 x i8> zeroinitializer
93 // CHECK: @llvm.ppc.altivec.vminsb
94 // CHECK-LE: sub <16 x i8> zeroinitializer
95 // CHECK-LE: @llvm.ppc.altivec.vminsb
96 
97   vs = vec_nabs(vs);
98 // CHECK: sub <8 x i16> zeroinitializer
99 // CHECK: @llvm.ppc.altivec.vminsh
100 // CHECK-LE: sub <8 x i16> zeroinitializer
101 // CHECK-LE: @llvm.ppc.altivec.vminsh
102 
103   vi = vec_nabs(vi);
104 // CHECK: sub <4 x i32> zeroinitializer
105 // CHECK: @llvm.ppc.altivec.vminsw
106 // CHECK-LE: sub <4 x i32> zeroinitializer
107 // CHECK-LE: @llvm.ppc.altivec.vminsw
108 
109   res_vi = vec_neg(vi);
110 // CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
111 // CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
112 
113   res_vs = vec_neg(vs);
114 // CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
115 // CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
116 
117   res_vsc = vec_neg(vsc);
118 // CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
119 // CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
120 
121 
122   /* vec_abs */
123   vsc = vec_abss(vsc);
124 // CHECK: @llvm.ppc.altivec.vsubsbs
125 // CHECK: @llvm.ppc.altivec.vmaxsb
126 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
127 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
128 
129   vs = vec_abss(vs);
130 // CHECK: @llvm.ppc.altivec.vsubshs
131 // CHECK: @llvm.ppc.altivec.vmaxsh
132 // CHECK-LE: @llvm.ppc.altivec.vsubshs
133 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
134 
135   vi = vec_abss(vi);
136 // CHECK: @llvm.ppc.altivec.vsubsws
137 // CHECK: @llvm.ppc.altivec.vmaxsw
138 // CHECK-LE: @llvm.ppc.altivec.vsubsws
139 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
140 
141   /*  vec_add */
142   res_vsc = vec_add(vsc, vsc);
143 // CHECK: add <16 x i8>
144 // CHECK-LE: add <16 x i8>
145 
146   res_vsc = vec_add(vbc, vsc);
147 // CHECK: add <16 x i8>
148 // CHECK-LE: add <16 x i8>
149 
150   res_vsc = vec_add(vsc, vbc);
151 // CHECK: add <16 x i8>
152 // CHECK-LE: add <16 x i8>
153 
154   res_vuc = vec_add(vuc, vuc);
155 // CHECK: add <16 x i8>
156 // CHECK-LE: add <16 x i8>
157 
158   res_vuc = vec_add(vbc, vuc);
159 // CHECK: add <16 x i8>
160 // CHECK-LE: add <16 x i8>
161 
162   res_vuc = vec_add(vuc, vbc);
163 // CHECK: add <16 x i8>
164 // CHECK-LE: add <16 x i8>
165 
166   res_vs  = vec_add(vs, vs);
167 // CHECK: add <8 x i16>
168 // CHECK-LE: add <8 x i16>
169 
170   res_vs  = vec_add(vbs, vs);
171 // CHECK: add <8 x i16>
172 // CHECK-LE: add <8 x i16>
173 
174   res_vs  = vec_add(vs, vbs);
175 // CHECK: add <8 x i16>
176 // CHECK-LE: add <8 x i16>
177 
178   res_vus = vec_add(vus, vus);
179 // CHECK: add <8 x i16>
180 // CHECK-LE: add <8 x i16>
181 
182   res_vus = vec_add(vbs, vus);
183 // CHECK: add <8 x i16>
184 // CHECK-LE: add <8 x i16>
185 
186   res_vus = vec_add(vus, vbs);
187 // CHECK: add <8 x i16>
188 // CHECK-LE: add <8 x i16>
189 
190   res_vi  = vec_add(vi, vi);
191 // CHECK: add <4 x i32>
192 // CHECK-LE: add <4 x i32>
193 
194   res_vi  = vec_add(vbi, vi);
195 // CHECK: add <4 x i32>
196 // CHECK-LE: add <4 x i32>
197 
198   res_vi  = vec_add(vi, vbi);
199 // CHECK: add <4 x i32>
200 // CHECK-LE: add <4 x i32>
201 
202   res_vui = vec_add(vui, vui);
203 // CHECK: add <4 x i32>
204 // CHECK-LE: add <4 x i32>
205 
206   res_vui = vec_add(vbi, vui);
207 // CHECK: add <4 x i32>
208 // CHECK-LE: add <4 x i32>
209 
210   res_vui = vec_add(vui, vbi);
211 // CHECK: add <4 x i32>
212 // CHECK-LE: add <4 x i32>
213 
214   res_vf  = vec_add(vf, vf);
215 // CHECK: fadd <4 x float>
216 // CHECK-LE: fadd <4 x float>
217 
218   res_vi  = vec_adde(vi, vi, vi);
219 // CHECK: and <4 x i32>
220 // CHECK: add <4 x i32>
221 // CHECK: add <4 x i32>
222 // CHECK-LE: and <4 x i32>
223 // CHECK-LE: add <4 x i32>
224 // CHECK-LE: add <4 x i32>
225 
226   res_vui  = vec_adde(vui, vui, vui);
227 // CHECK: and <4 x i32>
228 // CHECK: add <4 x i32>
229 // CHECK: add <4 x i32>
230 // CHECK-LE: and <4 x i32>
231 // CHECK-LE: add <4 x i32>
232 // CHECK-LE: add <4 x i32>
233 
234   res_vsc = vec_vaddubm(vsc, vsc);
235 // CHECK: add <16 x i8>
236 // CHECK-LE: add <16 x i8>
237 
238   res_vsc = vec_vaddubm(vbc, vsc);
239 // CHECK: add <16 x i8>
240 // CHECK-LE: add <16 x i8>
241 
242   res_vsc = vec_vaddubm(vsc, vbc);
243 // CHECK: add <16 x i8>
244 // CHECK-LE: add <16 x i8>
245 
246   res_vuc = vec_vaddubm(vuc, vuc);
247 // CHECK: add <16 x i8>
248 // CHECK-LE: add <16 x i8>
249 
250   res_vuc = vec_vaddubm(vbc, vuc);
251 // CHECK: add <16 x i8>
252 // CHECK-LE: add <16 x i8>
253 
254   res_vuc = vec_vaddubm(vuc, vbc);
255 // CHECK: add <16 x i8>
256 // CHECK-LE: add <16 x i8>
257 
258   res_vs  = vec_vadduhm(vs, vs);
259 // CHECK: add <8 x i16>
260 // CHECK-LE: add <8 x i16>
261 
262   res_vs  = vec_vadduhm(vbs, vs);
263 // CHECK: add <8 x i16>
264 // CHECK-LE: add <8 x i16>
265 
266   res_vs  = vec_vadduhm(vs, vbs);
267 // CHECK: add <8 x i16>
268 // CHECK-LE: add <8 x i16>
269 
270   res_vus = vec_vadduhm(vus, vus);
271 // CHECK: add <8 x i16>
272 // CHECK-LE: add <8 x i16>
273 
274   res_vus = vec_vadduhm(vbs, vus);
275 // CHECK: add <8 x i16>
276 // CHECK-LE: add <8 x i16>
277 
278   res_vus = vec_vadduhm(vus, vbs);
279 // CHECK: add <8 x i16>
280 // CHECK-LE: add <8 x i16>
281 
282   res_vi  = vec_vadduwm(vi, vi);
283 // CHECK: add <4 x i32>
284 // CHECK-LE: add <4 x i32>
285 
286   res_vi  = vec_vadduwm(vbi, vi);
287 // CHECK: add <4 x i32>
288 // CHECK-LE: add <4 x i32>
289 
290   res_vi  = vec_vadduwm(vi, vbi);
291 // CHECK: add <4 x i32>
292 // CHECK-LE: add <4 x i32>
293 
294   res_vui = vec_vadduwm(vui, vui);
295 // CHECK: add <4 x i32>
296 // CHECK-LE: add <4 x i32>
297 
298   res_vui = vec_vadduwm(vbi, vui);
299 // CHECK: add <4 x i32>
300 // CHECK-LE: add <4 x i32>
301 
302   res_vui = vec_vadduwm(vui, vbi);
303 // CHECK: add <4 x i32>
304 // CHECK-LE: add <4 x i32>
305 
306   res_vf  = vec_vaddfp(vf, vf);
307 // CHECK: fadd <4 x float>
308 // CHECK-LE: fadd <4 x float>
309 
310   /* vec_addc */
311   res_vui = vec_addc(vui, vui);
312 // CHECK: @llvm.ppc.altivec.vaddcuw
313 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
314 
315   res_vui = vec_vaddcuw(vui, vui);
316 // CHECK: @llvm.ppc.altivec.vaddcuw
317 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
318 
319   /* vec_adds */
320   res_vsc = vec_adds(vsc, vsc);
321 // CHECK: @llvm.ppc.altivec.vaddsbs
322 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
323 
324   res_vsc = vec_adds(vbc, vsc);
325 // CHECK: @llvm.ppc.altivec.vaddsbs
326 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
327 
328   res_vsc = vec_adds(vsc, vbc);
329 // CHECK: @llvm.ppc.altivec.vaddsbs
330 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
331 
332   res_vuc = vec_adds(vuc, vuc);
333 // CHECK: @llvm.ppc.altivec.vaddubs
334 // CHECK-LE: @llvm.ppc.altivec.vaddubs
335 
336   res_vuc = vec_adds(vbc, vuc);
337 // CHECK: @llvm.ppc.altivec.vaddubs
338 // CHECK-LE: @llvm.ppc.altivec.vaddubs
339 
340   res_vuc = vec_adds(vuc, vbc);
341 // CHECK: @llvm.ppc.altivec.vaddubs
342 // CHECK-LE: @llvm.ppc.altivec.vaddubs
343 
344   res_vs  = vec_adds(vs, vs);
345 // CHECK: @llvm.ppc.altivec.vaddshs
346 // CHECK-LE: @llvm.ppc.altivec.vaddshs
347 
348   res_vs  = vec_adds(vbs, vs);
349 // CHECK: @llvm.ppc.altivec.vaddshs
350 // CHECK-LE: @llvm.ppc.altivec.vaddshs
351 
352   res_vs  = vec_adds(vs, vbs);
353 // CHECK: @llvm.ppc.altivec.vaddshs
354 // CHECK-LE: @llvm.ppc.altivec.vaddshs
355 
356   res_vus = vec_adds(vus, vus);
357 // CHECK: @llvm.ppc.altivec.vadduhs
358 // CHECK-LE: @llvm.ppc.altivec.vadduhs
359 
360   res_vus = vec_adds(vbs, vus);
361 // CHECK: @llvm.ppc.altivec.vadduhs
362 // CHECK-LE: @llvm.ppc.altivec.vadduhs
363 
364   res_vus = vec_adds(vus, vbs);
365 // CHECK: @llvm.ppc.altivec.vadduhs
366 // CHECK-LE: @llvm.ppc.altivec.vadduhs
367 
368   res_vi  = vec_adds(vi, vi);
369 // CHECK: @llvm.ppc.altivec.vaddsws
370 // CHECK-LE: @llvm.ppc.altivec.vaddsws
371 
372   res_vi  = vec_adds(vbi, vi);
373 // CHECK: @llvm.ppc.altivec.vaddsws
374 // CHECK-LE: @llvm.ppc.altivec.vaddsws
375 
376   res_vi  = vec_adds(vi, vbi);
377 // CHECK: @llvm.ppc.altivec.vaddsws
378 // CHECK-LE: @llvm.ppc.altivec.vaddsws
379 
380   res_vui = vec_adds(vui, vui);
381 // CHECK: @llvm.ppc.altivec.vadduws
382 // CHECK-LE: @llvm.ppc.altivec.vadduws
383 
384   res_vui = vec_adds(vbi, vui);
385 // CHECK: @llvm.ppc.altivec.vadduws
386 // CHECK-LE: @llvm.ppc.altivec.vadduws
387 
388   res_vui = vec_adds(vui, vbi);
389 // CHECK: @llvm.ppc.altivec.vadduws
390 // CHECK-LE: @llvm.ppc.altivec.vadduws
391 
392   res_vsc = vec_vaddsbs(vsc, vsc);
393 // CHECK: @llvm.ppc.altivec.vaddsbs
394 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
395 
396   res_vsc = vec_vaddsbs(vbc, vsc);
397 // CHECK: @llvm.ppc.altivec.vaddsbs
398 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
399 
400   res_vsc = vec_vaddsbs(vsc, vbc);
401 // CHECK: @llvm.ppc.altivec.vaddsbs
402 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
403 
404   res_vuc = vec_vaddubs(vuc, vuc);
405 // CHECK: @llvm.ppc.altivec.vaddubs
406 // CHECK-LE: @llvm.ppc.altivec.vaddubs
407 
408   res_vuc = vec_vaddubs(vbc, vuc);
409 // CHECK: @llvm.ppc.altivec.vaddubs
410 // CHECK-LE: @llvm.ppc.altivec.vaddubs
411 
412   res_vuc = vec_vaddubs(vuc, vbc);
413 // CHECK: @llvm.ppc.altivec.vaddubs
414 // CHECK-LE: @llvm.ppc.altivec.vaddubs
415 
416   res_vs  = vec_vaddshs(vs, vs);
417 // CHECK: @llvm.ppc.altivec.vaddshs
418 // CHECK-LE: @llvm.ppc.altivec.vaddshs
419 
420   res_vs  = vec_vaddshs(vbs, vs);
421 // CHECK: @llvm.ppc.altivec.vaddshs
422 // CHECK-LE: @llvm.ppc.altivec.vaddshs
423 
424   res_vs  = vec_vaddshs(vs, vbs);
425 // CHECK: @llvm.ppc.altivec.vaddshs
426 // CHECK-LE: @llvm.ppc.altivec.vaddshs
427 
428   res_vus = vec_vadduhs(vus, vus);
429 // CHECK: @llvm.ppc.altivec.vadduhs
430 // CHECK-LE: @llvm.ppc.altivec.vadduhs
431 
432   res_vus = vec_vadduhs(vbs, vus);
433 // CHECK: @llvm.ppc.altivec.vadduhs
434 // CHECK-LE: @llvm.ppc.altivec.vadduhs
435 
436   res_vus = vec_vadduhs(vus, vbs);
437 // CHECK: @llvm.ppc.altivec.vadduhs
438 // CHECK-LE: @llvm.ppc.altivec.vadduhs
439 
440   res_vi  = vec_vaddsws(vi, vi);
441 // CHECK: @llvm.ppc.altivec.vaddsws
442 // CHECK-LE: @llvm.ppc.altivec.vaddsws
443 
444   res_vi  = vec_vaddsws(vbi, vi);
445 // CHECK: @llvm.ppc.altivec.vaddsws
446 // CHECK-LE: @llvm.ppc.altivec.vaddsws
447 
448   res_vi  = vec_vaddsws(vi, vbi);
449 // CHECK: @llvm.ppc.altivec.vaddsws
450 // CHECK-LE: @llvm.ppc.altivec.vaddsws
451 
452   res_vui = vec_vadduws(vui, vui);
453 // CHECK: @llvm.ppc.altivec.vadduws
454 // CHECK-LE: @llvm.ppc.altivec.vadduws
455 
456   res_vui = vec_vadduws(vbi, vui);
457 // CHECK: @llvm.ppc.altivec.vadduws
458 // CHECK-LE: @llvm.ppc.altivec.vadduws
459 
460   res_vui = vec_vadduws(vui, vbi);
461 // CHECK: @llvm.ppc.altivec.vadduws
462 // CHECK-LE: @llvm.ppc.altivec.vadduws
463 
464   /* vec_and */
465   res_vsc = vec_and(vsc, vsc);
466 // CHECK: and <16 x i8>
467 // CHECK-LE: and <16 x i8>
468 
469   res_vsc = vec_and(vbc, vsc);
470 // CHECK: and <16 x i8>
471 // CHECK-LE: and <16 x i8>
472 
473   res_vsc = vec_and(vsc, vbc);
474 // CHECK: and <16 x i8>
475 // CHECK-LE: and <16 x i8>
476 
477   res_vuc = vec_and(vuc, vuc);
478 // CHECK: and <16 x i8>
479 // CHECK-LE: and <16 x i8>
480 
481   res_vuc = vec_and(vbc, vuc);
482 // CHECK: and <16 x i8>
483 // CHECK-LE: and <16 x i8>
484 
485   res_vuc = vec_and(vuc, vbc);
486 // CHECK: and <16 x i8>
487 // CHECK-LE: and <16 x i8>
488 
489   res_vbc = vec_and(vbc, vbc);
490 // CHECK: and <16 x i8>
491 // CHECK-LE: and <16 x i8>
492 
493   res_vs  = vec_and(vs, vs);
494 // CHECK: and <8 x i16>
495 // CHECK-LE: and <8 x i16>
496 
497   res_vs  = vec_and(vbs, vs);
498 // CHECK: and <8 x i16>
499 // CHECK-LE: and <8 x i16>
500 
501   res_vs  = vec_and(vs, vbs);
502 // CHECK: and <8 x i16>
503 // CHECK-LE: and <8 x i16>
504 
505   res_vus = vec_and(vus, vus);
506 // CHECK: and <8 x i16>
507 // CHECK-LE: and <8 x i16>
508 
509   res_vus = vec_and(vbs, vus);
510 // CHECK: and <8 x i16>
511 // CHECK-LE: and <8 x i16>
512 
513   res_vus = vec_and(vus, vbs);
514 // CHECK: and <8 x i16>
515 // CHECK-LE: and <8 x i16>
516 
517   res_vbs = vec_and(vbs, vbs);
518 // CHECK: and <8 x i16>
519 // CHECK-LE: and <8 x i16>
520 
521   res_vi  = vec_and(vi, vi);
522 // CHECK: and <4 x i32>
523 // CHECK-LE: and <4 x i32>
524 
525   res_vi  = vec_and(vbi, vi);
526 // CHECK: and <4 x i32>
527 // CHECK-le: and <4 x i32>
528 
529   res_vi  = vec_and(vi, vbi);
530 // CHECK: and <4 x i32>
531 // CHECK-LE: and <4 x i32>
532 
533   res_vui = vec_and(vui, vui);
534 // CHECK: and <4 x i32>
535 // CHECK-LE: and <4 x i32>
536 
537   res_vui = vec_and(vbi, vui);
538 // CHECK: and <4 x i32>
539 // CHECK-LE: and <4 x i32>
540 
541   res_vui = vec_and(vui, vbi);
542 // CHECK: and <4 x i32>
543 // CHECK-LE: and <4 x i32>
544 
545   res_vbi = vec_and(vbi, vbi);
546 // CHECK: and <4 x i32>
547 // CHECK-LE: and <4 x i32>
548 
549   res_vsc = vec_vand(vsc, vsc);
550 // CHECK: and <16 x i8>
551 // CHECK-LE: and <16 x i8>
552 
553   res_vsc = vec_vand(vbc, vsc);
554 // CHECK: and <16 x i8>
555 // CHECK-LE: and <16 x i8>
556 
557   res_vsc = vec_vand(vsc, vbc);
558 // CHECK: and <16 x i8>
559 // CHECK-LE: and <16 x i8>
560 
561   res_vuc = vec_vand(vuc, vuc);
562 // CHECK: and <16 x i8>
563 // CHECK-LE: and <16 x i8>
564 
565   res_vuc = vec_vand(vbc, vuc);
566 // CHECK: and <16 x i8>
567 // CHECK-LE: and <16 x i8>
568 
569   res_vuc = vec_vand(vuc, vbc);
570 // CHECK: and <16 x i8>
571 // CHECK-LE: and <16 x i8>
572 
573   res_vbc = vec_vand(vbc, vbc);
574 // CHECK: and <16 x i8>
575 // CHECK-LE: and <16 x i8>
576 
577   res_vs  = vec_vand(vs, vs);
578 // CHECK: and <8 x i16>
579 // CHECK-LE: and <8 x i16>
580 
581   res_vs  = vec_vand(vbs, vs);
582 // CHECK: and <8 x i16>
583 // CHECK-LE: and <8 x i16>
584 
585   res_vs  = vec_vand(vs, vbs);
586 // CHECK: and <8 x i16>
587 // CHECK-LE: and <8 x i16>
588 
589   res_vus = vec_vand(vus, vus);
590 // CHECK: and <8 x i16>
591 // CHECK-LE: and <8 x i16>
592 
593   res_vus = vec_vand(vbs, vus);
594 // CHECK: and <8 x i16>
595 // CHECK-LE: and <8 x i16>
596 
597   res_vus = vec_vand(vus, vbs);
598 // CHECK: and <8 x i16>
599 // CHECK-LE: and <8 x i16>
600 
601   res_vbs = vec_vand(vbs, vbs);
602 // CHECK: and <8 x i16>
603 // CHECK-LE: and <8 x i16>
604 
605   res_vi  = vec_vand(vi, vi);
606 // CHECK: and <4 x i32>
607 // CHECK-LE: and <4 x i32>
608 
609   res_vi  = vec_vand(vbi, vi);
610 // CHECK: and <4 x i32>
611 // CHECK-LE: and <4 x i32>
612 
613   res_vi  = vec_vand(vi, vbi);
614 // CHECK: and <4 x i32>
615 // CHECK-LE: and <4 x i32>
616 
617   res_vui = vec_vand(vui, vui);
618 // CHECK: and <4 x i32>
619 // CHECK-LE: and <4 x i32>
620 
621   res_vui = vec_vand(vbi, vui);
622 // CHECK: and <4 x i32>
623 // CHECK-LE: and <4 x i32>
624 
625   res_vui = vec_vand(vui, vbi);
626 // CHECK: and <4 x i32>
627 // CHECK-LE: and <4 x i32>
628 
629   res_vbi = vec_vand(vbi, vbi);
630 // CHECK: and <4 x i32>
631 // CHECK-LE: and <4 x i32>
632 
633   /* vec_andc */
634   res_vsc = vec_andc(vsc, vsc);
635 // CHECK: xor <16 x i8>
636 // CHECK: and <16 x i8>
637 // CHECK-LE: xor <16 x i8>
638 // CHECK-LE: and <16 x i8>
639 
640   res_vsc = vec_andc(vbc, vsc);
641 // CHECK: xor <16 x i8>
642 // CHECK: and <16 x i8>
643 // CHECK-LE: xor <16 x i8>
644 // CHECK-LE: and <16 x i8>
645 
646   res_vsc = vec_andc(vsc, vbc);
647 // CHECK: xor <16 x i8>
648 // CHECK: and <16 x i8>
649 // CHECK-LE: xor <16 x i8>
650 // CHECK-LE: and <16 x i8>
651 
652   res_vuc = vec_andc(vuc, vuc);
653 // CHECK: xor <16 x i8>
654 // CHECK: and <16 x i8>
655 // CHECK-LE: xor <16 x i8>
656 // CHECK-LE: and <16 x i8>
657 
658   res_vuc = vec_andc(vbc, vuc);
659 // CHECK: xor <16 x i8>
660 // CHECK: and <16 x i8>
661 // CHECK-LE: xor <16 x i8>
662 // CHECK-LE: and <16 x i8>
663 
664   res_vuc = vec_andc(vuc, vbc);
665 // CHECK-LE: xor <16 x i8>
666 // CHECK-LE: and <16 x i8>
667 
668   res_vbc = vec_andc(vbc, vbc);
669 // CHECK: xor <16 x i8>
670 // CHECK: and <16 x i8>
671 // CHECK-LE: xor <16 x i8>
672 // CHECK-LE: and <16 x i8>
673 
674   res_vs  = vec_andc(vs, vs);
675 // CHECK: xor <8 x i16>
676 // CHECK: and <8 x i16>
677 // CHECK-LE: xor <8 x i16>
678 // CHECK-LE: and <8 x i16>
679 
680   res_vs  = vec_andc(vbs, vs);
681 // CHECK: xor <8 x i16>
682 // CHECK: and <8 x i16>
683 // CHECK-LE: xor <8 x i16>
684 // CHECK-LE: and <8 x i16>
685 
686   res_vs  = vec_andc(vs, vbs);
687 // CHECK: xor <8 x i16>
688 // CHECK: and <8 x i16>
689 // CHECK-LE: xor <8 x i16>
690 // CHECK-LE: and <8 x i16>
691 
692   res_vus = vec_andc(vus, vus);
693 // CHECK: xor <8 x i16>
694 // CHECK: and <8 x i16>
695 // CHECK-LE: xor <8 x i16>
696 // CHECK-LE: and <8 x i16>
697 
698   res_vus = vec_andc(vbs, vus);
699 // CHECK: xor <8 x i16>
700 // CHECK: and <8 x i16>
701 // CHECK-LE: xor <8 x i16>
702 // CHECK-LE: and <8 x i16>
703 
704   res_vus = vec_andc(vus, vbs);
705 // CHECK: xor <8 x i16>
706 // CHECK: and <8 x i16>
707 // CHECK-LE: xor <8 x i16>
708 // CHECK-LE: and <8 x i16>
709 
710   res_vbs = vec_andc(vbs, vbs);
711 // CHECK: xor <8 x i16>
712 // CHECK: and <8 x i16>
713 // CHECK-LE: xor <8 x i16>
714 // CHECK-LE: and <8 x i16>
715 
716   res_vi  = vec_andc(vi, vi);
717 // CHECK: xor <4 x i32>
718 // CHECK: and <4 x i32>
719 // CHECK-LE: xor <4 x i32>
720 // CHECK-LE: and <4 x i32>
721 
722   res_vi  = vec_andc(vbi, vi);
723 // CHECK: xor <4 x i32>
724 // CHECK: and <4 x i32>
725 // CHECK-LE: xor <4 x i32>
726 // CHECK-LE: and <4 x i32>
727 
728   res_vi  = vec_andc(vi, vbi);
729 // CHECK: xor <4 x i32>
730 // CHECK: and <4 x i32>
731 // CHECK-LE: xor <4 x i32>
732 // CHECK-LE: and <4 x i32>
733 
734   res_vui = vec_andc(vui, vui);
735 // CHECK: xor <4 x i32>
736 // CHECK: and <4 x i32>
737 // CHECK-LE: xor <4 x i32>
738 // CHECK-LE: and <4 x i32>
739 
740   res_vui = vec_andc(vbi, vui);
741 // CHECK: xor <4 x i32>
742 // CHECK: and <4 x i32>
743 // CHECK-LE: xor <4 x i32>
744 // CHECK-LE: and <4 x i32>
745 
746   res_vui = vec_andc(vui, vbi);
747 // CHECK: xor <4 x i32>
748 // CHECK: and <4 x i32>
749 // CHECK-LE: xor <4 x i32>
750 // CHECK-LE: and <4 x i32>
751 
752   res_vf = vec_andc(vf, vf);
753 // CHECK: xor <4 x i32>
754 // CHECK: and <4 x i32>
755 // CHECK-LE: xor <4 x i32>
756 // CHECK-LE: and <4 x i32>
757 
758   res_vf = vec_andc(vbi, vf);
759 // CHECK: xor <4 x i32>
760 // CHECK: and <4 x i32>
761 // CHECK-LE: xor <4 x i32>
762 // CHECK-LE: and <4 x i32>
763 
764   res_vf = vec_andc(vf, vbi);
765 // CHECK: xor <4 x i32>
766 // CHECK: and <4 x i32>
767 // CHECK-LE: xor <4 x i32>
768 // CHECK-LE: and <4 x i32>
769 
770   res_vsc = vec_vandc(vsc, vsc);
771 // CHECK: xor <16 x i8>
772 // CHECK: and <16 x i8>
773 // CHECK-LE: xor <16 x i8>
774 // CHECK-LE: and <16 x i8>
775 
776   res_vsc = vec_vandc(vbc, vsc);
777 // CHECK: xor <16 x i8>
778 // CHECK: and <16 x i8>
779 // CHECK-LE: xor <16 x i8>
780 // CHECK-LE: and <16 x i8>
781 
782   res_vsc = vec_vandc(vsc, vbc);
783 // CHECK: xor <16 x i8>
784 // CHECK: and <16 x i8>
785 // CHECK-LE: xor <16 x i8>
786 // CHECK-LE: and <16 x i8>
787 
788   res_vuc = vec_vandc(vuc, vuc);
789 // CHECK: xor <16 x i8>
790 // CHECK: and <16 x i8>
791 // CHECK-LE: xor <16 x i8>
792 // CHECK-LE: and <16 x i8>
793 
794   res_vuc = vec_vandc(vbc, vuc);
795 // CHECK: xor <16 x i8>
796 // CHECK: and <16 x i8>
797 // CHECK-LE: xor <16 x i8>
798 // CHECK-LE: and <16 x i8>
799 
800   res_vuc = vec_vandc(vuc, vbc);
801 // CHECK: xor <16 x i8>
802 // CHECK: and <16 x i8>
803 // CHECK-LE: xor <16 x i8>
804 // CHECK-LE: and <16 x i8>
805 
806   res_vbc = vec_vandc(vbc, vbc);
807 // CHECK: xor <16 x i8>
808 // CHECK: and <16 x i8>
809 // CHECK-LE: xor <16 x i8>
810 // CHECK-LE: and <16 x i8>
811 
812   res_vs  = vec_vandc(vs, vs);
813 // CHECK: xor <8 x i16>
814 // CHECK: and <8 x i16>
815 // CHECK-LE: xor <8 x i16>
816 // CHECK-LE: and <8 x i16>
817 
818   res_vs  = vec_vandc(vbs, vs);
819 // CHECK: xor <8 x i16>
820 // CHECK: and <8 x i16>
821 // CHECK-LE: xor <8 x i16>
822 // CHECK-LE: and <8 x i16>
823 
824   res_vs  = vec_vandc(vs, vbs);
825 // CHECK: xor <8 x i16>
826 // CHECK: and <8 x i16>
827 // CHECK-LE: xor <8 x i16>
828 // CHECK-LE: and <8 x i16>
829 
830   res_vus = vec_vandc(vus, vus);
831 // CHECK: xor <8 x i16>
832 // CHECK: and <8 x i16>
833 // CHECK-LE: xor <8 x i16>
834 // CHECK-LE: and <8 x i16>
835 
836   res_vus = vec_vandc(vbs, vus);
837 // CHECK: xor <8 x i16>
838 // CHECK: and <8 x i16>
839 // CHECK-LE: xor <8 x i16>
840 // CHECK-LE: and <8 x i16>
841 
842   res_vus = vec_vandc(vus, vbs);
843 // CHECK: xor <8 x i16>
844 // CHECK: and <8 x i16>
845 // CHECK-LE: xor <8 x i16>
846 // CHECK-LE: and <8 x i16>
847 
848   res_vbs = vec_vandc(vbs, vbs);
849 // CHECK: xor <8 x i16>
850 // CHECK: and <8 x i16>
851 // CHECK-LE: xor <8 x i16>
852 // CHECK-LE: and <8 x i16>
853 
854   res_vi  = vec_vandc(vi, vi);
855 // CHECK: xor <4 x i32>
856 // CHECK: and <4 x i32>
857 // CHECK-LE: xor <4 x i32>
858 // CHECK-LE: and <4 x i32>
859 
860   res_vi  = vec_vandc(vbi, vi);
861 // CHECK: xor <4 x i32>
862 // CHECK: and <4 x i32>
863 // CHECK-LE: xor <4 x i32>
864 // CHECK-LE: and <4 x i32>
865 
866   res_vi  = vec_vandc(vi, vbi);
867 // CHECK: xor <4 x i32>
868 // CHECK: and <4 x i32>
869 // CHECK-LE: xor <4 x i32>
870 // CHECK-LE: and <4 x i32>
871 
872   res_vui = vec_vandc(vui, vui);
873 // CHECK: xor <4 x i32>
874 // CHECK: and <4 x i32>
875 // CHECK-LE: xor <4 x i32>
876 // CHECK-LE: and <4 x i32>
877 
878   res_vui = vec_vandc(vbi, vui);
879 // CHECK: xor <4 x i32>
880 // CHECK: and <4 x i32>
881 // CHECK-LE: xor <4 x i32>
882 // CHECK-LE: and <4 x i32>
883 
884   res_vui = vec_vandc(vui, vbi);
885 // CHECK: xor <4 x i32>
886 // CHECK: and <4 x i32>
887 // CHECK-LE: xor <4 x i32>
888 // CHECK-LE: and <4 x i32>
889 
890   res_vf = vec_vandc(vf, vf);
891 // CHECK: xor <4 x i32>
892 // CHECK: and <4 x i32>
893 // CHECK-LE: xor <4 x i32>
894 // CHECK-LE: and <4 x i32>
895 
896   res_vf = vec_vandc(vbi, vf);
897 // CHECK: xor <4 x i32>
898 // CHECK: and <4 x i32>
899 // CHECK-LE: xor <4 x i32>
900 // CHECK-LE: and <4 x i32>
901 
902   res_vf = vec_vandc(vf, vbi);
903 // CHECK: xor <4 x i32>
904 // CHECK: and <4 x i32>
905 // CHECK-LE: xor <4 x i32>
906 // CHECK-LE: and <4 x i32>
907 
908 }
909 
910 // CHECK-LABEL: define void @test2
test2()911 void test2() {
912   /* vec_avg */
913   res_vsc = vec_avg(vsc, vsc);
914 // CHECK: @llvm.ppc.altivec.vavgsb
915 // CHECK-LE: @llvm.ppc.altivec.vavgsb
916 
917   res_vuc = vec_avg(vuc, vuc);
918 // CHECK: @llvm.ppc.altivec.vavgub
919 // CHECK-LE: @llvm.ppc.altivec.vavgub
920 
921   res_vs  = vec_avg(vs, vs);
922 // CHECK: @llvm.ppc.altivec.vavgsh
923 // CHECK-LE: @llvm.ppc.altivec.vavgsh
924 
925   res_vus = vec_avg(vus, vus);
926 // CHECK: @llvm.ppc.altivec.vavguh
927 // CHECK-LE: @llvm.ppc.altivec.vavguh
928 
929   res_vi  = vec_avg(vi, vi);
930 // CHECK: @llvm.ppc.altivec.vavgsw
931 // CHECK-LE: @llvm.ppc.altivec.vavgsw
932 
933   res_vui = vec_avg(vui, vui);
934 // CHECK: @llvm.ppc.altivec.vavguw
935 // CHECK-LE: @llvm.ppc.altivec.vavguw
936 
937   res_vsc = vec_vavgsb(vsc, vsc);
938 // CHECK: @llvm.ppc.altivec.vavgsb
939 // CHECK-LE: @llvm.ppc.altivec.vavgsb
940 
941   res_vuc = vec_vavgub(vuc, vuc);
942 // CHECK: @llvm.ppc.altivec.vavgub
943 // CHECK-LE: @llvm.ppc.altivec.vavgub
944 
945   res_vs  = vec_vavgsh(vs, vs);
946 // CHECK: @llvm.ppc.altivec.vavgsh
947 // CHECK-LE: @llvm.ppc.altivec.vavgsh
948 
949   res_vus = vec_vavguh(vus, vus);
950 // CHECK: @llvm.ppc.altivec.vavguh
951 // CHECK-LE: @llvm.ppc.altivec.vavguh
952 
953   res_vi  = vec_vavgsw(vi, vi);
954 // CHECK: @llvm.ppc.altivec.vavgsw
955 // CHECK-LE: @llvm.ppc.altivec.vavgsw
956 
957   res_vui = vec_vavguw(vui, vui);
958 // CHECK: @llvm.ppc.altivec.vavguw
959 // CHECK-LE: @llvm.ppc.altivec.vavguw
960 
961   /* vec_ceil */
962   res_vf = vec_ceil(vf);
963 // CHECK: @llvm.ppc.altivec.vrfip
964 // CHECK-LE: @llvm.ppc.altivec.vrfip
965 
966   res_vf = vec_vrfip(vf);
967 // CHECK: @llvm.ppc.altivec.vrfip
968 // CHECK-LE: @llvm.ppc.altivec.vrfip
969 
970   /* vec_cmpb */
971   res_vi = vec_cmpb(vf, vf);
972 // CHECK: @llvm.ppc.altivec.vcmpbfp
973 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
974 
975   res_vi = vec_vcmpbfp(vf, vf);
976 // CHECK: @llvm.ppc.altivec.vcmpbfp
977 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
978 
979   /* vec_cmpeq */
980   res_vbc = vec_cmpeq(vsc, vsc);
981 // CHECK: @llvm.ppc.altivec.vcmpequb
982 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
983 
984   res_vbc = vec_cmpeq(vuc, vuc);
985 // CHECK: @llvm.ppc.altivec.vcmpequb
986 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
987 
988   res_vbc = vec_cmpeq(vbc, vbc);
989 // CHECK: @llvm.ppc.altivec.vcmpequb
990 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
991 
992   res_vbc = vec_cmpeq(vbc, vbc);
993 // CHECK: @llvm.ppc.altivec.vcmpequb
994 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
995 
996   res_vbs = vec_cmpeq(vs, vs);
997 // CHECK: @llvm.ppc.altivec.vcmpequh
998 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
999 
1000   res_vbs = vec_cmpeq(vus, vus);
1001 // CHECK: @llvm.ppc.altivec.vcmpequh
1002 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1003 
1004   res_vbs = vec_cmpeq(vbs, vbs);
1005 // CHECK: @llvm.ppc.altivec.vcmpequh
1006 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1007 
1008   res_vbs = vec_cmpeq(vbs, vbs);
1009 // CHECK: @llvm.ppc.altivec.vcmpequh
1010 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1011 
1012   res_vbi = vec_cmpeq(vi, vi);
1013 // CHECK: @llvm.ppc.altivec.vcmpequw
1014 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1015 
1016   res_vbi = vec_cmpeq(vui, vui);
1017 // CHECK: @llvm.ppc.altivec.vcmpequw
1018 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1019 
1020   res_vbi = vec_cmpeq(vbi, vbi);
1021 // CHECK: @llvm.ppc.altivec.vcmpequw
1022 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1023 
1024   res_vbi = vec_cmpeq(vbi, vbi);
1025 // CHECK: @llvm.ppc.altivec.vcmpequw
1026 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1027 
1028   res_vbi = vec_cmpeq(vf, vf);
1029 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1030 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1031 
1032   /* vec_cmpge */
1033   res_vbc = vec_cmpge(vsc, vsc);
1034 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1035 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1036 
1037   res_vbc = vec_cmpge(vuc, vuc);
1038 // CHECK: @llvm.ppc.altivec.vcmpgtub
1039 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1040 
1041   res_vbs = vec_cmpge(vs, vs);
1042 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1043 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1044 
1045   res_vbs = vec_cmpge(vus, vus);
1046 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1047 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1048 
1049   res_vbi = vec_cmpge(vi, vi);
1050 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1051 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1052 
1053   res_vbi = vec_cmpge(vui, vui);
1054 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1055 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1056 
1057   res_vbi = vec_cmpge(vf, vf);
1058 // CHECK: @llvm.ppc.altivec.vcmpgefp
1059 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1060 
1061   res_vbi = vec_vcmpgefp(vf, vf);
1062 // CHECK: @llvm.ppc.altivec.vcmpgefp
1063 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1064 }
1065 
1066 // CHECK-LABEL: define void @test5
test5()1067 void test5() {
1068 
1069   /* vec_cmpgt */
1070   res_vbc = vec_cmpgt(vsc, vsc);
1071 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1072 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1073 
1074   res_vbc = vec_cmpgt(vuc, vuc);
1075 // CHECK: @llvm.ppc.altivec.vcmpgtub
1076 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1077 
1078   res_vbs = vec_cmpgt(vs, vs);
1079 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1080 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1081 
1082   res_vbs = vec_cmpgt(vus, vus);
1083 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1084 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1085 
1086   res_vbi = vec_cmpgt(vi, vi);
1087 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1088 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1089 
1090   res_vbi = vec_cmpgt(vui, vui);
1091 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1092 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1093 
1094   res_vbi = vec_cmpgt(vf, vf);
1095 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1096 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1097 
1098   res_vbc = vec_vcmpgtsb(vsc, vsc);
1099 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1100 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1101 
1102   res_vbc = vec_vcmpgtub(vuc, vuc);
1103 // CHECK: @llvm.ppc.altivec.vcmpgtub
1104 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1105 
1106   res_vbs = vec_vcmpgtsh(vs, vs);
1107 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1108 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1109 
1110   res_vbs = vec_vcmpgtuh(vus, vus);
1111 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1112 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1113 
1114   res_vbi = vec_vcmpgtsw(vi, vi);
1115 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1116 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1117 
1118   res_vbi = vec_vcmpgtuw(vui, vui);
1119 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1120 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1121 
1122   res_vbi = vec_vcmpgtfp(vf, vf);
1123 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1124 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1125 
1126   /* vec_cmple */
1127   res_vbc = vec_cmple(vsc, vsc);
1128 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1130 
1131   res_vbc = vec_cmple(vuc, vuc);
1132 // CHECK: @llvm.ppc.altivec.vcmpgtub
1133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1134 
1135   res_vbs = vec_cmple(vs, vs);
1136 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1138 
1139   res_vbs = vec_cmple(vus, vus);
1140 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1142 
1143   res_vbi = vec_cmple(vi, vi);
1144 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1145 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1146 
1147   res_vbi = vec_cmple(vui, vui);
1148 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1149 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1150 
1151   res_vbi = vec_cmple(vf, vf);
1152 // CHECK: @llvm.ppc.altivec.vcmpgefp
1153 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1154 }
1155 
1156 // CHECK-LABEL: define void @test6
test6()1157 void test6() {
1158   /* vec_cmplt */
1159   res_vbc = vec_cmplt(vsc, vsc);
1160 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1161 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1162 
1163   res_vbc = vec_cmplt(vuc, vuc);
1164 // CHECK: @llvm.ppc.altivec.vcmpgtub
1165 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1166 
1167   res_vbs = vec_cmplt(vs, vs);
1168 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1169 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1170 
1171   res_vbs = vec_cmplt(vus, vus);
1172 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1173 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1174 
1175   res_vbi = vec_cmplt(vi, vi);
1176 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1177 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1178 
1179   res_vbi = vec_cmplt(vui, vui);
1180 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1181 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1182 
1183   res_vbi = vec_cmplt(vf, vf);
1184 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1185 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1186 
1187   /* vec_ctf */
1188   res_vf  = vec_ctf(vi, 0);
1189 // CHECK: @llvm.ppc.altivec.vcfsx
1190 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1191 
1192   res_vf  = vec_ctf(vui, 0);
1193 // CHECK: @llvm.ppc.altivec.vcfux
1194 // CHECK-LE: @llvm.ppc.altivec.vcfux
1195 
1196   res_vf  = vec_vcfsx(vi, 0);
1197 // CHECK: @llvm.ppc.altivec.vcfsx
1198 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1199 
1200   res_vf  = vec_vcfux(vui, 0);
1201 // CHECK: @llvm.ppc.altivec.vcfux
1202 // CHECK-LE: @llvm.ppc.altivec.vcfux
1203 
1204   /* vec_cts */
1205   res_vi = vec_cts(vf, 0);
1206 // CHECK: @llvm.ppc.altivec.vctsxs
1207 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1208 
1209   res_vi = vec_vctsxs(vf, 0);
1210 // CHECK: @llvm.ppc.altivec.vctsxs
1211 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1212 
1213   /* vec_ctu */
1214   res_vui = vec_ctu(vf, 0);
1215 // CHECK: @llvm.ppc.altivec.vctuxs
1216 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1217 
1218   res_vui = vec_vctuxs(vf, 0);
1219 // CHECK: @llvm.ppc.altivec.vctuxs
1220 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1221 
1222   res_vi = vec_signed(vf);
1223 // CHECK: fptosi <4 x float>
1224 // CHECK-LE: fptosi <4 x float>
1225 
1226   res_vui = vec_unsigned(vf);
1227 // CHECK: fptoui <4 x float>
1228 // CHECK-LE: fptoui <4 x float>
1229 
1230   res_vf = vec_float(vi);
1231 // CHECK: sitofp <4 x i32>
1232 // CHECK-LE: sitofp <4 x i32>
1233 
1234   res_vf = vec_float(vui);
1235 // CHECK: uitofp <4 x i32>
1236 // CHECK-LE: uitofp <4 x i32>
1237 
1238   /* vec_div */
1239   res_vsc = vec_div(vsc, vsc);
1240 // CHECK: sdiv <16 x i8>
1241 // CHECK-LE: sdiv <16 x i8>
1242 
1243   res_vuc = vec_div(vuc, vuc);
1244 // CHECK: udiv <16 x i8>
1245 // CHECK-LE: udiv <16 x i8>
1246 
1247   res_vs = vec_div(vs, vs);
1248 // CHECK: sdiv <8 x i16>
1249 // CHECK-LE: sdiv <8 x i16>
1250 
1251   res_vus = vec_div(vus, vus);
1252 // CHECK: udiv <8 x i16>
1253 // CHECK-LE: udiv <8 x i16>
1254 
1255   res_vi = vec_div(vi, vi);
1256 // CHECK: sdiv <4 x i32>
1257 // CHECK-LE: sdiv <4 x i32>
1258 
1259   res_vui = vec_div(vui, vui);
1260 // CHECK: udiv <4 x i32>
1261 // CHECK-LE: udiv <4 x i32>
1262 
1263   /* vec_dss */
1264   vec_dss(0);
1265 // CHECK: @llvm.ppc.altivec.dss
1266 // CHECK-LE: @llvm.ppc.altivec.dss
1267 
1268   /* vec_dssall */
1269   vec_dssall();
1270 // CHECK: @llvm.ppc.altivec.dssall
1271 // CHECK-LE: @llvm.ppc.altivec.dssall
1272 
1273   /* vec_dst */
1274   vec_dst(&vsc, 0, 0);
1275 // CHECK: @llvm.ppc.altivec.dst
1276 // CHECK-LE: @llvm.ppc.altivec.dst
1277 
1278   /* vec_dstst */
1279   vec_dstst(&vs, 0, 0);
1280 // CHECK: @llvm.ppc.altivec.dstst
1281 // CHECK-LE: @llvm.ppc.altivec.dstst
1282 
1283   /* vec_dststt */
1284   vec_dststt(&param_i, 0, 0);
1285 // CHECK: @llvm.ppc.altivec.dststt
1286 // CHECK-LE: @llvm.ppc.altivec.dststt
1287 
1288   /* vec_dstt */
1289   vec_dstt(&vf, 0, 0);
1290 // CHECK: @llvm.ppc.altivec.dstt
1291 // CHECK-LE: @llvm.ppc.altivec.dstt
1292 
1293   /* vec_expte */
1294   res_vf = vec_expte(vf);
1295 // CHECK: @llvm.ppc.altivec.vexptefp
1296 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1297 
1298   res_vf = vec_vexptefp(vf);
1299 // CHECK: @llvm.ppc.altivec.vexptefp
1300 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1301 
1302   /* vec_floor */
1303   res_vf = vec_floor(vf);
1304 // CHECK: @llvm.ppc.altivec.vrfim
1305 // CHECK-LE: @llvm.ppc.altivec.vrfim
1306 
1307   res_vf = vec_vrfim(vf);
1308 // CHECK: @llvm.ppc.altivec.vrfim
1309 // CHECK-LE: @llvm.ppc.altivec.vrfim
1310 
1311   /* vec_ld */
1312   res_vsc = vec_ld(0, &vsc);
1313 // CHECK: @llvm.ppc.altivec.lvx
1314 // CHECK-LE: @llvm.ppc.altivec.lvx
1315 
1316   res_vsc = vec_ld(0, &param_sc);
1317 // CHECK: @llvm.ppc.altivec.lvx
1318 // CHECK-LE: @llvm.ppc.altivec.lvx
1319 
1320   res_vuc = vec_ld(0, &vuc);
1321 // CHECK: @llvm.ppc.altivec.lvx
1322 // CHECK-LE: @llvm.ppc.altivec.lvx
1323 
1324   res_vuc = vec_ld(0, &param_uc);
1325 // CHECK: @llvm.ppc.altivec.lvx
1326 // CHECK-LE: @llvm.ppc.altivec.lvx
1327 
1328   res_vbc = vec_ld(0, &vbc);
1329 // CHECK: @llvm.ppc.altivec.lvx
1330 // CHECK-LE: @llvm.ppc.altivec.lvx
1331 
1332   res_vs  = vec_ld(0, &vs);
1333 // CHECK: @llvm.ppc.altivec.lvx
1334 // CHECK-LE: @llvm.ppc.altivec.lvx
1335 
1336   res_vs  = vec_ld(0, &param_s);
1337 // CHECK: @llvm.ppc.altivec.lvx
1338 // CHECK-LE: @llvm.ppc.altivec.lvx
1339 
1340   res_vus = vec_ld(0, &vus);
1341 // CHECK: @llvm.ppc.altivec.lvx
1342 // CHECK-LE: @llvm.ppc.altivec.lvx
1343 
1344   res_vus = vec_ld(0, &param_us);
1345 // CHECK: @llvm.ppc.altivec.lvx
1346 // CHECK-LE: @llvm.ppc.altivec.lvx
1347 
1348   res_vbs = vec_ld(0, &vbs);
1349 // CHECK: @llvm.ppc.altivec.lvx
1350 // CHECK-LE: @llvm.ppc.altivec.lvx
1351 
1352   res_vp  = vec_ld(0, &vp);
1353 // CHECK: @llvm.ppc.altivec.lvx
1354 // CHECK-LE: @llvm.ppc.altivec.lvx
1355 
1356   res_vi  = vec_ld(0, &vi);
1357 // CHECK: @llvm.ppc.altivec.lvx
1358 // CHECK-LE: @llvm.ppc.altivec.lvx
1359 
1360   res_vi  = vec_ld(0, &param_i);
1361 // CHECK: @llvm.ppc.altivec.lvx
1362 // CHECK-LE: @llvm.ppc.altivec.lvx
1363 
1364   res_vui = vec_ld(0, &vui);
1365 // CHECK: @llvm.ppc.altivec.lvx
1366 // CHECK-LE: @llvm.ppc.altivec.lvx
1367 
1368   res_vui = vec_ld(0, &param_ui);
1369 // CHECK: @llvm.ppc.altivec.lvx
1370 // CHECK-LE: @llvm.ppc.altivec.lvx
1371 
1372   res_vbi = vec_ld(0, &vbi);
1373 // CHECK: @llvm.ppc.altivec.lvx
1374 // CHECK-LE: @llvm.ppc.altivec.lvx
1375 
1376   res_vf  = vec_ld(0, &vf);
1377 // CHECK: @llvm.ppc.altivec.lvx
1378 // CHECK-LE: @llvm.ppc.altivec.lvx
1379 
1380   res_vf  = vec_ld(0, &param_f);
1381 // CHECK: @llvm.ppc.altivec.lvx
1382 // CHECK-LE: @llvm.ppc.altivec.lvx
1383 
1384   res_vsc = vec_lvx(0, &vsc);
1385 // CHECK: @llvm.ppc.altivec.lvx
1386 // CHECK-LE: @llvm.ppc.altivec.lvx
1387 
1388   res_vsc = vec_lvx(0, &param_sc);
1389 // CHECK: @llvm.ppc.altivec.lvx
1390 // CHECK-LE: @llvm.ppc.altivec.lvx
1391 
1392   res_vuc = vec_lvx(0, &vuc);
1393 // CHECK: @llvm.ppc.altivec.lvx
1394 // CHECK-LE: @llvm.ppc.altivec.lvx
1395 
1396   res_vuc = vec_lvx(0, &param_uc);
1397 // CHECK: @llvm.ppc.altivec.lvx
1398 // CHECK-LE: @llvm.ppc.altivec.lvx
1399 
1400   res_vbc = vec_lvx(0, &vbc);
1401 // CHECK: @llvm.ppc.altivec.lvx
1402 // CHECK-LE: @llvm.ppc.altivec.lvx
1403 
1404   res_vs  = vec_lvx(0, &vs);
1405 // CHECK: @llvm.ppc.altivec.lvx
1406 // CHECK-LE: @llvm.ppc.altivec.lvx
1407 
1408   res_vs  = vec_lvx(0, &param_s);
1409 // CHECK: @llvm.ppc.altivec.lvx
1410 // CHECK-LE: @llvm.ppc.altivec.lvx
1411 
1412   res_vus = vec_lvx(0, &vus);
1413 // CHECK: @llvm.ppc.altivec.lvx
1414 // CHECK-LE: @llvm.ppc.altivec.lvx
1415 
1416   res_vus = vec_lvx(0, &param_us);
1417 // CHECK: @llvm.ppc.altivec.lvx
1418 // CHECK-LE: @llvm.ppc.altivec.lvx
1419 
1420   res_vbs = vec_lvx(0, &vbs);
1421 // CHECK: @llvm.ppc.altivec.lvx
1422 // CHECK-LE: @llvm.ppc.altivec.lvx
1423 
1424   res_vp  = vec_lvx(0, &vp);
1425 // CHECK: @llvm.ppc.altivec.lvx
1426 // CHECK-LE: @llvm.ppc.altivec.lvx
1427 
1428   res_vi  = vec_lvx(0, &vi);
1429 // CHECK: @llvm.ppc.altivec.lvx
1430 // CHECK-LE: @llvm.ppc.altivec.lvx
1431 
1432   res_vi  = vec_lvx(0, &param_i);
1433 // CHECK: @llvm.ppc.altivec.lvx
1434 // CHECK-LE: @llvm.ppc.altivec.lvx
1435 
1436   res_vui = vec_lvx(0, &vui);
1437 // CHECK: @llvm.ppc.altivec.lvx
1438 // CHECK-LE: @llvm.ppc.altivec.lvx
1439 
1440   res_vui = vec_lvx(0, &param_ui);
1441 // CHECK: @llvm.ppc.altivec.lvx
1442 // CHECK-LE: @llvm.ppc.altivec.lvx
1443 
1444   res_vbi = vec_lvx(0, &vbi);
1445 // CHECK: @llvm.ppc.altivec.lvx
1446 // CHECK-LE: @llvm.ppc.altivec.lvx
1447 
1448   res_vf  = vec_lvx(0, &vf);
1449 // CHECK: @llvm.ppc.altivec.lvx
1450 // CHECK-LE: @llvm.ppc.altivec.lvx
1451 
1452   res_vf  = vec_lvx(0, &param_f);
1453 // CHECK: @llvm.ppc.altivec.lvx
1454 // CHECK-LE: @llvm.ppc.altivec.lvx
1455 
1456   /* vec_lde */
1457   res_vsc = vec_lde(0, &param_sc);
1458 // CHECK: @llvm.ppc.altivec.lvebx
1459 // CHECK-LE: @llvm.ppc.altivec.lvebx
1460 
1461   res_vuc = vec_lde(0, &param_uc);
1462 // CHECK: @llvm.ppc.altivec.lvebx
1463 // CHECK-LE: @llvm.ppc.altivec.lvebx
1464 
1465   res_vs  = vec_lde(0, &param_s);
1466 // CHECK: @llvm.ppc.altivec.lvehx
1467 // CHECK-LE: @llvm.ppc.altivec.lvehx
1468 
1469   res_vus = vec_lde(0, &param_us);
1470 // CHECK: @llvm.ppc.altivec.lvehx
1471 // CHECK-LE: @llvm.ppc.altivec.lvehx
1472 
1473   res_vi  = vec_lde(0, &param_i);
1474 // CHECK: @llvm.ppc.altivec.lvewx
1475 // CHECK-LE: @llvm.ppc.altivec.lvewx
1476 
1477   res_vui = vec_lde(0, &param_ui);
1478 // CHECK: @llvm.ppc.altivec.lvewx
1479 // CHECK-LE: @llvm.ppc.altivec.lvewx
1480 
1481   res_vf  = vec_lde(0, &param_f);
1482 // CHECK: @llvm.ppc.altivec.lvewx
1483 // CHECK-LE: @llvm.ppc.altivec.lvewx
1484 
1485   res_vsc = vec_lvebx(0, &param_sc);
1486 // CHECK: @llvm.ppc.altivec.lvebx
1487 // CHECK-LE: @llvm.ppc.altivec.lvebx
1488 
1489   res_vuc = vec_lvebx(0, &param_uc);
1490 // CHECK: @llvm.ppc.altivec.lvebx
1491 // CHECK-LE: @llvm.ppc.altivec.lvebx
1492 
1493   res_vs  = vec_lvehx(0, &param_s);
1494 // CHECK: @llvm.ppc.altivec.lvehx
1495 // CHECK-LE: @llvm.ppc.altivec.lvehx
1496 
1497   res_vus = vec_lvehx(0, &param_us);
1498 // CHECK: @llvm.ppc.altivec.lvehx
1499 // CHECK-LE: @llvm.ppc.altivec.lvehx
1500 
1501   res_vi  = vec_lvewx(0, &param_i);
1502 // CHECK: @llvm.ppc.altivec.lvewx
1503 // CHECK-LE: @llvm.ppc.altivec.lvewx
1504 
1505   res_vui = vec_lvewx(0, &param_ui);
1506 // CHECK: @llvm.ppc.altivec.lvewx
1507 // CHECK-LE: @llvm.ppc.altivec.lvewx
1508 
1509   res_vf  = vec_lvewx(0, &param_f);
1510 // CHECK: @llvm.ppc.altivec.lvewx
1511 // CHECK-LE: @llvm.ppc.altivec.lvewx
1512 
1513   /* vec_ldl */
1514   res_vsc = vec_ldl(0, &vsc);
1515 // CHECK: @llvm.ppc.altivec.lvxl
1516 // CHECK-LE: @llvm.ppc.altivec.lvxl
1517 
1518   res_vsc = vec_ldl(0, &param_sc);
1519 // CHECK: @llvm.ppc.altivec.lvxl
1520 // CHECK-LE: @llvm.ppc.altivec.lvxl
1521 
1522   res_vuc = vec_ldl(0, &vuc);
1523 // CHECK: @llvm.ppc.altivec.lvxl
1524 // CHECK-LE: @llvm.ppc.altivec.lvxl
1525 
1526   res_vuc = vec_ldl(0, &param_uc);
1527 // CHECK: @llvm.ppc.altivec.lvxl
1528 // CHECK-LE: @llvm.ppc.altivec.lvxl
1529 
1530   res_vbc = vec_ldl(0, &vbc);
1531 // CHECK: @llvm.ppc.altivec.lvxl
1532 // CHECK-LE: @llvm.ppc.altivec.lvxl
1533 
1534   res_vs  = vec_ldl(0, &vs);
1535 // CHECK: @llvm.ppc.altivec.lvxl
1536 // CHECK-LE: @llvm.ppc.altivec.lvxl
1537 
1538   res_vs  = vec_ldl(0, &param_s);
1539 // CHECK: @llvm.ppc.altivec.lvxl
1540 // CHECK-LE: @llvm.ppc.altivec.lvxl
1541 
1542   res_vus = vec_ldl(0, &vus);
1543 // CHECK: @llvm.ppc.altivec.lvxl
1544 // CHECK-LE: @llvm.ppc.altivec.lvxl
1545 
1546   res_vus = vec_ldl(0, &param_us);
1547 // CHECK: @llvm.ppc.altivec.lvxl
1548 // CHECK-LE: @llvm.ppc.altivec.lvxl
1549 
1550   res_vbs = vec_ldl(0, &vbs);
1551 // CHECK: @llvm.ppc.altivec.lvxl
1552 // CHECK-LE: @llvm.ppc.altivec.lvxl
1553 
1554   res_vp  = vec_ldl(0, &vp);
1555 // CHECK: @llvm.ppc.altivec.lvxl
1556 // CHECK-LE: @llvm.ppc.altivec.lvxl
1557 
1558   res_vi  = vec_ldl(0, &vi);
1559 // CHECK: @llvm.ppc.altivec.lvxl
1560 // CHECK-LE: @llvm.ppc.altivec.lvxl
1561 
1562   res_vi  = vec_ldl(0, &param_i);
1563 // CHECK: @llvm.ppc.altivec.lvxl
1564 // CHECK-LE: @llvm.ppc.altivec.lvxl
1565 
1566   res_vui = vec_ldl(0, &vui);
1567 // CHECK: @llvm.ppc.altivec.lvxl
1568 // CHECK-LE: @llvm.ppc.altivec.lvxl
1569 
1570   res_vui = vec_ldl(0, &param_ui);
1571 // CHECK: @llvm.ppc.altivec.lvxl
1572 // CHECK-LE: @llvm.ppc.altivec.lvxl
1573 
1574   res_vbi = vec_ldl(0, &vbi);
1575 // CHECK: @llvm.ppc.altivec.lvxl
1576 // CHECK-LE: @llvm.ppc.altivec.lvxl
1577 
1578   res_vf  = vec_ldl(0, &vf);
1579 // CHECK: @llvm.ppc.altivec.lvxl
1580 // CHECK-LE: @llvm.ppc.altivec.lvxl
1581 
1582   res_vf  = vec_ldl(0, &param_f);
1583 // CHECK: @llvm.ppc.altivec.lvxl
1584 // CHECK-LE: @llvm.ppc.altivec.lvxl
1585 
1586   res_vsc = vec_lvxl(0, &vsc);
1587 // CHECK: @llvm.ppc.altivec.lvxl
1588 // CHECK-LE: @llvm.ppc.altivec.lvxl
1589 
1590   res_vsc = vec_lvxl(0, &param_sc);
1591 // CHECK: @llvm.ppc.altivec.lvxl
1592 // CHECK-LE: @llvm.ppc.altivec.lvxl
1593 
1594   res_vuc = vec_lvxl(0, &vuc);
1595 // CHECK: @llvm.ppc.altivec.lvxl
1596 // CHECK-LE: @llvm.ppc.altivec.lvxl
1597 
1598   res_vbc = vec_lvxl(0, &vbc);
1599 // CHECK: @llvm.ppc.altivec.lvxl
1600 // CHECK-LE: @llvm.ppc.altivec.lvxl
1601 
1602   res_vuc = vec_lvxl(0, &param_uc);
1603 // CHECK: @llvm.ppc.altivec.lvxl
1604 // CHECK-LE: @llvm.ppc.altivec.lvxl
1605 
1606   res_vs  = vec_lvxl(0, &vs);
1607 // CHECK: @llvm.ppc.altivec.lvxl
1608 // CHECK-LE: @llvm.ppc.altivec.lvxl
1609 
1610   res_vs  = vec_lvxl(0, &param_s);
1611 // CHECK: @llvm.ppc.altivec.lvxl
1612 // CHECK-LE: @llvm.ppc.altivec.lvxl
1613 
1614   res_vus = vec_lvxl(0, &vus);
1615 // CHECK: @llvm.ppc.altivec.lvxl
1616 // CHECK-LE: @llvm.ppc.altivec.lvxl
1617 
1618   res_vus = vec_lvxl(0, &param_us);
1619 // CHECK: @llvm.ppc.altivec.lvxl
1620 // CHECK-LE: @llvm.ppc.altivec.lvxl
1621 
1622   res_vbs = vec_lvxl(0, &vbs);
1623 // CHECK: @llvm.ppc.altivec.lvxl
1624 // CHECK-LE: @llvm.ppc.altivec.lvxl
1625 
1626   res_vp  = vec_lvxl(0, &vp);
1627 // CHECK: @llvm.ppc.altivec.lvxl
1628 // CHECK-LE: @llvm.ppc.altivec.lvxl
1629 
1630   res_vi  = vec_lvxl(0, &vi);
1631 // CHECK: @llvm.ppc.altivec.lvxl
1632 // CHECK-LE: @llvm.ppc.altivec.lvxl
1633 
1634   res_vi  = vec_lvxl(0, &param_i);
1635 // CHECK: @llvm.ppc.altivec.lvxl
1636 // CHECK-LE: @llvm.ppc.altivec.lvxl
1637 
1638   res_vui = vec_lvxl(0, &vui);
1639 // CHECK: @llvm.ppc.altivec.lvxl
1640 // CHECK-LE: @llvm.ppc.altivec.lvxl
1641 
1642   res_vui = vec_lvxl(0, &param_ui);
1643 // CHECK: @llvm.ppc.altivec.lvxl
1644 // CHECK-LE: @llvm.ppc.altivec.lvxl
1645 
1646   res_vbi = vec_lvxl(0, &vbi);
1647 // CHECK: @llvm.ppc.altivec.lvxl
1648 // CHECK-LE: @llvm.ppc.altivec.lvxl
1649 
1650   res_vf  = vec_lvxl(0, &vf);
1651 // CHECK: @llvm.ppc.altivec.lvxl
1652 // CHECK-LE: @llvm.ppc.altivec.lvxl
1653 
1654   res_vf  = vec_lvxl(0, &param_f);
1655 // CHECK: @llvm.ppc.altivec.lvxl
1656 // CHECK-LE: @llvm.ppc.altivec.lvxl
1657 
1658   /* vec_loge */
1659   res_vf = vec_loge(vf);
1660 // CHECK: @llvm.ppc.altivec.vlogefp
1661 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1662 
1663   res_vf = vec_vlogefp(vf);
1664 // CHECK: @llvm.ppc.altivec.vlogefp
1665 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1666 
1667   /* vec_lvsl */
1668   res_vuc = vec_lvsl(0, &param_i);
1669 // CHECK: @llvm.ppc.altivec.lvsl
1670 // CHECK-LE: @llvm.ppc.altivec.lvsl
1671 
1672   /* vec_lvsr */
1673   res_vuc = vec_lvsr(0, &param_i);
1674 // CHECK: @llvm.ppc.altivec.lvsr
1675 // CHECK-LE: @llvm.ppc.altivec.lvsr
1676 
1677   /* vec_madd */
1678   res_vf =vec_madd(vf, vf, vf);
1679 // CHECK: @llvm.ppc.altivec.vmaddfp
1680 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1681 
1682   res_vf = vec_vmaddfp(vf, vf, vf);
1683 // CHECK: @llvm.ppc.altivec.vmaddfp
1684 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1685 
1686   /* vec_madds */
1687   res_vs = vec_madds(vs, vs, vs);
1688 // CHECK: @llvm.ppc.altivec.vmhaddshs
1689 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1690 
1691   res_vs = vec_vmhaddshs(vs, vs, vs);
1692 // CHECK: @llvm.ppc.altivec.vmhaddshs
1693 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1694 
1695   /* vec_max */
1696   res_vsc = vec_max(vsc, vsc);
1697 // CHECK: @llvm.ppc.altivec.vmaxsb
1698 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1699 
1700   res_vsc = vec_max(vbc, vsc);
1701 // CHECK: @llvm.ppc.altivec.vmaxsb
1702 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1703 
1704   res_vsc = vec_max(vsc, vbc);
1705 // CHECK: @llvm.ppc.altivec.vmaxsb
1706 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1707 
1708   res_vuc = vec_max(vuc, vuc);
1709 // CHECK: @llvm.ppc.altivec.vmaxub
1710 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1711 
1712   res_vuc = vec_max(vbc, vuc);
1713 // CHECK: @llvm.ppc.altivec.vmaxub
1714 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1715 
1716   res_vuc = vec_max(vuc, vbc);
1717 // CHECK: @llvm.ppc.altivec.vmaxub
1718 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1719 
1720   res_vs  = vec_max(vs, vs);
1721 // CHECK: @llvm.ppc.altivec.vmaxsh
1722 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1723 
1724   res_vs  = vec_max(vbs, vs);
1725 // CHECK: @llvm.ppc.altivec.vmaxsh
1726 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1727 
1728   res_vs  = vec_max(vs, vbs);
1729 // CHECK: @llvm.ppc.altivec.vmaxsh
1730 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1731 
1732   res_vus = vec_max(vus, vus);
1733 // CHECK: @llvm.ppc.altivec.vmaxuh
1734 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1735 
1736   res_vus = vec_max(vbs, vus);
1737 // CHECK: @llvm.ppc.altivec.vmaxuh
1738 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1739 
1740   res_vus = vec_max(vus, vbs);
1741 // CHECK: @llvm.ppc.altivec.vmaxuh
1742 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1743 
1744   res_vi  = vec_max(vi, vi);
1745 // CHECK: @llvm.ppc.altivec.vmaxsw
1746 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1747 
1748   res_vi  = vec_max(vbi, vi);
1749 // CHECK: @llvm.ppc.altivec.vmaxsw
1750 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1751 
1752   res_vi  = vec_max(vi, vbi);
1753 // CHECK: @llvm.ppc.altivec.vmaxsw
1754 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1755 
1756   res_vui = vec_max(vui, vui);
1757 // CHECK: @llvm.ppc.altivec.vmaxuw
1758 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1759 
1760   res_vui = vec_max(vbi, vui);
1761 // CHECK: @llvm.ppc.altivec.vmaxuw
1762 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1763 
1764   res_vui = vec_max(vui, vbi);
1765 // CHECK: @llvm.ppc.altivec.vmaxuw
1766 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1767 
1768   res_vf  = vec_max(vf, vf);
1769 // CHECK: @llvm.ppc.altivec.vmaxfp
1770 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1771 
1772   res_vsc = vec_vmaxsb(vsc, vsc);
1773 // CHECK: @llvm.ppc.altivec.vmaxsb
1774 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1775 
1776   res_vsc = vec_vmaxsb(vbc, vsc);
1777 // CHECK: @llvm.ppc.altivec.vmaxsb
1778 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1779 
1780   res_vsc = vec_vmaxsb(vsc, vbc);
1781 // CHECK: @llvm.ppc.altivec.vmaxsb
1782 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1783 
1784   res_vuc = vec_vmaxub(vuc, vuc);
1785 // CHECK: @llvm.ppc.altivec.vmaxub
1786 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1787 
1788   res_vuc = vec_vmaxub(vbc, vuc);
1789 // CHECK: @llvm.ppc.altivec.vmaxub
1790 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1791 
1792   res_vuc = vec_vmaxub(vuc, vbc);
1793 // CHECK: @llvm.ppc.altivec.vmaxub
1794 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1795 
1796   res_vs  = vec_vmaxsh(vs, vs);
1797 // CHECK: @llvm.ppc.altivec.vmaxsh
1798 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1799 
1800   res_vs  = vec_vmaxsh(vbs, vs);
1801 // CHECK: @llvm.ppc.altivec.vmaxsh
1802 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1803 
1804   res_vs  = vec_vmaxsh(vs, vbs);
1805 // CHECK: @llvm.ppc.altivec.vmaxsh
1806 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1807 
1808   res_vus = vec_vmaxuh(vus, vus);
1809 // CHECK: @llvm.ppc.altivec.vmaxuh
1810 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1811 
1812   res_vus = vec_vmaxuh(vbs, vus);
1813 // CHECK: @llvm.ppc.altivec.vmaxuh
1814 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1815 
1816   res_vus = vec_vmaxuh(vus, vbs);
1817 // CHECK: @llvm.ppc.altivec.vmaxuh
1818 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1819 
1820   res_vi  = vec_vmaxsw(vi, vi);
1821 // CHECK: @llvm.ppc.altivec.vmaxsw
1822 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1823 
1824   res_vi  = vec_vmaxsw(vbi, vi);
1825 // CHECK: @llvm.ppc.altivec.vmaxsw
1826 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1827 
1828   res_vi  = vec_vmaxsw(vi, vbi);
1829 // CHECK: @llvm.ppc.altivec.vmaxsw
1830 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1831 
1832   res_vui = vec_vmaxuw(vui, vui);
1833 // CHECK: @llvm.ppc.altivec.vmaxuw
1834 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1835 
1836   res_vui = vec_vmaxuw(vbi, vui);
1837 // CHECK: @llvm.ppc.altivec.vmaxuw
1838 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1839 
1840   res_vui = vec_vmaxuw(vui, vbi);
1841 // CHECK: @llvm.ppc.altivec.vmaxuw
1842 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1843 
1844   res_vf  = vec_vmaxfp(vf, vf);
1845 // CHECK: @llvm.ppc.altivec.vmaxfp
1846 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1847 
1848   /* vec_mergeh */
1849   res_vsc = vec_mergeh(vsc, vsc);
1850 // CHECK: @llvm.ppc.altivec.vperm
1851 // CHECK-LE: @llvm.ppc.altivec.vperm
1852 
1853   res_vuc = vec_mergeh(vuc, vuc);
1854 // CHECK: @llvm.ppc.altivec.vperm
1855 // CHECK-LE: @llvm.ppc.altivec.vperm
1856 
1857   res_vbc = vec_mergeh(vbc, vbc);
1858 // CHECK: @llvm.ppc.altivec.vperm
1859 // CHECK-LE: @llvm.ppc.altivec.vperm
1860 
1861   res_vs  = vec_mergeh(vs, vs);
1862 // CHECK: @llvm.ppc.altivec.vperm
1863 // CHECK-LE: @llvm.ppc.altivec.vperm
1864 
1865   res_vp  = vec_mergeh(vp, vp);
1866 // CHECK: @llvm.ppc.altivec.vperm
1867 // CHECK-LE: @llvm.ppc.altivec.vperm
1868 
1869   res_vus = vec_mergeh(vus, vus);
1870 // CHECK: @llvm.ppc.altivec.vperm
1871 // CHECK-LE: @llvm.ppc.altivec.vperm
1872 
1873   res_vbs = vec_mergeh(vbs, vbs);
1874 // CHECK: @llvm.ppc.altivec.vperm
1875 // CHECK-LE: @llvm.ppc.altivec.vperm
1876 
1877   res_vi  = vec_mergeh(vi, vi);
1878 // CHECK: @llvm.ppc.altivec.vperm
1879 // CHECK-LE: @llvm.ppc.altivec.vperm
1880 
1881   res_vui = vec_mergeh(vui, vui);
1882 // CHECK: @llvm.ppc.altivec.vperm
1883 // CHECK-LE: @llvm.ppc.altivec.vperm
1884 
1885   res_vbi = vec_mergeh(vbi, vbi);
1886 // CHECK: @llvm.ppc.altivec.vperm
1887 // CHECK-LE: @llvm.ppc.altivec.vperm
1888 
1889   res_vf  = vec_mergeh(vf, vf);
1890 // CHECK: @llvm.ppc.altivec.vperm
1891 // CHECK-LE: @llvm.ppc.altivec.vperm
1892 
1893   res_vsc = vec_vmrghb(vsc, vsc);
1894 // CHECK: @llvm.ppc.altivec.vperm
1895 // CHECK-LE: @llvm.ppc.altivec.vperm
1896 
1897   res_vuc = vec_vmrghb(vuc, vuc);
1898 // CHECK: @llvm.ppc.altivec.vperm
1899 // CHECK-LE: @llvm.ppc.altivec.vperm
1900 
1901   res_vbc = vec_vmrghb(vbc, vbc);
1902 // CHECK: @llvm.ppc.altivec.vperm
1903 // CHECK-LE: @llvm.ppc.altivec.vperm
1904 
1905   res_vs  = vec_vmrghh(vs, vs);
1906 // CHECK: @llvm.ppc.altivec.vperm
1907 // CHECK-LE: @llvm.ppc.altivec.vperm
1908 
1909   res_vp  = vec_vmrghh(vp, vp);
1910 // CHECK: @llvm.ppc.altivec.vperm
1911 // CHECK-LE: @llvm.ppc.altivec.vperm
1912 
1913   res_vus = vec_vmrghh(vus, vus);
1914 // CHECK: @llvm.ppc.altivec.vperm
1915 // CHECK-LE: @llvm.ppc.altivec.vperm
1916 
1917   res_vbs = vec_vmrghh(vbs, vbs);
1918 // CHECK: @llvm.ppc.altivec.vperm
1919 // CHECK-LE: @llvm.ppc.altivec.vperm
1920 
1921   res_vi  = vec_vmrghw(vi, vi);
1922 // CHECK: @llvm.ppc.altivec.vperm
1923 // CHECK-LE: @llvm.ppc.altivec.vperm
1924 
1925   res_vui = vec_vmrghw(vui, vui);
1926 // CHECK: @llvm.ppc.altivec.vperm
1927 // CHECK-LE: @llvm.ppc.altivec.vperm
1928 
1929   res_vbi = vec_vmrghw(vbi, vbi);
1930 // CHECK: @llvm.ppc.altivec.vperm
1931 // CHECK-LE: @llvm.ppc.altivec.vperm
1932 
1933   res_vf  = vec_vmrghw(vf, vf);
1934 // CHECK: @llvm.ppc.altivec.vperm
1935 // CHECK-LE: @llvm.ppc.altivec.vperm
1936 
1937   /* vec_mergel */
1938   res_vsc = vec_mergel(vsc, vsc);
1939 // CHECK: @llvm.ppc.altivec.vperm
1940 // CHECK-LE: @llvm.ppc.altivec.vperm
1941 
1942   res_vuc = vec_mergel(vuc, vuc);
1943 // CHECK: @llvm.ppc.altivec.vperm
1944 // CHECK-LE: @llvm.ppc.altivec.vperm
1945 
1946   res_vbc = vec_mergel(vbc, vbc);
1947 // CHECK: @llvm.ppc.altivec.vperm
1948 // CHECK-LE: @llvm.ppc.altivec.vperm
1949 
1950   res_vs  = vec_mergel(vs, vs);
1951 // CHECK: @llvm.ppc.altivec.vperm
1952 // CHECK-LE: @llvm.ppc.altivec.vperm
1953 
1954   res_vp  = vec_mergeh(vp, vp);
1955 // CHECK: @llvm.ppc.altivec.vperm
1956 // CHECK-LE: @llvm.ppc.altivec.vperm
1957 
1958   res_vus = vec_mergel(vus, vus);
1959 // CHECK: @llvm.ppc.altivec.vperm
1960 // CHECK-LE: @llvm.ppc.altivec.vperm
1961 
1962   res_vbs = vec_mergel(vbs, vbs);
1963 // CHECK: @llvm.ppc.altivec.vperm
1964 // CHECK-LE: @llvm.ppc.altivec.vperm
1965 
1966   res_vi  = vec_mergel(vi, vi);
1967 // CHECK: @llvm.ppc.altivec.vperm
1968 // CHECK-LE: @llvm.ppc.altivec.vperm
1969 
1970   res_vui = vec_mergel(vui, vui);
1971 // CHECK: @llvm.ppc.altivec.vperm
1972 // CHECK-LE: @llvm.ppc.altivec.vperm
1973 
1974   res_vbi = vec_mergel(vbi, vbi);
1975 // CHECK: @llvm.ppc.altivec.vperm
1976 // CHECK-LE: @llvm.ppc.altivec.vperm
1977 
1978   res_vf  = vec_mergel(vf, vf);
1979 // CHECK: @llvm.ppc.altivec.vperm
1980 // CHECK-LE: @llvm.ppc.altivec.vperm
1981 
1982   res_vsc = vec_vmrglb(vsc, vsc);
1983 // CHECK: @llvm.ppc.altivec.vperm
1984 // CHECK-LE: @llvm.ppc.altivec.vperm
1985 
1986   res_vuc = vec_vmrglb(vuc, vuc);
1987 // CHECK: @llvm.ppc.altivec.vperm
1988 // CHECK-LE: @llvm.ppc.altivec.vperm
1989 
1990   res_vbc = vec_vmrglb(vbc, vbc);
1991 // CHECK: @llvm.ppc.altivec.vperm
1992 // CHECK-LE: @llvm.ppc.altivec.vperm
1993 
1994   res_vs  = vec_vmrglh(vs, vs);
1995 // CHECK: @llvm.ppc.altivec.vperm
1996 // CHECK-LE: @llvm.ppc.altivec.vperm
1997 
1998   res_vp  = vec_vmrglh(vp, vp);
1999 // CHECK: @llvm.ppc.altivec.vperm
2000 // CHECK-LE: @llvm.ppc.altivec.vperm
2001 
2002   res_vus = vec_vmrglh(vus, vus);
2003 // CHECK: @llvm.ppc.altivec.vperm
2004 // CHECK-LE: @llvm.ppc.altivec.vperm
2005 
2006   res_vbs = vec_vmrglh(vbs, vbs);
2007 // CHECK: @llvm.ppc.altivec.vperm
2008 // CHECK-LE: @llvm.ppc.altivec.vperm
2009 
2010   res_vi  = vec_vmrglw(vi, vi);
2011 // CHECK: @llvm.ppc.altivec.vperm
2012 // CHECK-LE: @llvm.ppc.altivec.vperm
2013 
2014   res_vui = vec_vmrglw(vui, vui);
2015 // CHECK: @llvm.ppc.altivec.vperm
2016 // CHECK-LE: @llvm.ppc.altivec.vperm
2017 
2018   res_vbi = vec_vmrglw(vbi, vbi);
2019 // CHECK: @llvm.ppc.altivec.vperm
2020 // CHECK-LE: @llvm.ppc.altivec.vperm
2021 
2022   res_vf  = vec_vmrglw(vf, vf);
2023 // CHECK: @llvm.ppc.altivec.vperm
2024 // CHECK-LE: @llvm.ppc.altivec.vperm
2025 
2026   /* vec_mfvscr */
2027   vus = vec_mfvscr();
2028 // CHECK: @llvm.ppc.altivec.mfvscr
2029 // CHECK-LE: @llvm.ppc.altivec.mfvscr
2030 
2031   /* vec_min */
2032   res_vsc = vec_min(vsc, vsc);
2033 // CHECK: @llvm.ppc.altivec.vminsb
2034 // CHECK-LE: @llvm.ppc.altivec.vminsb
2035 
2036   res_vsc = vec_min(vbc, vsc);
2037 // CHECK: @llvm.ppc.altivec.vminsb
2038 // CHECK-LE: @llvm.ppc.altivec.vminsb
2039 
2040   res_vsc = vec_min(vsc, vbc);
2041 // CHECK: @llvm.ppc.altivec.vminsb
2042 // CHECK-LE: @llvm.ppc.altivec.vminsb
2043 
2044   res_vuc = vec_min(vuc, vuc);
2045 // CHECK: @llvm.ppc.altivec.vminub
2046 // CHECK-LE: @llvm.ppc.altivec.vminub
2047 
2048   res_vuc = vec_min(vbc, vuc);
2049 // CHECK: @llvm.ppc.altivec.vminub
2050 // CHECK-LE: @llvm.ppc.altivec.vminub
2051 
2052   res_vuc = vec_min(vuc, vbc);
2053 // CHECK: @llvm.ppc.altivec.vminub
2054 // CHECK-LE: @llvm.ppc.altivec.vminub
2055 
2056   res_vs  = vec_min(vs, vs);
2057 // CHECK: @llvm.ppc.altivec.vminsh
2058 // CHECK-LE: @llvm.ppc.altivec.vminsh
2059 
2060   res_vs  = vec_min(vbs, vs);
2061 // CHECK: @llvm.ppc.altivec.vminsh
2062 // CHECK-LE: @llvm.ppc.altivec.vminsh
2063 
2064   res_vs  = vec_min(vs, vbs);
2065 // CHECK: @llvm.ppc.altivec.vminsh
2066 // CHECK-LE: @llvm.ppc.altivec.vminsh
2067 
2068   res_vus = vec_min(vus, vus);
2069 // CHECK: @llvm.ppc.altivec.vminuh
2070 // CHECK-LE: @llvm.ppc.altivec.vminuh
2071 
2072   res_vus = vec_min(vbs, vus);
2073 // CHECK: @llvm.ppc.altivec.vminuh
2074 // CHECK-LE: @llvm.ppc.altivec.vminuh
2075 
2076   res_vus = vec_min(vus, vbs);
2077 // CHECK: @llvm.ppc.altivec.vminuh
2078 // CHECK-LE: @llvm.ppc.altivec.vminuh
2079 
2080   res_vi  = vec_min(vi, vi);
2081 // CHECK: @llvm.ppc.altivec.vminsw
2082 // CHECK-LE: @llvm.ppc.altivec.vminsw
2083 
2084   res_vi  = vec_min(vbi, vi);
2085 // CHECK: @llvm.ppc.altivec.vminsw
2086 // CHECK-LE: @llvm.ppc.altivec.vminsw
2087 
2088   res_vi  = vec_min(vi, vbi);
2089 // CHECK: @llvm.ppc.altivec.vminsw
2090 // CHECK-LE: @llvm.ppc.altivec.vminsw
2091 
2092   res_vui = vec_min(vui, vui);
2093 // CHECK: @llvm.ppc.altivec.vminuw
2094 // CHECK-LE: @llvm.ppc.altivec.vminuw
2095 
2096   res_vui = vec_min(vbi, vui);
2097 // CHECK: @llvm.ppc.altivec.vminuw
2098 // CHECK-LE: @llvm.ppc.altivec.vminuw
2099 
2100   res_vui = vec_min(vui, vbi);
2101 // CHECK: @llvm.ppc.altivec.vminuw
2102 // CHECK-LE: @llvm.ppc.altivec.vminuw
2103 
2104   res_vf  = vec_min(vf, vf);
2105 // CHECK: @llvm.ppc.altivec.vminfp
2106 // CHECK-LE: @llvm.ppc.altivec.vminfp
2107 
2108   res_vsc = vec_vminsb(vsc, vsc);
2109 // CHECK: @llvm.ppc.altivec.vminsb
2110 // CHECK-LE: @llvm.ppc.altivec.vminsb
2111 
2112   res_vsc = vec_vminsb(vbc, vsc);
2113 // CHECK: @llvm.ppc.altivec.vminsb
2114 // CHECK-LE: @llvm.ppc.altivec.vminsb
2115 
2116   res_vsc = vec_vminsb(vsc, vbc);
2117 // CHECK: @llvm.ppc.altivec.vminsb
2118 // CHECK-LE: @llvm.ppc.altivec.vminsb
2119 
2120   res_vuc = vec_vminub(vuc, vuc);
2121 // CHECK: @llvm.ppc.altivec.vminub
2122 // CHECK-LE: @llvm.ppc.altivec.vminub
2123 
2124   res_vuc = vec_vminub(vbc, vuc);
2125 // CHECK: @llvm.ppc.altivec.vminub
2126 // CHECK-LE: @llvm.ppc.altivec.vminub
2127 
2128   res_vuc = vec_vminub(vuc, vbc);
2129 // CHECK: @llvm.ppc.altivec.vminub
2130 // CHECK-LE: @llvm.ppc.altivec.vminub
2131 
2132   res_vs  = vec_vminsh(vs, vs);
2133 // CHECK: @llvm.ppc.altivec.vminsh
2134 // CHECK-LE: @llvm.ppc.altivec.vminsh
2135 
2136   res_vs  = vec_vminsh(vbs, vs);
2137 // CHECK: @llvm.ppc.altivec.vminsh
2138 // CHECK-LE: @llvm.ppc.altivec.vminsh
2139 
2140   res_vs  = vec_vminsh(vs, vbs);
2141 // CHECK: @llvm.ppc.altivec.vminsh
2142 // CHECK-LE: @llvm.ppc.altivec.vminsh
2143 
2144   res_vus = vec_vminuh(vus, vus);
2145 // CHECK: @llvm.ppc.altivec.vminuh
2146 // CHECK-LE: @llvm.ppc.altivec.vminuh
2147 
2148   res_vus = vec_vminuh(vbs, vus);
2149 // CHECK: @llvm.ppc.altivec.vminuh
2150 // CHECK-LE: @llvm.ppc.altivec.vminuh
2151 
2152   res_vus = vec_vminuh(vus, vbs);
2153 // CHECK: @llvm.ppc.altivec.vminuh
2154 // CHECK-LE: @llvm.ppc.altivec.vminuh
2155 
2156   res_vi  = vec_vminsw(vi, vi);
2157 // CHECK: @llvm.ppc.altivec.vminsw
2158 // CHECK-LE: @llvm.ppc.altivec.vminsw
2159 
2160   res_vi  = vec_vminsw(vbi, vi);
2161 // CHECK: @llvm.ppc.altivec.vminsw
2162 // CHECK-LE: @llvm.ppc.altivec.vminsw
2163 
2164   res_vi  = vec_vminsw(vi, vbi);
2165 // CHECK: @llvm.ppc.altivec.vminsw
2166 // CHECK-LE: @llvm.ppc.altivec.vminsw
2167 
2168   res_vui = vec_vminuw(vui, vui);
2169 // CHECK: @llvm.ppc.altivec.vminuw
2170 // CHECK-LE: @llvm.ppc.altivec.vminuw
2171 
2172   res_vui = vec_vminuw(vbi, vui);
2173 // CHECK: @llvm.ppc.altivec.vminuw
2174 // CHECK-LE: @llvm.ppc.altivec.vminuw
2175 
2176   res_vui = vec_vminuw(vui, vbi);
2177 // CHECK: @llvm.ppc.altivec.vminuw
2178 // CHECK-LE: @llvm.ppc.altivec.vminuw
2179 
2180   res_vf  = vec_vminfp(vf, vf);
2181 // CHECK: @llvm.ppc.altivec.vminfp
2182 // CHECK-LE: @llvm.ppc.altivec.vminfp
2183 
2184   /* vec_mladd */
2185   res_vus = vec_mladd(vus, vus, vus);
2186 // CHECK: mul <8 x i16>
2187 // CHECK: add <8 x i16>
2188 // CHECK-LE: mul <8 x i16>
2189 // CHECK-LE: add <8 x i16>
2190 
2191   res_vs = vec_mladd(vus, vs, vs);
2192 // CHECK: mul <8 x i16>
2193 // CHECK: add <8 x i16>
2194 // CHECK-LE: mul <8 x i16>
2195 // CHECK-LE: add <8 x i16>
2196 
2197   res_vs = vec_mladd(vs, vus, vus);
2198 // CHECK: mul <8 x i16>
2199 // CHECK: add <8 x i16>
2200 // CHECK-LE: mul <8 x i16>
2201 // CHECK-LE: add <8 x i16>
2202 
2203   res_vs = vec_mladd(vs, vs, vs);
2204 // CHECK: mul <8 x i16>
2205 // CHECK: add <8 x i16>
2206 // CHECK-LE: mul <8 x i16>
2207 // CHECK-LE: add <8 x i16>
2208 
2209   /* vec_mradds */
2210   res_vs = vec_mradds(vs, vs, vs);
2211 // CHECK: @llvm.ppc.altivec.vmhraddshs
2212 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2213 
2214   res_vs = vec_vmhraddshs(vs, vs, vs);
2215 // CHECK: @llvm.ppc.altivec.vmhraddshs
2216 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2217 
2218   /* vec_msum */
2219   res_vi  = vec_msum(vsc, vuc, vi);
2220 // CHECK: @llvm.ppc.altivec.vmsummbm
2221 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2222 
2223   res_vui = vec_msum(vuc, vuc, vui);
2224 // CHECK: @llvm.ppc.altivec.vmsumubm
2225 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2226 
2227   res_vi  = vec_msum(vs, vs, vi);
2228 // CHECK: @llvm.ppc.altivec.vmsumshm
2229 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2230 
2231   res_vui = vec_msum(vus, vus, vui);
2232 // CHECK: @llvm.ppc.altivec.vmsumuhm
2233 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2234 
2235   res_vi  = vec_vmsummbm(vsc, vuc, vi);
2236 // CHECK: @llvm.ppc.altivec.vmsummbm
2237 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2238 
2239   res_vui = vec_vmsumubm(vuc, vuc, vui);
2240 // CHECK: @llvm.ppc.altivec.vmsumubm
2241 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2242 
2243   res_vi  = vec_vmsumshm(vs, vs, vi);
2244 // CHECK: @llvm.ppc.altivec.vmsumshm
2245 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2246 
2247   res_vui = vec_vmsumuhm(vus, vus, vui);
2248 // CHECK: @llvm.ppc.altivec.vmsumuhm
2249 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2250 
2251   /* vec_msums */
2252   res_vi  = vec_msums(vs, vs, vi);
2253 // CHECK: @llvm.ppc.altivec.vmsumshs
2254 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2255 
2256   res_vui = vec_msums(vus, vus, vui);
2257 // CHECK: @llvm.ppc.altivec.vmsumuhs
2258 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2259 
2260   res_vi  = vec_vmsumshs(vs, vs, vi);
2261 // CHECK: @llvm.ppc.altivec.vmsumshs
2262 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2263 
2264   res_vui = vec_vmsumuhs(vus, vus, vui);
2265 // CHECK: @llvm.ppc.altivec.vmsumuhs
2266 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2267 
2268   /* vec_mtvscr */
2269   vec_mtvscr(vsc);
2270 // CHECK: @llvm.ppc.altivec.mtvscr
2271 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2272 
2273   vec_mtvscr(vuc);
2274 // CHECK: @llvm.ppc.altivec.mtvscr
2275 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2276 
2277   vec_mtvscr(vbc);
2278 // CHECK: @llvm.ppc.altivec.mtvscr
2279 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2280 
2281   vec_mtvscr(vs);
2282 // CHECK: @llvm.ppc.altivec.mtvscr
2283 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2284 
2285   vec_mtvscr(vus);
2286 // CHECK: @llvm.ppc.altivec.mtvscr
2287 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2288 
2289   vec_mtvscr(vbs);
2290 // CHECK: @llvm.ppc.altivec.mtvscr
2291 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2292 
2293   vec_mtvscr(vp);
2294 // CHECK: @llvm.ppc.altivec.mtvscr
2295 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2296 
2297   vec_mtvscr(vi);
2298 // CHECK: @llvm.ppc.altivec.mtvscr
2299 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2300 
2301   vec_mtvscr(vui);
2302 // CHECK: @llvm.ppc.altivec.mtvscr
2303 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2304 
2305   vec_mtvscr(vbi);
2306 // CHECK: @llvm.ppc.altivec.mtvscr
2307 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2308 
2309   /* vec_mul */
2310   res_vsc = vec_mul(vsc, vsc);
2311 // CHECK: mul <16 x i8>
2312 // CHECK-LE: mul <16 x i8>
2313 
2314   res_vuc = vec_mul(vuc, vuc);
2315 // CHECK: mul <16 x i8>
2316 // CHECK-LE: mul <16 x i8>
2317 
2318   res_vs = vec_mul(vs, vs);
2319 // CHECK: mul <8 x i16>
2320 // CHECK-LE: mul <8 x i16>
2321 
2322   res_vus = vec_mul(vus, vus);
2323 // CHECK: mul <8 x i16>
2324 // CHECK-LE: mul <8 x i16>
2325 
2326   res_vi = vec_mul(vi, vi);
2327 // CHECK: mul <4 x i32>
2328 // CHECK-LE: mul <4 x i32>
2329 
2330   res_vui = vec_mul(vui, vui);
2331 // CHECK: mul <4 x i32>
2332 // CHECK-LE: mul <4 x i32>
2333 
2334   /* vec_mule */
2335   res_vs  = vec_mule(vsc, vsc);
2336 // CHECK: @llvm.ppc.altivec.vmulesb
2337 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2338 
2339   res_vus = vec_mule(vuc, vuc);
2340 // CHECK: @llvm.ppc.altivec.vmuleub
2341 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2342 
2343   res_vi  = vec_mule(vs, vs);
2344 // CHECK: @llvm.ppc.altivec.vmulesh
2345 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2346 
2347   res_vui = vec_mule(vus, vus);
2348 // CHECK: @llvm.ppc.altivec.vmuleuh
2349 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2350 
2351   res_vs  = vec_vmulesb(vsc, vsc);
2352 // CHECK: @llvm.ppc.altivec.vmulesb
2353 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2354 
2355   res_vus = vec_vmuleub(vuc, vuc);
2356 // CHECK: @llvm.ppc.altivec.vmuleub
2357 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2358 
2359   res_vi  = vec_vmulesh(vs, vs);
2360 // CHECK: @llvm.ppc.altivec.vmulesh
2361 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2362 
2363   res_vui = vec_vmuleuh(vus, vus);
2364 // CHECK: @llvm.ppc.altivec.vmuleuh
2365 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2366 
2367   /* vec_mulo */
2368   res_vs  = vec_mulo(vsc, vsc);
2369 // CHECK: @llvm.ppc.altivec.vmulosb
2370 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2371 
2372   res_vus = vec_mulo(vuc, vuc);
2373 // CHECK: @llvm.ppc.altivec.vmuloub
2374 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2375 
2376   res_vi  = vec_mulo(vs, vs);
2377 // CHECK: @llvm.ppc.altivec.vmulosh
2378 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2379 
2380   res_vui = vec_mulo(vus, vus);
2381 // CHECK: @llvm.ppc.altivec.vmulouh
2382 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2383 
2384   res_vs  = vec_vmulosb(vsc, vsc);
2385 // CHECK: @llvm.ppc.altivec.vmulosb
2386 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2387 
2388   res_vus = vec_vmuloub(vuc, vuc);
2389 // CHECK: @llvm.ppc.altivec.vmuloub
2390 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2391 
2392   res_vi  = vec_vmulosh(vs, vs);
2393 // CHECK: @llvm.ppc.altivec.vmulosh
2394 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2395 
2396   res_vui = vec_vmulouh(vus, vus);
2397 // CHECK: @llvm.ppc.altivec.vmulouh
2398 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2399 
2400   /* vec_nmsub */
2401   res_vf = vec_nmsub(vf, vf, vf);
2402 // CHECK: @llvm.ppc.altivec.vnmsubfp
2403 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2404 
2405   res_vf = vec_vnmsubfp(vf, vf, vf);
2406 // CHECK: @llvm.ppc.altivec.vnmsubfp
2407 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2408 
2409   /* vec_nor */
2410   res_vsc = vec_nor(vsc, vsc);
2411 // CHECK: or <16 x i8>
2412 // CHECK: xor <16 x i8>
2413 // CHECK-LE: or <16 x i8>
2414 // CHECK-LE: xor <16 x i8>
2415 
2416   res_vuc = vec_nor(vuc, vuc);
2417 // CHECK: or <16 x i8>
2418 // CHECK: xor <16 x i8>
2419 // CHECK-LE: or <16 x i8>
2420 // CHECK-LE: xor <16 x i8>
2421 
2422   res_vbc = vec_nor(vbc, vbc);
2423 // CHECK: or <16 x i8>
2424 // CHECK: xor <16 x i8>
2425 // CHECK-LE: or <16 x i8>
2426 // CHECK-LE: xor <16 x i8>
2427 
2428   res_vs  = vec_nor(vs, vs);
2429 // CHECK: or <8 x i16>
2430 // CHECK: xor <8 x i16>
2431 // CHECK-LE: or <8 x i16>
2432 // CHECK-LE: xor <8 x i16>
2433 
2434   res_vus = vec_nor(vus, vus);
2435 // CHECK: or <8 x i16>
2436 // CHECK: xor <8 x i16>
2437 // CHECK-LE: or <8 x i16>
2438 // CHECK-LE: xor <8 x i16>
2439 
2440   res_vbs = vec_nor(vbs, vbs);
2441 // CHECK: or <8 x i16>
2442 // CHECK: xor <8 x i16>
2443 // CHECK-LE: or <8 x i16>
2444 // CHECK-LE: xor <8 x i16>
2445 
2446   res_vi  = vec_nor(vi, vi);
2447 // CHECK: or <4 x i32>
2448 // CHECK: xor <4 x i32>
2449 // CHECK-LE: or <4 x i32>
2450 // CHECK-LE: xor <4 x i32>
2451 
2452   res_vui = vec_nor(vui, vui);
2453 // CHECK: or <4 x i32>
2454 // CHECK: xor <4 x i32>
2455 // CHECK-LE: or <4 x i32>
2456 // CHECK-LE: xor <4 x i32>
2457 
2458   res_vbi = vec_nor(vbi, vbi);
2459 // CHECK: or <4 x i32>
2460 // CHECK: xor <4 x i32>
2461 // CHECK-LE: or <4 x i32>
2462 // CHECK-LE: xor <4 x i32>
2463 
2464   res_vf  = vec_nor(vf, vf);
2465 // CHECK: or <4 x i32>
2466 // CHECK: xor <4 x i32>
2467 // CHECK-LE: or <4 x i32>
2468 // CHECK-LE: xor <4 x i32>
2469 
2470   res_vsc = vec_vnor(vsc, vsc);
2471 // CHECK: or <16 x i8>
2472 // CHECK: xor <16 x i8>
2473 // CHECK-LE: or <16 x i8>
2474 // CHECK-LE: xor <16 x i8>
2475 
2476   res_vuc = vec_vnor(vuc, vuc);
2477 // CHECK: or <16 x i8>
2478 // CHECK: xor <16 x i8>
2479 // CHECK-LE: or <16 x i8>
2480 // CHECK-LE: xor <16 x i8>
2481 
2482   res_vbc = vec_vnor(vbc, vbc);
2483 // CHECK: or <16 x i8>
2484 // CHECK: xor <16 x i8>
2485 // CHECK-LE: or <16 x i8>
2486 // CHECK-LE: xor <16 x i8>
2487 
2488   res_vs  = vec_vnor(vs, vs);
2489 // CHECK: or <8 x i16>
2490 // CHECK: xor <8 x i16>
2491 // CHECK-LE: or <8 x i16>
2492 // CHECK-LE: xor <8 x i16>
2493 
2494   res_vus = vec_vnor(vus, vus);
2495 // CHECK: or <8 x i16>
2496 // CHECK: xor <8 x i16>
2497 // CHECK-LE: or <8 x i16>
2498 // CHECK-LE: xor <8 x i16>
2499 
2500   res_vbs = vec_vnor(vbs, vbs);
2501 // CHECK: or <8 x i16>
2502 // CHECK: xor <8 x i16>
2503 // CHECK-LE: or <8 x i16>
2504 // CHECK-LE: xor <8 x i16>
2505 
2506   res_vi  = vec_vnor(vi, vi);
2507 // CHECK: or <4 x i32>
2508 // CHECK: xor <4 x i32>
2509 // CHECK-LE: or <4 x i32>
2510 // CHECK-LE: xor <4 x i32>
2511 
2512   res_vui = vec_vnor(vui, vui);
2513 // CHECK: or <4 x i32>
2514 // CHECK: xor <4 x i32>
2515 // CHECK-LE: or <4 x i32>
2516 // CHECK-LE: xor <4 x i32>
2517 
2518   res_vbi = vec_vnor(vbi, vbi);
2519 // CHECK: or <4 x i32>
2520 // CHECK: xor <4 x i32>
2521 // CHECK-LE: or <4 x i32>
2522 // CHECK-LE: xor <4 x i32>
2523 
2524   res_vf  = vec_vnor(vf, vf);
2525 // CHECK: or <4 x i32>
2526 // CHECK: xor <4 x i32>
2527 // CHECK-LE: or <4 x i32>
2528 // CHECK-LE: xor <4 x i32>
2529 
2530   /* vec_or */
2531   res_vsc = vec_or(vsc, vsc);
2532 // CHECK: or <16 x i8>
2533 // CHECK-LE: or <16 x i8>
2534 
2535   res_vsc = vec_or(vbc, vsc);
2536 // CHECK: or <16 x i8>
2537 // CHECK-LE: or <16 x i8>
2538 
2539   res_vsc = vec_or(vsc, vbc);
2540 // CHECK: or <16 x i8>
2541 // CHECK-LE: or <16 x i8>
2542 
2543   res_vuc = vec_or(vuc, vuc);
2544 // CHECK: or <16 x i8>
2545 // CHECK-LE: or <16 x i8>
2546 
2547   res_vuc = vec_or(vbc, vuc);
2548 // CHECK: or <16 x i8>
2549 // CHECK-LE: or <16 x i8>
2550 
2551   res_vuc = vec_or(vuc, vbc);
2552 // CHECK: or <16 x i8>
2553 // CHECK-LE: or <16 x i8>
2554 
2555   res_vbc = vec_or(vbc, vbc);
2556 // CHECK: or <16 x i8>
2557 // CHECK-LE: or <16 x i8>
2558 
2559   res_vs  = vec_or(vs, vs);
2560 // CHECK: or <8 x i16>
2561 // CHECK-LE: or <8 x i16>
2562 
2563   res_vs  = vec_or(vbs, vs);
2564 // CHECK: or <8 x i16>
2565 // CHECK-LE: or <8 x i16>
2566 
2567   res_vs  = vec_or(vs, vbs);
2568 // CHECK: or <8 x i16>
2569 // CHECK-LE: or <8 x i16>
2570 
2571   res_vus = vec_or(vus, vus);
2572 // CHECK: or <8 x i16>
2573 // CHECK-LE: or <8 x i16>
2574 
2575   res_vus = vec_or(vbs, vus);
2576 // CHECK: or <8 x i16>
2577 // CHECK-LE: or <8 x i16>
2578 
2579   res_vus = vec_or(vus, vbs);
2580 // CHECK: or <8 x i16>
2581 // CHECK-LE: or <8 x i16>
2582 
2583   res_vbs = vec_or(vbs, vbs);
2584 // CHECK: or <8 x i16>
2585 // CHECK-LE: or <8 x i16>
2586 
2587   res_vi  = vec_or(vi, vi);
2588 // CHECK: or <4 x i32>
2589 // CHECK-LE: or <4 x i32>
2590 
2591   res_vi  = vec_or(vbi, vi);
2592 // CHECK: or <4 x i32>
2593 // CHECK-LE: or <4 x i32>
2594 
2595   res_vi  = vec_or(vi, vbi);
2596 // CHECK: or <4 x i32>
2597 // CHECK-LE: or <4 x i32>
2598 
2599   res_vui = vec_or(vui, vui);
2600 // CHECK: or <4 x i32>
2601 // CHECK-LE: or <4 x i32>
2602 
2603   res_vui = vec_or(vbi, vui);
2604 // CHECK: or <4 x i32>
2605 // CHECK-LE: or <4 x i32>
2606 
2607   res_vui = vec_or(vui, vbi);
2608 // CHECK: or <4 x i32>
2609 // CHECK-LE: or <4 x i32>
2610 
2611   res_vbi = vec_or(vbi, vbi);
2612 // CHECK: or <4 x i32>
2613 // CHECK-LE: or <4 x i32>
2614 
2615   res_vf  = vec_or(vf, vf);
2616 // CHECK: or <4 x i32>
2617 // CHECK-LE: or <4 x i32>
2618 
2619   res_vf  = vec_or(vbi, vf);
2620 // CHECK: or <4 x i32>
2621 // CHECK-LE: or <4 x i32>
2622 
2623   res_vf  = vec_or(vf, vbi);
2624 // CHECK: or <4 x i32>
2625 // CHECK-LE: or <4 x i32>
2626 
2627   res_vsc = vec_vor(vsc, vsc);
2628 // CHECK: or <16 x i8>
2629 // CHECK-LE: or <16 x i8>
2630 
2631   res_vsc = vec_vor(vbc, vsc);
2632 // CHECK: or <16 x i8>
2633 // CHECK-LE: or <16 x i8>
2634 
2635   res_vsc = vec_vor(vsc, vbc);
2636 // CHECK: or <16 x i8>
2637 // CHECK-LE: or <16 x i8>
2638 
2639   res_vuc = vec_vor(vuc, vuc);
2640 // CHECK: or <16 x i8>
2641 // CHECK-LE: or <16 x i8>
2642 
2643   res_vuc = vec_vor(vbc, vuc);
2644 // CHECK: or <16 x i8>
2645 // CHECK-LE: or <16 x i8>
2646 
2647   res_vuc = vec_vor(vuc, vbc);
2648 // CHECK: or <16 x i8>
2649 // CHECK-LE: or <16 x i8>
2650 
2651   res_vbc = vec_vor(vbc, vbc);
2652 // CHECK: or <16 x i8>
2653 // CHECK-LE: or <16 x i8>
2654 
2655   res_vs  = vec_vor(vs, vs);
2656 // CHECK: or <8 x i16>
2657 // CHECK-LE: or <8 x i16>
2658 
2659   res_vs  = vec_vor(vbs, vs);
2660 // CHECK: or <8 x i16>
2661 // CHECK-LE: or <8 x i16>
2662 
2663   res_vs  = vec_vor(vs, vbs);
2664 // CHECK: or <8 x i16>
2665 // CHECK-LE: or <8 x i16>
2666 
2667   res_vus = vec_vor(vus, vus);
2668 // CHECK: or <8 x i16>
2669 // CHECK-LE: or <8 x i16>
2670 
2671   res_vus = vec_vor(vbs, vus);
2672 // CHECK: or <8 x i16>
2673 // CHECK-LE: or <8 x i16>
2674 
2675   res_vus = vec_vor(vus, vbs);
2676 // CHECK: or <8 x i16>
2677 // CHECK-LE: or <8 x i16>
2678 
2679   res_vbs = vec_vor(vbs, vbs);
2680 // CHECK: or <8 x i16>
2681 // CHECK-LE: or <8 x i16>
2682 
2683   res_vi  = vec_vor(vi, vi);
2684 // CHECK: or <4 x i32>
2685 // CHECK-LE: or <4 x i32>
2686 
2687   res_vi  = vec_vor(vbi, vi);
2688 // CHECK: or <4 x i32>
2689 // CHECK-LE: or <4 x i32>
2690 
2691   res_vi  = vec_vor(vi, vbi);
2692 // CHECK: or <4 x i32>
2693 // CHECK-LE: or <4 x i32>
2694 
2695   res_vui = vec_vor(vui, vui);
2696 // CHECK: or <4 x i32>
2697 // CHECK-LE: or <4 x i32>
2698 
2699   res_vui = vec_vor(vbi, vui);
2700 // CHECK: or <4 x i32>
2701 // CHECK-LE: or <4 x i32>
2702 
2703   res_vui = vec_vor(vui, vbi);
2704 // CHECK: or <4 x i32>
2705 // CHECK-LE: or <4 x i32>
2706 
2707   res_vbi = vec_vor(vbi, vbi);
2708 // CHECK: or <4 x i32>
2709 // CHECK-LE: or <4 x i32>
2710 
2711   res_vf  = vec_vor(vf, vf);
2712 // CHECK: or <4 x i32>
2713 // CHECK-LE: or <4 x i32>
2714 
2715   res_vf  = vec_vor(vbi, vf);
2716 // CHECK: or <4 x i32>
2717 // CHECK-LE: or <4 x i32>
2718 
2719   res_vf  = vec_vor(vf, vbi);
2720 // CHECK: or <4 x i32>
2721 // CHECK-LE: or <4 x i32>
2722 
2723   /* vec_pack */
2724   res_vsc = vec_pack(vs, vs);
2725 // CHECK: @llvm.ppc.altivec.vperm
2726 // CHECK-LE: @llvm.ppc.altivec.vperm
2727 
2728   res_vuc = vec_pack(vus, vus);
2729 // CHECK: @llvm.ppc.altivec.vperm
2730 // CHECK-LE: @llvm.ppc.altivec.vperm
2731 
2732   res_vbc = vec_pack(vbs, vbs);
2733 // CHECK: @llvm.ppc.altivec.vperm
2734 // CHECK-LE: @llvm.ppc.altivec.vperm
2735 
2736   res_vs  = vec_pack(vi, vi);
2737 // CHECK: @llvm.ppc.altivec.vperm
2738 // CHECK-LE: @llvm.ppc.altivec.vperm
2739 
2740   res_vus = vec_pack(vui, vui);
2741 // CHECK: @llvm.ppc.altivec.vperm
2742 // CHECK-LE: @llvm.ppc.altivec.vperm
2743 
2744   res_vbs = vec_pack(vbi, vbi);
2745 // CHECK: @llvm.ppc.altivec.vperm
2746 // CHECK-LE: @llvm.ppc.altivec.vperm
2747 
2748   res_vsc = vec_vpkuhum(vs, vs);
2749 // CHECK: @llvm.ppc.altivec.vperm
2750 // CHECK-LE: @llvm.ppc.altivec.vperm
2751 
2752   res_vuc = vec_vpkuhum(vus, vus);
2753 // CHECK: @llvm.ppc.altivec.vperm
2754 // CHECK-LE: @llvm.ppc.altivec.vperm
2755 
2756   res_vbc = vec_vpkuhum(vbs, vbs);
2757 // CHECK: @llvm.ppc.altivec.vperm
2758 // CHECK-LE: @llvm.ppc.altivec.vperm
2759 
2760   res_vs  = vec_vpkuwum(vi, vi);
2761 // CHECK: @llvm.ppc.altivec.vperm
2762 // CHECK-LE: @llvm.ppc.altivec.vperm
2763 
2764   res_vus = vec_vpkuwum(vui, vui);
2765 // CHECK: @llvm.ppc.altivec.vperm
2766 // CHECK-LE: @llvm.ppc.altivec.vperm
2767 
2768   res_vbs = vec_vpkuwum(vbi, vbi);
2769 // CHECK: @llvm.ppc.altivec.vperm
2770 // CHECK-LE: @llvm.ppc.altivec.vperm
2771 
2772   /* vec_packpx */
2773   res_vp = vec_packpx(vui, vui);
2774 // CHECK: @llvm.ppc.altivec.vpkpx
2775 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2776 
2777   res_vp = vec_vpkpx(vui, vui);
2778 // CHECK: @llvm.ppc.altivec.vpkpx
2779 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2780 
2781   /* vec_packs */
2782   res_vsc = vec_packs(vs, vs);
2783 // CHECK: @llvm.ppc.altivec.vpkshss
2784 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2785 
2786   res_vuc = vec_packs(vus, vus);
2787 // CHECK: @llvm.ppc.altivec.vpkuhus
2788 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2789 
2790   res_vs  = vec_packs(vi, vi);
2791 // CHECK: @llvm.ppc.altivec.vpkswss
2792 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2793 
2794   res_vus = vec_packs(vui, vui);
2795 // CHECK: @llvm.ppc.altivec.vpkuwus
2796 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2797 
2798   res_vsc = vec_vpkshss(vs, vs);
2799 // CHECK: @llvm.ppc.altivec.vpkshss
2800 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2801 
2802   res_vuc = vec_vpkuhus(vus, vus);
2803 // CHECK: @llvm.ppc.altivec.vpkuhus
2804 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2805 
2806   res_vs  = vec_vpkswss(vi, vi);
2807 // CHECK: @llvm.ppc.altivec.vpkswss
2808 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2809 
2810   res_vus = vec_vpkuwus(vui, vui);
2811 // CHECK: @llvm.ppc.altivec.vpkuwus
2812 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2813 
2814   /* vec_packsu */
2815   res_vuc = vec_packsu(vs, vs);
2816 // CHECK: @llvm.ppc.altivec.vpkshus
2817 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2818 
2819   res_vuc = vec_packsu(vus, vus);
2820 // CHECK: @llvm.ppc.altivec.vpkuhus
2821 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2822 
2823   res_vus = vec_packsu(vi, vi);
2824 // CHECK: @llvm.ppc.altivec.vpkswus
2825 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2826 
2827   res_vus = vec_packsu(vui, vui);
2828 // CHECK: @llvm.ppc.altivec.vpkuwus
2829 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2830 
2831   res_vuc = vec_vpkshus(vs, vs);
2832 // CHECK: @llvm.ppc.altivec.vpkshus
2833 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2834 
2835   res_vuc = vec_vpkshus(vus, vus);
2836 // CHECK: @llvm.ppc.altivec.vpkuhus
2837 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2838 
2839   res_vus = vec_vpkswus(vi, vi);
2840 // CHECK: @llvm.ppc.altivec.vpkswus
2841 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2842 
2843   res_vus = vec_vpkswus(vui, vui);
2844 // CHECK: @llvm.ppc.altivec.vpkuwus
2845 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2846 
2847   /* vec_perm */
2848   res_vsc = vec_perm(vsc, vsc, vuc);
2849 // CHECK: @llvm.ppc.altivec.vperm
2850 // CHECK-LE: @llvm.ppc.altivec.vperm
2851 
2852   res_vuc = vec_perm(vuc, vuc, vuc);
2853 // CHECK: @llvm.ppc.altivec.vperm
2854 // CHECK-LE: @llvm.ppc.altivec.vperm
2855 
2856   res_vbc = vec_perm(vbc, vbc, vuc);
2857 // CHECK: @llvm.ppc.altivec.vperm
2858 // CHECK-LE: @llvm.ppc.altivec.vperm
2859 
2860   res_vs  = vec_perm(vs, vs, vuc);
2861 // CHECK: @llvm.ppc.altivec.vperm
2862 // CHECK-LE: @llvm.ppc.altivec.vperm
2863 
2864   res_vus = vec_perm(vus, vus, vuc);
2865 // CHECK: @llvm.ppc.altivec.vperm
2866 // CHECK-LE: @llvm.ppc.altivec.vperm
2867 
2868   res_vbs = vec_perm(vbs, vbs, vuc);
2869 // CHECK: @llvm.ppc.altivec.vperm
2870 // CHECK-LE: @llvm.ppc.altivec.vperm
2871 
2872   res_vp  = vec_perm(vp, vp, vuc);
2873 // CHECK: @llvm.ppc.altivec.vperm
2874 // CHECK-LE: @llvm.ppc.altivec.vperm
2875 
2876   res_vi  = vec_perm(vi, vi, vuc);
2877 // CHECK: @llvm.ppc.altivec.vperm
2878 // CHECK-LE: @llvm.ppc.altivec.vperm
2879 
2880   res_vui = vec_perm(vui, vui, vuc);
2881 // CHECK: @llvm.ppc.altivec.vperm
2882 // CHECK-LE: @llvm.ppc.altivec.vperm
2883 
2884   res_vbi = vec_perm(vbi, vbi, vuc);
2885 // CHECK: @llvm.ppc.altivec.vperm
2886 // CHECK-LE: @llvm.ppc.altivec.vperm
2887 
2888   res_vf  = vec_perm(vf, vf, vuc);
2889 // CHECK: @llvm.ppc.altivec.vperm
2890 // CHECK-LE: @llvm.ppc.altivec.vperm
2891 
2892   res_vsc = vec_vperm(vsc, vsc, vuc);
2893 // CHECK: @llvm.ppc.altivec.vperm
2894 // CHECK-LE: @llvm.ppc.altivec.vperm
2895 
2896   res_vuc = vec_vperm(vuc, vuc, vuc);
2897 // CHECK: @llvm.ppc.altivec.vperm
2898 // CHECK-LE: @llvm.ppc.altivec.vperm
2899 
2900   res_vbc = vec_vperm(vbc, vbc, vuc);
2901 // CHECK: @llvm.ppc.altivec.vperm
2902 // CHECK-LE: @llvm.ppc.altivec.vperm
2903 
2904   res_vs  = vec_vperm(vs, vs, vuc);
2905 // CHECK: @llvm.ppc.altivec.vperm
2906 // CHECK-LE: @llvm.ppc.altivec.vperm
2907 
2908   res_vus = vec_vperm(vus, vus, vuc);
2909 // CHECK: @llvm.ppc.altivec.vperm
2910 // CHECK-LE: @llvm.ppc.altivec.vperm
2911 
2912   res_vbs = vec_vperm(vbs, vbs, vuc);
2913 // CHECK: @llvm.ppc.altivec.vperm
2914 // CHECK-LE: @llvm.ppc.altivec.vperm
2915 
2916   res_vp  = vec_vperm(vp, vp, vuc);
2917 // CHECK: @llvm.ppc.altivec.vperm
2918 // CHECK-LE: @llvm.ppc.altivec.vperm
2919 
2920   res_vi  = vec_vperm(vi, vi, vuc);
2921 // CHECK: @llvm.ppc.altivec.vperm
2922 // CHECK-LE: @llvm.ppc.altivec.vperm
2923 
2924   res_vui = vec_vperm(vui, vui, vuc);
2925 // CHECK: @llvm.ppc.altivec.vperm
2926 // CHECK-LE: @llvm.ppc.altivec.vperm
2927 
2928   res_vbi = vec_vperm(vbi, vbi, vuc);
2929 // CHECK: @llvm.ppc.altivec.vperm
2930 // CHECK-LE: @llvm.ppc.altivec.vperm
2931 
2932   res_vf  = vec_vperm(vf, vf, vuc);
2933 // CHECK: @llvm.ppc.altivec.vperm
2934 // CHECK-LE: @llvm.ppc.altivec.vperm
2935 
2936   /* vec_re */
2937   res_vf = vec_re(vf);
2938 // CHECK: @llvm.ppc.altivec.vrefp
2939 // CHECK-LE: @llvm.ppc.altivec.vrefp
2940 
2941   res_vf = vec_vrefp(vf);
2942 // CHECK: @llvm.ppc.altivec.vrefp
2943 // CHECK-LE: @llvm.ppc.altivec.vrefp
2944 
2945   /* vec_rl */
2946   res_vsc = vec_rl(vsc, vuc);
2947 // CHECK: @llvm.ppc.altivec.vrlb
2948 // CHECK-LE: @llvm.ppc.altivec.vrlb
2949 
2950   res_vuc = vec_rl(vuc, vuc);
2951 // CHECK: @llvm.ppc.altivec.vrlb
2952 // CHECK-LE: @llvm.ppc.altivec.vrlb
2953 
2954   res_vs  = vec_rl(vs, vus);
2955 // CHECK: @llvm.ppc.altivec.vrlh
2956 // CHECK-LE: @llvm.ppc.altivec.vrlh
2957 
2958   res_vus = vec_rl(vus, vus);
2959 // CHECK: @llvm.ppc.altivec.vrlh
2960 // CHECK-LE: @llvm.ppc.altivec.vrlh
2961 
2962   res_vi  = vec_rl(vi, vui);
2963 // CHECK: @llvm.ppc.altivec.vrlw
2964 // CHECK-LE: @llvm.ppc.altivec.vrlw
2965 
2966   res_vui = vec_rl(vui, vui);
2967 // CHECK: @llvm.ppc.altivec.vrlw
2968 // CHECK-LE: @llvm.ppc.altivec.vrlw
2969 
2970   res_vsc = vec_vrlb(vsc, vuc);
2971 // CHECK: @llvm.ppc.altivec.vrlb
2972 // CHECK-LE: @llvm.ppc.altivec.vrlb
2973 
2974   res_vuc = vec_vrlb(vuc, vuc);
2975 // CHECK: @llvm.ppc.altivec.vrlb
2976 // CHECK-LE: @llvm.ppc.altivec.vrlb
2977 
2978   res_vs  = vec_vrlh(vs, vus);
2979 // CHECK: @llvm.ppc.altivec.vrlh
2980 // CHECK-LE: @llvm.ppc.altivec.vrlh
2981 
2982   res_vus = vec_vrlh(vus, vus);
2983 // CHECK: @llvm.ppc.altivec.vrlh
2984 // CHECK-LE: @llvm.ppc.altivec.vrlh
2985 
2986   res_vi  = vec_vrlw(vi, vui);
2987 // CHECK: @llvm.ppc.altivec.vrlw
2988 // CHECK-LE: @llvm.ppc.altivec.vrlw
2989 
2990   res_vui = vec_vrlw(vui, vui);
2991 // CHECK: @llvm.ppc.altivec.vrlw
2992 // CHECK-LE: @llvm.ppc.altivec.vrlw
2993 
2994   /* vec_round */
2995   res_vf = vec_round(vf);
2996 // CHECK: @llvm.ppc.altivec.vrfin
2997 // CHECK-LE: @llvm.ppc.altivec.vrfin
2998 
2999   res_vf = vec_vrfin(vf);
3000 // CHECK: @llvm.ppc.altivec.vrfin
3001 // CHECK-LE: @llvm.ppc.altivec.vrfin
3002 
3003   /* vec_rsqrte */
3004   res_vf = vec_rsqrte(vf);
3005 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3006 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3007 
3008   res_vf = vec_vrsqrtefp(vf);
3009 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3010 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3011 
3012   /* vec_sel */
3013   res_vsc = vec_sel(vsc, vsc, vuc);
3014 // CHECK: xor <16 x i8>
3015 // CHECK: and <16 x i8>
3016 // CHECK: and <16 x i8>
3017 // CHECK: or <16 x i8>
3018 // CHECK-LE: xor <16 x i8>
3019 // CHECK-LE: and <16 x i8>
3020 // CHECK-LE: and <16 x i8>
3021 // CHECK-LE: or <16 x i8>
3022 
3023   res_vsc = vec_sel(vsc, vsc, vbc);
3024 // CHECK: xor <16 x i8>
3025 // CHECK: and <16 x i8>
3026 // CHECK: and <16 x i8>
3027 // CHECK: or <16 x i8>
3028 // CHECK-LE: xor <16 x i8>
3029 // CHECK-LE: and <16 x i8>
3030 // CHECK-LE: and <16 x i8>
3031 // CHECK-LE: or <16 x i8>
3032 
3033   res_vuc = vec_sel(vuc, vuc, vuc);
3034 // CHECK: xor <16 x i8>
3035 // CHECK: and <16 x i8>
3036 // CHECK: and <16 x i8>
3037 // CHECK: or <16 x i8>
3038 // CHECK-LE: xor <16 x i8>
3039 // CHECK-LE: and <16 x i8>
3040 // CHECK-LE: and <16 x i8>
3041 // CHECK-LE: or <16 x i8>
3042 
3043   res_vuc = vec_sel(vuc, vuc, vbc);
3044 // CHECK: xor <16 x i8>
3045 // CHECK: and <16 x i8>
3046 // CHECK: and <16 x i8>
3047 // CHECK: or <16 x i8>
3048 // CHECK-LE: xor <16 x i8>
3049 // CHECK-LE: and <16 x i8>
3050 // CHECK-LE: and <16 x i8>
3051 // CHECK-LE: or <16 x i8>
3052 
3053   res_vbc = vec_sel(vbc, vbc, vuc);
3054 // CHECK: xor <16 x i8>
3055 // CHECK: and <16 x i8>
3056 // CHECK: and <16 x i8>
3057 // CHECK: or <16 x i8>
3058 // CHECK-LE: xor <16 x i8>
3059 // CHECK-LE: and <16 x i8>
3060 // CHECK-LE: and <16 x i8>
3061 // CHECK-LE: or <16 x i8>
3062 
3063   res_vbc = vec_sel(vbc, vbc, vbc);
3064 // CHECK: xor <16 x i8>
3065 // CHECK: and <16 x i8>
3066 // CHECK: and <16 x i8>
3067 // CHECK: or <16 x i8>
3068 // CHECK-LE: xor <16 x i8>
3069 // CHECK-LE: and <16 x i8>
3070 // CHECK-LE: and <16 x i8>
3071 // CHECK-LE: or <16 x i8>
3072 
3073   res_vs  = vec_sel(vs, vs, vus);
3074 // CHECK: xor <8 x i16>
3075 // CHECK: and <8 x i16>
3076 // CHECK: and <8 x i16>
3077 // CHECK: or <8 x i16>
3078 // CHECK-LE: xor <8 x i16>
3079 // CHECK-LE: and <8 x i16>
3080 // CHECK-LE: and <8 x i16>
3081 // CHECK-LE: or <8 x i16>
3082 
3083   res_vs  = vec_sel(vs, vs, vbs);
3084 // CHECK: xor <8 x i16>
3085 // CHECK: and <8 x i16>
3086 // CHECK: and <8 x i16>
3087 // CHECK: or <8 x i16>
3088 // CHECK-LE: xor <8 x i16>
3089 // CHECK-LE: and <8 x i16>
3090 // CHECK-LE: and <8 x i16>
3091 // CHECK-LE: or <8 x i16>
3092 
3093   res_vus = vec_sel(vus, vus, vus);
3094 // CHECK: xor <8 x i16>
3095 // CHECK: and <8 x i16>
3096 // CHECK: and <8 x i16>
3097 // CHECK: or <8 x i16>
3098 // CHECK-LE: xor <8 x i16>
3099 // CHECK-LE: and <8 x i16>
3100 // CHECK-LE: and <8 x i16>
3101 // CHECK-LE: or <8 x i16>
3102 
3103   res_vus = vec_sel(vus, vus, vbs);
3104 // CHECK: xor <8 x i16>
3105 // CHECK: and <8 x i16>
3106 // CHECK: and <8 x i16>
3107 // CHECK: or <8 x i16>
3108 // CHECK-LE: xor <8 x i16>
3109 // CHECK-LE: and <8 x i16>
3110 // CHECK-LE: and <8 x i16>
3111 // CHECK-LE: or <8 x i16>
3112 
3113   res_vbs = vec_sel(vbs, vbs, vus);
3114 // CHECK: xor <8 x i16>
3115 // CHECK: and <8 x i16>
3116 // CHECK: and <8 x i16>
3117 // CHECK: or <8 x i16>
3118 // CHECK-LE: xor <8 x i16>
3119 // CHECK-LE: and <8 x i16>
3120 // CHECK-LE: and <8 x i16>
3121 // CHECK-LE: or <8 x i16>
3122 
3123   res_vbs = vec_sel(vbs, vbs, vbs);
3124 // CHECK: xor <8 x i16>
3125 // CHECK: and <8 x i16>
3126 // CHECK: and <8 x i16>
3127 // CHECK: or <8 x i16>
3128 // CHECK-LE: xor <8 x i16>
3129 // CHECK-LE: and <8 x i16>
3130 // CHECK-LE: and <8 x i16>
3131 // CHECK-LE: or <8 x i16>
3132 
3133   res_vi  = vec_sel(vi, vi, vui);
3134 // CHECK: xor <4 x i32>
3135 // CHECK: and <4 x i32>
3136 // CHECK: and <4 x i32>
3137 // CHECK: or <4 x i32>
3138 // CHECK-LE: xor <4 x i32>
3139 // CHECK-LE: and <4 x i32>
3140 // CHECK-LE: and <4 x i32>
3141 // CHECK-LE: or <4 x i32>
3142 
3143   res_vi  = vec_sel(vi, vi, vbi);
3144 // CHECK: xor <4 x i32>
3145 // CHECK: and <4 x i32>
3146 // CHECK: and <4 x i32>
3147 // CHECK: or <4 x i32>
3148 // CHECK-LE: xor <4 x i32>
3149 // CHECK-LE: and <4 x i32>
3150 // CHECK-LE: and <4 x i32>
3151 // CHECK-LE: or <4 x i32>
3152 
3153   res_vui = vec_sel(vui, vui, vui);
3154 // CHECK: xor <4 x i32>
3155 // CHECK: and <4 x i32>
3156 // CHECK: and <4 x i32>
3157 // CHECK: or <4 x i32>
3158 // CHECK-LE: xor <4 x i32>
3159 // CHECK-LE: and <4 x i32>
3160 // CHECK-LE: and <4 x i32>
3161 // CHECK-LE: or <4 x i32>
3162 
3163   res_vui = vec_sel(vui, vui, vbi);
3164 // CHECK: xor <4 x i32>
3165 // CHECK: and <4 x i32>
3166 // CHECK: and <4 x i32>
3167 // CHECK: or <4 x i32>
3168 // CHECK-LE: xor <4 x i32>
3169 // CHECK-LE: and <4 x i32>
3170 // CHECK-LE: and <4 x i32>
3171 // CHECK-LE: or <4 x i32>
3172 
3173   res_vbi = vec_sel(vbi, vbi, vui);
3174 // CHECK: xor <4 x i32>
3175 // CHECK: and <4 x i32>
3176 // CHECK: and <4 x i32>
3177 // CHECK: or <4 x i32>
3178 // CHECK-LE: xor <4 x i32>
3179 // CHECK-LE: and <4 x i32>
3180 // CHECK-LE: and <4 x i32>
3181 // CHECK-LE: or <4 x i32>
3182 
3183   res_vbi = vec_sel(vbi, vbi, vbi);
3184 // CHECK: xor <4 x i32>
3185 // CHECK: and <4 x i32>
3186 // CHECK: and <4 x i32>
3187 // CHECK: or <4 x i32>
3188 // CHECK-LE: xor <4 x i32>
3189 // CHECK-LE: and <4 x i32>
3190 // CHECK-LE: and <4 x i32>
3191 // CHECK-LE: or <4 x i32>
3192 
3193   res_vf  = vec_sel(vf, vf, vui);
3194 // CHECK: xor <4 x i32>
3195 // CHECK: and <4 x i32>
3196 // CHECK: and <4 x i32>
3197 // CHECK: or <4 x i32>
3198 // CHECK-LE: xor <4 x i32>
3199 // CHECK-LE: and <4 x i32>
3200 // CHECK-LE: and <4 x i32>
3201 // CHECK-LE: or <4 x i32>
3202 
3203   res_vf  = vec_sel(vf, vf, vbi);
3204 // CHECK: xor <4 x i32>
3205 // CHECK: and <4 x i32>
3206 // CHECK: and <4 x i32>
3207 // CHECK: or <4 x i32>
3208 // CHECK-LE: xor <4 x i32>
3209 // CHECK-LE: and <4 x i32>
3210 // CHECK-LE: and <4 x i32>
3211 // CHECK-LE: or <4 x i32>
3212 
3213   res_vsc = vec_vsel(vsc, vsc, vuc);
3214 // CHECK: xor <16 x i8>
3215 // CHECK: and <16 x i8>
3216 // CHECK: and <16 x i8>
3217 // CHECK: or <16 x i8>
3218 // CHECK-LE: xor <16 x i8>
3219 // CHECK-LE: and <16 x i8>
3220 // CHECK-LE: and <16 x i8>
3221 // CHECK-LE: or <16 x i8>
3222 
3223   res_vsc = vec_vsel(vsc, vsc, vbc);
3224 // CHECK: xor <16 x i8>
3225 // CHECK: and <16 x i8>
3226 // CHECK: and <16 x i8>
3227 // CHECK: or <16 x i8>
3228 // CHECK-LE: xor <16 x i8>
3229 // CHECK-LE: and <16 x i8>
3230 // CHECK-LE: and <16 x i8>
3231 // CHECK-LE: or <16 x i8>
3232 
3233   res_vuc = vec_vsel(vuc, vuc, vuc);
3234 // CHECK: xor <16 x i8>
3235 // CHECK: and <16 x i8>
3236 // CHECK: and <16 x i8>
3237 // CHECK: or <16 x i8>
3238 // CHECK-LE: xor <16 x i8>
3239 // CHECK-LE: and <16 x i8>
3240 // CHECK-LE: and <16 x i8>
3241 // CHECK-LE: or <16 x i8>
3242 
3243   res_vuc = vec_vsel(vuc, vuc, vbc);
3244 // CHECK: xor <16 x i8>
3245 // CHECK: and <16 x i8>
3246 // CHECK: and <16 x i8>
3247 // CHECK: or <16 x i8>
3248 // CHECK-LE: xor <16 x i8>
3249 // CHECK-LE: and <16 x i8>
3250 // CHECK-LE: and <16 x i8>
3251 // CHECK-LE: or <16 x i8>
3252 
3253   res_vbc = vec_vsel(vbc, vbc, vuc);
3254 // CHECK: xor <16 x i8>
3255 // CHECK: and <16 x i8>
3256 // CHECK: and <16 x i8>
3257 // CHECK: or <16 x i8>
3258 // CHECK-LE: xor <16 x i8>
3259 // CHECK-LE: and <16 x i8>
3260 // CHECK-LE: and <16 x i8>
3261 // CHECK-LE: or <16 x i8>
3262 
3263   res_vbc = vec_vsel(vbc, vbc, vbc);
3264 // CHECK: xor <16 x i8>
3265 // CHECK: and <16 x i8>
3266 // CHECK: and <16 x i8>
3267 // CHECK: or <16 x i8>
3268 // CHECK-LE: xor <16 x i8>
3269 // CHECK-LE: and <16 x i8>
3270 // CHECK-LE: and <16 x i8>
3271 // CHECK-LE: or <16 x i8>
3272 
3273   res_vs  = vec_vsel(vs, vs, vus);
3274 // CHECK: xor <8 x i16>
3275 // CHECK: and <8 x i16>
3276 // CHECK: and <8 x i16>
3277 // CHECK: or <8 x i16>
3278 // CHECK-LE: xor <8 x i16>
3279 // CHECK-LE: and <8 x i16>
3280 // CHECK-LE: and <8 x i16>
3281 // CHECK-LE: or <8 x i16>
3282 
3283   res_vs  = vec_vsel(vs, vs, vbs);
3284 // CHECK: xor <8 x i16>
3285 // CHECK: and <8 x i16>
3286 // CHECK: and <8 x i16>
3287 // CHECK: or <8 x i16>
3288 // CHECK-LE: xor <8 x i16>
3289 // CHECK-LE: and <8 x i16>
3290 // CHECK-LE: and <8 x i16>
3291 // CHECK-LE: or <8 x i16>
3292 
3293   res_vus = vec_vsel(vus, vus, vus);
3294 // CHECK: xor <8 x i16>
3295 // CHECK: and <8 x i16>
3296 // CHECK: and <8 x i16>
3297 // CHECK: or <8 x i16>
3298 // CHECK-LE: xor <8 x i16>
3299 // CHECK-LE: and <8 x i16>
3300 // CHECK-LE: and <8 x i16>
3301 // CHECK-LE: or <8 x i16>
3302 
3303   res_vus = vec_vsel(vus, vus, vbs);
3304 // CHECK: xor <8 x i16>
3305 // CHECK: and <8 x i16>
3306 // CHECK: and <8 x i16>
3307 // CHECK: or <8 x i16>
3308 // CHECK-LE: xor <8 x i16>
3309 // CHECK-LE: and <8 x i16>
3310 // CHECK-LE: and <8 x i16>
3311 // CHECK-LE: or <8 x i16>
3312 
3313   res_vbs = vec_vsel(vbs, vbs, vus);
3314 // CHECK: xor <8 x i16>
3315 // CHECK: and <8 x i16>
3316 // CHECK: and <8 x i16>
3317 // CHECK: or <8 x i16>
3318 // CHECK-LE: xor <8 x i16>
3319 // CHECK-LE: and <8 x i16>
3320 // CHECK-LE: and <8 x i16>
3321 // CHECK-LE: or <8 x i16>
3322 
3323   res_vbs = vec_vsel(vbs, vbs, vbs);
3324 // CHECK: xor <8 x i16>
3325 // CHECK: and <8 x i16>
3326 // CHECK: and <8 x i16>
3327 // CHECK: or <8 x i16>
3328 // CHECK-LE: xor <8 x i16>
3329 // CHECK-LE: and <8 x i16>
3330 // CHECK-LE: and <8 x i16>
3331 // CHECK-LE: or <8 x i16>
3332 
3333   res_vi  = vec_vsel(vi, vi, vui);
3334 // CHECK: xor <4 x i32>
3335 // CHECK: and <4 x i32>
3336 // CHECK: and <4 x i32>
3337 // CHECK: or <4 x i32>
3338 // CHECK-LE: xor <4 x i32>
3339 // CHECK-LE: and <4 x i32>
3340 // CHECK-LE: and <4 x i32>
3341 // CHECK-LE: or <4 x i32>
3342 
3343   res_vi  = vec_vsel(vi, vi, vbi);
3344 // CHECK: xor <4 x i32>
3345 // CHECK: and <4 x i32>
3346 // CHECK: and <4 x i32>
3347 // CHECK: or <4 x i32>
3348 // CHECK-LE: xor <4 x i32>
3349 // CHECK-LE: and <4 x i32>
3350 // CHECK-LE: and <4 x i32>
3351 // CHECK-LE: or <4 x i32>
3352 
3353   res_vui = vec_vsel(vui, vui, vui);
3354 // CHECK: xor <4 x i32>
3355 // CHECK: and <4 x i32>
3356 // CHECK: and <4 x i32>
3357 // CHECK: or <4 x i32>
3358 // CHECK-LE: xor <4 x i32>
3359 // CHECK-LE: and <4 x i32>
3360 // CHECK-LE: and <4 x i32>
3361 // CHECK-LE: or <4 x i32>
3362 
3363   res_vui = vec_vsel(vui, vui, vbi);
3364 // CHECK: xor <4 x i32>
3365 // CHECK: and <4 x i32>
3366 // CHECK: and <4 x i32>
3367 // CHECK: or <4 x i32>
3368 // CHECK-LE: xor <4 x i32>
3369 // CHECK-LE: and <4 x i32>
3370 // CHECK-LE: and <4 x i32>
3371 // CHECK-LE: or <4 x i32>
3372 
3373   res_vbi = vec_vsel(vbi, vbi, vui);
3374 // CHECK: xor <4 x i32>
3375 // CHECK: and <4 x i32>
3376 // CHECK: and <4 x i32>
3377 // CHECK: or <4 x i32>
3378 // CHECK-LE: xor <4 x i32>
3379 // CHECK-LE: and <4 x i32>
3380 // CHECK-LE: and <4 x i32>
3381 // CHECK-LE: or <4 x i32>
3382 
3383   res_vbi = vec_vsel(vbi, vbi, vbi);
3384 // CHECK: xor <4 x i32>
3385 // CHECK: and <4 x i32>
3386 // CHECK: and <4 x i32>
3387 // CHECK: or <4 x i32>
3388 // CHECK-LE: xor <4 x i32>
3389 // CHECK-LE: and <4 x i32>
3390 // CHECK-LE: and <4 x i32>
3391 // CHECK-LE: or <4 x i32>
3392 
3393   res_vf  = vec_vsel(vf, vf, vui);
3394 // CHECK: xor <4 x i32>
3395 // CHECK: and <4 x i32>
3396 // CHECK: and <4 x i32>
3397 // CHECK: or <4 x i32>
3398 // CHECK-LE: xor <4 x i32>
3399 // CHECK-LE: and <4 x i32>
3400 // CHECK-LE: and <4 x i32>
3401 // CHECK-LE: or <4 x i32>
3402 
3403   res_vf  = vec_vsel(vf, vf, vbi);
3404 // CHECK: xor <4 x i32>
3405 // CHECK: and <4 x i32>
3406 // CHECK: and <4 x i32>
3407 // CHECK: or <4 x i32>
3408 // CHECK-LE: xor <4 x i32>
3409 // CHECK-LE: and <4 x i32>
3410 // CHECK-LE: and <4 x i32>
3411 // CHECK-LE: or <4 x i32>
3412 
3413   /* vec_sl */
3414   res_vsc = vec_sl(vsc, vuc);
3415 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3416 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3417 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3418 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3419 
3420   res_vuc = vec_sl(vuc, vuc);
3421 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3422 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3423 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3424 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3425 
3426   res_vs  = vec_sl(vs, vus);
3427 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3428 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3429 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3430 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3431 
3432   res_vus = vec_sl(vus, vus);
3433 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3434 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3435 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3436 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3437 
3438   res_vi  = vec_sl(vi, vui);
3439 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3440 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3441 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3442 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3443 
3444   res_vui = vec_sl(vui, vui);
3445 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3446 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3447 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3448 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3449 
3450   res_vsc = vec_vslb(vsc, vuc);
3451 // CHECK: shl <16 x i8>
3452 // CHECK-LE: shl <16 x i8>
3453 
3454   res_vuc = vec_vslb(vuc, vuc);
3455 // CHECK: shl <16 x i8>
3456 // CHECK-LE: shl <16 x i8>
3457 
3458   res_vs  = vec_vslh(vs, vus);
3459 // CHECK: shl <8 x i16>
3460 // CHECK-LE: shl <8 x i16>
3461 
3462   res_vus = vec_vslh(vus, vus);
3463 // CHECK: shl <8 x i16>
3464 // CHECK-LE: shl <8 x i16>
3465 
3466   res_vi  = vec_vslw(vi, vui);
3467 // CHECK: shl <4 x i32>
3468 // CHECK-LE: shl <4 x i32>
3469 
3470   res_vui = vec_vslw(vui, vui);
3471 // CHECK: shl <4 x i32>
3472 // CHECK-LE: shl <4 x i32>
3473 
3474   /* vec_sld */
3475   res_vsc = vec_sld(vsc, vsc, 0);
3476 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3477 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3478 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3479 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3480 // CHECK: @llvm.ppc.altivec.vperm
3481 // CHECK-LE: sub nsw i32 16
3482 // CHECK-LE: sub nsw i32 17
3483 // CHECK-LE: sub nsw i32 18
3484 // CHECK-LE: sub nsw i32 31
3485 // CHECK-LE: @llvm.ppc.altivec.vperm
3486 
3487   res_vuc = vec_sld(vuc, vuc, 0);
3488 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3489 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3490 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3491 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3492 // CHECK: @llvm.ppc.altivec.vperm
3493 // CHECK-LE: sub nsw i32 16
3494 // CHECK-LE: sub nsw i32 17
3495 // CHECK-LE: sub nsw i32 18
3496 // CHECK-LE: sub nsw i32 31
3497 // CHECK-LE: @llvm.ppc.altivec.vperm
3498 
3499   res_vs  = vec_sld(vs, vs, 0);
3500 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3501 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3502 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3503 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3504 // CHECK: @llvm.ppc.altivec.vperm
3505 // CHECK-LE: sub nsw i32 16
3506 // CHECK-LE: sub nsw i32 17
3507 // CHECK-LE: sub nsw i32 18
3508 // CHECK-LE: sub nsw i32 31
3509 // CHECK-LE: @llvm.ppc.altivec.vperm
3510 
3511   res_vus = vec_sld(vus, vus, 0);
3512 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3513 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3514 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3515 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3516 // CHECK: @llvm.ppc.altivec.vperm
3517 // CHECK-LE: sub nsw i32 16
3518 // CHECK-LE: sub nsw i32 17
3519 // CHECK-LE: sub nsw i32 18
3520 // CHECK-LE: sub nsw i32 31
3521 // CHECK-LE: @llvm.ppc.altivec.vperm
3522 
3523   res_vbs = vec_sld(vbs, vbs, 0);
3524 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3525 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3526 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3527 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3528 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3529 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3530 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3531 // CHECK-LE: sub nsw i32 16
3532 // CHECK-LE: sub nsw i32 17
3533 // CHECK-LE: sub nsw i32 18
3534 // CHECK-LE: sub nsw i32 31
3535 // CHECK-LE: xor <16 x i8>
3536 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3537 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3538 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3539 
3540   res_vp  = vec_sld(vp, vp, 0);
3541 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3542 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3543 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3544 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3545 // CHECK: @llvm.ppc.altivec.vperm
3546 // CHECK-LE: sub nsw i32 16
3547 // CHECK-LE: sub nsw i32 17
3548 // CHECK-LE: sub nsw i32 18
3549 // CHECK-LE: sub nsw i32 31
3550 // CHECK-LE: @llvm.ppc.altivec.vperm
3551 
3552   res_vi  = vec_sld(vi, vi, 0);
3553 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3554 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3555 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3556 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3557 // CHECK: @llvm.ppc.altivec.vperm
3558 // CHECK-LE: sub nsw i32 16
3559 // CHECK-LE: sub nsw i32 17
3560 // CHECK-LE: sub nsw i32 18
3561 // CHECK-LE: sub nsw i32 31
3562 // CHECK-LE: @llvm.ppc.altivec.vperm
3563 
3564   res_vui = vec_sld(vui, vui, 0);
3565 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3566 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3567 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3568 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3569 // CHECK: @llvm.ppc.altivec.vperm
3570 // CHECK-LE: sub nsw i32 16
3571 // CHECK-LE: sub nsw i32 17
3572 // CHECK-LE: sub nsw i32 18
3573 // CHECK-LE: sub nsw i32 31
3574 // CHECK-LE: @llvm.ppc.altivec.vperm
3575 
3576   res_vbi = vec_sld(vbi, vbi, 0);
3577 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3578 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3579 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3580 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3581 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3582 // CHECK-LE: sub nsw i32 16
3583 // CHECK-LE: sub nsw i32 17
3584 // CHECK-LE: sub nsw i32 18
3585 // CHECK-LE: sub nsw i32 31
3586 // CHECK-LE: xor <16 x i8>
3587 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3588 
3589   res_vf  = vec_sld(vf, vf, 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   /* vec_sldw */
3602   res_vsc = vec_sldw(vsc, vsc, 0);
3603   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3604   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3605   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3606   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3607   // CHECK: @llvm.ppc.altivec.vperm
3608   // CHECK-LE: sub nsw i32 16
3609   // CHECK-LE: sub nsw i32 17
3610   // CHECK-LE: sub nsw i32 18
3611   // CHECK-LE: sub nsw i32 31
3612   // CHECK-LE: @llvm.ppc.altivec.vperm
3613 
3614   res_vuc = vec_sldw(vuc, vuc, 0);
3615   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3616   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3617   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3618   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3619   // CHECK: @llvm.ppc.altivec.vperm
3620   // CHECK-LE: sub nsw i32 16
3621   // CHECK-LE: sub nsw i32 17
3622   // CHECK-LE: sub nsw i32 18
3623   // CHECK-LE: sub nsw i32 31
3624   // CHECK-LE: @llvm.ppc.altivec.vperm
3625 
3626   res_vi = vec_sldw(vi, vi, 0);
3627   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3628   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3629   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3630   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3631   // CHECK: @llvm.ppc.altivec.vperm
3632   // CHECK-LE: sub nsw i32 16
3633   // CHECK-LE: sub nsw i32 17
3634   // CHECK-LE: sub nsw i32 18
3635   // CHECK-LE: sub nsw i32 31
3636   // CHECK-LE: @llvm.ppc.altivec.vperm
3637 
3638   res_vui = vec_sldw(vui, vui, 0);
3639   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3640   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3641   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3642   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3643   // CHECK: @llvm.ppc.altivec.vperm
3644   // CHECK-LE: sub nsw i32 16
3645   // CHECK-LE: sub nsw i32 17
3646   // CHECK-LE: sub nsw i32 18
3647   // CHECK-LE: sub nsw i32 31
3648   // CHECK-LE: @llvm.ppc.altivec.vperm
3649 
3650   res_vs = vec_sldw(vs, vs, 0);
3651   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3652   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3653   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3654   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3655   // CHECK: @llvm.ppc.altivec.vperm
3656   // CHECK-LE: sub nsw i32 16
3657   // CHECK-LE: sub nsw i32 17
3658   // CHECK-LE: sub nsw i32 18
3659   // CHECK-LE: sub nsw i32 31
3660   // CHECK-LE: @llvm.ppc.altivec.vperm
3661 
3662   res_vus = vec_sldw(vus, vus, 0);
3663   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3664   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3665   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3666   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3667   // CHECK: @llvm.ppc.altivec.vperm
3668   // CHECK-LE: sub nsw i32 16
3669   // CHECK-LE: sub nsw i32 17
3670   // CHECK-LE: sub nsw i32 18
3671   // CHECK-LE: sub nsw i32 31
3672   // CHECK-LE: @llvm.ppc.altivec.vperm
3673 
3674   res_vsc = vec_vsldoi(vsc, vsc, 0);
3675 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3676 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3677 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3678 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3679 // CHECK: @llvm.ppc.altivec.vperm
3680 // CHECK-LE: sub nsw i32 16
3681 // CHECK-LE: sub nsw i32 17
3682 // CHECK-LE: sub nsw i32 18
3683 // CHECK-LE: sub nsw i32 31
3684 // CHECK-LE: @llvm.ppc.altivec.vperm
3685 
3686   res_vuc = vec_vsldoi(vuc, vuc, 0);
3687 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3688 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3689 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3690 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3691 // CHECK: @llvm.ppc.altivec.vperm
3692 // CHECK-LE: sub nsw i32 16
3693 // CHECK-LE: sub nsw i32 17
3694 // CHECK-LE: sub nsw i32 18
3695 // CHECK-LE: sub nsw i32 31
3696 // CHECK-LE: @llvm.ppc.altivec.vperm
3697 
3698   res_vs  = vec_vsldoi(vs, vs, 0);
3699 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3700 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3701 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3702 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3703 // CHECK: @llvm.ppc.altivec.vperm
3704 // CHECK-LE: sub nsw i32 16
3705 // CHECK-LE: sub nsw i32 17
3706 // CHECK-LE: sub nsw i32 18
3707 // CHECK-LE: sub nsw i32 31
3708 // CHECK-LE: @llvm.ppc.altivec.vperm
3709 
3710   res_vus = vec_vsldoi(vus, vus, 0);
3711 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3712 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3713 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3714 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3715 // CHECK: @llvm.ppc.altivec.vperm
3716 // CHECK-LE: sub nsw i32 16
3717 // CHECK-LE: sub nsw i32 17
3718 // CHECK-LE: sub nsw i32 18
3719 // CHECK-LE: sub nsw i32 31
3720 // CHECK-LE: @llvm.ppc.altivec.vperm
3721 
3722   res_vp  = vec_vsldoi(vp, vp, 0);
3723 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3724 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3725 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3726 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3727 // CHECK: @llvm.ppc.altivec.vperm
3728 // CHECK-LE: sub nsw i32 16
3729 // CHECK-LE: sub nsw i32 17
3730 // CHECK-LE: sub nsw i32 18
3731 // CHECK-LE: sub nsw i32 31
3732 // CHECK-LE: @llvm.ppc.altivec.vperm
3733 
3734   res_vi  = vec_vsldoi(vi, vi, 0);
3735 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3736 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3737 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3738 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3739 // CHECK: @llvm.ppc.altivec.vperm
3740 // CHECK-LE: sub nsw i32 16
3741 // CHECK-LE: sub nsw i32 17
3742 // CHECK-LE: sub nsw i32 18
3743 // CHECK-LE: sub nsw i32 31
3744 // CHECK-LE: @llvm.ppc.altivec.vperm
3745 
3746   res_vui = vec_vsldoi(vui, vui, 0);
3747 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3748 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3749 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3750 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3751 // CHECK: @llvm.ppc.altivec.vperm
3752 // CHECK-LE: sub nsw i32 16
3753 // CHECK-LE: sub nsw i32 17
3754 // CHECK-LE: sub nsw i32 18
3755 // CHECK-LE: sub nsw i32 31
3756 // CHECK-LE: @llvm.ppc.altivec.vperm
3757 
3758   res_vf  = vec_vsldoi(vf, vf, 0);
3759 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3760 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3761 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3762 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3763 // CHECK: @llvm.ppc.altivec.vperm
3764 // CHECK-LE: sub nsw i32 16
3765 // CHECK-LE: sub nsw i32 17
3766 // CHECK-LE: sub nsw i32 18
3767 // CHECK-LE: sub nsw i32 31
3768 // CHECK-LE: @llvm.ppc.altivec.vperm
3769 
3770   /* vec_sll */
3771   res_vsc = vec_sll(vsc, vuc);
3772 // CHECK: @llvm.ppc.altivec.vsl
3773 // CHECK-LE: @llvm.ppc.altivec.vsl
3774 
3775   res_vsc = vec_sll(vsc, vus);
3776 // CHECK: @llvm.ppc.altivec.vsl
3777 // CHECK-LE: @llvm.ppc.altivec.vsl
3778 
3779   res_vsc = vec_sll(vsc, vui);
3780 // CHECK: @llvm.ppc.altivec.vsl
3781 // CHECK-LE: @llvm.ppc.altivec.vsl
3782 
3783   res_vuc = vec_sll(vuc, vuc);
3784 // CHECK: @llvm.ppc.altivec.vsl
3785 // CHECK-LE: @llvm.ppc.altivec.vsl
3786 
3787   res_vuc = vec_sll(vuc, vus);
3788 // CHECK: @llvm.ppc.altivec.vsl
3789 // CHECK-LE: @llvm.ppc.altivec.vsl
3790 
3791   res_vuc = vec_sll(vuc, vui);
3792 // CHECK: @llvm.ppc.altivec.vsl
3793 // CHECK-LE: @llvm.ppc.altivec.vsl
3794 
3795   res_vbc = vec_sll(vbc, vuc);
3796 // CHECK: @llvm.ppc.altivec.vsl
3797 // CHECK-LE: @llvm.ppc.altivec.vsl
3798 
3799   res_vbc = vec_sll(vbc, vus);
3800 // CHECK: @llvm.ppc.altivec.vsl
3801 // CHECK-LE: @llvm.ppc.altivec.vsl
3802 
3803   res_vbc = vec_sll(vbc, vui);
3804 // CHECK: @llvm.ppc.altivec.vsl
3805 // CHECK-LE: @llvm.ppc.altivec.vsl
3806 
3807   res_vs  = vec_sll(vs, vuc);
3808 // CHECK: @llvm.ppc.altivec.vsl
3809 // CHECK-LE: @llvm.ppc.altivec.vsl
3810 
3811   res_vs  = vec_sll(vs, vus);
3812 // CHECK: @llvm.ppc.altivec.vsl
3813 // CHECK-LE: @llvm.ppc.altivec.vsl
3814 
3815   res_vs  = vec_sll(vs, vui);
3816 // CHECK: @llvm.ppc.altivec.vsl
3817 // CHECK-LE: @llvm.ppc.altivec.vsl
3818 
3819   res_vus = vec_sll(vus, vuc);
3820 // CHECK: @llvm.ppc.altivec.vsl
3821 // CHECK-LE: @llvm.ppc.altivec.vsl
3822 
3823   res_vus = vec_sll(vus, vus);
3824 // CHECK: @llvm.ppc.altivec.vsl
3825 // CHECK-LE: @llvm.ppc.altivec.vsl
3826 
3827   res_vus = vec_sll(vus, vui);
3828 // CHECK: @llvm.ppc.altivec.vsl
3829 // CHECK-LE: @llvm.ppc.altivec.vsl
3830 
3831   res_vbs = vec_sll(vbs, vuc);
3832 // CHECK: @llvm.ppc.altivec.vsl
3833 // CHECK-LE: @llvm.ppc.altivec.vsl
3834 
3835   res_vbs = vec_sll(vbs, vus);
3836 // CHECK: @llvm.ppc.altivec.vsl
3837 // CHECK-LE: @llvm.ppc.altivec.vsl
3838 
3839   res_vbs = vec_sll(vbs, vui);
3840 // CHECK: @llvm.ppc.altivec.vsl
3841 // CHECK-LE: @llvm.ppc.altivec.vsl
3842 
3843   res_vp  = vec_sll(vp, vuc);
3844 // CHECK: @llvm.ppc.altivec.vsl
3845 // CHECK-LE: @llvm.ppc.altivec.vsl
3846 
3847   res_vp  = vec_sll(vp, vus);
3848 // CHECK: @llvm.ppc.altivec.vsl
3849 // CHECK-LE: @llvm.ppc.altivec.vsl
3850 
3851   res_vp  = vec_sll(vp, vui);
3852 // CHECK: @llvm.ppc.altivec.vsl
3853 // CHECK-LE: @llvm.ppc.altivec.vsl
3854 
3855   res_vi  = vec_sll(vi, vuc);
3856 // CHECK: @llvm.ppc.altivec.vsl
3857 // CHECK-LE: @llvm.ppc.altivec.vsl
3858 
3859   res_vi  = vec_sll(vi, vus);
3860 // CHECK: @llvm.ppc.altivec.vsl
3861 // CHECK-LE: @llvm.ppc.altivec.vsl
3862 
3863   res_vi  = vec_sll(vi, vui);
3864 // CHECK: @llvm.ppc.altivec.vsl
3865 // CHECK-LE: @llvm.ppc.altivec.vsl
3866 
3867   res_vui = vec_sll(vui, vuc);
3868 // CHECK: @llvm.ppc.altivec.vsl
3869 // CHECK-LE: @llvm.ppc.altivec.vsl
3870 
3871   res_vui = vec_sll(vui, vus);
3872 // CHECK: @llvm.ppc.altivec.vsl
3873 // CHECK-LE: @llvm.ppc.altivec.vsl
3874 
3875   res_vui = vec_sll(vui, vui);
3876 // CHECK: @llvm.ppc.altivec.vsl
3877 // CHECK-LE: @llvm.ppc.altivec.vsl
3878 
3879   res_vbi = vec_sll(vbi, vuc);
3880 // CHECK: @llvm.ppc.altivec.vsl
3881 // CHECK-LE: @llvm.ppc.altivec.vsl
3882 
3883   res_vbi = vec_sll(vbi, vus);
3884 // CHECK: @llvm.ppc.altivec.vsl
3885 // CHECK-LE: @llvm.ppc.altivec.vsl
3886 
3887   res_vbi = vec_sll(vbi, vui);
3888 // CHECK: @llvm.ppc.altivec.vsl
3889 // CHECK-LE: @llvm.ppc.altivec.vsl
3890 
3891   res_vsc = vec_vsl(vsc, vuc);
3892 // CHECK: @llvm.ppc.altivec.vsl
3893 // CHECK-LE: @llvm.ppc.altivec.vsl
3894 
3895   res_vsc = vec_vsl(vsc, vus);
3896 // CHECK: @llvm.ppc.altivec.vsl
3897 // CHECK-LE: @llvm.ppc.altivec.vsl
3898 
3899   res_vsc = vec_vsl(vsc, vui);
3900 // CHECK: @llvm.ppc.altivec.vsl
3901 // CHECK-LE: @llvm.ppc.altivec.vsl
3902 
3903   res_vuc = vec_vsl(vuc, vuc);
3904 // CHECK: @llvm.ppc.altivec.vsl
3905 // CHECK-LE: @llvm.ppc.altivec.vsl
3906 
3907   res_vuc = vec_vsl(vuc, vus);
3908 // CHECK: @llvm.ppc.altivec.vsl
3909 // CHECK-LE: @llvm.ppc.altivec.vsl
3910 
3911   res_vuc = vec_vsl(vuc, vui);
3912 // CHECK: @llvm.ppc.altivec.vsl
3913 // CHECK-LE: @llvm.ppc.altivec.vsl
3914 
3915   res_vbc = vec_vsl(vbc, vuc);
3916 // CHECK: @llvm.ppc.altivec.vsl
3917 // CHECK-LE: @llvm.ppc.altivec.vsl
3918 
3919   res_vbc = vec_vsl(vbc, vus);
3920 // CHECK: @llvm.ppc.altivec.vsl
3921 // CHECK-LE: @llvm.ppc.altivec.vsl
3922 
3923   res_vbc = vec_vsl(vbc, vui);
3924 // CHECK: @llvm.ppc.altivec.vsl
3925 // CHECK-LE: @llvm.ppc.altivec.vsl
3926 
3927   res_vs  = vec_vsl(vs, vuc);
3928 // CHECK: @llvm.ppc.altivec.vsl
3929 // CHECK-LE: @llvm.ppc.altivec.vsl
3930 
3931   res_vs  = vec_vsl(vs, vus);
3932 // CHECK: @llvm.ppc.altivec.vsl
3933 // CHECK-LE: @llvm.ppc.altivec.vsl
3934 
3935   res_vs  = vec_vsl(vs, vui);
3936 // CHECK: @llvm.ppc.altivec.vsl
3937 // CHECK-LE: @llvm.ppc.altivec.vsl
3938 
3939   res_vus = vec_vsl(vus, vuc);
3940 // CHECK: @llvm.ppc.altivec.vsl
3941 // CHECK-LE: @llvm.ppc.altivec.vsl
3942 
3943   res_vus = vec_vsl(vus, vus);
3944 // CHECK: @llvm.ppc.altivec.vsl
3945 // CHECK-LE: @llvm.ppc.altivec.vsl
3946 
3947   res_vus = vec_vsl(vus, vui);
3948 // CHECK: @llvm.ppc.altivec.vsl
3949 // CHECK-LE: @llvm.ppc.altivec.vsl
3950 
3951   res_vbs = vec_vsl(vbs, vuc);
3952 // CHECK: @llvm.ppc.altivec.vsl
3953 // CHECK-LE: @llvm.ppc.altivec.vsl
3954 
3955   res_vbs = vec_vsl(vbs, vus);
3956 // CHECK: @llvm.ppc.altivec.vsl
3957 // CHECK-LE: @llvm.ppc.altivec.vsl
3958 
3959   res_vbs = vec_vsl(vbs, vui);
3960 // CHECK: @llvm.ppc.altivec.vsl
3961 // CHECK-LE: @llvm.ppc.altivec.vsl
3962 
3963   res_vp  = vec_vsl(vp, vuc);
3964 // CHECK: @llvm.ppc.altivec.vsl
3965 // CHECK-LE: @llvm.ppc.altivec.vsl
3966 
3967   res_vp  = vec_vsl(vp, vus);
3968 // CHECK: @llvm.ppc.altivec.vsl
3969 // CHECK-LE: @llvm.ppc.altivec.vsl
3970 
3971   res_vp  = vec_vsl(vp, vui);
3972 // CHECK: @llvm.ppc.altivec.vsl
3973 // CHECK-LE: @llvm.ppc.altivec.vsl
3974 
3975   res_vi  = vec_vsl(vi, vuc);
3976 // CHECK: @llvm.ppc.altivec.vsl
3977 // CHECK-LE: @llvm.ppc.altivec.vsl
3978 
3979   res_vi  = vec_vsl(vi, vus);
3980 // CHECK: @llvm.ppc.altivec.vsl
3981 // CHECK-LE: @llvm.ppc.altivec.vsl
3982 
3983   res_vi  = vec_vsl(vi, vui);
3984 // CHECK: @llvm.ppc.altivec.vsl
3985 // CHECK-LE: @llvm.ppc.altivec.vsl
3986 
3987   res_vui = vec_vsl(vui, vuc);
3988 // CHECK: @llvm.ppc.altivec.vsl
3989 // CHECK-LE: @llvm.ppc.altivec.vsl
3990 
3991   res_vui = vec_vsl(vui, vus);
3992 // CHECK: @llvm.ppc.altivec.vsl
3993 // CHECK-LE: @llvm.ppc.altivec.vsl
3994 
3995   res_vui = vec_vsl(vui, vui);
3996 // CHECK: @llvm.ppc.altivec.vsl
3997 // CHECK-LE: @llvm.ppc.altivec.vsl
3998 
3999   res_vbi = vec_vsl(vbi, vuc);
4000 // CHECK: @llvm.ppc.altivec.vsl
4001 // CHECK-LE: @llvm.ppc.altivec.vsl
4002 
4003   res_vbi = vec_vsl(vbi, vus);
4004 // CHECK: @llvm.ppc.altivec.vsl
4005 // CHECK-LE: @llvm.ppc.altivec.vsl
4006 
4007   res_vbi = vec_vsl(vbi, vui);
4008 // CHECK: @llvm.ppc.altivec.vsl
4009 // CHECK-LE: @llvm.ppc.altivec.vsl
4010 
4011   /* vec_slo */
4012   res_vsc = vec_slo(vsc, vsc);
4013 // CHECK: @llvm.ppc.altivec.vslo
4014 // CHECK-LE: @llvm.ppc.altivec.vslo
4015 
4016   res_vsc = vec_slo(vsc, vuc);
4017 // CHECK: @llvm.ppc.altivec.vslo
4018 // CHECK-LE: @llvm.ppc.altivec.vslo
4019 
4020   res_vuc = vec_slo(vuc, vsc);
4021 // CHECK: @llvm.ppc.altivec.vslo
4022 // CHECK-LE: @llvm.ppc.altivec.vslo
4023 
4024   res_vuc = vec_slo(vuc, vuc);
4025 // CHECK: @llvm.ppc.altivec.vslo
4026 // CHECK-LE: @llvm.ppc.altivec.vslo
4027 
4028   res_vs  = vec_slo(vs, vsc);
4029 // CHECK: @llvm.ppc.altivec.vslo
4030 // CHECK-LE: @llvm.ppc.altivec.vslo
4031 
4032   res_vs  = vec_slo(vs, vuc);
4033 // CHECK: @llvm.ppc.altivec.vslo
4034 // CHECK-LE: @llvm.ppc.altivec.vslo
4035 
4036   res_vus = vec_slo(vus, vsc);
4037 // CHECK: @llvm.ppc.altivec.vslo
4038 // CHECK-LE: @llvm.ppc.altivec.vslo
4039 
4040   res_vus = vec_slo(vus, vuc);
4041 // CHECK: @llvm.ppc.altivec.vslo
4042 // CHECK-LE: @llvm.ppc.altivec.vslo
4043 
4044   res_vp  = vec_slo(vp, vsc);
4045 // CHECK: @llvm.ppc.altivec.vslo
4046 // CHECK-LE: @llvm.ppc.altivec.vslo
4047 
4048   res_vp  = vec_slo(vp, vuc);
4049 // CHECK: @llvm.ppc.altivec.vslo
4050 // CHECK-LE: @llvm.ppc.altivec.vslo
4051 
4052   res_vi  = vec_slo(vi, vsc);
4053 // CHECK: @llvm.ppc.altivec.vslo
4054 // CHECK-LE: @llvm.ppc.altivec.vslo
4055 
4056   res_vi  = vec_slo(vi, vuc);
4057 // CHECK: @llvm.ppc.altivec.vslo
4058 // CHECK-LE: @llvm.ppc.altivec.vslo
4059 
4060   res_vui = vec_slo(vui, vsc);
4061 // CHECK: @llvm.ppc.altivec.vslo
4062 // CHECK-LE: @llvm.ppc.altivec.vslo
4063 
4064   res_vui = vec_slo(vui, vuc);
4065 // CHECK: @llvm.ppc.altivec.vslo
4066 // CHECK-LE: @llvm.ppc.altivec.vslo
4067 
4068   res_vf  = vec_slo(vf, vsc);
4069 // CHECK: @llvm.ppc.altivec.vslo
4070 // CHECK-LE: @llvm.ppc.altivec.vslo
4071 
4072   res_vf  = vec_slo(vf, vuc);
4073 // CHECK: @llvm.ppc.altivec.vslo
4074 // CHECK-LE: @llvm.ppc.altivec.vslo
4075 
4076   res_vsc = vec_vslo(vsc, vsc);
4077 // CHECK: @llvm.ppc.altivec.vslo
4078 // CHECK-LE: @llvm.ppc.altivec.vslo
4079 
4080   res_vsc = vec_vslo(vsc, vuc);
4081 // CHECK: @llvm.ppc.altivec.vslo
4082 // CHECK-LE: @llvm.ppc.altivec.vslo
4083 
4084   res_vuc = vec_vslo(vuc, vsc);
4085 // CHECK: @llvm.ppc.altivec.vslo
4086 // CHECK-LE: @llvm.ppc.altivec.vslo
4087 
4088   res_vuc = vec_vslo(vuc, vuc);
4089 // CHECK: @llvm.ppc.altivec.vslo
4090 // CHECK-LE: @llvm.ppc.altivec.vslo
4091 
4092   res_vs  = vec_vslo(vs, vsc);
4093 // CHECK: @llvm.ppc.altivec.vslo
4094 // CHECK-LE: @llvm.ppc.altivec.vslo
4095 
4096   res_vs  = vec_vslo(vs, vuc);
4097 // CHECK: @llvm.ppc.altivec.vslo
4098 // CHECK-LE: @llvm.ppc.altivec.vslo
4099 
4100   res_vus = vec_vslo(vus, vsc);
4101 // CHECK: @llvm.ppc.altivec.vslo
4102 // CHECK-LE: @llvm.ppc.altivec.vslo
4103 
4104   res_vus = vec_vslo(vus, vuc);
4105 // CHECK: @llvm.ppc.altivec.vslo
4106 // CHECK-LE: @llvm.ppc.altivec.vslo
4107 
4108   res_vp  = vec_vslo(vp, vsc);
4109 // CHECK: @llvm.ppc.altivec.vslo
4110 // CHECK-LE: @llvm.ppc.altivec.vslo
4111 
4112   res_vp  = vec_vslo(vp, vuc);
4113 // CHECK: @llvm.ppc.altivec.vslo
4114 // CHECK-LE: @llvm.ppc.altivec.vslo
4115 
4116   res_vi  = vec_vslo(vi, vsc);
4117 // CHECK: @llvm.ppc.altivec.vslo
4118 // CHECK-LE: @llvm.ppc.altivec.vslo
4119 
4120   res_vi  = vec_vslo(vi, vuc);
4121 // CHECK: @llvm.ppc.altivec.vslo
4122 // CHECK-LE: @llvm.ppc.altivec.vslo
4123 
4124   res_vui = vec_vslo(vui, vsc);
4125 // CHECK: @llvm.ppc.altivec.vslo
4126 // CHECK-LE: @llvm.ppc.altivec.vslo
4127 
4128   res_vui = vec_vslo(vui, vuc);
4129 // CHECK: @llvm.ppc.altivec.vslo
4130 // CHECK-LE: @llvm.ppc.altivec.vslo
4131 
4132   res_vf  = vec_vslo(vf, vsc);
4133 // CHECK: @llvm.ppc.altivec.vslo
4134 // CHECK-LE: @llvm.ppc.altivec.vslo
4135 
4136   res_vf  = vec_vslo(vf, vuc);
4137 // CHECK: @llvm.ppc.altivec.vslo
4138 // CHECK-LE: @llvm.ppc.altivec.vslo
4139 
4140   /* vec_splat */
4141   res_vsc = vec_splat(vsc, 0);
4142 // CHECK: @llvm.ppc.altivec.vperm
4143 // CHECK-LE: @llvm.ppc.altivec.vperm
4144 
4145   res_vuc = vec_splat(vuc, 0);
4146 // CHECK: @llvm.ppc.altivec.vperm
4147 // CHECK-LE: @llvm.ppc.altivec.vperm
4148 
4149   res_vbc = vec_splat(vbc, 0);
4150 // CHECK: @llvm.ppc.altivec.vperm
4151 // CHECK-LE: @llvm.ppc.altivec.vperm
4152 
4153   res_vs  = vec_splat(vs, 0);
4154 // CHECK: @llvm.ppc.altivec.vperm
4155 // CHECK-LE: @llvm.ppc.altivec.vperm
4156 
4157   res_vus = vec_splat(vus, 0);
4158 // CHECK: @llvm.ppc.altivec.vperm
4159 // CHECK-LE: @llvm.ppc.altivec.vperm
4160 
4161   res_vbs = vec_splat(vbs, 0);
4162 // CHECK: @llvm.ppc.altivec.vperm
4163 // CHECK-LE: @llvm.ppc.altivec.vperm
4164 
4165   res_vp  = vec_splat(vp, 0);
4166 // CHECK: @llvm.ppc.altivec.vperm
4167 // CHECK-LE: @llvm.ppc.altivec.vperm
4168 
4169   res_vi  = vec_splat(vi, 0);
4170 // CHECK: @llvm.ppc.altivec.vperm
4171 // CHECK-LE: @llvm.ppc.altivec.vperm
4172 
4173   res_vui = vec_splat(vui, 0);
4174 // CHECK: @llvm.ppc.altivec.vperm
4175 // CHECK-LE: @llvm.ppc.altivec.vperm
4176 
4177   res_vbi = vec_splat(vbi, 0);
4178 // CHECK: @llvm.ppc.altivec.vperm
4179 // CHECK-LE: @llvm.ppc.altivec.vperm
4180 
4181   res_vf  = vec_splat(vf, 0);
4182 // CHECK: @llvm.ppc.altivec.vperm
4183 // CHECK-LE: @llvm.ppc.altivec.vperm
4184 
4185   res_vsc = vec_vspltb(vsc, 0);
4186 // CHECK: @llvm.ppc.altivec.vperm
4187 // CHECK-LE: @llvm.ppc.altivec.vperm
4188 
4189   res_vuc = vec_vspltb(vuc, 0);
4190 // CHECK: @llvm.ppc.altivec.vperm
4191 // CHECK-LE: @llvm.ppc.altivec.vperm
4192 
4193   res_vbc = vec_vspltb(vbc, 0);
4194 // CHECK: @llvm.ppc.altivec.vperm
4195 // CHECK-LE: @llvm.ppc.altivec.vperm
4196 
4197   res_vs  = vec_vsplth(vs, 0);
4198 // CHECK: @llvm.ppc.altivec.vperm
4199 // CHECK-LE: @llvm.ppc.altivec.vperm
4200 
4201   res_vus = vec_vsplth(vus, 0);
4202 // CHECK: @llvm.ppc.altivec.vperm
4203 // CHECK-LE: @llvm.ppc.altivec.vperm
4204 
4205   res_vbs = vec_vsplth(vbs, 0);
4206 // CHECK: @llvm.ppc.altivec.vperm
4207 // CHECK-LE: @llvm.ppc.altivec.vperm
4208 
4209   res_vp  = vec_vsplth(vp, 0);
4210 // CHECK: @llvm.ppc.altivec.vperm
4211 // CHECK-LE: @llvm.ppc.altivec.vperm
4212 
4213   res_vi  = vec_vspltw(vi, 0);
4214 // CHECK: @llvm.ppc.altivec.vperm
4215 // CHECK-LE: @llvm.ppc.altivec.vperm
4216 
4217   res_vui = vec_vspltw(vui, 0);
4218 // CHECK: @llvm.ppc.altivec.vperm
4219 // CHECK-LE: @llvm.ppc.altivec.vperm
4220 
4221   res_vbi = vec_vspltw(vbi, 0);
4222 // CHECK: @llvm.ppc.altivec.vperm
4223 // CHECK-LE: @llvm.ppc.altivec.vperm
4224 
4225   res_vf  = vec_vspltw(vf, 0);
4226 // CHECK: @llvm.ppc.altivec.vperm
4227 // CHECK-LE: @llvm.ppc.altivec.vperm
4228 
4229   /* vec_splat_s8 */
4230   res_vsc = vec_splat_s8(0x09);                 // TODO: add check
4231   res_vsc = vec_vspltisb(0x09);                 // TODO: add check
4232 
4233   /* vec_splat_s16 */
4234   res_vs = vec_splat_s16(0x09);                 // TODO: add check
4235   res_vs = vec_vspltish(0x09);                  // TODO: add check
4236 
4237   /* vec_splat_s32 */
4238   res_vi = vec_splat_s32(0x09);                 // TODO: add check
4239   res_vi = vec_vspltisw(0x09);                  // TODO: add check
4240 
4241   /* vec_splat_u8 */
4242   res_vuc = vec_splat_u8(0x09);                 // TODO: add check
4243 
4244   /* vec_splat_u16 */
4245   res_vus = vec_splat_u16(0x09);                // TODO: add check
4246 
4247   /* vec_splat_u32 */
4248   res_vui = vec_splat_u32(0x09);                // TODO: add check
4249 
4250   /* vec_sr */
4251   res_vsc = vec_sr(vsc, vuc);
4252 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4253 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4254 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4255 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4256 
4257   res_vuc = vec_sr(vuc, vuc);
4258 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4259 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4260 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4261 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4262 
4263   res_vs  = vec_sr(vs, vus);
4264 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4265 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4266 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4267 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4268 
4269   res_vus = vec_sr(vus, vus);
4270 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4271 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4272 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4273 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4274 
4275   res_vi  = vec_sr(vi, vui);
4276 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4277 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4278 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4279 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4280 
4281   res_vui = vec_sr(vui, vui);
4282 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4283 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4284 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4285 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4286 
4287   res_vsc = vec_vsrb(vsc, vuc);
4288 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4289 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4290 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4291 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4292 
4293   res_vuc = vec_vsrb(vuc, vuc);
4294 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4295 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4296 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4297 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4298 
4299   res_vs  = vec_vsrh(vs, vus);
4300 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4301 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4302 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4303 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4304 
4305   res_vus = vec_vsrh(vus, vus);
4306 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4307 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4308 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4309 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4310 
4311   res_vi  = vec_vsrw(vi, vui);
4312 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4313 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4314 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4315 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4316 
4317   res_vui = vec_vsrw(vui, vui);
4318 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4319 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4320 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4321 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4322 
4323   /* vec_sra */
4324   res_vsc = vec_sra(vsc, vuc);
4325 // CHECK: @llvm.ppc.altivec.vsrab
4326 // CHECK-LE: @llvm.ppc.altivec.vsrab
4327 
4328   res_vuc = vec_sra(vuc, vuc);
4329 // CHECK: @llvm.ppc.altivec.vsrab
4330 // CHECK-LE: @llvm.ppc.altivec.vsrab
4331 
4332   res_vs  = vec_sra(vs, vus);
4333 // CHECK: @llvm.ppc.altivec.vsrah
4334 // CHECK-LE: @llvm.ppc.altivec.vsrah
4335 
4336   res_vus = vec_sra(vus, vus);
4337 // CHECK: @llvm.ppc.altivec.vsrah
4338 // CHECK-LE: @llvm.ppc.altivec.vsrah
4339 
4340   res_vi  = vec_sra(vi, vui);
4341 // CHECK: @llvm.ppc.altivec.vsraw
4342 // CHECK-LE: @llvm.ppc.altivec.vsraw
4343 
4344   res_vui = vec_sra(vui, vui);
4345 // CHECK: @llvm.ppc.altivec.vsraw
4346 // CHECK-LE: @llvm.ppc.altivec.vsraw
4347 
4348   res_vsc = vec_vsrab(vsc, vuc);
4349 // CHECK: @llvm.ppc.altivec.vsrab
4350 // CHECK-LE: @llvm.ppc.altivec.vsrab
4351 
4352   res_vuc = vec_vsrab(vuc, vuc);
4353 // CHECK: @llvm.ppc.altivec.vsrab
4354 // CHECK-LE: @llvm.ppc.altivec.vsrab
4355 
4356   res_vs  = vec_vsrah(vs, vus);
4357 // CHECK: @llvm.ppc.altivec.vsrah
4358 // CHECK-LE: @llvm.ppc.altivec.vsrah
4359 
4360   res_vus = vec_vsrah(vus, vus);
4361 // CHECK: @llvm.ppc.altivec.vsrah
4362 // CHECK-LE: @llvm.ppc.altivec.vsrah
4363 
4364   res_vi  = vec_vsraw(vi, vui);
4365 // CHECK: @llvm.ppc.altivec.vsraw
4366 // CHECK-LE: @llvm.ppc.altivec.vsraw
4367 
4368   res_vui = vec_vsraw(vui, vui);
4369 // CHECK: @llvm.ppc.altivec.vsraw
4370 // CHECK-LE: @llvm.ppc.altivec.vsraw
4371 
4372   /* vec_srl */
4373   res_vsc = vec_srl(vsc, vuc);
4374 // CHECK: @llvm.ppc.altivec.vsr
4375 // CHECK-LE: @llvm.ppc.altivec.vsr
4376 
4377   res_vsc = vec_srl(vsc, vus);
4378 // CHECK: @llvm.ppc.altivec.vsr
4379 // CHECK-LE: @llvm.ppc.altivec.vsr
4380 
4381   res_vsc = vec_srl(vsc, vui);
4382 // CHECK: @llvm.ppc.altivec.vsr
4383 // CHECK-LE: @llvm.ppc.altivec.vsr
4384 
4385   res_vuc = vec_srl(vuc, vuc);
4386 // CHECK: @llvm.ppc.altivec.vsr
4387 // CHECK-LE: @llvm.ppc.altivec.vsr
4388 
4389   res_vuc = vec_srl(vuc, vus);
4390 // CHECK: @llvm.ppc.altivec.vsr
4391 // CHECK-LE: @llvm.ppc.altivec.vsr
4392 
4393   res_vuc = vec_srl(vuc, vui);
4394 // CHECK: @llvm.ppc.altivec.vsr
4395 // CHECK-LE: @llvm.ppc.altivec.vsr
4396 
4397   res_vbc = vec_srl(vbc, vuc);
4398 // CHECK: @llvm.ppc.altivec.vsr
4399 // CHECK-LE: @llvm.ppc.altivec.vsr
4400 
4401   res_vbc = vec_srl(vbc, vus);
4402 // CHECK: @llvm.ppc.altivec.vsr
4403 // CHECK-LE: @llvm.ppc.altivec.vsr
4404 
4405   res_vbc = vec_srl(vbc, vui);
4406 // CHECK: @llvm.ppc.altivec.vsr
4407 // CHECK-LE: @llvm.ppc.altivec.vsr
4408 
4409   res_vs  = vec_srl(vs, vuc);
4410 // CHECK: @llvm.ppc.altivec.vsr
4411 // CHECK-LE: @llvm.ppc.altivec.vsr
4412 
4413   res_vs  = vec_srl(vs, vus);
4414 // CHECK: @llvm.ppc.altivec.vsr
4415 // CHECK-LE: @llvm.ppc.altivec.vsr
4416 
4417   res_vs  = vec_srl(vs, vui);
4418 // CHECK: @llvm.ppc.altivec.vsr
4419 // CHECK-LE: @llvm.ppc.altivec.vsr
4420 
4421   res_vus = vec_srl(vus, vuc);
4422 // CHECK: @llvm.ppc.altivec.vsr
4423 // CHECK-LE: @llvm.ppc.altivec.vsr
4424 
4425   res_vus = vec_srl(vus, vus);
4426 // CHECK: @llvm.ppc.altivec.vsr
4427 // CHECK-LE: @llvm.ppc.altivec.vsr
4428 
4429   res_vus = vec_srl(vus, vui);
4430 // CHECK: @llvm.ppc.altivec.vsr
4431 // CHECK-LE: @llvm.ppc.altivec.vsr
4432 
4433   res_vbs = vec_srl(vbs, vuc);
4434 // CHECK: @llvm.ppc.altivec.vsr
4435 // CHECK-LE: @llvm.ppc.altivec.vsr
4436 
4437   res_vbs = vec_srl(vbs, vus);
4438 // CHECK: @llvm.ppc.altivec.vsr
4439 // CHECK-LE: @llvm.ppc.altivec.vsr
4440 
4441   res_vbs = vec_srl(vbs, vui);
4442 // CHECK: @llvm.ppc.altivec.vsr
4443 // CHECK-LE: @llvm.ppc.altivec.vsr
4444 
4445   res_vp  = vec_srl(vp, vuc);
4446 // CHECK: @llvm.ppc.altivec.vsr
4447 // CHECK-LE: @llvm.ppc.altivec.vsr
4448 
4449   res_vp  = vec_srl(vp, vus);
4450 // CHECK: @llvm.ppc.altivec.vsr
4451 // CHECK-LE: @llvm.ppc.altivec.vsr
4452 
4453   res_vp  = vec_srl(vp, vui);
4454 // CHECK: @llvm.ppc.altivec.vsr
4455 // CHECK-LE: @llvm.ppc.altivec.vsr
4456 
4457   res_vi  = vec_srl(vi, vuc);
4458 // CHECK: @llvm.ppc.altivec.vsr
4459 // CHECK-LE: @llvm.ppc.altivec.vsr
4460 
4461   res_vi  = vec_srl(vi, vus);
4462 // CHECK: @llvm.ppc.altivec.vsr
4463 // CHECK-LE: @llvm.ppc.altivec.vsr
4464 
4465   res_vi  = vec_srl(vi, vui);
4466 // CHECK: @llvm.ppc.altivec.vsr
4467 // CHECK-LE: @llvm.ppc.altivec.vsr
4468 
4469   res_vui = vec_srl(vui, vuc);
4470 // CHECK: @llvm.ppc.altivec.vsr
4471 // CHECK-LE: @llvm.ppc.altivec.vsr
4472 
4473   res_vui = vec_srl(vui, vus);
4474 // CHECK: @llvm.ppc.altivec.vsr
4475 // CHECK-LE: @llvm.ppc.altivec.vsr
4476 
4477   res_vui = vec_srl(vui, vui);
4478 // CHECK: @llvm.ppc.altivec.vsr
4479 // CHECK-LE: @llvm.ppc.altivec.vsr
4480 
4481   res_vbi = vec_srl(vbi, vuc);
4482 // CHECK: @llvm.ppc.altivec.vsr
4483 // CHECK-LE: @llvm.ppc.altivec.vsr
4484 
4485   res_vbi = vec_srl(vbi, vus);
4486 // CHECK: @llvm.ppc.altivec.vsr
4487 // CHECK-LE: @llvm.ppc.altivec.vsr
4488 
4489   res_vbi = vec_srl(vbi, vui);
4490 // CHECK: @llvm.ppc.altivec.vsr
4491 // CHECK-LE: @llvm.ppc.altivec.vsr
4492 
4493   res_vsc = vec_vsr(vsc, vuc);
4494 // CHECK: @llvm.ppc.altivec.vsr
4495 // CHECK-LE: @llvm.ppc.altivec.vsr
4496 
4497   res_vsc = vec_vsr(vsc, vus);
4498 // CHECK: @llvm.ppc.altivec.vsr
4499 // CHECK-LE: @llvm.ppc.altivec.vsr
4500 
4501   res_vsc = vec_vsr(vsc, vui);
4502 // CHECK: @llvm.ppc.altivec.vsr
4503 // CHECK-LE: @llvm.ppc.altivec.vsr
4504 
4505   res_vuc = vec_vsr(vuc, vuc);
4506 // CHECK: @llvm.ppc.altivec.vsr
4507 // CHECK-LE: @llvm.ppc.altivec.vsr
4508 
4509   res_vuc = vec_vsr(vuc, vus);
4510 // CHECK: @llvm.ppc.altivec.vsr
4511 // CHECK-LE: @llvm.ppc.altivec.vsr
4512 
4513   res_vuc = vec_vsr(vuc, vui);
4514 // CHECK: @llvm.ppc.altivec.vsr
4515 // CHECK-LE: @llvm.ppc.altivec.vsr
4516 
4517   res_vbc = vec_vsr(vbc, vuc);
4518 // CHECK: @llvm.ppc.altivec.vsr
4519 // CHECK-LE: @llvm.ppc.altivec.vsr
4520 
4521   res_vbc = vec_vsr(vbc, vus);
4522 // CHECK: @llvm.ppc.altivec.vsr
4523 // CHECK-LE: @llvm.ppc.altivec.vsr
4524 
4525   res_vbc = vec_vsr(vbc, vui);
4526 // CHECK: @llvm.ppc.altivec.vsr
4527 // CHECK-LE: @llvm.ppc.altivec.vsr
4528 
4529   res_vs  = vec_vsr(vs, vuc);
4530 // CHECK: @llvm.ppc.altivec.vsr
4531 // CHECK-LE: @llvm.ppc.altivec.vsr
4532 
4533   res_vs  = vec_vsr(vs, vus);
4534 // CHECK: @llvm.ppc.altivec.vsr
4535 // CHECK-LE: @llvm.ppc.altivec.vsr
4536 
4537   res_vs  = vec_vsr(vs, vui);
4538 // CHECK: @llvm.ppc.altivec.vsr
4539 // CHECK-LE: @llvm.ppc.altivec.vsr
4540 
4541   res_vus = vec_vsr(vus, vuc);
4542 // CHECK: @llvm.ppc.altivec.vsr
4543 // CHECK-LE: @llvm.ppc.altivec.vsr
4544 
4545   res_vus = vec_vsr(vus, vus);
4546 // CHECK: @llvm.ppc.altivec.vsr
4547 // CHECK-LE: @llvm.ppc.altivec.vsr
4548 
4549   res_vus = vec_vsr(vus, vui);
4550 // CHECK: @llvm.ppc.altivec.vsr
4551 // CHECK-LE: @llvm.ppc.altivec.vsr
4552 
4553   res_vbs = vec_vsr(vbs, vuc);
4554 // CHECK: @llvm.ppc.altivec.vsr
4555 // CHECK-LE: @llvm.ppc.altivec.vsr
4556 
4557   res_vbs = vec_vsr(vbs, vus);
4558 // CHECK: @llvm.ppc.altivec.vsr
4559 // CHECK-LE: @llvm.ppc.altivec.vsr
4560 
4561   res_vbs = vec_vsr(vbs, vui);
4562 // CHECK: @llvm.ppc.altivec.vsr
4563 // CHECK-LE: @llvm.ppc.altivec.vsr
4564 
4565   res_vp  = vec_vsr(vp, vuc);
4566 // CHECK: @llvm.ppc.altivec.vsr
4567 // CHECK-LE: @llvm.ppc.altivec.vsr
4568 
4569   res_vp  = vec_vsr(vp, vus);
4570 // CHECK: @llvm.ppc.altivec.vsr
4571 // CHECK-LE: @llvm.ppc.altivec.vsr
4572 
4573   res_vp  = vec_vsr(vp, vui);
4574 // CHECK: @llvm.ppc.altivec.vsr
4575 // CHECK-LE: @llvm.ppc.altivec.vsr
4576 
4577   res_vi  = vec_vsr(vi, vuc);
4578 // CHECK: @llvm.ppc.altivec.vsr
4579 // CHECK-LE: @llvm.ppc.altivec.vsr
4580 
4581   res_vi  = vec_vsr(vi, vus);
4582 // CHECK: @llvm.ppc.altivec.vsr
4583 // CHECK-LE: @llvm.ppc.altivec.vsr
4584 
4585   res_vi  = vec_vsr(vi, vui);
4586 // CHECK: @llvm.ppc.altivec.vsr
4587 // CHECK-LE: @llvm.ppc.altivec.vsr
4588 
4589   res_vui = vec_vsr(vui, vuc);
4590 // CHECK: @llvm.ppc.altivec.vsr
4591 // CHECK-LE: @llvm.ppc.altivec.vsr
4592 
4593   res_vui = vec_vsr(vui, vus);
4594 // CHECK: @llvm.ppc.altivec.vsr
4595 // CHECK-LE: @llvm.ppc.altivec.vsr
4596 
4597   res_vui = vec_vsr(vui, vui);
4598 // CHECK: @llvm.ppc.altivec.vsr
4599 // CHECK-LE: @llvm.ppc.altivec.vsr
4600 
4601   res_vbi = vec_vsr(vbi, vuc);
4602 // CHECK: @llvm.ppc.altivec.vsr
4603 // CHECK-LE: @llvm.ppc.altivec.vsr
4604 
4605   res_vbi = vec_vsr(vbi, vus);
4606 // CHECK: @llvm.ppc.altivec.vsr
4607 // CHECK-LE: @llvm.ppc.altivec.vsr
4608 
4609   res_vbi = vec_vsr(vbi, vui);
4610 // CHECK: @llvm.ppc.altivec.vsr
4611 // CHECK-LE: @llvm.ppc.altivec.vsr
4612 
4613   /* vec_sro */
4614   res_vsc = vec_sro(vsc, vsc);
4615 // CHECK: @llvm.ppc.altivec.vsro
4616 // CHECK-LE: @llvm.ppc.altivec.vsro
4617 
4618   res_vsc = vec_sro(vsc, vuc);
4619 // CHECK: @llvm.ppc.altivec.vsro
4620 // CHECK-LE: @llvm.ppc.altivec.vsro
4621 
4622   res_vuc = vec_sro(vuc, vsc);
4623 // CHECK: @llvm.ppc.altivec.vsro
4624 // CHECK-LE: @llvm.ppc.altivec.vsro
4625 
4626   res_vuc = vec_sro(vuc, vuc);
4627 // CHECK: @llvm.ppc.altivec.vsro
4628 // CHECK-LE: @llvm.ppc.altivec.vsro
4629 
4630   res_vs  = vec_sro(vs, vsc);
4631 // CHECK: @llvm.ppc.altivec.vsro
4632 // CHECK-LE: @llvm.ppc.altivec.vsro
4633 
4634   res_vs  = vec_sro(vs, vuc);
4635 // CHECK: @llvm.ppc.altivec.vsro
4636 // CHECK-LE: @llvm.ppc.altivec.vsro
4637 
4638   res_vus = vec_sro(vus, vsc);
4639 // CHECK: @llvm.ppc.altivec.vsro
4640 // CHECK-LE: @llvm.ppc.altivec.vsro
4641 
4642   res_vus = vec_sro(vus, vuc);
4643 // CHECK: @llvm.ppc.altivec.vsro
4644 // CHECK-LE: @llvm.ppc.altivec.vsro
4645 
4646   res_vp  = vec_sro(vp, vsc);
4647 // CHECK: @llvm.ppc.altivec.vsro
4648 // CHECK-LE: @llvm.ppc.altivec.vsro
4649 
4650   res_vp  = vec_sro(vp, vuc);
4651 // CHECK: @llvm.ppc.altivec.vsro
4652 // CHECK-LE: @llvm.ppc.altivec.vsro
4653 
4654   res_vi  = vec_sro(vi, vsc);
4655 // CHECK: @llvm.ppc.altivec.vsro
4656 // CHECK-LE: @llvm.ppc.altivec.vsro
4657 
4658   res_vi  = vec_sro(vi, vuc);
4659 // CHECK: @llvm.ppc.altivec.vsro
4660 // CHECK-LE: @llvm.ppc.altivec.vsro
4661 
4662   res_vui = vec_sro(vui, vsc);
4663 // CHECK: @llvm.ppc.altivec.vsro
4664 // CHECK-LE: @llvm.ppc.altivec.vsro
4665 
4666   res_vui = vec_sro(vui, vuc);
4667 // CHECK: @llvm.ppc.altivec.vsro
4668 // CHECK-LE: @llvm.ppc.altivec.vsro
4669 
4670   res_vf  = vec_sro(vf, vsc);
4671 // CHECK: @llvm.ppc.altivec.vsro
4672 // CHECK-LE: @llvm.ppc.altivec.vsro
4673 
4674   res_vf  = vec_sro(vf, vuc);
4675 // CHECK: @llvm.ppc.altivec.vsro
4676 // CHECK-LE: @llvm.ppc.altivec.vsro
4677 
4678   res_vsc = vec_vsro(vsc, vsc);
4679 // CHECK: @llvm.ppc.altivec.vsro
4680 // CHECK-LE: @llvm.ppc.altivec.vsro
4681 
4682   res_vsc = vec_vsro(vsc, vuc);
4683 // CHECK: @llvm.ppc.altivec.vsro
4684 // CHECK-LE: @llvm.ppc.altivec.vsro
4685 
4686   res_vuc = vec_vsro(vuc, vsc);
4687 // CHECK: @llvm.ppc.altivec.vsro
4688 // CHECK-LE: @llvm.ppc.altivec.vsro
4689 
4690   res_vuc = vec_vsro(vuc, vuc);
4691 // CHECK: @llvm.ppc.altivec.vsro
4692 // CHECK-LE: @llvm.ppc.altivec.vsro
4693 
4694   res_vs  = vec_vsro(vs, vsc);
4695 // CHECK: @llvm.ppc.altivec.vsro
4696 // CHECK-LE: @llvm.ppc.altivec.vsro
4697 
4698   res_vs  = vec_vsro(vs, vuc);
4699 // CHECK: @llvm.ppc.altivec.vsro
4700 // CHECK-LE: @llvm.ppc.altivec.vsro
4701 
4702   res_vus = vec_vsro(vus, vsc);
4703 // CHECK: @llvm.ppc.altivec.vsro
4704 // CHECK-LE: @llvm.ppc.altivec.vsro
4705 
4706   res_vus = vec_vsro(vus, vuc);
4707 // CHECK: @llvm.ppc.altivec.vsro
4708 // CHECK-LE: @llvm.ppc.altivec.vsro
4709 
4710   res_vp  = vec_vsro(vp, vsc);
4711 // CHECK: @llvm.ppc.altivec.vsro
4712 // CHECK-LE: @llvm.ppc.altivec.vsro
4713 
4714   res_vp  = vec_vsro(vp, vuc);
4715 // CHECK: @llvm.ppc.altivec.vsro
4716 // CHECK-LE: @llvm.ppc.altivec.vsro
4717 
4718   res_vi  = vec_vsro(vi, vsc);
4719 // CHECK: @llvm.ppc.altivec.vsro
4720 // CHECK-LE: @llvm.ppc.altivec.vsro
4721 
4722   res_vi  = vec_vsro(vi, vuc);
4723 // CHECK: @llvm.ppc.altivec.vsro
4724 // CHECK-LE: @llvm.ppc.altivec.vsro
4725 
4726   res_vui = vec_vsro(vui, vsc);
4727 // CHECK: @llvm.ppc.altivec.vsro
4728 // CHECK-LE: @llvm.ppc.altivec.vsro
4729 
4730   res_vui = vec_vsro(vui, vuc);
4731 // CHECK: @llvm.ppc.altivec.vsro
4732 // CHECK-LE: @llvm.ppc.altivec.vsro
4733 
4734   res_vf  = vec_vsro(vf, vsc);
4735 // CHECK: @llvm.ppc.altivec.vsro
4736 // CHECK-LE: @llvm.ppc.altivec.vsro
4737 
4738   res_vf  = vec_vsro(vf, vuc);
4739 // CHECK: @llvm.ppc.altivec.vsro
4740 // CHECK-LE: @llvm.ppc.altivec.vsro
4741 
4742   /* vec_st */
4743   vec_st(vsc, 0, &vsc);
4744 // CHECK: @llvm.ppc.altivec.stvx
4745 // CHECK-LE: @llvm.ppc.altivec.stvx
4746 
4747   vec_st(vsc, 0, &param_sc);
4748 // CHECK: @llvm.ppc.altivec.stvx
4749 // CHECK-LE: @llvm.ppc.altivec.stvx
4750 
4751   vec_st(vuc, 0, &vuc);
4752 // CHECK: @llvm.ppc.altivec.stvx
4753 // CHECK-LE: @llvm.ppc.altivec.stvx
4754 
4755   vec_st(vuc, 0, &param_uc);
4756 // CHECK: @llvm.ppc.altivec.stvx
4757 // CHECK-LE: @llvm.ppc.altivec.stvx
4758 
4759   vec_st(vbc, 0, &param_uc);
4760 // CHECK: @llvm.ppc.altivec.stvx
4761 // CHECK-LE: @llvm.ppc.altivec.stvx
4762 
4763   vec_st(vbc, 0, &param_uc);
4764 // CHECK: @llvm.ppc.altivec.stvx
4765 // CHECK-LE: @llvm.ppc.altivec.stvx
4766 
4767   vec_st(vbc, 0, &vbc);
4768 // CHECK: @llvm.ppc.altivec.stvx
4769 // CHECK-LE: @llvm.ppc.altivec.stvx
4770 
4771   vec_st(vs, 0, &vs);
4772 // CHECK: @llvm.ppc.altivec.stvx
4773 // CHECK-LE: @llvm.ppc.altivec.stvx
4774 
4775   vec_st(vs, 0, &param_s);
4776 // CHECK: @llvm.ppc.altivec.stvx
4777 // CHECK-LE: @llvm.ppc.altivec.stvx
4778 
4779   vec_st(vus, 0, &vus);
4780 // CHECK: @llvm.ppc.altivec.stvx
4781 // CHECK-LE: @llvm.ppc.altivec.stvx
4782 
4783   vec_st(vus, 0, &param_us);
4784 // CHECK: @llvm.ppc.altivec.stvx
4785 // CHECK-LE: @llvm.ppc.altivec.stvx
4786 
4787   vec_st(vbs, 0, &param_s);
4788 // CHECK: @llvm.ppc.altivec.stvx
4789 // CHECK-LE: @llvm.ppc.altivec.stvx
4790 
4791   vec_st(vbs, 0, &param_us);
4792 // CHECK: @llvm.ppc.altivec.stvx
4793 // CHECK-LE: @llvm.ppc.altivec.stvx
4794 
4795   vec_st(vbs, 0, &vbs);
4796 // CHECK: @llvm.ppc.altivec.stvx
4797 // CHECK-LE: @llvm.ppc.altivec.stvx
4798 
4799   vec_st(vp, 0, &param_s);
4800 // CHECK: @llvm.ppc.altivec.stvx
4801 // CHECK-LE: @llvm.ppc.altivec.stvx
4802 
4803   vec_st(vp, 0, &param_us);
4804 // CHECK: @llvm.ppc.altivec.stvx
4805 // CHECK-LE: @llvm.ppc.altivec.stvx
4806 
4807   vec_st(vp, 0, &vp);
4808 // CHECK: @llvm.ppc.altivec.stvx
4809 // CHECK-LE: @llvm.ppc.altivec.stvx
4810 
4811   vec_st(vi, 0, &vi);
4812 // CHECK: @llvm.ppc.altivec.stvx
4813 // CHECK-LE: @llvm.ppc.altivec.stvx
4814 
4815   vec_st(vi, 0, &param_i);
4816 // CHECK: @llvm.ppc.altivec.stvx
4817 // CHECK-LE: @llvm.ppc.altivec.stvx
4818 
4819   vec_st(vui, 0, &vui);
4820 // CHECK: @llvm.ppc.altivec.stvx
4821 // CHECK-LE: @llvm.ppc.altivec.stvx
4822 
4823   vec_st(vui, 0, &param_ui);
4824 // CHECK: @llvm.ppc.altivec.stvx
4825 // CHECK-LE: @llvm.ppc.altivec.stvx
4826 
4827   vec_st(vbi, 0, &param_i);
4828 // CHECK: @llvm.ppc.altivec.stvx
4829 // CHECK-LE: @llvm.ppc.altivec.stvx
4830 
4831   vec_st(vbi, 0, &param_ui);
4832 // CHECK: @llvm.ppc.altivec.stvx
4833 // CHECK-LE: @llvm.ppc.altivec.stvx
4834 
4835   vec_st(vbi, 0, &vbi);
4836 // CHECK: @llvm.ppc.altivec.stvx
4837 // CHECK-LE: @llvm.ppc.altivec.stvx
4838 
4839   vec_st(vf, 0, &vf);
4840 // CHECK: @llvm.ppc.altivec.stvx
4841 // CHECK-LE: @llvm.ppc.altivec.stvx
4842 
4843   vec_st(vf, 0, &param_f);
4844 // CHECK: @llvm.ppc.altivec.stvx
4845 // CHECK-LE: @llvm.ppc.altivec.stvx
4846 
4847   vec_stvx(vsc, 0, &vsc);
4848 // CHECK: @llvm.ppc.altivec.stvx
4849 // CHECK-LE: @llvm.ppc.altivec.stvx
4850 
4851   vec_stvx(vsc, 0, &param_sc);
4852 // CHECK: @llvm.ppc.altivec.stvx
4853 // CHECK-LE: @llvm.ppc.altivec.stvx
4854 
4855   vec_stvx(vuc, 0, &vuc);
4856 // CHECK: @llvm.ppc.altivec.stvx
4857 // CHECK-LE: @llvm.ppc.altivec.stvx
4858 
4859   vec_stvx(vuc, 0, &param_uc);
4860 // CHECK: @llvm.ppc.altivec.stvx
4861 // CHECK-LE: @llvm.ppc.altivec.stvx
4862 
4863   vec_stvx(vbc, 0, &param_uc);
4864 // CHECK: @llvm.ppc.altivec.stvx
4865 // CHECK-LE: @llvm.ppc.altivec.stvx
4866 
4867   vec_stvx(vbc, 0, &param_uc);
4868 // CHECK: @llvm.ppc.altivec.stvx
4869 // CHECK-LE: @llvm.ppc.altivec.stvx
4870 
4871   vec_stvx(vbc, 0, &vbc);
4872 // CHECK: @llvm.ppc.altivec.stvx
4873 // CHECK-LE: @llvm.ppc.altivec.stvx
4874 
4875   vec_stvx(vs, 0, &vs);
4876 // CHECK: @llvm.ppc.altivec.stvx
4877 // CHECK-LE: @llvm.ppc.altivec.stvx
4878 
4879   vec_stvx(vs, 0, &param_s);
4880 // CHECK: @llvm.ppc.altivec.stvx
4881 // CHECK-LE: @llvm.ppc.altivec.stvx
4882 
4883   vec_stvx(vus, 0, &vus);
4884 // CHECK: @llvm.ppc.altivec.stvx
4885 // CHECK-LE: @llvm.ppc.altivec.stvx
4886 
4887   vec_stvx(vus, 0, &param_us);
4888 // CHECK: @llvm.ppc.altivec.stvx
4889 // CHECK-LE: @llvm.ppc.altivec.stvx
4890 
4891   vec_stvx(vbs, 0, &param_s);
4892 // CHECK: @llvm.ppc.altivec.stvx
4893 // CHECK-LE: @llvm.ppc.altivec.stvx
4894 
4895   vec_stvx(vbs, 0, &param_us);
4896 // CHECK: @llvm.ppc.altivec.stvx
4897 // CHECK-LE: @llvm.ppc.altivec.stvx
4898 
4899   vec_stvx(vbs, 0, &vbs);
4900 // CHECK: @llvm.ppc.altivec.stvx
4901 // CHECK-LE: @llvm.ppc.altivec.stvx
4902 
4903   vec_stvx(vp, 0, &param_s);
4904 // CHECK: @llvm.ppc.altivec.stvx
4905 // CHECK-LE: @llvm.ppc.altivec.stvx
4906 
4907   vec_stvx(vp, 0, &param_us);
4908 // CHECK: @llvm.ppc.altivec.stvx
4909 // CHECK-LE: @llvm.ppc.altivec.stvx
4910 
4911   vec_stvx(vp, 0, &vp);
4912 // CHECK: @llvm.ppc.altivec.stvx
4913 // CHECK-LE: @llvm.ppc.altivec.stvx
4914 
4915   vec_stvx(vi, 0, &vi);
4916 // CHECK: @llvm.ppc.altivec.stvx
4917 // CHECK-LE: @llvm.ppc.altivec.stvx
4918 
4919   vec_stvx(vi, 0, &param_i);
4920 // CHECK: @llvm.ppc.altivec.stvx
4921 // CHECK-LE: @llvm.ppc.altivec.stvx
4922 
4923   vec_stvx(vui, 0, &vui);
4924 // CHECK: @llvm.ppc.altivec.stvx
4925 // CHECK-LE: @llvm.ppc.altivec.stvx
4926 
4927   vec_stvx(vui, 0, &param_ui);
4928 // CHECK: @llvm.ppc.altivec.stvx
4929 // CHECK-LE: @llvm.ppc.altivec.stvx
4930 
4931   vec_stvx(vbi, 0, &param_i);
4932 // CHECK: @llvm.ppc.altivec.stvx
4933 // CHECK-LE: @llvm.ppc.altivec.stvx
4934 
4935   vec_stvx(vbi, 0, &param_ui);
4936 // CHECK: @llvm.ppc.altivec.stvx
4937 // CHECK-LE: @llvm.ppc.altivec.stvx
4938 
4939   vec_stvx(vbi, 0, &vbi);
4940 // CHECK: @llvm.ppc.altivec.stvx
4941 // CHECK-LE: @llvm.ppc.altivec.stvx
4942 
4943   vec_stvx(vf, 0, &vf);
4944 // CHECK: @llvm.ppc.altivec.stvx
4945 // CHECK-LE: @llvm.ppc.altivec.stvx
4946 
4947   vec_stvx(vf, 0, &param_f);
4948 // CHECK: @llvm.ppc.altivec.stvx
4949 // CHECK-LE: @llvm.ppc.altivec.stvx
4950 
4951   /* vec_ste */
4952   vec_ste(vsc, 0, &param_sc);
4953 // CHECK: @llvm.ppc.altivec.stvebx
4954 // CHECK-LE: @llvm.ppc.altivec.stvebx
4955 
4956   vec_ste(vuc, 0, &param_uc);
4957 // CHECK: @llvm.ppc.altivec.stvebx
4958 // CHECK-LE: @llvm.ppc.altivec.stvebx
4959 
4960   vec_ste(vbc, 0, &param_sc);
4961 // CHECK: @llvm.ppc.altivec.stvebx
4962 // CHECK-LE: @llvm.ppc.altivec.stvebx
4963 
4964   vec_ste(vbc, 0, &param_uc);
4965 // CHECK: @llvm.ppc.altivec.stvebx
4966 // CHECK-LE: @llvm.ppc.altivec.stvebx
4967 
4968   vec_ste(vs, 0, &param_s);
4969 // CHECK: @llvm.ppc.altivec.stvehx
4970 // CHECK-LE: @llvm.ppc.altivec.stvehx
4971 
4972   vec_ste(vus, 0, &param_us);
4973 // CHECK: @llvm.ppc.altivec.stvehx
4974 // CHECK-LE: @llvm.ppc.altivec.stvehx
4975 
4976   vec_ste(vbs, 0, &param_s);
4977 // CHECK: @llvm.ppc.altivec.stvehx
4978 // CHECK-LE: @llvm.ppc.altivec.stvehx
4979 
4980   vec_ste(vbs, 0, &param_us);
4981 // CHECK: @llvm.ppc.altivec.stvehx
4982 // CHECK-LE: @llvm.ppc.altivec.stvehx
4983 
4984   vec_ste(vp, 0, &param_s);
4985 // CHECK: @llvm.ppc.altivec.stvehx
4986 // CHECK-LE: @llvm.ppc.altivec.stvehx
4987 
4988   vec_ste(vp, 0, &param_us);
4989 // CHECK: @llvm.ppc.altivec.stvehx
4990 // CHECK-LE: @llvm.ppc.altivec.stvehx
4991 
4992   vec_ste(vi, 0, &param_i);
4993 // CHECK: @llvm.ppc.altivec.stvewx
4994 // CHECK-LE: @llvm.ppc.altivec.stvewx
4995 
4996   vec_ste(vui, 0, &param_ui);
4997 // CHECK: @llvm.ppc.altivec.stvewx
4998 // CHECK-LE: @llvm.ppc.altivec.stvewx
4999 
5000   vec_ste(vbi, 0, &param_i);
5001 // CHECK: @llvm.ppc.altivec.stvewx
5002 // CHECK-LE: @llvm.ppc.altivec.stvewx
5003 
5004   vec_ste(vbi, 0, &param_ui);
5005 // CHECK: @llvm.ppc.altivec.stvewx
5006 // CHECK-LE: @llvm.ppc.altivec.stvewx
5007 
5008   vec_ste(vf, 0, &param_f);
5009 // CHECK: @llvm.ppc.altivec.stvewx
5010 // CHECK-LE: @llvm.ppc.altivec.stvewx
5011 
5012   vec_stvebx(vsc, 0, &param_sc);
5013 // CHECK: @llvm.ppc.altivec.stvebx
5014 // CHECK-LE: @llvm.ppc.altivec.stvebx
5015 
5016   vec_stvebx(vuc, 0, &param_uc);
5017 // CHECK: @llvm.ppc.altivec.stvebx
5018 // CHECK-LE: @llvm.ppc.altivec.stvebx
5019 
5020   vec_stvebx(vbc, 0, &param_sc);
5021 // CHECK: @llvm.ppc.altivec.stvebx
5022 // CHECK-LE: @llvm.ppc.altivec.stvebx
5023 
5024   vec_stvebx(vbc, 0, &param_uc);
5025 // CHECK: @llvm.ppc.altivec.stvebx
5026 // CHECK-LE: @llvm.ppc.altivec.stvebx
5027 
5028   vec_stvehx(vs, 0, &param_s);
5029 // CHECK: @llvm.ppc.altivec.stvehx
5030 // CHECK-LE: @llvm.ppc.altivec.stvehx
5031 
5032   vec_stvehx(vus, 0, &param_us);
5033 // CHECK: @llvm.ppc.altivec.stvehx
5034 // CHECK-LE: @llvm.ppc.altivec.stvehx
5035 
5036   vec_stvehx(vbs, 0, &param_s);
5037 // CHECK: @llvm.ppc.altivec.stvehx
5038 // CHECK-LE: @llvm.ppc.altivec.stvehx
5039 
5040   vec_stvehx(vbs, 0, &param_us);
5041 // CHECK: @llvm.ppc.altivec.stvehx
5042 // CHECK-LE: @llvm.ppc.altivec.stvehx
5043 
5044   vec_stvehx(vp, 0, &param_s);
5045 // CHECK: @llvm.ppc.altivec.stvehx
5046 // CHECK-LE: @llvm.ppc.altivec.stvehx
5047 
5048   vec_stvehx(vp, 0, &param_us);
5049 // CHECK: @llvm.ppc.altivec.stvehx
5050 // CHECK-LE: @llvm.ppc.altivec.stvehx
5051 
5052   vec_stvewx(vi, 0, &param_i);
5053 // CHECK: @llvm.ppc.altivec.stvewx
5054 // CHECK-LE: @llvm.ppc.altivec.stvewx
5055 
5056   vec_stvewx(vui, 0, &param_ui);
5057 // CHECK: @llvm.ppc.altivec.stvewx
5058 // CHECK-LE: @llvm.ppc.altivec.stvewx
5059 
5060   vec_stvewx(vbi, 0, &param_i);
5061 // CHECK: @llvm.ppc.altivec.stvewx
5062 // CHECK-LE: @llvm.ppc.altivec.stvewx
5063 
5064   vec_stvewx(vbi, 0, &param_ui);
5065 // CHECK: @llvm.ppc.altivec.stvewx
5066 // CHECK-LE: @llvm.ppc.altivec.stvewx
5067 
5068   vec_stvewx(vf, 0, &param_f);
5069 // CHECK: @llvm.ppc.altivec.stvewx
5070 // CHECK-LE: @llvm.ppc.altivec.stvewx
5071 
5072   /* vec_stl */
5073   vec_stl(vsc, 0, &vsc);
5074 // CHECK: @llvm.ppc.altivec.stvxl
5075 // CHECK-LE: @llvm.ppc.altivec.stvxl
5076 
5077   vec_stl(vsc, 0, &param_sc);
5078 // CHECK: @llvm.ppc.altivec.stvxl
5079 // CHECK-LE: @llvm.ppc.altivec.stvxl
5080 
5081   vec_stl(vuc, 0, &vuc);
5082 // CHECK: @llvm.ppc.altivec.stvxl
5083 // CHECK-LE: @llvm.ppc.altivec.stvxl
5084 
5085   vec_stl(vuc, 0, &param_uc);
5086 // CHECK: @llvm.ppc.altivec.stvxl
5087 // CHECK-LE: @llvm.ppc.altivec.stvxl
5088 
5089   vec_stl(vbc, 0, &param_sc);
5090 // CHECK: @llvm.ppc.altivec.stvxl
5091 // CHECK-LE: @llvm.ppc.altivec.stvxl
5092 
5093   vec_stl(vbc, 0, &param_uc);
5094 // CHECK: @llvm.ppc.altivec.stvxl
5095 // CHECK-LE: @llvm.ppc.altivec.stvxl
5096 
5097   vec_stl(vbc, 0, &vbc);
5098 // CHECK: @llvm.ppc.altivec.stvxl
5099 // CHECK-LE: @llvm.ppc.altivec.stvxl
5100 
5101   vec_stl(vs, 0, &vs);
5102 // CHECK: @llvm.ppc.altivec.stvxl
5103 // CHECK-LE: @llvm.ppc.altivec.stvxl
5104 
5105   vec_stl(vs, 0, &param_s);
5106 // CHECK: @llvm.ppc.altivec.stvxl
5107 // CHECK-LE: @llvm.ppc.altivec.stvxl
5108 
5109   vec_stl(vus, 0, &vus);
5110 // CHECK: @llvm.ppc.altivec.stvxl
5111 // CHECK-LE: @llvm.ppc.altivec.stvxl
5112 
5113   vec_stl(vus, 0, &param_us);
5114 // CHECK: @llvm.ppc.altivec.stvxl
5115 // CHECK-LE: @llvm.ppc.altivec.stvxl
5116 
5117   vec_stl(vbs, 0, &param_s);
5118 // CHECK: @llvm.ppc.altivec.stvxl
5119 // CHECK-LE: @llvm.ppc.altivec.stvxl
5120 
5121   vec_stl(vbs, 0, &param_us);
5122 // CHECK: @llvm.ppc.altivec.stvxl
5123 // CHECK-LE: @llvm.ppc.altivec.stvxl
5124 
5125   vec_stl(vbs, 0, &vbs);
5126 // CHECK: @llvm.ppc.altivec.stvxl
5127 // CHECK-LE: @llvm.ppc.altivec.stvxl
5128 
5129   vec_stl(vp, 0, &param_s);
5130 // CHECK: @llvm.ppc.altivec.stvxl
5131 // CHECK-LE: @llvm.ppc.altivec.stvxl
5132 
5133   vec_stl(vp, 0, &param_us);
5134 // CHECK: @llvm.ppc.altivec.stvxl
5135 // CHECK-LE: @llvm.ppc.altivec.stvxl
5136 
5137   vec_stl(vp, 0, &vp);
5138 // CHECK: @llvm.ppc.altivec.stvxl
5139 // CHECK-LE: @llvm.ppc.altivec.stvxl
5140 
5141   vec_stl(vi, 0, &vi);
5142 // CHECK: @llvm.ppc.altivec.stvxl
5143 // CHECK-LE: @llvm.ppc.altivec.stvxl
5144 
5145   vec_stl(vi, 0, &param_i);
5146 // CHECK: @llvm.ppc.altivec.stvxl
5147 // CHECK-LE: @llvm.ppc.altivec.stvxl
5148 
5149   vec_stl(vui, 0, &vui);
5150 // CHECK: @llvm.ppc.altivec.stvxl
5151 // CHECK-LE: @llvm.ppc.altivec.stvxl
5152 
5153   vec_stl(vui, 0, &param_ui);
5154 // CHECK: @llvm.ppc.altivec.stvxl
5155 // CHECK-LE: @llvm.ppc.altivec.stvxl
5156 
5157   vec_stl(vbi, 0, &param_i);
5158 // CHECK: @llvm.ppc.altivec.stvxl
5159 // CHECK-LE: @llvm.ppc.altivec.stvxl
5160 
5161   vec_stl(vbi, 0, &param_ui);
5162 // CHECK: @llvm.ppc.altivec.stvxl
5163 // CHECK-LE: @llvm.ppc.altivec.stvxl
5164 
5165   vec_stl(vbi, 0, &vbi);
5166 // CHECK: @llvm.ppc.altivec.stvxl
5167 // CHECK-LE: @llvm.ppc.altivec.stvxl
5168 
5169   vec_stl(vf, 0, &vf);
5170 // CHECK: @llvm.ppc.altivec.stvxl
5171 // CHECK-LE: @llvm.ppc.altivec.stvxl
5172 
5173   vec_stl(vf, 0, &param_f);
5174 // CHECK: @llvm.ppc.altivec.stvxl
5175 // CHECK-LE: @llvm.ppc.altivec.stvxl
5176 
5177   vec_stvxl(vsc, 0, &vsc);
5178 // CHECK: @llvm.ppc.altivec.stvxl
5179 // CHECK-LE: @llvm.ppc.altivec.stvxl
5180 
5181   vec_stvxl(vsc, 0, &param_sc);
5182 // CHECK: @llvm.ppc.altivec.stvxl
5183 // CHECK-LE: @llvm.ppc.altivec.stvxl
5184 
5185   vec_stvxl(vuc, 0, &vuc);
5186 // CHECK: @llvm.ppc.altivec.stvxl
5187 // CHECK-LE: @llvm.ppc.altivec.stvxl
5188 
5189   vec_stvxl(vuc, 0, &param_uc);
5190 // CHECK: @llvm.ppc.altivec.stvxl
5191 // CHECK-LE: @llvm.ppc.altivec.stvxl
5192 
5193   vec_stvxl(vbc, 0, &param_sc);
5194 // CHECK: @llvm.ppc.altivec.stvxl
5195 // CHECK-LE: @llvm.ppc.altivec.stvxl
5196 
5197   vec_stvxl(vbc, 0, &param_uc);
5198 // CHECK: @llvm.ppc.altivec.stvxl
5199 // CHECK-LE: @llvm.ppc.altivec.stvxl
5200 
5201   vec_stvxl(vbc, 0, &vbc);
5202 // CHECK: @llvm.ppc.altivec.stvxl
5203 // CHECK-LE: @llvm.ppc.altivec.stvxl
5204 
5205   vec_stvxl(vs, 0, &vs);
5206 // CHECK: @llvm.ppc.altivec.stvxl
5207 // CHECK-LE: @llvm.ppc.altivec.stvxl
5208 
5209   vec_stvxl(vs, 0, &param_s);
5210 // CHECK: @llvm.ppc.altivec.stvxl
5211 // CHECK-LE: @llvm.ppc.altivec.stvxl
5212 
5213   vec_stvxl(vus, 0, &vus);
5214 // CHECK: @llvm.ppc.altivec.stvxl
5215 // CHECK-LE: @llvm.ppc.altivec.stvxl
5216 
5217   vec_stvxl(vus, 0, &param_us);
5218 // CHECK: @llvm.ppc.altivec.stvxl
5219 // CHECK-LE: @llvm.ppc.altivec.stvxl
5220 
5221   vec_stvxl(vbs, 0, &param_s);
5222 // CHECK: @llvm.ppc.altivec.stvxl
5223 // CHECK-LE: @llvm.ppc.altivec.stvxl
5224 
5225   vec_stvxl(vbs, 0, &param_us);
5226 // CHECK: @llvm.ppc.altivec.stvxl
5227 // CHECK-LE: @llvm.ppc.altivec.stvxl
5228 
5229   vec_stvxl(vbs, 0, &vbs);
5230 // CHECK: @llvm.ppc.altivec.stvxl
5231 // CHECK-LE: @llvm.ppc.altivec.stvxl
5232 
5233   vec_stvxl(vp, 0, &param_s);
5234 // CHECK: @llvm.ppc.altivec.stvxl
5235 // CHECK-LE: @llvm.ppc.altivec.stvxl
5236 
5237   vec_stvxl(vp, 0, &param_us);
5238 // CHECK: @llvm.ppc.altivec.stvxl
5239 // CHECK-LE: @llvm.ppc.altivec.stvxl
5240 
5241   vec_stvxl(vp, 0, &vp);
5242 // CHECK: @llvm.ppc.altivec.stvxl
5243 // CHECK-LE: @llvm.ppc.altivec.stvxl
5244 
5245   vec_stvxl(vi, 0, &vi);
5246 // CHECK: @llvm.ppc.altivec.stvxl
5247 // CHECK-LE: @llvm.ppc.altivec.stvxl
5248 
5249   vec_stvxl(vi, 0, &param_i);
5250 // CHECK: @llvm.ppc.altivec.stvxl
5251 // CHECK-LE: @llvm.ppc.altivec.stvxl
5252 
5253   vec_stvxl(vui, 0, &vui);
5254 // CHECK: @llvm.ppc.altivec.stvxl
5255 // CHECK-LE: @llvm.ppc.altivec.stvxl
5256 
5257   vec_stvxl(vui, 0, &param_ui);
5258 // CHECK: @llvm.ppc.altivec.stvxl
5259 // CHECK-LE: @llvm.ppc.altivec.stvxl
5260 
5261   vec_stvxl(vbi, 0, &param_i);
5262 // CHECK: @llvm.ppc.altivec.stvxl
5263 // CHECK-LE: @llvm.ppc.altivec.stvxl
5264 
5265   vec_stvxl(vbi, 0, &param_ui);
5266 // CHECK: @llvm.ppc.altivec.stvxl
5267 // CHECK-LE: @llvm.ppc.altivec.stvxl
5268 
5269   vec_stvxl(vbi, 0, &vbi);
5270 // CHECK: @llvm.ppc.altivec.stvxl
5271 // CHECK-LE: @llvm.ppc.altivec.stvxl
5272 
5273   vec_stvxl(vf, 0, &vf);
5274 // CHECK: @llvm.ppc.altivec.stvxl
5275 // CHECK-LE: @llvm.ppc.altivec.stvxl
5276 
5277   vec_stvxl(vf, 0, &param_f);
5278 // CHECK: @llvm.ppc.altivec.stvxl
5279 // CHECK-LE: @llvm.ppc.altivec.stvxl
5280 
5281   /* vec_sub */
5282   res_vsc = vec_sub(vsc, vsc);
5283 // CHECK: sub <16 x i8>
5284 // CHECK-LE: sub <16 x i8>
5285 
5286   res_vsc = vec_sub(vbc, vsc);
5287 // CHECK: sub <16 x i8>
5288 // CHECK-LE: sub <16 x i8>
5289 
5290   res_vsc = vec_sub(vsc, vbc);
5291 // CHECK: sub <16 x i8>
5292 // CHECK-LE: sub <16 x i8>
5293 
5294   res_vuc = vec_sub(vuc, vuc);
5295 // CHECK: sub <16 x i8>
5296 // CHECK-LE: sub <16 x i8>
5297 
5298   res_vuc = vec_sub(vbc, vuc);
5299 // CHECK: sub <16 x i8>
5300 // CHECK-LE: sub <16 x i8>
5301 
5302   res_vuc = vec_sub(vuc, vbc);
5303 // CHECK: sub <16 x i8>
5304 // CHECK-LE: sub <16 x i8>
5305 
5306   res_vs  = vec_sub(vs, vs);
5307 // CHECK: sub <8 x i16>
5308 // CHECK-LE: sub <8 x i16>
5309 
5310   res_vs  = vec_sub(vbs, vs);
5311 // CHECK: sub <8 x i16>
5312 // CHECK-LE: sub <8 x i16>
5313 
5314   res_vs  = vec_sub(vs, vbs);
5315 // CHECK: sub <8 x i16>
5316 // CHECK-LE: sub <8 x i16>
5317 
5318   res_vus = vec_sub(vus, vus);
5319 // CHECK: sub <8 x i16>
5320 // CHECK-LE: sub <8 x i16>
5321 
5322   res_vus = vec_sub(vbs, vus);
5323 // CHECK: sub <8 x i16>
5324 // CHECK-LE: sub <8 x i16>
5325 
5326   res_vus = vec_sub(vus, vbs);
5327 // CHECK: sub <8 x i16>
5328 // CHECK-LE: sub <8 x i16>
5329 
5330   res_vi  = vec_sub(vi, vi);
5331 // CHECK: sub <4 x i32>
5332 // CHECK-LE: sub <4 x i32>
5333 
5334   res_vi  = vec_sub(vbi, vi);
5335 // CHECK: sub <4 x i32>
5336 // CHECK-LE: sub <4 x i32>
5337 
5338   res_vi  = vec_sub(vi, vbi);
5339 // CHECK: sub <4 x i32>
5340 // CHECK-LE: sub <4 x i32>
5341 
5342   res_vui = vec_sub(vui, vui);
5343 // CHECK: sub <4 x i32>
5344 // CHECK-LE: sub <4 x i32>
5345 
5346   res_vui = vec_sub(vbi, vui);
5347 // CHECK: sub <4 x i32>
5348 // CHECK-LE: sub <4 x i32>
5349 
5350   res_vui = vec_sub(vui, vbi);
5351 // CHECK: sub <4 x i32>
5352 // CHECK-LE: sub <4 x i32>
5353 
5354   res_vf  = vec_sub(vf, vf);
5355 // CHECK: fsub <4 x float>
5356 // CHECK-LE: fsub <4 x float>
5357 
5358 
5359 
5360   res_vsc = vec_vsububm(vsc, vsc);
5361 // CHECK: sub <16 x i8>
5362 // CHECK-LE: sub <16 x i8>
5363 
5364   res_vsc = vec_vsububm(vbc, vsc);
5365 // CHECK: sub <16 x i8>
5366 // CHECK-LE: sub <16 x i8>
5367 
5368   res_vsc = vec_vsububm(vsc, vbc);
5369 // CHECK: sub <16 x i8>
5370 // CHECK-LE: sub <16 x i8>
5371 
5372   res_vuc = vec_vsububm(vuc, vuc);
5373 // CHECK: sub <16 x i8>
5374 // CHECK-LE: sub <16 x i8>
5375 
5376   res_vuc = vec_vsububm(vbc, vuc);
5377 // CHECK: sub <16 x i8>
5378 // CHECK-LE: sub <16 x i8>
5379 
5380   res_vuc = vec_vsububm(vuc, vbc);
5381 // CHECK: sub <16 x i8>
5382 // CHECK-LE: sub <16 x i8>
5383 
5384   res_vs  = vec_vsubuhm(vs, vs);
5385 // CHECK: sub <8 x i16>
5386 // CHECK-LE: sub <8 x i16>
5387 
5388   res_vs  = vec_vsubuhm(vbs, vs);
5389 // CHECK: sub <8 x i16>
5390 // CHECK-LE: sub <8 x i16>
5391 
5392   res_vs  = vec_vsubuhm(vs, vbs);
5393 // CHECK: sub <8 x i16>
5394 // CHECK-LE: sub <8 x i16>
5395 
5396   res_vus = vec_vsubuhm(vus, vus);
5397 // CHECK: sub <8 x i16>
5398 // CHECK-LE: sub <8 x i16>
5399 
5400   res_vus = vec_vsubuhm(vbs, vus);
5401 // CHECK: sub <8 x i16>
5402 // CHECK-LE: sub <8 x i16>
5403 
5404   res_vus = vec_vsubuhm(vus, vbs);
5405 // CHECK: sub <8 x i16>
5406 // CHECK-LE: sub <8 x i16>
5407 
5408   res_vi  = vec_vsubuwm(vi, vi);
5409 // CHECK: sub <4 x i32>
5410 // CHECK-LE: sub <4 x i32>
5411 
5412   res_vi  = vec_vsubuwm(vbi, vi);
5413 // CHECK: sub <4 x i32>
5414 // CHECK-LE: sub <4 x i32>
5415 
5416   res_vi  = vec_vsubuwm(vi, vbi);
5417 // CHECK: sub <4 x i32>
5418 // CHECK-LE: sub <4 x i32>
5419 
5420   res_vui = vec_vsubuwm(vui, vui);
5421 // CHECK: sub <4 x i32>
5422 // CHECK-LE: sub <4 x i32>
5423 
5424   res_vui = vec_vsubuwm(vbi, vui);
5425 // CHECK: sub <4 x i32>
5426 // CHECK-LE: sub <4 x i32>
5427 
5428   res_vui = vec_vsubuwm(vui, vbi);
5429 // CHECK: sub <4 x i32>
5430 // CHECK-LE: sub <4 x i32>
5431 
5432   res_vf  = vec_vsubfp(vf, vf);
5433 // CHECK: fsub <4 x float>
5434 // CHECK-LE: fsub <4 x float>
5435 
5436   /* vec_subc */
5437   res_vui = vec_subc(vui, vui);
5438 // CHECK: @llvm.ppc.altivec.vsubcuw
5439 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5440 
5441   res_vi = vec_subc(vi, vi);
5442 // CHECK: @llvm.ppc.altivec.vsubcuw
5443 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5444 
5445   res_vui = vec_vsubcuw(vui, vui);
5446 // CHECK: @llvm.ppc.altivec.vsubcuw
5447 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5448 
5449   /* vec_subs */
5450   res_vsc = vec_subs(vsc, vsc);
5451 // CHECK: @llvm.ppc.altivec.vsubsbs
5452 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5453 
5454   res_vsc = vec_subs(vbc, vsc);
5455 // CHECK: @llvm.ppc.altivec.vsubsbs
5456 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5457 
5458   res_vsc = vec_subs(vsc, vbc);
5459 // CHECK: @llvm.ppc.altivec.vsubsbs
5460 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5461 
5462   res_vuc = vec_subs(vuc, vuc);
5463 // CHECK: @llvm.ppc.altivec.vsububs
5464 // CHECK-LE: @llvm.ppc.altivec.vsububs
5465 
5466   res_vuc = vec_subs(vbc, vuc);
5467 // CHECK: @llvm.ppc.altivec.vsububs
5468 // CHECK-LE: @llvm.ppc.altivec.vsububs
5469 
5470   res_vuc = vec_subs(vuc, vbc);
5471 // CHECK: @llvm.ppc.altivec.vsububs
5472 // CHECK-LE: @llvm.ppc.altivec.vsububs
5473 
5474   res_vs  = vec_subs(vs, vs);
5475 // CHECK: @llvm.ppc.altivec.vsubshs
5476 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5477 
5478   res_vs  = vec_subs(vbs, vs);
5479 // CHECK: @llvm.ppc.altivec.vsubshs
5480 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5481 
5482   res_vs  = vec_subs(vs, vbs);
5483 // CHECK: @llvm.ppc.altivec.vsubshs
5484 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5485 
5486   res_vus = vec_subs(vus, vus);
5487 // CHECK: @llvm.ppc.altivec.vsubuhs
5488 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5489 
5490   res_vus = vec_subs(vbs, vus);
5491 // CHECK: @llvm.ppc.altivec.vsubuhs
5492 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5493 
5494   res_vus = vec_subs(vus, vbs);
5495 // CHECK: @llvm.ppc.altivec.vsubuhs
5496 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5497 
5498   res_vi  = vec_subs(vi, vi);
5499 // CHECK: @llvm.ppc.altivec.vsubsws
5500 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5501 
5502   res_vi  = vec_subs(vbi, vi);
5503 // CHECK: @llvm.ppc.altivec.vsubsws
5504 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5505 
5506   res_vi  = vec_subs(vi, vbi);
5507 // CHECK: @llvm.ppc.altivec.vsubsws
5508 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5509 
5510   res_vui = vec_subs(vui, vui);
5511 // CHECK: @llvm.ppc.altivec.vsubuws
5512 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5513 
5514   res_vui = vec_subs(vbi, vui);
5515 // CHECK: @llvm.ppc.altivec.vsubuws
5516 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5517 
5518   res_vui = vec_subs(vui, vbi);
5519 // CHECK: @llvm.ppc.altivec.vsubuws
5520 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5521 
5522   res_vi = vec_sube(vi, vi, vi);
5523 // CHECK: and <4 x i32>
5524 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5525 // CHECK: add <4 x i32>
5526 // CHECK: add <4 x i32>
5527 // CHECK-LE: and <4 x i32>
5528 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5529 // CHECK-LE: add <4 x i32>
5530 // CHECK-LE: add <4 x i32>
5531 
5532   res_vui = vec_sube(vui, vui, vui);
5533 // CHECK: and <4 x i32>
5534 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5535 // CHECK: add <4 x i32>
5536 // CHECK: add <4 x i32>
5537 // CHECK-LE: and <4 x i32>
5538 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5539 // CHECK-LE: add <4 x i32>
5540 // CHECK-LE: add <4 x i32>
5541 
5542   res_vsc = vec_vsubsbs(vsc, vsc);
5543 // CHECK: @llvm.ppc.altivec.vsubsbs
5544 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5545 
5546   res_vsc = vec_vsubsbs(vbc, vsc);
5547 // CHECK: @llvm.ppc.altivec.vsubsbs
5548 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5549 
5550   res_vsc = vec_vsubsbs(vsc, vbc);
5551 // CHECK: @llvm.ppc.altivec.vsubsbs
5552 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5553 
5554   res_vuc = vec_vsububs(vuc, vuc);
5555 // CHECK: @llvm.ppc.altivec.vsububs
5556 // CHECK-LE: @llvm.ppc.altivec.vsububs
5557 
5558   res_vuc = vec_vsububs(vbc, vuc);
5559 // CHECK: @llvm.ppc.altivec.vsububs
5560 // CHECK-LE: @llvm.ppc.altivec.vsububs
5561 
5562   res_vuc = vec_vsububs(vuc, vbc);
5563 // CHECK: @llvm.ppc.altivec.vsububs
5564 // CHECK-LE: @llvm.ppc.altivec.vsububs
5565 
5566   res_vs  = vec_vsubshs(vs, vs);
5567 // CHECK: @llvm.ppc.altivec.vsubshs
5568 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5569 
5570   res_vs  = vec_vsubshs(vbs, vs);
5571 // CHECK: @llvm.ppc.altivec.vsubshs
5572 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5573 
5574   res_vs  = vec_vsubshs(vs, vbs);
5575 // CHECK: @llvm.ppc.altivec.vsubshs
5576 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5577 
5578   res_vus = vec_vsubuhs(vus, vus);
5579 // CHECK: @llvm.ppc.altivec.vsubuhs
5580 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5581 
5582   res_vus = vec_vsubuhs(vbs, vus);
5583 // CHECK: @llvm.ppc.altivec.vsubuhs
5584 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5585 
5586   res_vus = vec_vsubuhs(vus, vbs);
5587 // CHECK: @llvm.ppc.altivec.vsubuhs
5588 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5589 
5590   res_vi  = vec_vsubsws(vi, vi);
5591 // CHECK: @llvm.ppc.altivec.vsubsws
5592 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5593 
5594   res_vi  = vec_vsubsws(vbi, vi);
5595 // CHECK: @llvm.ppc.altivec.vsubsws
5596 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5597 
5598   res_vi  = vec_vsubsws(vi, vbi);
5599 // CHECK: @llvm.ppc.altivec.vsubsws
5600 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5601 
5602   res_vui = vec_vsubuws(vui, vui);
5603 // CHECK: @llvm.ppc.altivec.vsubuws
5604 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5605 
5606   res_vui = vec_vsubuws(vbi, vui);
5607 // CHECK: @llvm.ppc.altivec.vsubuws
5608 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5609 
5610   res_vui = vec_vsubuws(vui, vbi);
5611 // CHECK: @llvm.ppc.altivec.vsubuws
5612 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5613 
5614   /* vec_sum4s */
5615   res_vi  = vec_sum4s(vsc, vi);
5616 // CHECK: @llvm.ppc.altivec.vsum4sbs
5617 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5618 
5619   res_vui = vec_sum4s(vuc, vui);
5620 // CHECK: @llvm.ppc.altivec.vsum4ubs
5621 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5622 
5623   res_vi  = vec_sum4s(vs, vi);
5624 // CHECK: @llvm.ppc.altivec.vsum4shs
5625 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5626 
5627   res_vi  = vec_vsum4sbs(vsc, vi);
5628 // CHECK: @llvm.ppc.altivec.vsum4sbs
5629 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5630 
5631   res_vui = vec_vsum4ubs(vuc, vui);
5632 // CHECK: @llvm.ppc.altivec.vsum4ubs
5633 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5634 
5635   res_vi  = vec_vsum4shs(vs, vi);
5636 // CHECK: @llvm.ppc.altivec.vsum4shs
5637 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5638 
5639   /* vec_sum2s */
5640   res_vi = vec_sum2s(vi, vi);
5641 // CHECK: @llvm.ppc.altivec.vsum2sws
5642 // CHECK-LE: @llvm.ppc.altivec.vperm
5643 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5644 // CHECK-LE: @llvm.ppc.altivec.vperm
5645 
5646   res_vi = vec_vsum2sws(vi, vi);
5647 // CHECK: @llvm.ppc.altivec.vsum2sws
5648 // CHECK-LE: @llvm.ppc.altivec.vperm
5649 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5650 // CHECK-LE: @llvm.ppc.altivec.vperm
5651 
5652   /* vec_sums */
5653   res_vi = vec_sums(vi, vi);
5654 // CHECK: @llvm.ppc.altivec.vsumsws
5655 // CHECK-LE: @llvm.ppc.altivec.vperm
5656 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5657 
5658   res_vi = vec_vsumsws(vi, vi);
5659 // CHECK: @llvm.ppc.altivec.vsumsws
5660 // CHECK-LE: @llvm.ppc.altivec.vperm
5661 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5662 
5663   /* vec_trunc */
5664   res_vf = vec_trunc(vf);
5665 // CHECK: @llvm.ppc.altivec.vrfiz
5666 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5667 
5668   res_vf = vec_vrfiz(vf);
5669 // CHECK: @llvm.ppc.altivec.vrfiz
5670 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5671 
5672   /* vec_unpackh */
5673   res_vs  = vec_unpackh(vsc);
5674 // CHECK: @llvm.ppc.altivec.vupkhsb
5675 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5676 
5677   res_vbs = vec_unpackh(vbc);
5678 // CHECK: @llvm.ppc.altivec.vupkhsb
5679 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5680 
5681   res_vi  = vec_unpackh(vs);
5682 // CHECK: @llvm.ppc.altivec.vupkhsh
5683 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5684 
5685   res_vbi = vec_unpackh(vbs);
5686 // CHECK: @llvm.ppc.altivec.vupkhsh
5687 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5688 
5689   res_vui = vec_unpackh(vp);
5690 // CHECK: @llvm.ppc.altivec.vupkhpx
5691 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5692 
5693   res_vs  = vec_vupkhsb(vsc);
5694 // CHECK: @llvm.ppc.altivec.vupkhsb
5695 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5696 
5697   res_vbs = vec_vupkhsb(vbc);
5698 // CHECK: @llvm.ppc.altivec.vupkhsb
5699 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5700 
5701   res_vi  = vec_vupkhsh(vs);
5702 // CHECK: @llvm.ppc.altivec.vupkhsh
5703 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5704 
5705   res_vbi = vec_vupkhsh(vbs);
5706 // CHECK: @llvm.ppc.altivec.vupkhsh
5707 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5708 
5709   res_vui = vec_vupkhsh(vp);
5710 // CHECK: @llvm.ppc.altivec.vupkhpx
5711 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5712 
5713   /* vec_unpackl */
5714   res_vs  = vec_unpackl(vsc);
5715 // CHECK: @llvm.ppc.altivec.vupklsb
5716 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5717 
5718   res_vbs = vec_unpackl(vbc);
5719 // CHECK: @llvm.ppc.altivec.vupklsb
5720 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5721 
5722   res_vi  = vec_unpackl(vs);
5723 // CHECK: @llvm.ppc.altivec.vupklsh
5724 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5725 
5726   res_vbi = vec_unpackl(vbs);
5727 // CHECK: @llvm.ppc.altivec.vupklsh
5728 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5729 
5730   res_vui = vec_unpackl(vp);
5731 // CHECK: @llvm.ppc.altivec.vupklpx
5732 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5733 
5734   res_vs  = vec_vupklsb(vsc);
5735 // CHECK: @llvm.ppc.altivec.vupklsb
5736 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5737 
5738   res_vbs = vec_vupklsb(vbc);
5739 // CHECK: @llvm.ppc.altivec.vupklsb
5740 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5741 
5742   res_vi  = vec_vupklsh(vs);
5743 // CHECK: @llvm.ppc.altivec.vupklsh
5744 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5745 
5746   res_vbi = vec_vupklsh(vbs);
5747 // CHECK: @llvm.ppc.altivec.vupklsh
5748 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5749 
5750   res_vui = vec_vupklsh(vp);
5751 // CHECK: @llvm.ppc.altivec.vupklpx
5752 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5753 
5754   /* vec_xor */
5755   res_vsc = vec_xor(vsc, vsc);
5756 // CHECK: xor <16 x i8>
5757 // CHECK-LE: xor <16 x i8>
5758 
5759   res_vsc = vec_xor(vbc, vsc);
5760 // CHECK: xor <16 x i8>
5761 // CHECK-LE: xor <16 x i8>
5762 
5763   res_vsc = vec_xor(vsc, vbc);
5764 // CHECK: xor <16 x i8>
5765 // CHECK-LE: xor <16 x i8>
5766 
5767   res_vuc = vec_xor(vuc, vuc);
5768 // CHECK: xor <16 x i8>
5769 // CHECK-LE: xor <16 x i8>
5770 
5771   res_vuc = vec_xor(vbc, vuc);
5772 // CHECK: xor <16 x i8>
5773 // CHECK-LE: xor <16 x i8>
5774 
5775   res_vuc = vec_xor(vuc, vbc);
5776 // CHECK: xor <16 x i8>
5777 // CHECK-LE: xor <16 x i8>
5778 
5779   res_vbc = vec_xor(vbc, vbc);
5780 // CHECK: xor <16 x i8>
5781 // CHECK-LE: xor <16 x i8>
5782 
5783   res_vs  = vec_xor(vs, vs);
5784 // CHECK: xor <8 x i16>
5785 // CHECK-LE: xor <8 x i16>
5786 
5787   res_vs  = vec_xor(vbs, vs);
5788 // CHECK: xor <8 x i16>
5789 // CHECK-LE: xor <8 x i16>
5790 
5791   res_vs  = vec_xor(vs, vbs);
5792 // CHECK: xor <8 x i16>
5793 // CHECK-LE: xor <8 x i16>
5794 
5795   res_vus = vec_xor(vus, vus);
5796 // CHECK: xor <8 x i16>
5797 // CHECK-LE: xor <8 x i16>
5798 
5799   res_vus = vec_xor(vbs, vus);
5800 // CHECK: xor <8 x i16>
5801 // CHECK-LE: xor <8 x i16>
5802 
5803   res_vus = vec_xor(vus, vbs);
5804 // CHECK: xor <8 x i16>
5805 // CHECK-LE: xor <8 x i16>
5806 
5807   res_vbs = vec_xor(vbs, vbs);
5808 // CHECK: xor <8 x i16>
5809 // CHECK-LE: xor <8 x i16>
5810 
5811   res_vi  = vec_xor(vi, vi);
5812 // CHECK: xor <4 x i32>
5813 // CHECK-LE: xor <4 x i32>
5814 
5815   res_vi  = vec_xor(vbi, vi);
5816 // CHECK: xor <4 x i32>
5817 // CHECK-LE: xor <4 x i32>
5818 
5819   res_vi  = vec_xor(vi, vbi);
5820 // CHECK: xor <4 x i32>
5821 // CHECK-LE: xor <4 x i32>
5822 
5823   res_vui = vec_xor(vui, vui);
5824 // CHECK: xor <4 x i32>
5825 // CHECK-LE: xor <4 x i32>
5826 
5827   res_vui = vec_xor(vbi, vui);
5828 // CHECK: xor <4 x i32>
5829 // CHECK-LE: xor <4 x i32>
5830 
5831   res_vui = vec_xor(vui, vbi);
5832 // CHECK: xor <4 x i32>
5833 // CHECK-LE: xor <4 x i32>
5834 
5835   res_vbi = vec_xor(vbi, vbi);
5836 // CHECK: xor <4 x i32>
5837 // CHECK-LE: xor <4 x i32>
5838 
5839   res_vf  = vec_xor(vf, vf);
5840 // CHECK: xor <4 x i32>
5841 // CHECK-LE: xor <4 x i32>
5842 
5843   res_vf  = vec_xor(vbi, vf);
5844 // CHECK: xor <4 x i32>
5845 // CHECK-LE: xor <4 x i32>
5846 
5847   res_vf  = vec_xor(vf, vbi);
5848 // CHECK: xor <4 x i32>
5849 // CHECK-LE: xor <4 x i32>
5850 
5851   res_vsc = vec_vxor(vsc, vsc);
5852 // CHECK: xor <16 x i8>
5853 // CHECK-LE: xor <16 x i8>
5854 
5855   res_vsc = vec_vxor(vbc, vsc);
5856 // CHECK: xor <16 x i8>
5857 // CHECK-LE: xor <16 x i8>
5858 
5859   res_vsc = vec_vxor(vsc, vbc);
5860 // CHECK: xor <16 x i8>
5861 // CHECK-LE: xor <16 x i8>
5862 
5863   res_vuc = vec_vxor(vuc, vuc);
5864 // CHECK: xor <16 x i8>
5865 // CHECK-LE: xor <16 x i8>
5866 
5867   res_vuc = vec_vxor(vbc, vuc);
5868 // CHECK: xor <16 x i8>
5869 // CHECK-LE: xor <16 x i8>
5870 
5871   res_vuc = vec_vxor(vuc, vbc);
5872 // CHECK: xor <16 x i8>
5873 // CHECK-LE: xor <16 x i8>
5874 
5875   res_vbc = vec_vxor(vbc, vbc);
5876 // CHECK: xor <16 x i8>
5877 // CHECK-LE: xor <16 x i8>
5878 
5879   res_vs  = vec_vxor(vs, vs);
5880 // CHECK: xor <8 x i16>
5881 // CHECK-LE: xor <8 x i16>
5882 
5883   res_vs  = vec_vxor(vbs, vs);
5884 // CHECK: xor <8 x i16>
5885 // CHECK-LE: xor <8 x i16>
5886 
5887   res_vs  = vec_vxor(vs, vbs);
5888 // CHECK: xor <8 x i16>
5889 // CHECK-LE: xor <8 x i16>
5890 
5891   res_vus = vec_vxor(vus, vus);
5892 // CHECK: xor <8 x i16>
5893 // CHECK-LE: xor <8 x i16>
5894 
5895   res_vus = vec_vxor(vbs, vus);
5896 // CHECK: xor <8 x i16>
5897 // CHECK-LE: xor <8 x i16>
5898 
5899   res_vus = vec_vxor(vus, vbs);
5900 // CHECK: xor <8 x i16>
5901 // CHECK-LE: xor <8 x i16>
5902 
5903   res_vbs = vec_vxor(vbs, vbs);
5904 // CHECK: xor <8 x i16>
5905 // CHECK-LE: xor <8 x i16>
5906 
5907   res_vi  = vec_vxor(vi, vi);
5908 // CHECK: xor <4 x i32>
5909 // CHECK-LE: xor <4 x i32>
5910 
5911   res_vi  = vec_vxor(vbi, vi);
5912 // CHECK: xor <4 x i32>
5913 // CHECK-LE: xor <4 x i32>
5914 
5915   res_vi  = vec_vxor(vi, vbi);
5916 // CHECK: xor <4 x i32>
5917 // CHECK-LE: xor <4 x i32>
5918 
5919   res_vui = vec_vxor(vui, vui);
5920 // CHECK: xor <4 x i32>
5921 // CHECK-LE: xor <4 x i32>
5922 
5923   res_vui = vec_vxor(vbi, vui);
5924 // CHECK: xor <4 x i32>
5925 // CHECK-LE: xor <4 x i32>
5926 
5927   res_vui = vec_vxor(vui, vbi);
5928 // CHECK: xor <4 x i32>
5929 // CHECK-LE: xor <4 x i32>
5930 
5931   res_vbi = vec_vxor(vbi, vbi);
5932 // CHECK: xor <4 x i32>
5933 // CHECK-LE: xor <4 x i32>
5934 
5935   res_vf  = vec_vxor(vf, vf);
5936 // CHECK: xor <4 x i32>
5937 // CHECK-LE: xor <4 x i32>
5938 
5939   res_vf  = vec_vxor(vbi, vf);
5940 // CHECK: xor <4 x i32>
5941 // CHECK-LE: xor <4 x i32>
5942 
5943   res_vf  = vec_vxor(vf, vbi);
5944 // CHECK: xor <4 x i32>
5945 // CHECK-LE: xor <4 x i32>
5946 
5947   /* ------------------------------ extensions -------------------------------------- */
5948 
5949   /* vec_extract */
5950   res_sc = vec_extract(vsc, param_i);
5951 // CHECK: extractelement <16 x i8>
5952 // CHECK-LE: extractelement <16 x i8>
5953 
5954   res_uc = vec_extract(vuc, param_i);
5955 // CHECK: extractelement <16 x i8>
5956 // CHECK-LE: extractelement <16 x i8>
5957 
5958   res_uc = vec_extract(vbc, param_i);
5959 // CHECK: extractelement <16 x i8>
5960 // CHECK-LE: extractelement <16 x i8>
5961 
5962   res_s  = vec_extract(vs, param_i);
5963 // CHECK: extractelement <8 x i16>
5964 // CHECK-LE: extractelement <8 x i16>
5965 
5966   res_us = vec_extract(vus, param_i);
5967 // CHECK: extractelement <8 x i16>
5968 // CHECK-LE: extractelement <8 x i16>
5969 
5970   res_us = vec_extract(vbs, param_i);
5971 // CHECK: extractelement <8 x i16>
5972 // CHECK-LE: extractelement <8 x i16>
5973 
5974   res_i  = vec_extract(vi, param_i);
5975 // CHECK: extractelement <4 x i32>
5976 // CHECK-LE: extractelement <4 x i32>
5977 
5978   res_ui = vec_extract(vui, param_i);
5979 // CHECK: extractelement <4 x i32>
5980 // CHECK-LE: extractelement <4 x i32>
5981 
5982   res_ui = vec_extract(vbi, param_i);
5983 // CHECK: extractelement <4 x i32>
5984 // CHECK-LE: extractelement <4 x i32>
5985 
5986   res_f  = vec_extract(vf, param_i);
5987 // CHECK: extractelement <4 x float>
5988 // CHECK-LE: extractelement <4 x float>
5989 
5990   /* vec_insert */
5991   res_vsc = vec_insert(param_sc, vsc, param_i);
5992 // CHECK: insertelement <16 x i8>
5993 // CHECK-LE: insertelement <16 x i8>
5994 
5995   res_vuc = vec_insert(param_uc, vuc, param_i);
5996 // CHECK: insertelement <16 x i8>
5997 // CHECK-LE: insertelement <16 x i8>
5998 
5999   res_vbc = vec_insert(param_uc, vbc, param_i);
6000 // CHECK: insertelement <16 x i8>
6001 // CHECK-LE: insertelement <16 x i8>
6002 
6003   res_vs  = vec_insert(param_s, vs, param_i);
6004 // CHECK: insertelement <8 x i16>
6005 // CHECK-LE: insertelement <8 x i16>
6006 
6007   res_vus = vec_insert(param_us, vus, param_i);
6008 // CHECK: insertelement <8 x i16>
6009 // CHECK-LE: insertelement <8 x i16>
6010 
6011   res_vbs = vec_insert(param_us, vbs, param_i);
6012 // CHECK: insertelement <8 x i16>
6013 // CHECK-LE: insertelement <8 x i16>
6014 
6015   res_vi  = vec_insert(param_i, vi, param_i);
6016 // CHECK: insertelement <4 x i32>
6017 // CHECK-LE: insertelement <4 x i32>
6018 
6019   res_vui = vec_insert(param_ui, vui, param_i);
6020 // CHECK: insertelement <4 x i32>
6021 // CHECK-LE: insertelement <4 x i32>
6022 
6023   res_vbi = vec_insert(param_ui, vbi, param_i);
6024 // CHECK: insertelement <4 x i32>
6025 // CHECK-LE: insertelement <4 x i32>
6026 
6027   res_vf  = vec_insert(param_f, vf, param_i);
6028 // CHECK: insertelement <4 x float>
6029 // CHECK-LE: insertelement <4 x float>
6030 
6031   /* vec_lvlx */
6032   res_vsc = vec_lvlx(0, &param_sc);
6033 // CHECK: @llvm.ppc.altivec.lvx
6034 // CHECK: @llvm.ppc.altivec.lvsl
6035 // CHECK: store <16 x i8> zeroinitializer
6036 // CHECK: @llvm.ppc.altivec.vperm
6037 // CHECK-LE: @llvm.ppc.altivec.lvx
6038 // CHECK-LE: @llvm.ppc.altivec.lvsl
6039 // CHECK-LE: store <16 x i8> zeroinitializer
6040 // CHECK-LE: @llvm.ppc.altivec.vperm
6041 
6042   res_vsc = vec_lvlx(0, &vsc);
6043 // CHECK: @llvm.ppc.altivec.lvx
6044 // CHECK: @llvm.ppc.altivec.lvsl
6045 // CHECK: store <16 x i8> zeroinitializer
6046 // CHECK: @llvm.ppc.altivec.vperm
6047 // CHECK-LE: @llvm.ppc.altivec.lvx
6048 // CHECK-LE: @llvm.ppc.altivec.lvsl
6049 // CHECK-LE: store <16 x i8> zeroinitializer
6050 // CHECK-LE: @llvm.ppc.altivec.vperm
6051 
6052   res_vuc = vec_lvlx(0, &param_uc);
6053 // CHECK: @llvm.ppc.altivec.lvx
6054 // CHECK: @llvm.ppc.altivec.lvsl
6055 // CHECK: store <16 x i8> zeroinitializer
6056 // CHECK: @llvm.ppc.altivec.vperm
6057 // CHECK-LE: @llvm.ppc.altivec.lvx
6058 // CHECK-LE: @llvm.ppc.altivec.lvsl
6059 // CHECK-LE: store <16 x i8> zeroinitializer
6060 // CHECK-LE: @llvm.ppc.altivec.vperm
6061 
6062   res_vuc = vec_lvlx(0, &vuc);
6063 // CHECK: @llvm.ppc.altivec.lvx
6064 // CHECK: @llvm.ppc.altivec.lvsl
6065 // CHECK: store <16 x i8> zeroinitializer
6066 // CHECK: @llvm.ppc.altivec.vperm
6067 // CHECK-LE: @llvm.ppc.altivec.lvx
6068 // CHECK-LE: @llvm.ppc.altivec.lvsl
6069 // CHECK-LE: store <16 x i8> zeroinitializer
6070 // CHECK-LE: @llvm.ppc.altivec.vperm
6071 
6072   res_vbc = vec_lvlx(0, &vbc);
6073 // CHECK: @llvm.ppc.altivec.lvx
6074 // CHECK: store <16 x i8> zeroinitializer
6075 // CHECK: @llvm.ppc.altivec.lvsl
6076 // CHECK: @llvm.ppc.altivec.vperm
6077 // CHECK-LE: @llvm.ppc.altivec.lvx
6078 // CHECK-LE: store <16 x i8> zeroinitializer
6079 // CHECK-LE: @llvm.ppc.altivec.lvsl
6080 // CHECK-LE: @llvm.ppc.altivec.vperm
6081 
6082   res_vs  = vec_lvlx(0, &param_s);
6083 // CHECK: @llvm.ppc.altivec.lvx
6084 // CHECK: @llvm.ppc.altivec.lvsl
6085 // CHECK: store <8 x i16> zeroinitializer
6086 // CHECK: @llvm.ppc.altivec.vperm
6087 // CHECK-LE: @llvm.ppc.altivec.lvx
6088 // CHECK-LE: @llvm.ppc.altivec.lvsl
6089 // CHECK-LE: store <8 x i16> zeroinitializer
6090 // CHECK-LE: @llvm.ppc.altivec.vperm
6091 
6092   res_vs  = vec_lvlx(0, &vs);
6093 // CHECK: @llvm.ppc.altivec.lvx
6094 // CHECK: @llvm.ppc.altivec.lvsl
6095 // CHECK: store <8 x i16> zeroinitializer
6096 // CHECK: @llvm.ppc.altivec.vperm
6097 // CHECK-LE: @llvm.ppc.altivec.lvx
6098 // CHECK-LE: @llvm.ppc.altivec.lvsl
6099 // CHECK-LE: store <8 x i16> zeroinitializer
6100 // CHECK-LE: @llvm.ppc.altivec.vperm
6101 
6102   res_vus = vec_lvlx(0, &param_us);
6103 // CHECK: @llvm.ppc.altivec.lvx
6104 // CHECK: @llvm.ppc.altivec.lvsl
6105 // CHECK: store <8 x i16> zeroinitializer
6106 // CHECK: @llvm.ppc.altivec.vperm
6107 // CHECK-LE: @llvm.ppc.altivec.lvx
6108 // CHECK-LE: @llvm.ppc.altivec.lvsl
6109 // CHECK-LE: store <8 x i16> zeroinitializer
6110 // CHECK-LE: @llvm.ppc.altivec.vperm
6111 
6112   res_vus = vec_lvlx(0, &vus);
6113 // CHECK: @llvm.ppc.altivec.lvx
6114 // CHECK: @llvm.ppc.altivec.lvsl
6115 // CHECK: store <8 x i16> zeroinitializer
6116 // CHECK: @llvm.ppc.altivec.vperm
6117 // CHECK-LE: @llvm.ppc.altivec.lvx
6118 // CHECK-LE: @llvm.ppc.altivec.lvsl
6119 // CHECK-LE: store <8 x i16> zeroinitializer
6120 // CHECK-LE: @llvm.ppc.altivec.vperm
6121 
6122   res_vbs = vec_lvlx(0, &vbs);
6123 // CHECK: @llvm.ppc.altivec.lvx
6124 // CHECK: store <8 x i16> zeroinitializer
6125 // CHECK: @llvm.ppc.altivec.lvsl
6126 // CHECK: @llvm.ppc.altivec.vperm
6127 // CHECK-LE: @llvm.ppc.altivec.lvx
6128 // CHECK-LE: store <8 x i16> zeroinitializer
6129 // CHECK-LE: @llvm.ppc.altivec.lvsl
6130 // CHECK-LE: @llvm.ppc.altivec.vperm
6131 
6132   res_vp  = vec_lvlx(0, &vp);
6133 // CHECK: @llvm.ppc.altivec.lvx
6134 // CHECK: store <8 x i16> zeroinitializer
6135 // CHECK: @llvm.ppc.altivec.lvsl
6136 // CHECK: @llvm.ppc.altivec.vperm
6137 // CHECK-LE: @llvm.ppc.altivec.lvx
6138 // CHECK-LE: store <8 x i16> zeroinitializer
6139 // CHECK-LE: @llvm.ppc.altivec.lvsl
6140 // CHECK-LE: @llvm.ppc.altivec.vperm
6141 
6142   res_vi  = vec_lvlx(0, &param_i);
6143 // CHECK: @llvm.ppc.altivec.lvx
6144 // CHECK: @llvm.ppc.altivec.lvsl
6145 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6150 // CHECK-LE: @llvm.ppc.altivec.vperm
6151 
6152   res_vi  = vec_lvlx(0, &vi);
6153 // CHECK: @llvm.ppc.altivec.lvx
6154 // CHECK: @llvm.ppc.altivec.lvsl
6155 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6160 // CHECK-LE: @llvm.ppc.altivec.vperm
6161 
6162   res_vui = vec_lvlx(0, &param_ui);
6163 // CHECK: @llvm.ppc.altivec.lvx
6164 // CHECK: @llvm.ppc.altivec.lvsl
6165 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6170 // CHECK-LE: @llvm.ppc.altivec.vperm
6171 
6172   res_vui = vec_lvlx(0, &vui);
6173 // CHECK: @llvm.ppc.altivec.lvx
6174 // CHECK: @llvm.ppc.altivec.lvsl
6175 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6180 // CHECK-LE: @llvm.ppc.altivec.vperm
6181 
6182   res_vbi = vec_lvlx(0, &vbi);
6183 // CHECK: @llvm.ppc.altivec.lvx
6184 // CHECK: store <4 x i32> zeroinitializer
6185 // CHECK: @llvm.ppc.altivec.lvsl
6186 // CHECK: @llvm.ppc.altivec.vperm
6187 // CHECK-LE: @llvm.ppc.altivec.lvx
6188 // CHECK-LE: store <4 x i32> zeroinitializer
6189 // CHECK-LE: @llvm.ppc.altivec.lvsl
6190 // CHECK-LE: @llvm.ppc.altivec.vperm
6191 
6192   res_vf  = vec_lvlx(0, &vf);
6193 // CHECK: @llvm.ppc.altivec.lvx
6194 // CHECK: @llvm.ppc.altivec.lvsl
6195 // CHECK: store <4 x float> 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 <4 x float> zeroinitializer
6200 // CHECK-LE: @llvm.ppc.altivec.vperm
6201 
6202   /* vec_lvlxl */
6203   res_vsc = vec_lvlxl(0, &param_sc);
6204 // CHECK: @llvm.ppc.altivec.lvxl
6205 // CHECK: @llvm.ppc.altivec.lvsl
6206 // CHECK: store <16 x i8> zeroinitializer
6207 // CHECK: @llvm.ppc.altivec.vperm
6208 // CHECK-LE: @llvm.ppc.altivec.lvxl
6209 // CHECK-LE: @llvm.ppc.altivec.lvsl
6210 // CHECK-LE: store <16 x i8> zeroinitializer
6211 // CHECK-LE: @llvm.ppc.altivec.vperm
6212 
6213   res_vsc = vec_lvlxl(0, &vsc);
6214 // CHECK: @llvm.ppc.altivec.lvxl
6215 // CHECK: @llvm.ppc.altivec.lvsl
6216 // CHECK: store <16 x i8> zeroinitializer
6217 // CHECK: @llvm.ppc.altivec.vperm
6218 // CHECK-LE: @llvm.ppc.altivec.lvxl
6219 // CHECK-LE: @llvm.ppc.altivec.lvsl
6220 // CHECK-LE: store <16 x i8> zeroinitializer
6221 // CHECK-LE: @llvm.ppc.altivec.vperm
6222 
6223   res_vuc = vec_lvlxl(0, &param_uc);
6224 // CHECK: @llvm.ppc.altivec.lvxl
6225 // CHECK: @llvm.ppc.altivec.lvsl
6226 // CHECK: store <16 x i8> zeroinitializer
6227 // CHECK: @llvm.ppc.altivec.vperm
6228 // CHECK-LE: @llvm.ppc.altivec.lvxl
6229 // CHECK-LE: @llvm.ppc.altivec.lvsl
6230 // CHECK-LE: store <16 x i8> zeroinitializer
6231 // CHECK-LE: @llvm.ppc.altivec.vperm
6232 
6233   res_vuc = vec_lvlxl(0, &vuc);
6234 // CHECK: @llvm.ppc.altivec.lvxl
6235 // CHECK: @llvm.ppc.altivec.lvsl
6236 // CHECK: store <16 x i8> zeroinitializer
6237 // CHECK: @llvm.ppc.altivec.vperm
6238 // CHECK-LE: @llvm.ppc.altivec.lvxl
6239 // CHECK-LE: @llvm.ppc.altivec.lvsl
6240 // CHECK-LE: store <16 x i8> zeroinitializer
6241 // CHECK-LE: @llvm.ppc.altivec.vperm
6242 
6243   res_vbc = vec_lvlxl(0, &vbc);
6244 // CHECK: @llvm.ppc.altivec.lvxl
6245 // CHECK: store <16 x i8> zeroinitializer
6246 // CHECK: @llvm.ppc.altivec.lvsl
6247 // CHECK: @llvm.ppc.altivec.vperm
6248 // CHECK-LE: @llvm.ppc.altivec.lvxl
6249 // CHECK-LE: store <16 x i8> zeroinitializer
6250 // CHECK-LE: @llvm.ppc.altivec.lvsl
6251 // CHECK-LE: @llvm.ppc.altivec.vperm
6252 
6253   res_vs  = vec_lvlxl(0, &param_s);
6254 // CHECK: @llvm.ppc.altivec.lvxl
6255 // CHECK: @llvm.ppc.altivec.lvsl
6256 // CHECK: store <8 x i16> zeroinitializer
6257 // CHECK: @llvm.ppc.altivec.vperm
6258 // CHECK-LE: @llvm.ppc.altivec.lvxl
6259 // CHECK-LE: @llvm.ppc.altivec.lvsl
6260 // CHECK-LE: store <8 x i16> zeroinitializer
6261 // CHECK-LE: @llvm.ppc.altivec.vperm
6262 
6263   res_vs  = vec_lvlxl(0, &vs);
6264 // CHECK: @llvm.ppc.altivec.lvxl
6265 // CHECK: @llvm.ppc.altivec.lvsl
6266 // CHECK: store <8 x i16> zeroinitializer
6267 // CHECK: @llvm.ppc.altivec.vperm
6268 // CHECK-LE: @llvm.ppc.altivec.lvxl
6269 // CHECK-LE: @llvm.ppc.altivec.lvsl
6270 // CHECK-LE: store <8 x i16> zeroinitializer
6271 // CHECK-LE: @llvm.ppc.altivec.vperm
6272 
6273   res_vus = vec_lvlxl(0, &param_us);
6274 // CHECK: @llvm.ppc.altivec.lvxl
6275 // CHECK: @llvm.ppc.altivec.lvsl
6276 // CHECK: store <8 x i16> zeroinitializer
6277 // CHECK: @llvm.ppc.altivec.vperm
6278 // CHECK-LE: @llvm.ppc.altivec.lvxl
6279 // CHECK-LE: @llvm.ppc.altivec.lvsl
6280 // CHECK-LE: store <8 x i16> zeroinitializer
6281 // CHECK-LE: @llvm.ppc.altivec.vperm
6282 
6283   res_vus = vec_lvlxl(0, &vus);
6284 // CHECK: @llvm.ppc.altivec.lvxl
6285 // CHECK: @llvm.ppc.altivec.lvsl
6286 // CHECK: store <8 x i16> zeroinitializer
6287 // CHECK: @llvm.ppc.altivec.vperm
6288 // CHECK-LE: @llvm.ppc.altivec.lvxl
6289 // CHECK-LE: @llvm.ppc.altivec.lvsl
6290 // CHECK-LE: store <8 x i16> zeroinitializer
6291 // CHECK-LE: @llvm.ppc.altivec.vperm
6292 
6293   res_vbs = vec_lvlxl(0, &vbs);
6294 // CHECK: @llvm.ppc.altivec.lvxl
6295 // CHECK: store <8 x i16> zeroinitializer
6296 // CHECK: @llvm.ppc.altivec.lvsl
6297 // CHECK: @llvm.ppc.altivec.vperm
6298 // CHECK-LE: @llvm.ppc.altivec.lvxl
6299 // CHECK-LE: store <8 x i16> zeroinitializer
6300 // CHECK-LE: @llvm.ppc.altivec.lvsl
6301 // CHECK-LE: @llvm.ppc.altivec.vperm
6302 
6303   res_vp  = vec_lvlxl(0, &vp);
6304 // CHECK: @llvm.ppc.altivec.lvxl
6305 // CHECK: store <8 x i16> zeroinitializer
6306 // CHECK: @llvm.ppc.altivec.lvsl
6307 // CHECK: @llvm.ppc.altivec.vperm
6308 // CHECK-LE: @llvm.ppc.altivec.lvxl
6309 // CHECK-LE: store <8 x i16> zeroinitializer
6310 // CHECK-LE: @llvm.ppc.altivec.lvsl
6311 // CHECK-LE: @llvm.ppc.altivec.vperm
6312 
6313   res_vi  = vec_lvlxl(0, &param_i);
6314 // CHECK: @llvm.ppc.altivec.lvxl
6315 // CHECK: @llvm.ppc.altivec.lvsl
6316 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6321 // CHECK-LE: @llvm.ppc.altivec.vperm
6322 
6323   res_vi  = vec_lvlxl(0, &vi);
6324 // CHECK: @llvm.ppc.altivec.lvxl
6325 // CHECK: @llvm.ppc.altivec.lvsl
6326 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6331 // CHECK-LE: @llvm.ppc.altivec.vperm
6332 
6333   res_vui = vec_lvlxl(0, &param_ui);
6334 // CHECK: @llvm.ppc.altivec.lvxl
6335 // CHECK: @llvm.ppc.altivec.lvsl
6336 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6341 // CHECK-LE: @llvm.ppc.altivec.vperm
6342 
6343   res_vui = vec_lvlxl(0, &vui);
6344 // CHECK: @llvm.ppc.altivec.lvxl
6345 // CHECK: @llvm.ppc.altivec.lvsl
6346 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6351 // CHECK-LE: @llvm.ppc.altivec.vperm
6352 
6353   res_vbi = vec_lvlxl(0, &vbi);
6354 // CHECK: @llvm.ppc.altivec.lvxl
6355 // CHECK: store <4 x i32> zeroinitializer
6356 // CHECK: @llvm.ppc.altivec.lvsl
6357 // CHECK: @llvm.ppc.altivec.vperm
6358 // CHECK-LE: @llvm.ppc.altivec.lvxl
6359 // CHECK-LE: store <4 x i32> zeroinitializer
6360 // CHECK-LE: @llvm.ppc.altivec.lvsl
6361 // CHECK-LE: @llvm.ppc.altivec.vperm
6362 
6363   res_vf  = vec_lvlxl(0, &vf);
6364 // CHECK: @llvm.ppc.altivec.lvxl
6365 // CHECK: @llvm.ppc.altivec.lvsl
6366 // CHECK: store <4 x float> 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 <4 x float> zeroinitializer
6371 // CHECK-LE: @llvm.ppc.altivec.vperm
6372 
6373   /* vec_lvrx */
6374   res_vsc = vec_lvrx(0, &param_sc);
6375 // CHECK: @llvm.ppc.altivec.lvx
6376 // CHECK: @llvm.ppc.altivec.lvsl
6377 // CHECK: store <16 x i8> zeroinitializer
6378 // CHECK: @llvm.ppc.altivec.vperm
6379 // CHECK-LE: @llvm.ppc.altivec.lvx
6380 // CHECK-LE: @llvm.ppc.altivec.lvsl
6381 // CHECK-LE: store <16 x i8> zeroinitializer
6382 // CHECK-LE: @llvm.ppc.altivec.vperm
6383 
6384   res_vsc = vec_lvrx(0, &vsc);
6385 // CHECK: @llvm.ppc.altivec.lvx
6386 // CHECK: @llvm.ppc.altivec.lvsl
6387 // CHECK: store <16 x i8> zeroinitializer
6388 // CHECK: @llvm.ppc.altivec.vperm
6389 // CHECK-LE: @llvm.ppc.altivec.lvx
6390 // CHECK-LE: @llvm.ppc.altivec.lvsl
6391 // CHECK-LE: store <16 x i8> zeroinitializer
6392 // CHECK-LE: @llvm.ppc.altivec.vperm
6393 
6394   res_vuc = vec_lvrx(0, &param_uc);
6395 // CHECK: @llvm.ppc.altivec.lvx
6396 // CHECK: @llvm.ppc.altivec.lvsl
6397 // CHECK: store <16 x i8> zeroinitializer
6398 // CHECK: @llvm.ppc.altivec.vperm
6399 // CHECK-LE: @llvm.ppc.altivec.lvx
6400 // CHECK-LE: @llvm.ppc.altivec.lvsl
6401 // CHECK-LE: store <16 x i8> zeroinitializer
6402 // CHECK-LE: @llvm.ppc.altivec.vperm
6403 
6404   res_vuc = vec_lvrx(0, &vuc);
6405 // CHECK: @llvm.ppc.altivec.lvx
6406 // CHECK: @llvm.ppc.altivec.lvsl
6407 // CHECK: store <16 x i8> zeroinitializer
6408 // CHECK: @llvm.ppc.altivec.vperm
6409 // CHECK-LE: @llvm.ppc.altivec.lvx
6410 // CHECK-LE: @llvm.ppc.altivec.lvsl
6411 // CHECK-LE: store <16 x i8> zeroinitializer
6412 // CHECK-LE: @llvm.ppc.altivec.vperm
6413 
6414   res_vbc = vec_lvrx(0, &vbc);
6415 // CHECK: store <16 x i8> zeroinitializer
6416 // CHECK: @llvm.ppc.altivec.lvx
6417 // CHECK: @llvm.ppc.altivec.lvsl
6418 // CHECK: @llvm.ppc.altivec.vperm
6419 // CHECK-LE: store <16 x i8> zeroinitializer
6420 // CHECK-LE: @llvm.ppc.altivec.lvx
6421 // CHECK-LE: @llvm.ppc.altivec.lvsl
6422 // CHECK-LE: @llvm.ppc.altivec.vperm
6423 
6424   res_vs  = vec_lvrx(0, &param_s);
6425 // CHECK: @llvm.ppc.altivec.lvx
6426 // CHECK: @llvm.ppc.altivec.lvsl
6427 // CHECK: store <8 x i16> zeroinitializer
6428 // CHECK: @llvm.ppc.altivec.vperm
6429 // CHECK-LE: @llvm.ppc.altivec.lvx
6430 // CHECK-LE: @llvm.ppc.altivec.lvsl
6431 // CHECK-LE: store <8 x i16> zeroinitializer
6432 // CHECK-LE: @llvm.ppc.altivec.vperm
6433 
6434   res_vs  = vec_lvrx(0, &vs);
6435 // CHECK: @llvm.ppc.altivec.lvx
6436 // CHECK: @llvm.ppc.altivec.lvsl
6437 // CHECK: store <8 x i16> zeroinitializer
6438 // CHECK: @llvm.ppc.altivec.vperm
6439 // CHECK-LE: @llvm.ppc.altivec.lvx
6440 // CHECK-LE: @llvm.ppc.altivec.lvsl
6441 // CHECK-LE: store <8 x i16> zeroinitializer
6442 // CHECK-LE: @llvm.ppc.altivec.vperm
6443 
6444   res_vus = vec_lvrx(0, &param_us);
6445 // CHECK: @llvm.ppc.altivec.lvx
6446 // CHECK: @llvm.ppc.altivec.lvsl
6447 // CHECK: store <8 x i16> zeroinitializer
6448 // CHECK: @llvm.ppc.altivec.vperm
6449 // CHECK-LE: @llvm.ppc.altivec.lvx
6450 // CHECK-LE: @llvm.ppc.altivec.lvsl
6451 // CHECK-LE: store <8 x i16> zeroinitializer
6452 // CHECK-LE: @llvm.ppc.altivec.vperm
6453 
6454   res_vus = vec_lvrx(0, &vus);
6455 // CHECK: @llvm.ppc.altivec.lvx
6456 // CHECK: @llvm.ppc.altivec.lvsl
6457 // CHECK: store <8 x i16> zeroinitializer
6458 // CHECK: @llvm.ppc.altivec.vperm
6459 // CHECK-LE: @llvm.ppc.altivec.lvx
6460 // CHECK-LE: @llvm.ppc.altivec.lvsl
6461 // CHECK-LE: store <8 x i16> zeroinitializer
6462 // CHECK-LE: @llvm.ppc.altivec.vperm
6463 
6464   res_vbs = vec_lvrx(0, &vbs);
6465 // CHECK: store <8 x i16> zeroinitializer
6466 // CHECK: @llvm.ppc.altivec.lvx
6467 // CHECK: @llvm.ppc.altivec.lvsl
6468 // CHECK: @llvm.ppc.altivec.vperm
6469 // CHECK-LE: store <8 x i16> zeroinitializer
6470 // CHECK-LE: @llvm.ppc.altivec.lvx
6471 // CHECK-LE: @llvm.ppc.altivec.lvsl
6472 // CHECK-LE: @llvm.ppc.altivec.vperm
6473 
6474   res_vp  = vec_lvrx(0, &vp);
6475 // CHECK: store <8 x i16> zeroinitializer
6476 // CHECK: @llvm.ppc.altivec.lvx
6477 // CHECK: @llvm.ppc.altivec.lvsl
6478 // CHECK: @llvm.ppc.altivec.vperm
6479 // CHECK-LE: store <8 x i16> zeroinitializer
6480 // CHECK-LE: @llvm.ppc.altivec.lvx
6481 // CHECK-LE: @llvm.ppc.altivec.lvsl
6482 // CHECK-LE: @llvm.ppc.altivec.vperm
6483 
6484   res_vi  = vec_lvrx(0, &param_i);
6485 // CHECK: @llvm.ppc.altivec.lvx
6486 // CHECK: @llvm.ppc.altivec.lvsl
6487 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6492 // CHECK-LE: @llvm.ppc.altivec.vperm
6493 
6494   res_vi  = vec_lvrx(0, &vi);
6495 // CHECK: @llvm.ppc.altivec.lvx
6496 // CHECK: @llvm.ppc.altivec.lvsl
6497 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6502 // CHECK-LE: @llvm.ppc.altivec.vperm
6503 
6504   res_vui = vec_lvrx(0, &param_ui);
6505 // CHECK: @llvm.ppc.altivec.lvx
6506 // CHECK: @llvm.ppc.altivec.lvsl
6507 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6512 // CHECK-LE: @llvm.ppc.altivec.vperm
6513 
6514   res_vui = vec_lvrx(0, &vui);
6515 // CHECK: @llvm.ppc.altivec.lvx
6516 // CHECK: @llvm.ppc.altivec.lvsl
6517 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6522 // CHECK-LE: @llvm.ppc.altivec.vperm
6523 
6524   res_vbi = vec_lvrx(0, &vbi);
6525 // CHECK: store <4 x i32> zeroinitializer
6526 // CHECK: @llvm.ppc.altivec.lvx
6527 // CHECK: @llvm.ppc.altivec.lvsl
6528 // CHECK: @llvm.ppc.altivec.vperm
6529 // CHECK-LE: store <4 x i32> 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_vf  = vec_lvrx(0, &vf);
6535 // CHECK: @llvm.ppc.altivec.lvx
6536 // CHECK: @llvm.ppc.altivec.lvsl
6537 // CHECK: store <4 x float> 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 <4 x float> zeroinitializer
6542 // CHECK-LE: @llvm.ppc.altivec.vperm
6543 
6544   /* vec_lvrxl */
6545   res_vsc = vec_lvrxl(0, &param_sc);
6546 // CHECK: @llvm.ppc.altivec.lvxl
6547 // CHECK: @llvm.ppc.altivec.lvsl
6548 // CHECK: store <16 x i8> zeroinitializer
6549 // CHECK: @llvm.ppc.altivec.vperm
6550 // CHECK-LE: @llvm.ppc.altivec.lvxl
6551 // CHECK-LE: @llvm.ppc.altivec.lvsl
6552 // CHECK-LE: store <16 x i8> zeroinitializer
6553 // CHECK-LE: @llvm.ppc.altivec.vperm
6554 
6555   res_vsc = vec_lvrxl(0, &vsc);
6556 // CHECK: @llvm.ppc.altivec.lvxl
6557 // CHECK: @llvm.ppc.altivec.lvsl
6558 // CHECK: store <16 x i8> zeroinitializer
6559 // CHECK: @llvm.ppc.altivec.vperm
6560 // CHECK-LE: @llvm.ppc.altivec.lvxl
6561 // CHECK-LE: @llvm.ppc.altivec.lvsl
6562 // CHECK-LE: store <16 x i8> zeroinitializer
6563 // CHECK-LE: @llvm.ppc.altivec.vperm
6564 
6565   res_vuc = vec_lvrxl(0, &param_uc);
6566 // CHECK: @llvm.ppc.altivec.lvxl
6567 // CHECK: @llvm.ppc.altivec.lvsl
6568 // CHECK: store <16 x i8> zeroinitializer
6569 // CHECK: @llvm.ppc.altivec.vperm
6570 // CHECK-LE: @llvm.ppc.altivec.lvxl
6571 // CHECK-LE: @llvm.ppc.altivec.lvsl
6572 // CHECK-LE: store <16 x i8> zeroinitializer
6573 // CHECK-LE: @llvm.ppc.altivec.vperm
6574 
6575   res_vuc = vec_lvrxl(0, &vuc);
6576 // CHECK: @llvm.ppc.altivec.lvxl
6577 // CHECK: @llvm.ppc.altivec.lvsl
6578 // CHECK: store <16 x i8> zeroinitializer
6579 // CHECK: @llvm.ppc.altivec.vperm
6580 // CHECK-LE: @llvm.ppc.altivec.lvxl
6581 // CHECK-LE: @llvm.ppc.altivec.lvsl
6582 // CHECK-LE: store <16 x i8> zeroinitializer
6583 // CHECK-LE: @llvm.ppc.altivec.vperm
6584 
6585   res_vbc = vec_lvrxl(0, &vbc);
6586 // CHECK: store <16 x i8> zeroinitializer
6587 // CHECK: @llvm.ppc.altivec.lvxl
6588 // CHECK: @llvm.ppc.altivec.lvsl
6589 // CHECK: @llvm.ppc.altivec.vperm
6590 // CHECK-LE: store <16 x i8> zeroinitializer
6591 // CHECK-LE: @llvm.ppc.altivec.lvxl
6592 // CHECK-LE: @llvm.ppc.altivec.lvsl
6593 // CHECK-LE: @llvm.ppc.altivec.vperm
6594 
6595   res_vs  = vec_lvrxl(0, &param_s);
6596 // CHECK: @llvm.ppc.altivec.lvxl
6597 // CHECK: @llvm.ppc.altivec.lvsl
6598 // CHECK: store <8 x i16> zeroinitializer
6599 // CHECK: @llvm.ppc.altivec.vperm
6600 // CHECK-LE: @llvm.ppc.altivec.lvxl
6601 // CHECK-LE: @llvm.ppc.altivec.lvsl
6602 // CHECK-LE: store <8 x i16> zeroinitializer
6603 // CHECK-LE: @llvm.ppc.altivec.vperm
6604 
6605   res_vs  = vec_lvrxl(0, &vs);
6606 // CHECK: @llvm.ppc.altivec.lvxl
6607 // CHECK: @llvm.ppc.altivec.lvsl
6608 // CHECK: store <8 x i16> zeroinitializer
6609 // CHECK: @llvm.ppc.altivec.vperm
6610 // CHECK-LE: @llvm.ppc.altivec.lvxl
6611 // CHECK-LE: @llvm.ppc.altivec.lvsl
6612 // CHECK-LE: store <8 x i16> zeroinitializer
6613 // CHECK-LE: @llvm.ppc.altivec.vperm
6614 
6615   res_vus = vec_lvrxl(0, &param_us);
6616 // CHECK: @llvm.ppc.altivec.lvxl
6617 // CHECK: @llvm.ppc.altivec.lvsl
6618 // CHECK: store <8 x i16> zeroinitializer
6619 // CHECK: @llvm.ppc.altivec.vperm
6620 // CHECK-LE: @llvm.ppc.altivec.lvxl
6621 // CHECK-LE: @llvm.ppc.altivec.lvsl
6622 // CHECK-LE: store <8 x i16> zeroinitializer
6623 // CHECK-LE: @llvm.ppc.altivec.vperm
6624 
6625   res_vus = vec_lvrxl(0, &vus);
6626 // CHECK: @llvm.ppc.altivec.lvxl
6627 // CHECK: @llvm.ppc.altivec.lvsl
6628 // CHECK: store <8 x i16> zeroinitializer
6629 // CHECK: @llvm.ppc.altivec.vperm
6630 // CHECK-LE: @llvm.ppc.altivec.lvxl
6631 // CHECK-LE: @llvm.ppc.altivec.lvsl
6632 // CHECK-LE: store <8 x i16> zeroinitializer
6633 // CHECK-LE: @llvm.ppc.altivec.vperm
6634 
6635   res_vbs = vec_lvrxl(0, &vbs);
6636 // CHECK: store <8 x i16> zeroinitializer
6637 // CHECK: @llvm.ppc.altivec.lvxl
6638 // CHECK: @llvm.ppc.altivec.lvsl
6639 // CHECK: @llvm.ppc.altivec.vperm
6640 // CHECK-LE: store <8 x i16> zeroinitializer
6641 // CHECK-LE: @llvm.ppc.altivec.lvxl
6642 // CHECK-LE: @llvm.ppc.altivec.lvsl
6643 // CHECK-LE: @llvm.ppc.altivec.vperm
6644 
6645   res_vp  = vec_lvrxl(0, &vp);
6646 // CHECK: store <8 x i16> zeroinitializer
6647 // CHECK: @llvm.ppc.altivec.lvxl
6648 // CHECK: @llvm.ppc.altivec.lvsl
6649 // CHECK: @llvm.ppc.altivec.vperm
6650 // CHECK-LE: store <8 x i16> zeroinitializer
6651 // CHECK-LE: @llvm.ppc.altivec.lvxl
6652 // CHECK-LE: @llvm.ppc.altivec.lvsl
6653 // CHECK-LE: @llvm.ppc.altivec.vperm
6654 
6655   res_vi  = vec_lvrxl(0, &param_i);
6656 // CHECK: @llvm.ppc.altivec.lvxl
6657 // CHECK: @llvm.ppc.altivec.lvsl
6658 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6663 // CHECK-LE: @llvm.ppc.altivec.vperm
6664 
6665   res_vi  = vec_lvrxl(0, &vi);
6666 // CHECK: @llvm.ppc.altivec.lvxl
6667 // CHECK: @llvm.ppc.altivec.lvsl
6668 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6673 // CHECK-LE: @llvm.ppc.altivec.vperm
6674 
6675   res_vui = vec_lvrxl(0, &param_ui);
6676 // CHECK: @llvm.ppc.altivec.lvxl
6677 // CHECK: @llvm.ppc.altivec.lvsl
6678 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6683 // CHECK-LE: @llvm.ppc.altivec.vperm
6684 
6685   res_vui = vec_lvrxl(0, &vui);
6686 // CHECK: @llvm.ppc.altivec.lvxl
6687 // CHECK: @llvm.ppc.altivec.lvsl
6688 // CHECK: store <4 x i32> 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 <4 x i32> zeroinitializer
6693 // CHECK-LE: @llvm.ppc.altivec.vperm
6694 
6695   res_vbi = vec_lvrxl(0, &vbi);
6696 // CHECK: store <4 x i32> zeroinitializer
6697 // CHECK: @llvm.ppc.altivec.lvxl
6698 // CHECK: @llvm.ppc.altivec.lvsl
6699 // CHECK: @llvm.ppc.altivec.vperm
6700 // CHECK-LE: store <4 x i32> 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_vf  = vec_lvrxl(0, &vf);
6706 // CHECK: @llvm.ppc.altivec.lvxl
6707 // CHECK: @llvm.ppc.altivec.lvsl
6708 // CHECK: store <4 x float> 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 <4 x float> zeroinitializer
6713 // CHECK-LE: @llvm.ppc.altivec.vperm
6714 
6715   /* vec_stvlx */
6716   vec_stvlx(vsc, 0, &param_sc);
6717 // CHECK: @llvm.ppc.altivec.lvx
6718 // CHECK: @llvm.ppc.altivec.lvsl
6719 // CHECK: store <16 x i8> zeroinitializer
6720 // CHECK: @llvm.ppc.altivec.vperm
6721 // CHECK: @llvm.ppc.altivec.lvsr
6722 // CHECK: @llvm.ppc.altivec.vperm
6723 // CHECK: @llvm.ppc.altivec.stvx
6724 // CHECK-LE: @llvm.ppc.altivec.lvx
6725 // CHECK-LE: @llvm.ppc.altivec.lvsl
6726 // CHECK-LE: store <16 x i8> zeroinitializer
6727 // CHECK-LE: @llvm.ppc.altivec.vperm
6728 // CHECK-LE: @llvm.ppc.altivec.lvsr
6729 // CHECK-LE: @llvm.ppc.altivec.vperm
6730 // CHECK-LE: @llvm.ppc.altivec.stvx
6731 
6732   vec_stvlx(vsc, 0, &vsc);
6733 // CHECK: @llvm.ppc.altivec.lvx
6734 // CHECK: @llvm.ppc.altivec.lvsl
6735 // CHECK: store <16 x i8> zeroinitializer
6736 // CHECK: @llvm.ppc.altivec.vperm
6737 // CHECK: @llvm.ppc.altivec.lvsr
6738 // CHECK: @llvm.ppc.altivec.vperm
6739 // CHECK: @llvm.ppc.altivec.stvx
6740 // CHECK-LE: @llvm.ppc.altivec.lvx
6741 // CHECK-LE: @llvm.ppc.altivec.lvsl
6742 // CHECK-LE: store <16 x i8> zeroinitializer
6743 // CHECK-LE: @llvm.ppc.altivec.vperm
6744 // CHECK-LE: @llvm.ppc.altivec.lvsr
6745 // CHECK-LE: @llvm.ppc.altivec.vperm
6746 // CHECK-LE: @llvm.ppc.altivec.stvx
6747 
6748   vec_stvlx(vuc, 0, &param_uc);
6749 // CHECK: @llvm.ppc.altivec.lvx
6750 // CHECK: @llvm.ppc.altivec.lvsl
6751 // CHECK: store <16 x i8> zeroinitializer
6752 // CHECK: @llvm.ppc.altivec.vperm
6753 // CHECK: @llvm.ppc.altivec.lvsr
6754 // CHECK: @llvm.ppc.altivec.vperm
6755 // CHECK: @llvm.ppc.altivec.stvx
6756 // CHECK-LE: @llvm.ppc.altivec.lvx
6757 // CHECK-LE: @llvm.ppc.altivec.lvsl
6758 // CHECK-LE: store <16 x i8> zeroinitializer
6759 // CHECK-LE: @llvm.ppc.altivec.vperm
6760 // CHECK-LE: @llvm.ppc.altivec.lvsr
6761 // CHECK-LE: @llvm.ppc.altivec.vperm
6762 // CHECK-LE: @llvm.ppc.altivec.stvx
6763 
6764   vec_stvlx(vuc, 0, &vuc);
6765 // CHECK: @llvm.ppc.altivec.lvx
6766 // CHECK: @llvm.ppc.altivec.lvsl
6767 // CHECK: store <16 x i8> zeroinitializer
6768 // CHECK: @llvm.ppc.altivec.vperm
6769 // CHECK: @llvm.ppc.altivec.lvsr
6770 // CHECK: @llvm.ppc.altivec.vperm
6771 // CHECK: @llvm.ppc.altivec.stvx
6772 // CHECK-LE: @llvm.ppc.altivec.lvx
6773 // CHECK-LE: @llvm.ppc.altivec.lvsl
6774 // CHECK-LE: store <16 x i8> zeroinitializer
6775 // CHECK-LE: @llvm.ppc.altivec.vperm
6776 // CHECK-LE: @llvm.ppc.altivec.lvsr
6777 // CHECK-LE: @llvm.ppc.altivec.vperm
6778 // CHECK-LE: @llvm.ppc.altivec.stvx
6779 
6780   vec_stvlx(vbc, 0, &vbc);
6781 // CHECK: store <16 x i8> zeroinitializer
6782 // CHECK: @llvm.ppc.altivec.lvx
6783 // CHECK: @llvm.ppc.altivec.lvsl
6784 // CHECK: @llvm.ppc.altivec.vperm
6785 // CHECK: @llvm.ppc.altivec.lvsr
6786 // CHECK: @llvm.ppc.altivec.vperm
6787 // CHECK: @llvm.ppc.altivec.stvx
6788 // CHECK-LE: store <16 x i8> zeroinitializer
6789 // CHECK-LE: @llvm.ppc.altivec.lvx
6790 // CHECK-LE: @llvm.ppc.altivec.lvsl
6791 // CHECK-LE: @llvm.ppc.altivec.vperm
6792 // CHECK-LE: @llvm.ppc.altivec.lvsr
6793 // CHECK-LE: @llvm.ppc.altivec.vperm
6794 // CHECK-LE: @llvm.ppc.altivec.stvx
6795 
6796   vec_stvlx(vs, 0, &param_s);
6797 // CHECK: @llvm.ppc.altivec.lvx
6798 // CHECK: @llvm.ppc.altivec.lvsl
6799 // CHECK: store <8 x i16> zeroinitializer
6800 // CHECK: @llvm.ppc.altivec.vperm
6801 // CHECK: @llvm.ppc.altivec.lvsr
6802 // CHECK: @llvm.ppc.altivec.vperm
6803 // CHECK: @llvm.ppc.altivec.stvx
6804 // CHECK-LE: @llvm.ppc.altivec.lvx
6805 // CHECK-LE: @llvm.ppc.altivec.lvsl
6806 // CHECK-LE: store <8 x i16> zeroinitializer
6807 // CHECK-LE: @llvm.ppc.altivec.vperm
6808 // CHECK-LE: @llvm.ppc.altivec.lvsr
6809 // CHECK-LE: @llvm.ppc.altivec.vperm
6810 // CHECK-LE: @llvm.ppc.altivec.stvx
6811 
6812   vec_stvlx(vs, 0, &vs);
6813 // CHECK: @llvm.ppc.altivec.lvx
6814 // CHECK: @llvm.ppc.altivec.lvsl
6815 // CHECK: store <8 x i16> zeroinitializer
6816 // CHECK: @llvm.ppc.altivec.vperm
6817 // CHECK: @llvm.ppc.altivec.lvsr
6818 // CHECK: @llvm.ppc.altivec.vperm
6819 // CHECK: @llvm.ppc.altivec.stvx
6820 // CHECK-LE: @llvm.ppc.altivec.lvx
6821 // CHECK-LE: @llvm.ppc.altivec.lvsl
6822 // CHECK-LE: store <8 x i16> zeroinitializer
6823 // CHECK-LE: @llvm.ppc.altivec.vperm
6824 // CHECK-LE: @llvm.ppc.altivec.lvsr
6825 // CHECK-LE: @llvm.ppc.altivec.vperm
6826 // CHECK-LE: @llvm.ppc.altivec.stvx
6827 
6828   vec_stvlx(vus, 0, &param_us);
6829 // CHECK: @llvm.ppc.altivec.lvx
6830 // CHECK: @llvm.ppc.altivec.lvsl
6831 // CHECK: store <8 x i16> zeroinitializer
6832 // CHECK: @llvm.ppc.altivec.vperm
6833 // CHECK: @llvm.ppc.altivec.lvsr
6834 // CHECK: @llvm.ppc.altivec.vperm
6835 // CHECK: @llvm.ppc.altivec.stvx
6836 // CHECK-LE: @llvm.ppc.altivec.lvx
6837 // CHECK-LE: @llvm.ppc.altivec.lvsl
6838 // CHECK-LE: store <8 x i16> zeroinitializer
6839 // CHECK-LE: @llvm.ppc.altivec.vperm
6840 // CHECK-LE: @llvm.ppc.altivec.lvsr
6841 // CHECK-LE: @llvm.ppc.altivec.vperm
6842 // CHECK-LE: @llvm.ppc.altivec.stvx
6843 
6844   vec_stvlx(vus, 0, &vus);
6845 // CHECK: @llvm.ppc.altivec.lvx
6846 // CHECK: @llvm.ppc.altivec.lvsl
6847 // CHECK: store <8 x i16> zeroinitializer
6848 // CHECK: @llvm.ppc.altivec.vperm
6849 // CHECK: @llvm.ppc.altivec.lvsr
6850 // CHECK: @llvm.ppc.altivec.vperm
6851 // CHECK: @llvm.ppc.altivec.stvx
6852 // CHECK-LE: @llvm.ppc.altivec.lvx
6853 // CHECK-LE: @llvm.ppc.altivec.lvsl
6854 // CHECK-LE: store <8 x i16> zeroinitializer
6855 // CHECK-LE: @llvm.ppc.altivec.vperm
6856 // CHECK-LE: @llvm.ppc.altivec.lvsr
6857 // CHECK-LE: @llvm.ppc.altivec.vperm
6858 // CHECK-LE: @llvm.ppc.altivec.stvx
6859 
6860   vec_stvlx(vbs, 0, &vbs);
6861 // CHECK: store <8 x i16> zeroinitializer
6862 // CHECK: @llvm.ppc.altivec.lvx
6863 // CHECK: @llvm.ppc.altivec.lvsl
6864 // CHECK: @llvm.ppc.altivec.vperm
6865 // CHECK: @llvm.ppc.altivec.lvsr
6866 // CHECK: @llvm.ppc.altivec.vperm
6867 // CHECK: @llvm.ppc.altivec.stvx
6868 // CHECK-LE: store <8 x i16> zeroinitializer
6869 // CHECK-LE: @llvm.ppc.altivec.lvx
6870 // CHECK-LE: @llvm.ppc.altivec.lvsl
6871 // CHECK-LE: @llvm.ppc.altivec.vperm
6872 // CHECK-LE: @llvm.ppc.altivec.lvsr
6873 // CHECK-LE: @llvm.ppc.altivec.vperm
6874 // CHECK-LE: @llvm.ppc.altivec.stvx
6875 
6876   vec_stvlx(vp, 0, &vp);
6877 // CHECK: store <8 x i16> zeroinitializer
6878 // CHECK: @llvm.ppc.altivec.lvx
6879 // CHECK: @llvm.ppc.altivec.lvsl
6880 // CHECK: @llvm.ppc.altivec.vperm
6881 // CHECK: @llvm.ppc.altivec.lvsr
6882 // CHECK: @llvm.ppc.altivec.vperm
6883 // CHECK: @llvm.ppc.altivec.stvx
6884 // CHECK-LE: store <8 x i16> zeroinitializer
6885 // CHECK-LE: @llvm.ppc.altivec.lvx
6886 // CHECK-LE: @llvm.ppc.altivec.lvsl
6887 // CHECK-LE: @llvm.ppc.altivec.vperm
6888 // CHECK-LE: @llvm.ppc.altivec.lvsr
6889 // CHECK-LE: @llvm.ppc.altivec.vperm
6890 // CHECK-LE: @llvm.ppc.altivec.stvx
6891 
6892   vec_stvlx(vi, 0, &param_i);
6893 // CHECK: @llvm.ppc.altivec.lvx
6894 // CHECK: @llvm.ppc.altivec.lvsl
6895 // CHECK: store <4 x i32> zeroinitializer
6896 // CHECK: @llvm.ppc.altivec.vperm
6897 // CHECK: @llvm.ppc.altivec.lvsr
6898 // CHECK: @llvm.ppc.altivec.vperm
6899 // CHECK: @llvm.ppc.altivec.stvx
6900 // CHECK-LE: @llvm.ppc.altivec.lvx
6901 // CHECK-LE: @llvm.ppc.altivec.lvsl
6902 // CHECK-LE: store <4 x i32> zeroinitializer
6903 // CHECK-LE: @llvm.ppc.altivec.vperm
6904 // CHECK-LE: @llvm.ppc.altivec.lvsr
6905 // CHECK-LE: @llvm.ppc.altivec.vperm
6906 // CHECK-LE: @llvm.ppc.altivec.stvx
6907 
6908   vec_stvlx(vi, 0, &vi);
6909 // CHECK: @llvm.ppc.altivec.lvx
6910 // CHECK: @llvm.ppc.altivec.lvsl
6911 // CHECK: store <4 x i32> zeroinitializer
6912 // CHECK: @llvm.ppc.altivec.vperm
6913 // CHECK: @llvm.ppc.altivec.lvsr
6914 // CHECK: @llvm.ppc.altivec.vperm
6915 // CHECK: @llvm.ppc.altivec.stvx
6916 // CHECK-LE: @llvm.ppc.altivec.lvx
6917 // CHECK-LE: @llvm.ppc.altivec.lvsl
6918 // CHECK-LE: store <4 x i32> zeroinitializer
6919 // CHECK-LE: @llvm.ppc.altivec.vperm
6920 // CHECK-LE: @llvm.ppc.altivec.lvsr
6921 // CHECK-LE: @llvm.ppc.altivec.vperm
6922 // CHECK-LE: @llvm.ppc.altivec.stvx
6923 
6924   vec_stvlx(vui, 0, &param_ui);
6925 // CHECK: @llvm.ppc.altivec.lvx
6926 // CHECK: @llvm.ppc.altivec.lvsl
6927 // CHECK: store <4 x i32> zeroinitializer
6928 // CHECK: @llvm.ppc.altivec.vperm
6929 // CHECK: @llvm.ppc.altivec.lvsr
6930 // CHECK: @llvm.ppc.altivec.vperm
6931 // CHECK: @llvm.ppc.altivec.stvx
6932 // CHECK-LE: @llvm.ppc.altivec.lvx
6933 // CHECK-LE: @llvm.ppc.altivec.lvsl
6934 // CHECK-LE: store <4 x i32> zeroinitializer
6935 // CHECK-LE: @llvm.ppc.altivec.vperm
6936 // CHECK-LE: @llvm.ppc.altivec.lvsr
6937 // CHECK-LE: @llvm.ppc.altivec.vperm
6938 // CHECK-LE: @llvm.ppc.altivec.stvx
6939 
6940   vec_stvlx(vui, 0, &vui);
6941 // CHECK: @llvm.ppc.altivec.lvx
6942 // CHECK: @llvm.ppc.altivec.lvsl
6943 // CHECK: store <4 x i32> zeroinitializer
6944 // CHECK: @llvm.ppc.altivec.vperm
6945 // CHECK: @llvm.ppc.altivec.lvsr
6946 // CHECK: @llvm.ppc.altivec.vperm
6947 // CHECK: @llvm.ppc.altivec.stvx
6948 // CHECK-LE: @llvm.ppc.altivec.lvx
6949 // CHECK-LE: @llvm.ppc.altivec.lvsl
6950 // CHECK-LE: store <4 x i32> zeroinitializer
6951 // CHECK-LE: @llvm.ppc.altivec.vperm
6952 // CHECK-LE: @llvm.ppc.altivec.lvsr
6953 // CHECK-LE: @llvm.ppc.altivec.vperm
6954 // CHECK-LE: @llvm.ppc.altivec.stvx
6955 
6956   vec_stvlx(vbi, 0, &vbi);
6957 // CHECK: store <4 x i32> zeroinitializer
6958 // CHECK: @llvm.ppc.altivec.lvx
6959 // CHECK: @llvm.ppc.altivec.lvsl
6960 // CHECK: @llvm.ppc.altivec.vperm
6961 // CHECK: @llvm.ppc.altivec.lvsr
6962 // CHECK: @llvm.ppc.altivec.vperm
6963 // CHECK: @llvm.ppc.altivec.stvx
6964 // CHECK-LE: store <4 x i32> zeroinitializer
6965 // CHECK-LE: @llvm.ppc.altivec.lvx
6966 // CHECK-LE: @llvm.ppc.altivec.lvsl
6967 // CHECK-LE: @llvm.ppc.altivec.vperm
6968 // CHECK-LE: @llvm.ppc.altivec.lvsr
6969 // CHECK-LE: @llvm.ppc.altivec.vperm
6970 // CHECK-LE: @llvm.ppc.altivec.stvx
6971 
6972   vec_stvlx(vf, 0, &vf);
6973 // CHECK: @llvm.ppc.altivec.lvx
6974 // CHECK: @llvm.ppc.altivec.lvsl
6975 // CHECK: store <4 x float> zeroinitializer
6976 // CHECK: @llvm.ppc.altivec.vperm
6977 // CHECK: @llvm.ppc.altivec.lvsr
6978 // CHECK: @llvm.ppc.altivec.vperm
6979 // CHECK: @llvm.ppc.altivec.stvx
6980 // CHECK-LE: @llvm.ppc.altivec.lvx
6981 // CHECK-LE: @llvm.ppc.altivec.lvsl
6982 // CHECK-LE: store <4 x float> zeroinitializer
6983 // CHECK-LE: @llvm.ppc.altivec.vperm
6984 // CHECK-LE: @llvm.ppc.altivec.lvsr
6985 // CHECK-LE: @llvm.ppc.altivec.vperm
6986 // CHECK-LE: @llvm.ppc.altivec.stvx
6987 
6988   /* vec_stvlxl */
6989   vec_stvlxl(vsc, 0, &param_sc);
6990 // CHECK: @llvm.ppc.altivec.lvx
6991 // CHECK: @llvm.ppc.altivec.lvsl
6992 // CHECK: store <16 x i8> zeroinitializer
6993 // CHECK: @llvm.ppc.altivec.vperm
6994 // CHECK: @llvm.ppc.altivec.lvsr
6995 // CHECK: @llvm.ppc.altivec.vperm
6996 // CHECK: @llvm.ppc.altivec.stvxl
6997 // CHECK-LE: @llvm.ppc.altivec.lvx
6998 // CHECK-LE: @llvm.ppc.altivec.lvsl
6999 // CHECK-LE: store <16 x i8> zeroinitializer
7000 // CHECK-LE: @llvm.ppc.altivec.vperm
7001 // CHECK-LE: @llvm.ppc.altivec.lvsr
7002 // CHECK-LE: @llvm.ppc.altivec.vperm
7003 // CHECK-LE: @llvm.ppc.altivec.stvxl
7004 
7005   vec_stvlxl(vsc, 0, &vsc);
7006 // CHECK: @llvm.ppc.altivec.lvx
7007 // CHECK: @llvm.ppc.altivec.lvsl
7008 // CHECK: store <16 x i8> zeroinitializer
7009 // CHECK: @llvm.ppc.altivec.vperm
7010 // CHECK: @llvm.ppc.altivec.lvsr
7011 // CHECK: @llvm.ppc.altivec.vperm
7012 // CHECK: @llvm.ppc.altivec.stvxl
7013 // CHECK-LE: @llvm.ppc.altivec.lvx
7014 // CHECK-LE: @llvm.ppc.altivec.lvsl
7015 // CHECK-LE: store <16 x i8> zeroinitializer
7016 // CHECK-LE: @llvm.ppc.altivec.vperm
7017 // CHECK-LE: @llvm.ppc.altivec.lvsr
7018 // CHECK-LE: @llvm.ppc.altivec.vperm
7019 // CHECK-LE: @llvm.ppc.altivec.stvxl
7020 
7021   vec_stvlxl(vuc, 0, &param_uc);
7022 // CHECK: @llvm.ppc.altivec.lvx
7023 // CHECK: @llvm.ppc.altivec.lvsl
7024 // CHECK: store <16 x i8> zeroinitializer
7025 // CHECK: @llvm.ppc.altivec.vperm
7026 // CHECK: @llvm.ppc.altivec.lvsr
7027 // CHECK: @llvm.ppc.altivec.vperm
7028 // CHECK: @llvm.ppc.altivec.stvxl
7029 // CHECK-LE: @llvm.ppc.altivec.lvx
7030 // CHECK-LE: @llvm.ppc.altivec.lvsl
7031 // CHECK-LE: store <16 x i8> zeroinitializer
7032 // CHECK-LE: @llvm.ppc.altivec.vperm
7033 // CHECK-LE: @llvm.ppc.altivec.lvsr
7034 // CHECK-LE: @llvm.ppc.altivec.vperm
7035 // CHECK-LE: @llvm.ppc.altivec.stvxl
7036 
7037   vec_stvlxl(vuc, 0, &vuc);
7038 // CHECK: @llvm.ppc.altivec.lvx
7039 // CHECK: @llvm.ppc.altivec.lvsl
7040 // CHECK: store <16 x i8> zeroinitializer
7041 // CHECK: @llvm.ppc.altivec.vperm
7042 // CHECK: @llvm.ppc.altivec.lvsr
7043 // CHECK: @llvm.ppc.altivec.vperm
7044 // CHECK: @llvm.ppc.altivec.stvxl
7045 // CHECK-LE: @llvm.ppc.altivec.lvx
7046 // CHECK-LE: @llvm.ppc.altivec.lvsl
7047 // CHECK-LE: store <16 x i8> zeroinitializer
7048 // CHECK-LE: @llvm.ppc.altivec.vperm
7049 // CHECK-LE: @llvm.ppc.altivec.lvsr
7050 // CHECK-LE: @llvm.ppc.altivec.vperm
7051 // CHECK-LE: @llvm.ppc.altivec.stvxl
7052 
7053   vec_stvlxl(vbc, 0, &vbc);
7054 // CHECK: store <16 x i8> zeroinitializer
7055 // CHECK: @llvm.ppc.altivec.lvx
7056 // CHECK: @llvm.ppc.altivec.lvsl
7057 // CHECK: @llvm.ppc.altivec.vperm
7058 // CHECK: @llvm.ppc.altivec.lvsr
7059 // CHECK: @llvm.ppc.altivec.vperm
7060 // CHECK: @llvm.ppc.altivec.stvxl
7061 // CHECK-LE: store <16 x i8> zeroinitializer
7062 // CHECK-LE: @llvm.ppc.altivec.lvx
7063 // CHECK-LE: @llvm.ppc.altivec.lvsl
7064 // CHECK-LE: @llvm.ppc.altivec.vperm
7065 // CHECK-LE: @llvm.ppc.altivec.lvsr
7066 // CHECK-LE: @llvm.ppc.altivec.vperm
7067 // CHECK-LE: @llvm.ppc.altivec.stvxl
7068 
7069   vec_stvlxl(vs, 0, &param_s);
7070 // CHECK: @llvm.ppc.altivec.lvx
7071 // CHECK: @llvm.ppc.altivec.lvsl
7072 // CHECK: store <8 x i16> zeroinitializer
7073 // CHECK: @llvm.ppc.altivec.vperm
7074 // CHECK: @llvm.ppc.altivec.lvsr
7075 // CHECK: @llvm.ppc.altivec.vperm
7076 // CHECK: @llvm.ppc.altivec.stvxl
7077 // CHECK-LE: @llvm.ppc.altivec.lvx
7078 // CHECK-LE: @llvm.ppc.altivec.lvsl
7079 // CHECK-LE: store <8 x i16> zeroinitializer
7080 // CHECK-LE: @llvm.ppc.altivec.vperm
7081 // CHECK-LE: @llvm.ppc.altivec.lvsr
7082 // CHECK-LE: @llvm.ppc.altivec.vperm
7083 // CHECK-LE: @llvm.ppc.altivec.stvxl
7084 
7085   vec_stvlxl(vs, 0, &vs);
7086 // CHECK: @llvm.ppc.altivec.lvx
7087 // CHECK: @llvm.ppc.altivec.lvsl
7088 // CHECK: store <8 x i16> zeroinitializer
7089 // CHECK: @llvm.ppc.altivec.vperm
7090 // CHECK: @llvm.ppc.altivec.lvsr
7091 // CHECK: @llvm.ppc.altivec.vperm
7092 // CHECK: @llvm.ppc.altivec.stvxl
7093 // CHECK-LE: @llvm.ppc.altivec.lvx
7094 // CHECK-LE: @llvm.ppc.altivec.lvsl
7095 // CHECK-LE: store <8 x i16> zeroinitializer
7096 // CHECK-LE: @llvm.ppc.altivec.vperm
7097 // CHECK-LE: @llvm.ppc.altivec.lvsr
7098 // CHECK-LE: @llvm.ppc.altivec.vperm
7099 // CHECK-LE: @llvm.ppc.altivec.stvxl
7100 
7101   vec_stvlxl(vus, 0, &param_us);
7102 // CHECK: @llvm.ppc.altivec.lvx
7103 // CHECK: @llvm.ppc.altivec.lvsl
7104 // CHECK: store <8 x i16> zeroinitializer
7105 // CHECK: @llvm.ppc.altivec.vperm
7106 // CHECK: @llvm.ppc.altivec.lvsr
7107 // CHECK: @llvm.ppc.altivec.vperm
7108 // CHECK: @llvm.ppc.altivec.stvxl
7109 // CHECK-LE: @llvm.ppc.altivec.lvx
7110 // CHECK-LE: @llvm.ppc.altivec.lvsl
7111 // CHECK-LE: store <8 x i16> zeroinitializer
7112 // CHECK-LE: @llvm.ppc.altivec.vperm
7113 // CHECK-LE: @llvm.ppc.altivec.lvsr
7114 // CHECK-LE: @llvm.ppc.altivec.vperm
7115 // CHECK-LE: @llvm.ppc.altivec.stvxl
7116 
7117   vec_stvlxl(vus, 0, &vus);
7118 // CHECK: @llvm.ppc.altivec.lvx
7119 // CHECK: @llvm.ppc.altivec.lvsl
7120 // CHECK: store <8 x i16> zeroinitializer
7121 // CHECK: @llvm.ppc.altivec.vperm
7122 // CHECK: @llvm.ppc.altivec.lvsr
7123 // CHECK: @llvm.ppc.altivec.vperm
7124 // CHECK: @llvm.ppc.altivec.stvxl
7125 // CHECK-LE: @llvm.ppc.altivec.lvx
7126 // CHECK-LE: @llvm.ppc.altivec.lvsl
7127 // CHECK-LE: store <8 x i16> zeroinitializer
7128 // CHECK-LE: @llvm.ppc.altivec.vperm
7129 // CHECK-LE: @llvm.ppc.altivec.lvsr
7130 // CHECK-LE: @llvm.ppc.altivec.vperm
7131 // CHECK-LE: @llvm.ppc.altivec.stvxl
7132 
7133   vec_stvlxl(vbs, 0, &vbs);
7134 // CHECK: store <8 x i16> zeroinitializer
7135 // CHECK: @llvm.ppc.altivec.lvx
7136 // CHECK: @llvm.ppc.altivec.lvsl
7137 // CHECK: @llvm.ppc.altivec.vperm
7138 // CHECK: @llvm.ppc.altivec.lvsr
7139 // CHECK: @llvm.ppc.altivec.vperm
7140 // CHECK: @llvm.ppc.altivec.stvxl
7141 // CHECK-LE: store <8 x i16> zeroinitializer
7142 // CHECK-LE: @llvm.ppc.altivec.lvx
7143 // CHECK-LE: @llvm.ppc.altivec.lvsl
7144 // CHECK-LE: @llvm.ppc.altivec.vperm
7145 // CHECK-LE: @llvm.ppc.altivec.lvsr
7146 // CHECK-LE: @llvm.ppc.altivec.vperm
7147 // CHECK-LE: @llvm.ppc.altivec.stvxl
7148 
7149   vec_stvlxl(vp, 0, &vp);
7150 // CHECK: store <8 x i16> zeroinitializer
7151 // CHECK: @llvm.ppc.altivec.lvx
7152 // CHECK: @llvm.ppc.altivec.lvsl
7153 // CHECK: @llvm.ppc.altivec.vperm
7154 // CHECK: @llvm.ppc.altivec.lvsr
7155 // CHECK: @llvm.ppc.altivec.vperm
7156 // CHECK: @llvm.ppc.altivec.stvxl
7157 // CHECK-LE: store <8 x i16> zeroinitializer
7158 // CHECK-LE: @llvm.ppc.altivec.lvx
7159 // CHECK-LE: @llvm.ppc.altivec.lvsl
7160 // CHECK-LE: @llvm.ppc.altivec.vperm
7161 // CHECK-LE: @llvm.ppc.altivec.lvsr
7162 // CHECK-LE: @llvm.ppc.altivec.vperm
7163 // CHECK-LE: @llvm.ppc.altivec.stvxl
7164 
7165   vec_stvlxl(vi, 0, &param_i);
7166 // CHECK: @llvm.ppc.altivec.lvx
7167 // CHECK: @llvm.ppc.altivec.lvsl
7168 // CHECK: store <4 x i32> zeroinitializer
7169 // CHECK: @llvm.ppc.altivec.vperm
7170 // CHECK: @llvm.ppc.altivec.lvsr
7171 // CHECK: @llvm.ppc.altivec.vperm
7172 // CHECK: @llvm.ppc.altivec.stvxl
7173 // CHECK-LE: @llvm.ppc.altivec.lvx
7174 // CHECK-LE: @llvm.ppc.altivec.lvsl
7175 // CHECK-LE: store <4 x i32> zeroinitializer
7176 // CHECK-LE: @llvm.ppc.altivec.vperm
7177 // CHECK-LE: @llvm.ppc.altivec.lvsr
7178 // CHECK-LE: @llvm.ppc.altivec.vperm
7179 // CHECK-LE: @llvm.ppc.altivec.stvxl
7180 
7181   vec_stvlxl(vi, 0, &vi);
7182 // CHECK: @llvm.ppc.altivec.lvx
7183 // CHECK: @llvm.ppc.altivec.lvsl
7184 // CHECK: store <4 x i32> zeroinitializer
7185 // CHECK: @llvm.ppc.altivec.vperm
7186 // CHECK: @llvm.ppc.altivec.lvsr
7187 // CHECK: @llvm.ppc.altivec.vperm
7188 // CHECK: @llvm.ppc.altivec.stvxl
7189 // CHECK-LE: @llvm.ppc.altivec.lvx
7190 // CHECK-LE: @llvm.ppc.altivec.lvsl
7191 // CHECK-LE: store <4 x i32> zeroinitializer
7192 // CHECK-LE: @llvm.ppc.altivec.vperm
7193 // CHECK-LE: @llvm.ppc.altivec.lvsr
7194 // CHECK-LE: @llvm.ppc.altivec.vperm
7195 // CHECK-LE: @llvm.ppc.altivec.stvxl
7196 
7197   vec_stvlxl(vui, 0, &param_ui);
7198 // CHECK: @llvm.ppc.altivec.lvx
7199 // CHECK: @llvm.ppc.altivec.lvsl
7200 // CHECK: store <4 x i32> zeroinitializer
7201 // CHECK: @llvm.ppc.altivec.vperm
7202 // CHECK: @llvm.ppc.altivec.lvsr
7203 // CHECK: @llvm.ppc.altivec.vperm
7204 // CHECK: @llvm.ppc.altivec.stvxl
7205 // CHECK-LE: @llvm.ppc.altivec.lvx
7206 // CHECK-LE: @llvm.ppc.altivec.lvsl
7207 // CHECK-LE: store <4 x i32> zeroinitializer
7208 // CHECK-LE: @llvm.ppc.altivec.vperm
7209 // CHECK-LE: @llvm.ppc.altivec.lvsr
7210 // CHECK-LE: @llvm.ppc.altivec.vperm
7211 // CHECK-LE: @llvm.ppc.altivec.stvxl
7212 
7213   vec_stvlxl(vui, 0, &vui);
7214 // CHECK: @llvm.ppc.altivec.lvx
7215 // CHECK: @llvm.ppc.altivec.lvsl
7216 // CHECK: store <4 x i32> zeroinitializer
7217 // CHECK: @llvm.ppc.altivec.vperm
7218 // CHECK: @llvm.ppc.altivec.lvsr
7219 // CHECK: @llvm.ppc.altivec.vperm
7220 // CHECK: @llvm.ppc.altivec.stvxl
7221 // CHECK-LE: @llvm.ppc.altivec.lvx
7222 // CHECK-LE: @llvm.ppc.altivec.lvsl
7223 // CHECK-LE: store <4 x i32> zeroinitializer
7224 // CHECK-LE: @llvm.ppc.altivec.vperm
7225 // CHECK-LE: @llvm.ppc.altivec.lvsr
7226 // CHECK-LE: @llvm.ppc.altivec.vperm
7227 // CHECK-LE: @llvm.ppc.altivec.stvxl
7228 
7229   vec_stvlxl(vbi, 0, &vbi);
7230 // CHECK: store <4 x i32> zeroinitializer
7231 // CHECK: @llvm.ppc.altivec.lvx
7232 // CHECK: @llvm.ppc.altivec.lvsl
7233 // CHECK: @llvm.ppc.altivec.vperm
7234 // CHECK: @llvm.ppc.altivec.lvsr
7235 // CHECK: @llvm.ppc.altivec.vperm
7236 // CHECK: @llvm.ppc.altivec.stvxl
7237 // CHECK-LE: store <4 x i32> zeroinitializer
7238 // CHECK-LE: @llvm.ppc.altivec.lvx
7239 // CHECK-LE: @llvm.ppc.altivec.lvsl
7240 // CHECK-LE: @llvm.ppc.altivec.vperm
7241 // CHECK-LE: @llvm.ppc.altivec.lvsr
7242 // CHECK-LE: @llvm.ppc.altivec.vperm
7243 // CHECK-LE: @llvm.ppc.altivec.stvxl
7244 
7245   vec_stvlxl(vf, 0, &vf);
7246 // CHECK: @llvm.ppc.altivec.lvx
7247 // CHECK: @llvm.ppc.altivec.lvsl
7248 // CHECK: store <4 x float> zeroinitializer
7249 // CHECK: @llvm.ppc.altivec.vperm
7250 // CHECK: @llvm.ppc.altivec.lvsr
7251 // CHECK: @llvm.ppc.altivec.vperm
7252 // CHECK: @llvm.ppc.altivec.stvxl
7253 // CHECK-LE: @llvm.ppc.altivec.lvx
7254 // CHECK-LE: @llvm.ppc.altivec.lvsl
7255 // CHECK-LE: store <4 x float> zeroinitializer
7256 // CHECK-LE: @llvm.ppc.altivec.vperm
7257 // CHECK-LE: @llvm.ppc.altivec.lvsr
7258 // CHECK-LE: @llvm.ppc.altivec.vperm
7259 // CHECK-LE: @llvm.ppc.altivec.stvxl
7260 
7261   /* vec_stvrx */
7262   vec_stvrx(vsc, 0, &param_sc);
7263 // CHECK: @llvm.ppc.altivec.lvx
7264 // CHECK: @llvm.ppc.altivec.lvsl
7265 // CHECK: store <16 x i8> zeroinitializer
7266 // CHECK: @llvm.ppc.altivec.vperm
7267 // CHECK: @llvm.ppc.altivec.lvsr
7268 // CHECK: @llvm.ppc.altivec.vperm
7269 // CHECK: @llvm.ppc.altivec.stvx
7270 // CHECK-LE: @llvm.ppc.altivec.lvx
7271 // CHECK-LE: @llvm.ppc.altivec.lvsl
7272 // CHECK-LE: store <16 x i8> zeroinitializer
7273 // CHECK-LE: @llvm.ppc.altivec.vperm
7274 // CHECK-LE: @llvm.ppc.altivec.lvsr
7275 // CHECK-LE: @llvm.ppc.altivec.vperm
7276 // CHECK-LE: @llvm.ppc.altivec.stvx
7277 
7278   vec_stvrx(vsc, 0, &vsc);
7279 // CHECK: @llvm.ppc.altivec.lvx
7280 // CHECK: @llvm.ppc.altivec.lvsl
7281 // CHECK: store <16 x i8> zeroinitializer
7282 // CHECK: @llvm.ppc.altivec.vperm
7283 // CHECK: @llvm.ppc.altivec.lvsr
7284 // CHECK: @llvm.ppc.altivec.vperm
7285 // CHECK: @llvm.ppc.altivec.stvx
7286 // CHECK-LE: @llvm.ppc.altivec.lvx
7287 // CHECK-LE: @llvm.ppc.altivec.lvsl
7288 // CHECK-LE: store <16 x i8> zeroinitializer
7289 // CHECK-LE: @llvm.ppc.altivec.vperm
7290 // CHECK-LE: @llvm.ppc.altivec.lvsr
7291 // CHECK-LE: @llvm.ppc.altivec.vperm
7292 // CHECK-LE: @llvm.ppc.altivec.stvx
7293 
7294   vec_stvrx(vuc, 0, &param_uc);
7295 // CHECK: @llvm.ppc.altivec.lvx
7296 // CHECK: @llvm.ppc.altivec.lvsl
7297 // CHECK: store <16 x i8> zeroinitializer
7298 // CHECK: @llvm.ppc.altivec.vperm
7299 // CHECK: @llvm.ppc.altivec.lvsr
7300 // CHECK: @llvm.ppc.altivec.vperm
7301 // CHECK: @llvm.ppc.altivec.stvx
7302 // CHECK-LE: @llvm.ppc.altivec.lvx
7303 // CHECK-LE: @llvm.ppc.altivec.lvsl
7304 // CHECK-LE: store <16 x i8> zeroinitializer
7305 // CHECK-LE: @llvm.ppc.altivec.vperm
7306 // CHECK-LE: @llvm.ppc.altivec.lvsr
7307 // CHECK-LE: @llvm.ppc.altivec.vperm
7308 // CHECK-LE: @llvm.ppc.altivec.stvx
7309 
7310   vec_stvrx(vuc, 0, &vuc);
7311 // CHECK: @llvm.ppc.altivec.lvx
7312 // CHECK: @llvm.ppc.altivec.lvsl
7313 // CHECK: store <16 x i8> zeroinitializer
7314 // CHECK: @llvm.ppc.altivec.vperm
7315 // CHECK: @llvm.ppc.altivec.lvsr
7316 // CHECK: @llvm.ppc.altivec.vperm
7317 // CHECK: @llvm.ppc.altivec.stvx
7318 // CHECK-LE: @llvm.ppc.altivec.lvx
7319 // CHECK-LE: @llvm.ppc.altivec.lvsl
7320 // CHECK-LE: store <16 x i8> zeroinitializer
7321 // CHECK-LE: @llvm.ppc.altivec.vperm
7322 // CHECK-LE: @llvm.ppc.altivec.lvsr
7323 // CHECK-LE: @llvm.ppc.altivec.vperm
7324 // CHECK-LE: @llvm.ppc.altivec.stvx
7325 
7326   vec_stvrx(vbc, 0, &vbc);
7327 // CHECK: @llvm.ppc.altivec.lvx
7328 // CHECK: store <16 x i8> zeroinitializer
7329 // CHECK: @llvm.ppc.altivec.lvsl
7330 // CHECK: @llvm.ppc.altivec.vperm
7331 // CHECK: @llvm.ppc.altivec.lvsr
7332 // CHECK: @llvm.ppc.altivec.vperm
7333 // CHECK: @llvm.ppc.altivec.stvx
7334 // CHECK-LE: @llvm.ppc.altivec.lvx
7335 // CHECK-LE: store <16 x i8> zeroinitializer
7336 // CHECK-LE: @llvm.ppc.altivec.lvsl
7337 // CHECK-LE: @llvm.ppc.altivec.vperm
7338 // CHECK-LE: @llvm.ppc.altivec.lvsr
7339 // CHECK-LE: @llvm.ppc.altivec.vperm
7340 // CHECK-LE: @llvm.ppc.altivec.stvx
7341 
7342   vec_stvrx(vs, 0, &param_s);
7343 // CHECK: @llvm.ppc.altivec.lvx
7344 // CHECK: @llvm.ppc.altivec.lvsl
7345 // CHECK: store <8 x i16> zeroinitializer
7346 // CHECK: @llvm.ppc.altivec.vperm
7347 // CHECK: @llvm.ppc.altivec.lvsr
7348 // CHECK: @llvm.ppc.altivec.vperm
7349 // CHECK: @llvm.ppc.altivec.stvx
7350 // CHECK-LE: @llvm.ppc.altivec.lvx
7351 // CHECK-LE: @llvm.ppc.altivec.lvsl
7352 // CHECK-LE: store <8 x i16> zeroinitializer
7353 // CHECK-LE: @llvm.ppc.altivec.vperm
7354 // CHECK-LE: @llvm.ppc.altivec.lvsr
7355 // CHECK-LE: @llvm.ppc.altivec.vperm
7356 // CHECK-LE: @llvm.ppc.altivec.stvx
7357 
7358   vec_stvrx(vs, 0, &vs);
7359 // CHECK: @llvm.ppc.altivec.lvx
7360 // CHECK: @llvm.ppc.altivec.lvsl
7361 // CHECK: store <8 x i16> zeroinitializer
7362 // CHECK: @llvm.ppc.altivec.vperm
7363 // CHECK: @llvm.ppc.altivec.lvsr
7364 // CHECK: @llvm.ppc.altivec.vperm
7365 // CHECK: @llvm.ppc.altivec.stvx
7366 // CHECK-LE: @llvm.ppc.altivec.lvx
7367 // CHECK-LE: @llvm.ppc.altivec.lvsl
7368 // CHECK-LE: store <8 x i16> zeroinitializer
7369 // CHECK-LE: @llvm.ppc.altivec.vperm
7370 // CHECK-LE: @llvm.ppc.altivec.lvsr
7371 // CHECK-LE: @llvm.ppc.altivec.vperm
7372 // CHECK-LE: @llvm.ppc.altivec.stvx
7373 
7374   vec_stvrx(vus, 0, &param_us);
7375 // CHECK: @llvm.ppc.altivec.lvx
7376 // CHECK: @llvm.ppc.altivec.lvsl
7377 // CHECK: store <8 x i16> zeroinitializer
7378 // CHECK: @llvm.ppc.altivec.vperm
7379 // CHECK: @llvm.ppc.altivec.lvsr
7380 // CHECK: @llvm.ppc.altivec.vperm
7381 // CHECK: @llvm.ppc.altivec.stvx
7382 // CHECK-LE: @llvm.ppc.altivec.lvx
7383 // CHECK-LE: @llvm.ppc.altivec.lvsl
7384 // CHECK-LE: store <8 x i16> zeroinitializer
7385 // CHECK-LE: @llvm.ppc.altivec.vperm
7386 // CHECK-LE: @llvm.ppc.altivec.lvsr
7387 // CHECK-LE: @llvm.ppc.altivec.vperm
7388 // CHECK-LE: @llvm.ppc.altivec.stvx
7389 
7390   vec_stvrx(vus, 0, &vus);
7391 // CHECK: @llvm.ppc.altivec.lvx
7392 // CHECK: @llvm.ppc.altivec.lvsl
7393 // CHECK: store <8 x i16> zeroinitializer
7394 // CHECK: @llvm.ppc.altivec.vperm
7395 // CHECK: @llvm.ppc.altivec.lvsr
7396 // CHECK: @llvm.ppc.altivec.vperm
7397 // CHECK: @llvm.ppc.altivec.stvx
7398 // CHECK-LE: @llvm.ppc.altivec.lvx
7399 // CHECK-LE: @llvm.ppc.altivec.lvsl
7400 // CHECK-LE: store <8 x i16> zeroinitializer
7401 // CHECK-LE: @llvm.ppc.altivec.vperm
7402 // CHECK-LE: @llvm.ppc.altivec.lvsr
7403 // CHECK-LE: @llvm.ppc.altivec.vperm
7404 // CHECK-LE: @llvm.ppc.altivec.stvx
7405 
7406   vec_stvrx(vbs, 0, &vbs);
7407 // CHECK: @llvm.ppc.altivec.lvx
7408 // CHECK: store <8 x i16> zeroinitializer
7409 // CHECK: @llvm.ppc.altivec.lvsl
7410 // CHECK: @llvm.ppc.altivec.vperm
7411 // CHECK: @llvm.ppc.altivec.lvsr
7412 // CHECK: @llvm.ppc.altivec.vperm
7413 // CHECK: @llvm.ppc.altivec.stvx
7414 // CHECK-LE: @llvm.ppc.altivec.lvx
7415 // CHECK-LE: store <8 x i16> zeroinitializer
7416 // CHECK-LE: @llvm.ppc.altivec.lvsl
7417 // CHECK-LE: @llvm.ppc.altivec.vperm
7418 // CHECK-LE: @llvm.ppc.altivec.lvsr
7419 // CHECK-LE: @llvm.ppc.altivec.vperm
7420 // CHECK-LE: @llvm.ppc.altivec.stvx
7421 
7422   vec_stvrx(vp, 0, &vp);
7423 // CHECK: @llvm.ppc.altivec.lvx
7424 // CHECK: store <8 x i16> zeroinitializer
7425 // CHECK: @llvm.ppc.altivec.lvsl
7426 // CHECK: @llvm.ppc.altivec.vperm
7427 // CHECK: @llvm.ppc.altivec.lvsr
7428 // CHECK: @llvm.ppc.altivec.vperm
7429 // CHECK: @llvm.ppc.altivec.stvx
7430 // CHECK-LE: @llvm.ppc.altivec.lvx
7431 // CHECK-LE: store <8 x i16> zeroinitializer
7432 // CHECK-LE: @llvm.ppc.altivec.lvsl
7433 // CHECK-LE: @llvm.ppc.altivec.vperm
7434 // CHECK-LE: @llvm.ppc.altivec.lvsr
7435 // CHECK-LE: @llvm.ppc.altivec.vperm
7436 // CHECK-LE: @llvm.ppc.altivec.stvx
7437 
7438   vec_stvrx(vi, 0, &param_i);
7439 // CHECK: @llvm.ppc.altivec.lvx
7440 // CHECK: @llvm.ppc.altivec.lvsl
7441 // CHECK: store <4 x i32> zeroinitializer
7442 // CHECK: @llvm.ppc.altivec.vperm
7443 // CHECK: @llvm.ppc.altivec.lvsr
7444 // CHECK: @llvm.ppc.altivec.vperm
7445 // CHECK: @llvm.ppc.altivec.stvx
7446 // CHECK-LE: @llvm.ppc.altivec.lvx
7447 // CHECK-LE: @llvm.ppc.altivec.lvsl
7448 // CHECK-LE: store <4 x i32> zeroinitializer
7449 // CHECK-LE: @llvm.ppc.altivec.vperm
7450 // CHECK-LE: @llvm.ppc.altivec.lvsr
7451 // CHECK-LE: @llvm.ppc.altivec.vperm
7452 // CHECK-LE: @llvm.ppc.altivec.stvx
7453 
7454   vec_stvrx(vi, 0, &vi);
7455 // CHECK: @llvm.ppc.altivec.lvx
7456 // CHECK: @llvm.ppc.altivec.lvsl
7457 // CHECK: store <4 x i32> zeroinitializer
7458 // CHECK: @llvm.ppc.altivec.vperm
7459 // CHECK: @llvm.ppc.altivec.lvsr
7460 // CHECK: @llvm.ppc.altivec.vperm
7461 // CHECK: @llvm.ppc.altivec.stvx
7462 // CHECK-LE: @llvm.ppc.altivec.lvx
7463 // CHECK-LE: @llvm.ppc.altivec.lvsl
7464 // CHECK-LE: store <4 x i32> zeroinitializer
7465 // CHECK-LE: @llvm.ppc.altivec.vperm
7466 // CHECK-LE: @llvm.ppc.altivec.lvsr
7467 // CHECK-LE: @llvm.ppc.altivec.vperm
7468 // CHECK-LE: @llvm.ppc.altivec.stvx
7469 
7470   vec_stvrx(vui, 0, &param_ui);
7471 // CHECK: @llvm.ppc.altivec.lvx
7472 // CHECK: @llvm.ppc.altivec.lvsl
7473 // CHECK: store <4 x i32> zeroinitializer
7474 // CHECK: @llvm.ppc.altivec.vperm
7475 // CHECK: @llvm.ppc.altivec.lvsr
7476 // CHECK: @llvm.ppc.altivec.vperm
7477 // CHECK: @llvm.ppc.altivec.stvx
7478 // CHECK-LE: @llvm.ppc.altivec.lvx
7479 // CHECK-LE: @llvm.ppc.altivec.lvsl
7480 // CHECK-LE: store <4 x i32> zeroinitializer
7481 // CHECK-LE: @llvm.ppc.altivec.vperm
7482 // CHECK-LE: @llvm.ppc.altivec.lvsr
7483 // CHECK-LE: @llvm.ppc.altivec.vperm
7484 // CHECK-LE: @llvm.ppc.altivec.stvx
7485 
7486   vec_stvrx(vui, 0, &vui);
7487 // CHECK: @llvm.ppc.altivec.lvx
7488 // CHECK: @llvm.ppc.altivec.lvsl
7489 // CHECK: store <4 x i32> zeroinitializer
7490 // CHECK: @llvm.ppc.altivec.vperm
7491 // CHECK: @llvm.ppc.altivec.lvsr
7492 // CHECK: @llvm.ppc.altivec.vperm
7493 // CHECK: @llvm.ppc.altivec.stvx
7494 // CHECK-LE: @llvm.ppc.altivec.lvx
7495 // CHECK-LE: @llvm.ppc.altivec.lvsl
7496 // CHECK-LE: store <4 x i32> zeroinitializer
7497 // CHECK-LE: @llvm.ppc.altivec.vperm
7498 // CHECK-LE: @llvm.ppc.altivec.lvsr
7499 // CHECK-LE: @llvm.ppc.altivec.vperm
7500 // CHECK-LE: @llvm.ppc.altivec.stvx
7501 
7502   vec_stvrx(vbi, 0, &vbi);
7503 // CHECK: @llvm.ppc.altivec.lvx
7504 // CHECK: store <4 x i32> zeroinitializer
7505 // CHECK: @llvm.ppc.altivec.lvsl
7506 // CHECK: @llvm.ppc.altivec.vperm
7507 // CHECK: @llvm.ppc.altivec.lvsr
7508 // CHECK: @llvm.ppc.altivec.vperm
7509 // CHECK: @llvm.ppc.altivec.stvx
7510 // CHECK-LE: @llvm.ppc.altivec.lvx
7511 // CHECK-LE: store <4 x i32> zeroinitializer
7512 // CHECK-LE: @llvm.ppc.altivec.lvsl
7513 // CHECK-LE: @llvm.ppc.altivec.vperm
7514 // CHECK-LE: @llvm.ppc.altivec.lvsr
7515 // CHECK-LE: @llvm.ppc.altivec.vperm
7516 // CHECK-LE: @llvm.ppc.altivec.stvx
7517 
7518   vec_stvrx(vf, 0, &vf);
7519 // CHECK: @llvm.ppc.altivec.lvx
7520 // CHECK: @llvm.ppc.altivec.lvsl
7521 // CHECK: store <4 x float> zeroinitializer
7522 // CHECK: @llvm.ppc.altivec.vperm
7523 // CHECK: @llvm.ppc.altivec.lvsr
7524 // CHECK: @llvm.ppc.altivec.vperm
7525 // CHECK: @llvm.ppc.altivec.stvx
7526 // CHECK-LE: @llvm.ppc.altivec.lvx
7527 // CHECK-LE: @llvm.ppc.altivec.lvsl
7528 // CHECK-LE: store <4 x float> zeroinitializer
7529 // CHECK-LE: @llvm.ppc.altivec.vperm
7530 // CHECK-LE: @llvm.ppc.altivec.lvsr
7531 // CHECK-LE: @llvm.ppc.altivec.vperm
7532 // CHECK-LE: @llvm.ppc.altivec.stvx
7533 
7534   /* vec_stvrxl */
7535   vec_stvrxl(vsc, 0, &param_sc);
7536 // CHECK: @llvm.ppc.altivec.lvx
7537 // CHECK: @llvm.ppc.altivec.lvsl
7538 // CHECK: store <16 x i8> zeroinitializer
7539 // CHECK: @llvm.ppc.altivec.vperm
7540 // CHECK: @llvm.ppc.altivec.lvsr
7541 // CHECK: @llvm.ppc.altivec.vperm
7542 // CHECK: @llvm.ppc.altivec.stvxl
7543 // CHECK-LE: @llvm.ppc.altivec.lvx
7544 // CHECK-LE: @llvm.ppc.altivec.lvsl
7545 // CHECK-LE: store <16 x i8> zeroinitializer
7546 // CHECK-LE: @llvm.ppc.altivec.vperm
7547 // CHECK-LE: @llvm.ppc.altivec.lvsr
7548 // CHECK-LE: @llvm.ppc.altivec.vperm
7549 // CHECK-LE: @llvm.ppc.altivec.stvxl
7550 
7551   vec_stvrxl(vsc, 0, &vsc);
7552 // CHECK: @llvm.ppc.altivec.lvx
7553 // CHECK: @llvm.ppc.altivec.lvsl
7554 // CHECK: store <16 x i8> zeroinitializer
7555 // CHECK: @llvm.ppc.altivec.vperm
7556 // CHECK: @llvm.ppc.altivec.lvsr
7557 // CHECK: @llvm.ppc.altivec.vperm
7558 // CHECK: @llvm.ppc.altivec.stvxl
7559 // CHECK-LE: @llvm.ppc.altivec.lvx
7560 // CHECK-LE: @llvm.ppc.altivec.lvsl
7561 // CHECK-LE: store <16 x i8> zeroinitializer
7562 // CHECK-LE: @llvm.ppc.altivec.vperm
7563 // CHECK-LE: @llvm.ppc.altivec.lvsr
7564 // CHECK-LE: @llvm.ppc.altivec.vperm
7565 // CHECK-LE: @llvm.ppc.altivec.stvxl
7566 
7567   vec_stvrxl(vuc, 0, &param_uc);
7568 // CHECK: @llvm.ppc.altivec.lvx
7569 // CHECK: @llvm.ppc.altivec.lvsl
7570 // CHECK: store <16 x i8> zeroinitializer
7571 // CHECK: @llvm.ppc.altivec.vperm
7572 // CHECK: @llvm.ppc.altivec.lvsr
7573 // CHECK: @llvm.ppc.altivec.vperm
7574 // CHECK: @llvm.ppc.altivec.stvxl
7575 // CHECK-LE: @llvm.ppc.altivec.lvx
7576 // CHECK-LE: @llvm.ppc.altivec.lvsl
7577 // CHECK-LE: store <16 x i8> zeroinitializer
7578 // CHECK-LE: @llvm.ppc.altivec.vperm
7579 // CHECK-LE: @llvm.ppc.altivec.lvsr
7580 // CHECK-LE: @llvm.ppc.altivec.vperm
7581 // CHECK-LE: @llvm.ppc.altivec.stvxl
7582 
7583   vec_stvrxl(vuc, 0, &vuc);
7584 // CHECK: @llvm.ppc.altivec.lvx
7585 // CHECK: @llvm.ppc.altivec.lvsl
7586 // CHECK: store <16 x i8> zeroinitializer
7587 // CHECK: @llvm.ppc.altivec.vperm
7588 // CHECK: @llvm.ppc.altivec.lvsr
7589 // CHECK: @llvm.ppc.altivec.vperm
7590 // CHECK: @llvm.ppc.altivec.stvxl
7591 // CHECK-LE: @llvm.ppc.altivec.lvx
7592 // CHECK-LE: @llvm.ppc.altivec.lvsl
7593 // CHECK-LE: store <16 x i8> zeroinitializer
7594 // CHECK-LE: @llvm.ppc.altivec.vperm
7595 // CHECK-LE: @llvm.ppc.altivec.lvsr
7596 // CHECK-LE: @llvm.ppc.altivec.vperm
7597 // CHECK-LE: @llvm.ppc.altivec.stvxl
7598 
7599   vec_stvrxl(vbc, 0, &vbc);
7600 // CHECK: @llvm.ppc.altivec.lvx
7601 // CHECK: store <16 x i8> zeroinitializer
7602 // CHECK: @llvm.ppc.altivec.lvsl
7603 // CHECK: @llvm.ppc.altivec.vperm
7604 // CHECK: @llvm.ppc.altivec.lvsr
7605 // CHECK: @llvm.ppc.altivec.vperm
7606 // CHECK: @llvm.ppc.altivec.stvxl
7607 // CHECK-LE: @llvm.ppc.altivec.lvx
7608 // CHECK-LE: store <16 x i8> zeroinitializer
7609 // CHECK-LE: @llvm.ppc.altivec.lvsl
7610 // CHECK-LE: @llvm.ppc.altivec.vperm
7611 // CHECK-LE: @llvm.ppc.altivec.lvsr
7612 // CHECK-LE: @llvm.ppc.altivec.vperm
7613 // CHECK-LE: @llvm.ppc.altivec.stvxl
7614 
7615   vec_stvrxl(vs, 0, &param_s);
7616 // CHECK: @llvm.ppc.altivec.lvx
7617 // CHECK: @llvm.ppc.altivec.lvsl
7618 // CHECK: store <8 x i16> zeroinitializer
7619 // CHECK: @llvm.ppc.altivec.vperm
7620 // CHECK: @llvm.ppc.altivec.lvsr
7621 // CHECK: @llvm.ppc.altivec.vperm
7622 // CHECK: @llvm.ppc.altivec.stvxl
7623 // CHECK-LE: @llvm.ppc.altivec.lvx
7624 // CHECK-LE: @llvm.ppc.altivec.lvsl
7625 // CHECK-LE: store <8 x i16> zeroinitializer
7626 // CHECK-LE: @llvm.ppc.altivec.vperm
7627 // CHECK-LE: @llvm.ppc.altivec.lvsr
7628 // CHECK-LE: @llvm.ppc.altivec.vperm
7629 // CHECK-LE: @llvm.ppc.altivec.stvxl
7630 
7631   vec_stvrxl(vs, 0, &vs);
7632 // CHECK: @llvm.ppc.altivec.lvx
7633 // CHECK: @llvm.ppc.altivec.lvsl
7634 // CHECK: store <8 x i16> zeroinitializer
7635 // CHECK: @llvm.ppc.altivec.vperm
7636 // CHECK: @llvm.ppc.altivec.lvsr
7637 // CHECK: @llvm.ppc.altivec.vperm
7638 // CHECK: @llvm.ppc.altivec.stvxl
7639 // CHECK-LE: @llvm.ppc.altivec.lvx
7640 // CHECK-LE: @llvm.ppc.altivec.lvsl
7641 // CHECK-LE: store <8 x i16> zeroinitializer
7642 // CHECK-LE: @llvm.ppc.altivec.vperm
7643 // CHECK-LE: @llvm.ppc.altivec.lvsr
7644 // CHECK-LE: @llvm.ppc.altivec.vperm
7645 // CHECK-LE: @llvm.ppc.altivec.stvxl
7646 
7647   vec_stvrxl(vus, 0, &param_us);
7648 // CHECK: @llvm.ppc.altivec.lvx
7649 // CHECK: @llvm.ppc.altivec.lvsl
7650 // CHECK: store <8 x i16> zeroinitializer
7651 // CHECK: @llvm.ppc.altivec.vperm
7652 // CHECK: @llvm.ppc.altivec.lvsr
7653 // CHECK: @llvm.ppc.altivec.vperm
7654 // CHECK: @llvm.ppc.altivec.stvxl
7655 // CHECK-LE: @llvm.ppc.altivec.lvx
7656 // CHECK-LE: @llvm.ppc.altivec.lvsl
7657 // CHECK-LE: store <8 x i16> zeroinitializer
7658 // CHECK-LE: @llvm.ppc.altivec.vperm
7659 // CHECK-LE: @llvm.ppc.altivec.lvsr
7660 // CHECK-LE: @llvm.ppc.altivec.vperm
7661 // CHECK-LE: @llvm.ppc.altivec.stvxl
7662 
7663   vec_stvrxl(vus, 0, &vus);
7664 // CHECK: @llvm.ppc.altivec.lvx
7665 // CHECK: @llvm.ppc.altivec.lvsl
7666 // CHECK: store <8 x i16> zeroinitializer
7667 // CHECK: @llvm.ppc.altivec.vperm
7668 // CHECK: @llvm.ppc.altivec.lvsr
7669 // CHECK: @llvm.ppc.altivec.vperm
7670 // CHECK: @llvm.ppc.altivec.stvxl
7671 // CHECK-LE: @llvm.ppc.altivec.lvx
7672 // CHECK-LE: @llvm.ppc.altivec.lvsl
7673 // CHECK-LE: store <8 x i16> zeroinitializer
7674 // CHECK-LE: @llvm.ppc.altivec.vperm
7675 // CHECK-LE: @llvm.ppc.altivec.lvsr
7676 // CHECK-LE: @llvm.ppc.altivec.vperm
7677 // CHECK-LE: @llvm.ppc.altivec.stvxl
7678 
7679   vec_stvrxl(vbs, 0, &vbs);
7680 // CHECK: @llvm.ppc.altivec.lvx
7681 // CHECK: store <8 x i16> zeroinitializer
7682 // CHECK: @llvm.ppc.altivec.lvsl
7683 // CHECK: @llvm.ppc.altivec.vperm
7684 // CHECK: @llvm.ppc.altivec.lvsr
7685 // CHECK: @llvm.ppc.altivec.vperm
7686 // CHECK: @llvm.ppc.altivec.stvxl
7687 // CHECK-LE: @llvm.ppc.altivec.lvx
7688 // CHECK-LE: store <8 x i16> zeroinitializer
7689 // CHECK-LE: @llvm.ppc.altivec.lvsl
7690 // CHECK-LE: @llvm.ppc.altivec.vperm
7691 // CHECK-LE: @llvm.ppc.altivec.lvsr
7692 // CHECK-LE: @llvm.ppc.altivec.vperm
7693 // CHECK-LE: @llvm.ppc.altivec.stvxl
7694 
7695   vec_stvrxl(vp, 0, &vp);
7696 // CHECK: @llvm.ppc.altivec.lvx
7697 // CHECK: store <8 x i16> zeroinitializer
7698 // CHECK: @llvm.ppc.altivec.lvsl
7699 // CHECK: @llvm.ppc.altivec.vperm
7700 // CHECK: @llvm.ppc.altivec.lvsr
7701 // CHECK: @llvm.ppc.altivec.vperm
7702 // CHECK: @llvm.ppc.altivec.stvxl
7703 // CHECK-LE: @llvm.ppc.altivec.lvx
7704 // CHECK-LE: store <8 x i16> zeroinitializer
7705 // CHECK-LE: @llvm.ppc.altivec.lvsl
7706 // CHECK-LE: @llvm.ppc.altivec.vperm
7707 // CHECK-LE: @llvm.ppc.altivec.lvsr
7708 // CHECK-LE: @llvm.ppc.altivec.vperm
7709 // CHECK-LE: @llvm.ppc.altivec.stvxl
7710 
7711   vec_stvrxl(vi, 0, &param_i);
7712 // CHECK: @llvm.ppc.altivec.lvx
7713 // CHECK: @llvm.ppc.altivec.lvsl
7714 // CHECK: store <4 x i32> zeroinitializer
7715 // CHECK: @llvm.ppc.altivec.vperm
7716 // CHECK: @llvm.ppc.altivec.lvsr
7717 // CHECK: @llvm.ppc.altivec.vperm
7718 // CHECK: @llvm.ppc.altivec.stvxl
7719 // CHECK-LE: @llvm.ppc.altivec.lvx
7720 // CHECK-LE: @llvm.ppc.altivec.lvsl
7721 // CHECK-LE: store <4 x i32> zeroinitializer
7722 // CHECK-LE: @llvm.ppc.altivec.vperm
7723 // CHECK-LE: @llvm.ppc.altivec.lvsr
7724 // CHECK-LE: @llvm.ppc.altivec.vperm
7725 // CHECK-LE: @llvm.ppc.altivec.stvxl
7726 
7727   vec_stvrxl(vi, 0, &vi);
7728 // CHECK: @llvm.ppc.altivec.lvx
7729 // CHECK: @llvm.ppc.altivec.lvsl
7730 // CHECK: store <4 x i32> zeroinitializer
7731 // CHECK: @llvm.ppc.altivec.vperm
7732 // CHECK: @llvm.ppc.altivec.lvsr
7733 // CHECK: @llvm.ppc.altivec.vperm
7734 // CHECK: @llvm.ppc.altivec.stvxl
7735 // CHECK-LE: @llvm.ppc.altivec.lvx
7736 // CHECK-LE: @llvm.ppc.altivec.lvsl
7737 // CHECK-LE: store <4 x i32> zeroinitializer
7738 // CHECK-LE: @llvm.ppc.altivec.vperm
7739 // CHECK-LE: @llvm.ppc.altivec.lvsr
7740 // CHECK-LE: @llvm.ppc.altivec.vperm
7741 // CHECK-LE: @llvm.ppc.altivec.stvxl
7742 
7743   vec_stvrxl(vui, 0, &param_ui);
7744 // CHECK: @llvm.ppc.altivec.lvx
7745 // CHECK: @llvm.ppc.altivec.lvsl
7746 // CHECK: store <4 x i32> zeroinitializer
7747 // CHECK: @llvm.ppc.altivec.vperm
7748 // CHECK: @llvm.ppc.altivec.lvsr
7749 // CHECK: @llvm.ppc.altivec.vperm
7750 // CHECK: @llvm.ppc.altivec.stvxl
7751 // CHECK-LE: @llvm.ppc.altivec.lvx
7752 // CHECK-LE: @llvm.ppc.altivec.lvsl
7753 // CHECK-LE: store <4 x i32> zeroinitializer
7754 // CHECK-LE: @llvm.ppc.altivec.vperm
7755 // CHECK-LE: @llvm.ppc.altivec.lvsr
7756 // CHECK-LE: @llvm.ppc.altivec.vperm
7757 // CHECK-LE: @llvm.ppc.altivec.stvxl
7758 
7759   vec_stvrxl(vui, 0, &vui);
7760 // CHECK: @llvm.ppc.altivec.lvx
7761 // CHECK: @llvm.ppc.altivec.lvsl
7762 // CHECK: store <4 x i32> zeroinitializer
7763 // CHECK: @llvm.ppc.altivec.vperm
7764 // CHECK: @llvm.ppc.altivec.lvsr
7765 // CHECK: @llvm.ppc.altivec.vperm
7766 // CHECK: @llvm.ppc.altivec.stvxl
7767 // CHECK-LE: @llvm.ppc.altivec.lvx
7768 // CHECK-LE: @llvm.ppc.altivec.lvsl
7769 // CHECK-LE: store <4 x i32> zeroinitializer
7770 // CHECK-LE: @llvm.ppc.altivec.vperm
7771 // CHECK-LE: @llvm.ppc.altivec.lvsr
7772 // CHECK-LE: @llvm.ppc.altivec.vperm
7773 // CHECK-LE: @llvm.ppc.altivec.stvxl
7774 
7775   vec_stvrxl(vbi, 0, &vbi);
7776 // CHECK: @llvm.ppc.altivec.lvx
7777 // CHECK: store <4 x i32> zeroinitializer
7778 // CHECK: @llvm.ppc.altivec.lvsl
7779 // CHECK: @llvm.ppc.altivec.vperm
7780 // CHECK: @llvm.ppc.altivec.lvsr
7781 // CHECK: @llvm.ppc.altivec.vperm
7782 // CHECK: @llvm.ppc.altivec.stvxl
7783 // CHECK-LE: @llvm.ppc.altivec.lvx
7784 // CHECK-LE: store <4 x i32> zeroinitializer
7785 // CHECK-LE: @llvm.ppc.altivec.lvsl
7786 // CHECK-LE: @llvm.ppc.altivec.vperm
7787 // CHECK-LE: @llvm.ppc.altivec.lvsr
7788 // CHECK-LE: @llvm.ppc.altivec.vperm
7789 // CHECK-LE: @llvm.ppc.altivec.stvxl
7790 
7791   vec_stvrxl(vf, 0, &vf);
7792 // CHECK: @llvm.ppc.altivec.lvx
7793 // CHECK: @llvm.ppc.altivec.lvsl
7794 // CHECK: store <4 x float> zeroinitializer
7795 // CHECK: @llvm.ppc.altivec.vperm
7796 // CHECK: @llvm.ppc.altivec.lvsr
7797 // CHECK: @llvm.ppc.altivec.vperm
7798 // CHECK: @llvm.ppc.altivec.stvxl
7799 // CHECK-LE: @llvm.ppc.altivec.lvx
7800 // CHECK-LE: @llvm.ppc.altivec.lvsl
7801 // CHECK-LE: store <4 x float> zeroinitializer
7802 // CHECK-LE: @llvm.ppc.altivec.vperm
7803 // CHECK-LE: @llvm.ppc.altivec.lvsr
7804 // CHECK-LE: @llvm.ppc.altivec.vperm
7805 // CHECK-LE: @llvm.ppc.altivec.stvxl
7806 
7807   /* vec_promote */
7808   res_vsc = vec_promote(param_sc, 0);
7809 // CHECK: store <16 x i8> zeroinitializer
7810 // CHECK: insertelement <16 x i8>
7811 // CHECK-LE: store <16 x i8> zeroinitializer
7812 // CHECK-LE: insertelement <16 x i8>
7813 
7814   res_vuc = vec_promote(param_uc, 0);
7815 // CHECK: store <16 x i8> zeroinitializer
7816 // CHECK: insertelement <16 x i8>
7817 // CHECK-LE: store <16 x i8> zeroinitializer
7818 // CHECK-LE: insertelement <16 x i8>
7819 
7820   res_vs  = vec_promote(param_s, 0);
7821 // CHECK: store <8 x i16> zeroinitializer
7822 // CHECK: insertelement <8 x i16>
7823 // CHECK-LE: store <8 x i16> zeroinitializer
7824 // CHECK-LE: insertelement <8 x i16>
7825 
7826   res_vus = vec_promote(param_us, 0);
7827 // CHECK: store <8 x i16> zeroinitializer
7828 // CHECK: insertelement <8 x i16>
7829 // CHECK-LE: store <8 x i16> zeroinitializer
7830 // CHECK-LE: insertelement <8 x i16>
7831 
7832   res_vi  = vec_promote(param_i, 0);
7833 // CHECK: store <4 x i32> zeroinitializer
7834 // CHECK: insertelement <4 x i32>
7835 // CHECK-LE: store <4 x i32> zeroinitializer
7836 // CHECK-LE: insertelement <4 x i32>
7837 
7838   res_vui = vec_promote(param_ui, 0);
7839 // CHECK: store <4 x i32> zeroinitializer
7840 // CHECK: insertelement <4 x i32>
7841 // CHECK-LE: store <4 x i32> zeroinitializer
7842 // CHECK-LE: insertelement <4 x i32>
7843 
7844   res_vf  = vec_promote(param_f, 0);
7845 // CHECK: store <4 x float> zeroinitializer
7846 // CHECK: insertelement <4 x float>
7847 // CHECK-LE: store <4 x float> zeroinitializer
7848 // CHECK-LE: insertelement <4 x float>
7849 
7850   /* vec_splats */
7851   res_vsc = vec_splats(param_sc);
7852 // CHECK: insertelement <16 x i8>
7853 // CHECK-LE: insertelement <16 x i8>
7854 
7855   res_vuc = vec_splats(param_uc);
7856 // CHECK: insertelement <16 x i8>
7857 // CHECK-LE: insertelement <16 x i8>
7858 
7859   res_vs  = vec_splats(param_s);
7860 // CHECK: insertelement <8 x i16>
7861 // CHECK-LE: insertelement <8 x i16>
7862 
7863   res_vus = vec_splats(param_us);
7864 // CHECK: insertelement <8 x i16>
7865 // CHECK-LE: insertelement <8 x i16>
7866 
7867   res_vi  = vec_splats(param_i);
7868 // CHECK: insertelement <4 x i32>
7869 // CHECK-LE: insertelement <4 x i32>
7870 
7871   res_vui = vec_splats(param_ui);
7872 // CHECK: insertelement <4 x i32>
7873 // CHECK-LE: insertelement <4 x i32>
7874 
7875   res_vf  = vec_splats(param_f);
7876 // CHECK: insertelement <4 x float>
7877 // CHECK-LE: insertelement <4 x float>
7878 
7879   /* ------------------------------ predicates -------------------------------------- */
7880 
7881   /* vec_all_eq */
7882   res_i = vec_all_eq(vsc, vsc);
7883 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7884 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7885 
7886   res_i = vec_all_eq(vsc, vbc);
7887 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7888 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7889 
7890   res_i = vec_all_eq(vuc, vuc);
7891 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7892 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7893 
7894   res_i = vec_all_eq(vuc, vbc);
7895 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7896 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7897 
7898   res_i = vec_all_eq(vbc, vsc);
7899 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7900 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7901 
7902   res_i = vec_all_eq(vbc, vuc);
7903 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7904 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7905 
7906   res_i = vec_all_eq(vbc, vbc);
7907 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7908 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7909 
7910   res_i = vec_all_eq(vs, vs);
7911 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7912 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7913 
7914   res_i = vec_all_eq(vs, vbs);
7915 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7916 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7917 
7918   res_i = vec_all_eq(vus, vus);
7919 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7920 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7921 
7922   res_i = vec_all_eq(vus, vbs);
7923 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7924 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7925 
7926   res_i = vec_all_eq(vbs, vs);
7927 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7928 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7929 
7930   res_i = vec_all_eq(vbs, vus);
7931 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7932 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7933 
7934   res_i = vec_all_eq(vbs, vbs);
7935 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7936 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7937 
7938   res_i = vec_all_eq(vp, vp);
7939 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7940 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7941 
7942   res_i = vec_all_eq(vi, vi);
7943 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7944 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7945 
7946   res_i = vec_all_eq(vi, vbi);
7947 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7948 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7949 
7950   res_i = vec_all_eq(vui, vui);
7951 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7952 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7953 
7954   res_i = vec_all_eq(vui, vbi);
7955 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7956 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7957 
7958   res_i = vec_all_eq(vbi, vi);
7959 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7960 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7961 
7962   res_i = vec_all_eq(vbi, vui);
7963 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7964 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7965 
7966   res_i = vec_all_eq(vbi, vbi);
7967 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7968 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7969 
7970   res_i = vec_all_eq(vf, vf);
7971 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
7972 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
7973 
7974   /* vec_all_ge */
7975   res_i = vec_all_ge(vsc, vsc);
7976 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7977 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7978 
7979   res_i = vec_all_ge(vsc, vbc);
7980 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7981 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7982 
7983   res_i = vec_all_ge(vuc, vuc);
7984 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7985 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7986 
7987   res_i = vec_all_ge(vuc, vbc);
7988 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7989 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7990 
7991   res_i = vec_all_ge(vbc, vsc);
7992 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7993 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7994 
7995   res_i = vec_all_ge(vbc, vuc);
7996 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7997 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7998 
7999   res_i = vec_all_ge(vbc, vbc);
8000 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8001 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8002 
8003   res_i = vec_all_ge(vs, vs);
8004 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8005 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8006 
8007   res_i = vec_all_ge(vs, vbs);
8008 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8009 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8010 
8011   res_i = vec_all_ge(vus, vus);
8012 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8014 
8015   res_i = vec_all_ge(vus, vbs);
8016 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8017 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8018 
8019   res_i = vec_all_ge(vbs, vs);
8020 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8021 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8022 
8023   res_i = vec_all_ge(vbs, vus);
8024 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8025 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8026 
8027   res_i = vec_all_ge(vbs, vbs);
8028 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8029 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8030 
8031   res_i = vec_all_ge(vi, vi);
8032 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8033 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8034 
8035   res_i = vec_all_ge(vi, vbi);
8036 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8037 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8038 
8039   res_i = vec_all_ge(vui, vui);
8040 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8041 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8042 
8043   res_i = vec_all_ge(vui, vbi);
8044 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8045 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8046 
8047   res_i = vec_all_ge(vbi, vi);
8048 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8049 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8050 
8051   res_i = vec_all_ge(vbi, vui);
8052 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8053 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8054 
8055   res_i = vec_all_ge(vbi, vbi);
8056 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8057 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8058 
8059   res_i = vec_all_ge(vf, vf);
8060 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8061 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8062 
8063   /* vec_all_gt */
8064   res_i = vec_all_gt(vsc, vsc);
8065 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8066 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8067 
8068   res_i = vec_all_gt(vsc, vbc);
8069 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8070 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8071 
8072   res_i = vec_all_gt(vuc, vuc);
8073 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8074 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8075 
8076   res_i = vec_all_gt(vuc, vbc);
8077 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8078 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8079 
8080   res_i = vec_all_gt(vbc, vsc);
8081 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8082 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8083 
8084   res_i = vec_all_gt(vbc, vuc);
8085 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8086 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8087 
8088   res_i = vec_all_gt(vbc, vbc);
8089 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8090 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8091 
8092   res_i = vec_all_gt(vs, vs);
8093 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8094 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8095 
8096   res_i = vec_all_gt(vs, vbs);
8097 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8098 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8099 
8100   res_i = vec_all_gt(vus, vus);
8101 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8102 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8103 
8104   res_i = vec_all_gt(vus, vbs);
8105 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8106 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8107 
8108   res_i = vec_all_gt(vbs, vs);
8109 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8110 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8111 
8112   res_i = vec_all_gt(vbs, vus);
8113 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8114 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8115 
8116   res_i = vec_all_gt(vbs, vbs);
8117 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8118 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8119 
8120   res_i = vec_all_gt(vi, vi);
8121 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8122 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8123 
8124   res_i = vec_all_gt(vi, vbi);
8125 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8126 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8127 
8128   res_i = vec_all_gt(vui, vui);
8129 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8130 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8131 
8132   res_i = vec_all_gt(vui, vbi);
8133 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8134 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8135 
8136   res_i = vec_all_gt(vbi, vi);
8137 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8138 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8139 
8140   res_i = vec_all_gt(vbi, vui);
8141 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8142 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8143 
8144   res_i = vec_all_gt(vbi, vbi);
8145 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8146 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8147 
8148   res_i = vec_all_gt(vf, vf);
8149 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8150 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8151 
8152   /* vec_all_in */
8153   res_i = vec_all_in(vf, vf);
8154 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
8155 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8156 
8157   /* vec_all_le */
8158   res_i = vec_all_le(vsc, vsc);
8159 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8160 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8161 
8162   res_i = vec_all_le(vsc, vbc);
8163 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8164 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8165 
8166   res_i = vec_all_le(vuc, vuc);
8167 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8168 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8169 
8170   res_i = vec_all_le(vuc, vbc);
8171 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8172 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8173 
8174   res_i = vec_all_le(vbc, vsc);
8175 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8176 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8177 
8178   res_i = vec_all_le(vbc, vuc);
8179 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8180 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8181 
8182   res_i = vec_all_le(vbc, vbc);
8183 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8184 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8185 
8186   res_i = vec_all_le(vs, vs);
8187 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8189 
8190   res_i = vec_all_le(vs, vbs);
8191 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8192 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8193 
8194   res_i = vec_all_le(vus, vus);
8195 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8196 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8197 
8198   res_i = vec_all_le(vus, vbs);
8199 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8200 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8201 
8202   res_i = vec_all_le(vbs, vs);
8203 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8204 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8205 
8206   res_i = vec_all_le(vbs, vus);
8207 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8208 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8209 
8210   res_i = vec_all_le(vbs, vbs);
8211 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8212 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8213 
8214   res_i = vec_all_le(vi, vi);
8215 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8216 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8217 
8218   res_i = vec_all_le(vi, vbi);
8219 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8220 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8221 
8222   res_i = vec_all_le(vui, vui);
8223 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8224 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8225 
8226   res_i = vec_all_le(vui, vbi);
8227 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8228 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8229 
8230   res_i = vec_all_le(vbi, vi);
8231 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8232 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8233 
8234   res_i = vec_all_le(vbi, vui);
8235 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8236 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8237 
8238   res_i = vec_all_le(vbi, vbi);
8239 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8240 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8241 
8242   res_i = vec_all_le(vf, vf);
8243 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8244 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8245 
8246   /* vec_all_lt */
8247   res_i = vec_all_lt(vsc, vsc);
8248 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8249 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8250 
8251   res_i = vec_all_lt(vsc, vbc);
8252 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8254 
8255   res_i = vec_all_lt(vuc, vuc);
8256 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8257 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8258 
8259   res_i = vec_all_lt(vuc, vbc);
8260 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8261 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8262 
8263   res_i = vec_all_lt(vbc, vsc);
8264 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8265 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8266 
8267   res_i = vec_all_lt(vbc, vuc);
8268 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8269 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8270 
8271   res_i = vec_all_lt(vbc, vbc);
8272 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8273 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8274 
8275   res_i = vec_all_lt(vs, vs);
8276 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8277 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8278 
8279   res_i = vec_all_lt(vs, vbs);
8280 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8281 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8282 
8283   res_i = vec_all_lt(vus, vus);
8284 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8285 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8286 
8287   res_i = vec_all_lt(vus, vbs);
8288 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8289 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8290 
8291   res_i = vec_all_lt(vbs, vs);
8292 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8293 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8294 
8295   res_i = vec_all_lt(vbs, vus);
8296 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8297 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8298 
8299   res_i = vec_all_lt(vbs, vbs);
8300 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8301 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8302 
8303   res_i = vec_all_lt(vi, vi);
8304 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8305 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8306 
8307   res_i = vec_all_lt(vi, vbi);
8308 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8309 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8310 
8311   res_i = vec_all_lt(vui, vui);
8312 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8313 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8314 
8315   res_i = vec_all_lt(vui, vbi);
8316 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8317 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8318 
8319   res_i = vec_all_lt(vbi, vi);
8320 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8321 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8322 
8323   res_i = vec_all_lt(vbi, vui);
8324 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8325 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8326 
8327   res_i = vec_all_lt(vbi, vbi);
8328 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8329 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8330 
8331   res_i = vec_all_lt(vf, vf);
8332 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8333 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8334 
8335   /* vec_all_nan */
8336   res_i = vec_all_nan(vf);
8337 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8338 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8339 
8340   /*  vec_all_ne */
8341   res_i = vec_all_ne(vsc, vsc);
8342 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8343 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8344 
8345   res_i = vec_all_ne(vsc, vbc);
8346 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8347 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8348 
8349   res_i = vec_all_ne(vuc, vuc);
8350 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8351 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8352 
8353   res_i = vec_all_ne(vuc, vbc);
8354 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8355 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8356 
8357   res_i = vec_all_ne(vbc, vsc);
8358 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8359 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8360 
8361   res_i = vec_all_ne(vbc, vuc);
8362 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8363 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8364 
8365   res_i = vec_all_ne(vbc, vbc);
8366 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8367 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8368 
8369   res_i = vec_all_ne(vs, vs);
8370 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8371 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8372 
8373   res_i = vec_all_ne(vs, vbs);
8374 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8375 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8376 
8377   res_i = vec_all_ne(vus, vus);
8378 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8379 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8380 
8381   res_i = vec_all_ne(vus, vbs);
8382 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8383 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8384 
8385   res_i = vec_all_ne(vbs, vs);
8386 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8387 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8388 
8389   res_i = vec_all_ne(vbs, vus);
8390 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8391 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8392 
8393   res_i = vec_all_ne(vbs, vbs);
8394 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8395 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8396 
8397   res_i = vec_all_ne(vp, vp);
8398 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8399 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8400 
8401   res_i = vec_all_ne(vi, vi);
8402 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8403 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8404 
8405   res_i = vec_all_ne(vi, vbi);
8406 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8407 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8408 
8409   res_i = vec_all_ne(vui, vui);
8410 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8411 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8412 
8413   res_i = vec_all_ne(vui, vbi);
8414 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8415 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8416 
8417   res_i = vec_all_ne(vbi, vi);
8418 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8419 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8420 
8421   res_i = vec_all_ne(vbi, vui);
8422 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8423 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8424 
8425   res_i = vec_all_ne(vbi, vbi);
8426 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8427 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8428 
8429   res_i = vec_all_ne(vf, vf);
8430 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8431 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8432 
8433   /* vec_all_nge */
8434   res_i = vec_all_nge(vf, vf);
8435 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8436 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8437 
8438   /* vec_all_ngt */
8439   res_i = vec_all_ngt(vf, vf);
8440 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8441 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8442 
8443   /* vec_all_nle */
8444   res_i = vec_all_nle(vf, vf);
8445 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8446 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8447 
8448   /* vec_all_nlt */
8449   res_i = vec_all_nlt(vf, vf);
8450 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8451 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8452 
8453   /* vec_all_numeric */
8454   res_i = vec_all_numeric(vf);
8455 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8456 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8457 
8458   /*  vec_any_eq */
8459   res_i = vec_any_eq(vsc, vsc);
8460 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8461 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8462 
8463   res_i = vec_any_eq(vsc, vbc);
8464 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8465 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8466 
8467   res_i = vec_any_eq(vuc, vuc);
8468 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8469 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8470 
8471   res_i = vec_any_eq(vuc, vbc);
8472 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8473 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8474 
8475   res_i = vec_any_eq(vbc, vsc);
8476 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8477 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8478 
8479   res_i = vec_any_eq(vbc, vuc);
8480 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8481 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8482 
8483   res_i = vec_any_eq(vbc, vbc);
8484 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8485 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8486 
8487   res_i = vec_any_eq(vs, vs);
8488 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8489 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8490 
8491   res_i = vec_any_eq(vs, vbs);
8492 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8493 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8494 
8495   res_i = vec_any_eq(vus, vus);
8496 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8497 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8498 
8499   res_i = vec_any_eq(vus, vbs);
8500 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8501 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8502 
8503   res_i = vec_any_eq(vbs, vs);
8504 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8505 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8506 
8507   res_i = vec_any_eq(vbs, vus);
8508 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8509 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8510 
8511   res_i = vec_any_eq(vbs, vbs);
8512 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8513 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8514 
8515   res_i = vec_any_eq(vp, vp);
8516 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8517 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8518 
8519   res_i = vec_any_eq(vi, vi);
8520 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8521 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8522 
8523   res_i = vec_any_eq(vi, vbi);
8524 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8525 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8526 
8527   res_i = vec_any_eq(vui, vui);
8528 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8529 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8530 
8531   res_i = vec_any_eq(vui, vbi);
8532 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8533 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8534 
8535   res_i = vec_any_eq(vbi, vi);
8536 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8537 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8538 
8539   res_i = vec_any_eq(vbi, vui);
8540 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8541 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8542 
8543   res_i = vec_any_eq(vbi, vbi);
8544 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8545 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8546 
8547   res_i = vec_any_eq(vf, vf);
8548 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8549 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8550 
8551   /* vec_any_ge */
8552   res_i = vec_any_ge(vsc, vsc);
8553 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8554 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8555 
8556   res_i = vec_any_ge(vsc, vbc);
8557 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8558 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8559 
8560   res_i = vec_any_ge(vuc, vuc);
8561 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8562 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8563 
8564   res_i = vec_any_ge(vuc, vbc);
8565 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8566 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8567 
8568   res_i = vec_any_ge(vbc, vsc);
8569 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8570 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8571 
8572   res_i = vec_any_ge(vbc, vuc);
8573 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8574 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8575 
8576   res_i = vec_any_ge(vbc, vbc);
8577 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8578 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8579 
8580   res_i = vec_any_ge(vs, vs);
8581 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8582 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8583 
8584   res_i = vec_any_ge(vs, vbs);
8585 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8586 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8587 
8588   res_i = vec_any_ge(vus, vus);
8589 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8590 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8591 
8592   res_i = vec_any_ge(vus, vbs);
8593 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8594 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8595 
8596   res_i = vec_any_ge(vbs, vs);
8597 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8598 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8599 
8600   res_i = vec_any_ge(vbs, vus);
8601 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8602 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8603 
8604   res_i = vec_any_ge(vbs, vbs);
8605 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8606 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8607 
8608   res_i = vec_any_ge(vi, vi);
8609 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8610 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8611 
8612   res_i = vec_any_ge(vi, vbi);
8613 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8614 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8615 
8616   res_i = vec_any_ge(vui, vui);
8617 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8618 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8619 
8620   res_i = vec_any_ge(vui, vbi);
8621 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8622 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8623 
8624   res_i = vec_any_ge(vbi, vi);
8625 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8626 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8627 
8628   res_i = vec_any_ge(vbi, vui);
8629 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8630 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8631 
8632   res_i = vec_any_ge(vbi, vbi);
8633 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8634 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8635 
8636   res_i = vec_any_ge(vf, vf);
8637 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8638 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8639 
8640   /* vec_any_gt */
8641   res_i = vec_any_gt(vsc, vsc);
8642 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8643 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8644 
8645   res_i = vec_any_gt(vsc, vbc);
8646 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8647 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8648 
8649   res_i = vec_any_gt(vuc, vuc);
8650 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8651 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8652 
8653   res_i = vec_any_gt(vuc, vbc);
8654 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8655 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8656 
8657   res_i = vec_any_gt(vbc, vsc);
8658 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8659 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8660 
8661   res_i = vec_any_gt(vbc, vuc);
8662 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8663 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8664 
8665   res_i = vec_any_gt(vbc, vbc);
8666 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8667 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8668 
8669   res_i = vec_any_gt(vs, vs);
8670 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8671 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8672 
8673   res_i = vec_any_gt(vs, vbs);
8674 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8675 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8676 
8677   res_i = vec_any_gt(vus, vus);
8678 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8679 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8680 
8681   res_i = vec_any_gt(vus, vbs);
8682 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8683 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8684 
8685   res_i = vec_any_gt(vbs, vs);
8686 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8687 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8688 
8689   res_i = vec_any_gt(vbs, vus);
8690 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8691 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8692 
8693   res_i = vec_any_gt(vbs, vbs);
8694 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8695 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8696 
8697   res_i = vec_any_gt(vi, vi);
8698 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8699 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8700 
8701   res_i = vec_any_gt(vi, vbi);
8702 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8703 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8704 
8705   res_i = vec_any_gt(vui, vui);
8706 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8707 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8708 
8709   res_i = vec_any_gt(vui, vbi);
8710 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8711 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8712 
8713   res_i = vec_any_gt(vbi, vi);
8714 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8715 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8716 
8717   res_i = vec_any_gt(vbi, vui);
8718 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8719 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8720 
8721   res_i = vec_any_gt(vbi, vbi);
8722 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8723 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8724 
8725   res_i = vec_any_gt(vf, vf);
8726 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8727 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8728 
8729   /* vec_any_le */
8730   res_i = vec_any_le(vsc, vsc);
8731 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8732 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8733 
8734   res_i = vec_any_le(vsc, vbc);
8735 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8736 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8737 
8738   res_i = vec_any_le(vuc, vuc);
8739 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8740 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8741 
8742   res_i = vec_any_le(vuc, vbc);
8743 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8744 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8745 
8746   res_i = vec_any_le(vbc, vsc);
8747 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8748 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8749 
8750   res_i = vec_any_le(vbc, vuc);
8751 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8752 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8753 
8754   res_i = vec_any_le(vbc, vbc);
8755 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8756 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8757 
8758   res_i = vec_any_le(vs, vs);
8759 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8760 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8761 
8762   res_i = vec_any_le(vs, vbs);
8763 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8764 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8765 
8766   res_i = vec_any_le(vus, vus);
8767 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8768 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8769 
8770   res_i = vec_any_le(vus, vbs);
8771 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8772 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8773 
8774   res_i = vec_any_le(vbs, vs);
8775 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8776 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8777 
8778   res_i = vec_any_le(vbs, vus);
8779 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8780 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8781 
8782   res_i = vec_any_le(vbs, vbs);
8783 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8784 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8785 
8786   res_i = vec_any_le(vi, vi);
8787 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8788 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8789 
8790   res_i = vec_any_le(vi, vbi);
8791 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8792 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8793 
8794   res_i = vec_any_le(vui, vui);
8795 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8796 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8797 
8798   res_i = vec_any_le(vui, vbi);
8799 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8800 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8801 
8802   res_i = vec_any_le(vbi, vi);
8803 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8804 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8805 
8806   res_i = vec_any_le(vbi, vui);
8807 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8808 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8809 
8810   res_i = vec_any_le(vbi, vbi);
8811 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8812 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8813 
8814   res_i = vec_any_le(vf, vf);
8815 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8816 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8817 
8818   /* vec_any_lt */
8819   res_i = vec_any_lt(vsc, vsc);
8820 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8821 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8822 
8823   res_i = vec_any_lt(vsc, vbc);
8824 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8825 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8826 
8827   res_i = vec_any_lt(vuc, vuc);
8828 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8829 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8830 
8831   res_i = vec_any_lt(vuc, vbc);
8832 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8833 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8834 
8835   res_i = vec_any_lt(vbc, vsc);
8836 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8837 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8838 
8839   res_i = vec_any_lt(vbc, vuc);
8840 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8841 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8842 
8843   res_i = vec_any_lt(vbc, vbc);
8844 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8845 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8846 
8847   res_i = vec_any_lt(vs, vs);
8848 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8849 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8850 
8851   res_i = vec_any_lt(vs, vbs);
8852 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8853 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8854 
8855   res_i = vec_any_lt(vus, vus);
8856 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8857 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8858 
8859   res_i = vec_any_lt(vus, vbs);
8860 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8861 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8862 
8863   res_i = vec_any_lt(vbs, vs);
8864 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8865 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8866 
8867   res_i = vec_any_lt(vbs, vus);
8868 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8869 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8870 
8871   res_i = vec_any_lt(vbs, vbs);
8872 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8873 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8874 
8875   res_i = vec_any_lt(vi, vi);
8876 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8877 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8878 
8879   res_i = vec_any_lt(vi, vbi);
8880 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8881 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8882 
8883   res_i = vec_any_lt(vui, vui);
8884 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8885 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8886 
8887   res_i = vec_any_lt(vui, vbi);
8888 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8889 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8890 
8891   res_i = vec_any_lt(vbi, vi);
8892 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8893 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8894 
8895   res_i = vec_any_lt(vbi, vui);
8896 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8897 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8898 
8899   res_i = vec_any_lt(vbi, vbi);
8900 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8901 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8902 
8903   res_i = vec_any_lt(vf, vf);
8904 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8905 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8906 
8907   /* vec_any_nan */
8908   res_i = vec_any_nan(vf);
8909 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8910 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8911 
8912   /* vec_any_ne */
8913   res_i = vec_any_ne(vsc, vsc);
8914 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8915 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8916 
8917   res_i = vec_any_ne(vsc, vbc);
8918 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8919 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8920 
8921   res_i = vec_any_ne(vuc, vuc);
8922 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8923 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8924 
8925   res_i = vec_any_ne(vuc, vbc);
8926 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8927 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8928 
8929   res_i = vec_any_ne(vbc, vsc);
8930 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8931 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8932 
8933   res_i = vec_any_ne(vbc, vuc);
8934 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8935 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8936 
8937   res_i = vec_any_ne(vbc, vbc);
8938 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8939 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8940 
8941   res_i = vec_any_ne(vs, vs);
8942 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8943 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8944 
8945   res_i = vec_any_ne(vs, vbs);
8946 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8947 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8948 
8949   res_i = vec_any_ne(vus, vus);
8950 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8951 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8952 
8953   res_i = vec_any_ne(vus, vbs);
8954 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8955 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8956 
8957   res_i = vec_any_ne(vbs, vs);
8958 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8959 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8960 
8961   res_i = vec_any_ne(vbs, vus);
8962 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8963 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8964 
8965   res_i = vec_any_ne(vbs, vbs);
8966 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8967 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8968 
8969   res_i = vec_any_ne(vp, vp);
8970 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8971 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8972 
8973   res_i = vec_any_ne(vi, vi);
8974 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8975 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8976 
8977   res_i = vec_any_ne(vi, vbi);
8978 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8979 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8980 
8981   res_i = vec_any_ne(vui, vui);
8982 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8983 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8984 
8985   res_i = vec_any_ne(vui, vbi);
8986 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8987 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8988 
8989   res_i = vec_any_ne(vbi, vi);
8990 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8991 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8992 
8993   res_i = vec_any_ne(vbi, vui);
8994 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8995 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8996 
8997   res_i = vec_any_ne(vbi, vbi);
8998 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8999 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9000 
9001   res_i = vec_any_ne(vf, vf);
9002 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9003 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9004 
9005   /* vec_any_nge */
9006   res_i = vec_any_nge(vf, vf);
9007 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9008 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9009 
9010   /* vec_any_ngt */
9011   res_i = vec_any_ngt(vf, vf);
9012 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9014 
9015   /* vec_any_nle */
9016   res_i = vec_any_nle(vf, vf);
9017 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9018 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9019 
9020   /* vec_any_nlt */
9021   res_i = vec_any_nlt(vf, vf);
9022 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9023 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9024 
9025   /* vec_any_numeric */
9026   res_i = vec_any_numeric(vf);
9027 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9028 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9029 
9030   /* vec_any_out */
9031   res_i = vec_any_out(vf, vf);
9032 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
9033 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9034 }
9035 
9036 /* ------------------------------ Relational Operators ------------------------------ */
9037 // CHECK-LABEL: define void @test7
test7()9038 void test7() {
9039   vector signed char vsc1 = (vector signed char)(-1);
9040   vector signed char vsc2 = (vector signed char)(-2);
9041   res_i = (vsc1 == vsc2);
9042 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9043 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9044 
9045   res_i = (vsc1 != vsc2);
9046 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9047 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9048 
9049   res_i = (vsc1 <  vsc2);
9050 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9051 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9052 
9053   res_i = (vsc1 >  vsc2);
9054 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9055 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9056 
9057   res_i = (vsc1 <= vsc2);
9058 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9059 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9060 
9061   res_i = (vsc1 >= vsc2);
9062 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9063 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9064 
9065   vector unsigned char vuc1 = (vector unsigned char)(1);
9066   vector unsigned char vuc2 = (vector unsigned char)(2);
9067   res_i = (vuc1 == vuc2);
9068 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9069 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9070 
9071   res_i = (vuc1 != vuc2);
9072 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9073 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9074 
9075   res_i = (vuc1 <  vuc2);
9076 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9077 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9078 
9079   res_i = (vuc1 >  vuc2);
9080 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9081 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9082 
9083   res_i = (vuc1 <= vuc2);
9084 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9085 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9086 
9087   res_i = (vuc1 >= vuc2);
9088 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9089 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9090 
9091   vector short vs1 = (vector short)(-1);
9092   vector short vs2 = (vector short)(-2);
9093   res_i = (vs1 == vs2);
9094 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9095 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9096 
9097   res_i = (vs1 != vs2);
9098 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9099 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9100 
9101   res_i = (vs1 <  vs2);
9102 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9103 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9104 
9105   res_i = (vs1 >  vs2);
9106 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9107 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9108 
9109   res_i = (vs1 <= vs2);
9110 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9111 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9112 
9113   res_i = (vs1 >= vs2);
9114 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9115 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9116 
9117   vector unsigned short vus1 = (vector unsigned short)(1);
9118   vector unsigned short vus2 = (vector unsigned short)(2);
9119   res_i = (vus1 == vus2);
9120 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9121 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9122 
9123   res_i = (vus1 != vus2);
9124 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9125 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9126 
9127   res_i = (vus1 <  vus2);
9128 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9130 
9131   res_i = (vus1 >  vus2);
9132 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9134 
9135   res_i = (vus1 <= vus2);
9136 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9138 
9139   res_i = (vus1 >= vus2);
9140 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9142 
9143   vector int vi1 = (vector int)(-1);
9144   vector int vi2 = (vector int)(-2);
9145   res_i = (vi1 == vi2);
9146 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9147 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9148 
9149   res_i = (vi1 != vi2);
9150 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9151 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9152 
9153   res_i = (vi1 <  vi2);
9154 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9155 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9156 
9157   res_i = (vi1 >  vi2);
9158 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9159 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9160 
9161   res_i = (vi1 <= vi2);
9162 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9163 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9164 
9165   res_i = (vi1 >= vi2);
9166 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9167 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9168 
9169   vector unsigned int vui1 = (vector unsigned int)(1);
9170   vector unsigned int vui2 = (vector unsigned int)(2);
9171   res_i = (vui1 == vui2);
9172 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9173 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9174 
9175   res_i = (vui1 != vui2);
9176 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9177 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9178 
9179   res_i = (vui1 <  vui2);
9180 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9181 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9182 
9183   res_i = (vui1 >  vui2);
9184 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9185 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9186 
9187   res_i = (vui1 <= vui2);
9188 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9189 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9190 
9191   res_i = (vui1 >= vui2);
9192 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9193 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9194 
9195   vector float vf1 = (vector float)(1.0);
9196   vector float vf2 = (vector float)(2.0);
9197   res_i = (vf1 == vf2);
9198 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9199 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9200 
9201   res_i = (vf1 != vf2);
9202 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9203 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9204 
9205   res_i = (vf1 <  vf2);
9206 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9207 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9208 
9209   res_i = (vf1 >  vf2);
9210 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9211 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9212 
9213   res_i = (vf1 <= vf2);
9214 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9215 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9216 
9217   res_i = (vf1 >= vf2);
9218 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9219 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9220 }
9221 
9222 /* ------------------------------ optional ---------------------------------- */
test8()9223 void test8() {
9224 // CHECK-LABEL: define void @test8
9225 // CHECK-LE-LABEL: define void @test8
9226   res_vbc = vec_reve(vbc);
9227   // 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>
9228   // 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>
9229 
9230   res_vsc = vec_reve(vsc);
9231   // 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>
9232   // 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>
9233 
9234   res_vuc = vec_reve(vuc);
9235   // 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>
9236   // 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>
9237 
9238   res_vbi = vec_reve(vbi);
9239   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9240   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9241 
9242   res_vi = vec_reve(vi);
9243   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9244   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9245 
9246   res_vui = vec_reve(vui);
9247   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9248   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9249 
9250   res_vbs = vec_reve(vbs);
9251   // 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>
9252   // 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>
9253 
9254   res_vs = vec_reve(vs);
9255   // 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>
9256   // 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>
9257 
9258   res_vus = vec_reve(vus);
9259   // 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>
9260   // 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>
9261 
9262   res_vf = vec_reve(vf);
9263   // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9264   // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9265 
9266   res_vbc = vec_revb(vbc);
9267 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9268 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9269 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9270 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9271 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9272 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9273 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9274 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9275 
9276   res_vsc = vec_revb(vsc);
9277 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9278 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9279 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9280 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9281 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9282 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9283 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9284 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9285 
9286   res_vuc = vec_revb(vuc);
9287 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9288 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9289 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9290 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9291 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9292 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9293 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9294 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9295 
9296   res_vbs = vec_revb(vbs);
9297 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9298 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9299 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9300 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9301 // CHECK-LE: xor <16 x i8>
9302 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9303 
9304   res_vs = vec_revb(vs);
9305 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9306 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9307 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9308 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9309 // CHECK-LE: xor <16 x i8>
9310 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9311 
9312   res_vus = vec_revb(vus);
9313 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9314 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9315 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9316 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9317 // CHECK-LE: xor <16 x i8>
9318 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9319 
9320   res_vbi = vec_revb(vbi);
9321 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9322 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9323 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9324 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9325 // CHECK-LE: xor <16 x i8>
9326 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9327 
9328   res_vi = vec_revb(vi);
9329 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9330 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9331 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9332 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9333 // CHECK-LE: xor <16 x i8>
9334 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9335 
9336   res_vui = vec_revb(vui);
9337 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9338 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9339 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9340 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9341 // CHECK-LE: xor <16 x i8>
9342 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9343 
9344   res_vf = vec_revb(vf);
9345 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9346 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9347 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9348 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9349 // CHECK-LE: xor <16 x i8>
9350 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9351 }
9352 
9353 /* ------------------------------ vec_xl ------------------------------------ */
test9()9354 void test9() {
9355   // CHECK-LABEL: define void @test9
9356   // CHECK-LE-LABEL: define void @test9
9357   res_vsc = vec_xl(param_sll, &param_sc);
9358   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9359   // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9360 
9361   res_vuc = vec_xl(param_sll, &param_uc);
9362   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9363   // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9364 
9365   res_vs = vec_xl(param_sll, &param_s);
9366   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9367   // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9368 
9369   res_vus = vec_xl(param_sll, &param_us);
9370   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9371   // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9372 
9373   res_vi = vec_xl(param_sll, &param_i);
9374   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9375   // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9376 
9377   res_vui = vec_xl(param_sll, &param_ui);
9378   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9379   // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9380 
9381   res_vf = vec_xl(param_sll, &param_f);
9382   // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9383   // CHECK-LE: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9384 }
9385 
9386 /* ------------------------------ vec_xst ----------------------------------- */
test10()9387 void test10() {
9388   // CHECK-LABEL: define void @test10
9389   // CHECK-LE-LABEL: define void @test10
9390   vec_xst(vsc, param_sll, &param_sc);
9391   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9392   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9393 
9394   vec_xst(vuc, param_sll, &param_uc);
9395   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9396   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9397 
9398   vec_xst(vs, param_sll, &param_s);
9399   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9400   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9401 
9402   vec_xst(vus, param_sll, &param_us);
9403   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9404   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9405 
9406   vec_xst(vi, param_sll, &param_i);
9407   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9408   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9409 
9410   vec_xst(vui, param_sll, &param_ui);
9411   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9412   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9413 
9414   vec_xst(vf, param_sll, &param_f);
9415   // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9416   // CHECK-LE: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9417 }
9418 
9419 /* ----------------------------- vec_xl_be ---------------------------------- */
test11()9420 void test11() {
9421   // CHECK-LABEL: define void @test11
9422   // CHECK-LE-LABEL: define void @test11
9423   res_vsc = vec_xl_be(param_sll, &param_sc);
9424   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9425   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9426   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9427 
9428   res_vuc = vec_xl_be(param_sll, &param_uc);
9429   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9430   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9431   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9432 
9433   res_vs = vec_xl_be(param_sll, &param_s);
9434   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9435   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9436   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9437 
9438   res_vus = vec_xl_be(param_sll, &param_us);
9439   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9440   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9441   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9442 
9443   res_vi = vec_xl_be(param_sll, &param_i);
9444   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9445   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9446 
9447   res_vui = vec_xl_be(param_sll, &param_ui);
9448   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9449   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9450 
9451   res_vf = vec_xl_be(param_sll, &param_f);
9452   // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9453   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9454 }
9455 
9456 /* ----------------------------- vec_xst_be --------------------------------- */
test12()9457 void test12() {
9458   // CHECK-LABEL: define void @test12
9459   // CHECK-LE-LABEL: define void @test12
9460   vec_xst_be(vsc, param_sll, &param_sc);
9461   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9462   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9463   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9464 
9465   vec_xst_be(vuc, param_sll, &param_uc);
9466   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9467   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9468   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9469 
9470   vec_xst_be(vs, param_sll, &param_s);
9471   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9472   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9473   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9474 
9475   vec_xst_be(vus, param_sll, &param_us);
9476   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9477   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9478   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9479 
9480   vec_xst_be(vi, param_sll, &param_i);
9481   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9482   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9483 
9484   vec_xst_be(vui, param_sll, &param_ui);
9485   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9486   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9487 
9488   vec_xst_be(vf, param_sll, &param_f);
9489   // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9490   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9491 }
9492