1 // REQUIRES: powerpc-registered-target
2 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown -emit-llvm %s \
3 // RUN:            -flax-vector-conversions=none  -faltivec-src-compat=mixed \
4 // RUN:            -o - | FileCheck %s
5 // RUN: %clang_cc1 -target-feature +altivec -triple powerpcle-unknown-unknown -emit-llvm %s \
6 // RUN:            -flax-vector-conversions=none  -faltivec-src-compat=mixed \
7 // RUN:            -o - | FileCheck %s -check-prefix=CHECK-LE
8 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown -emit-llvm %s \
9 // RUN:            -flax-vector-conversions=none  -faltivec-src-compat=mixed \
10 // RUN:            -o - | FileCheck %s
11 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64le-unknown-unknown -emit-llvm %s \
12 // RUN:            -flax-vector-conversions=none  -faltivec-src-compat=mixed \
13 // RUN:            -o - | FileCheck %s -check-prefix=CHECK-LE
14 // RUN: not %clang_cc1 -triple powerpc64le-unknown-unknown -emit-llvm %s \
15 // RUN:            -ferror-limit 0 -DNO_ALTIVEC -o - 2>&1 \
16 // RUN:            | FileCheck %s -check-prefix=CHECK-NOALTIVEC
17 #ifndef NO_ALTIVEC
18 #include <altivec.h>
19 #endif
20 
21 vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
22 vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
23 vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
24 vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
25 vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
26 vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
27 vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
28 vector bool int vbi = { 1, 0, 1, 0 };
29 vector int vi = { -1, 2, -3, 4 };
30 vector unsigned int vui = { 1, 2, 3, 4 };
31 vector float vf = { -1.5, 2.5, -3.5, 4.5 };
32 
33 vector bool char res_vbc;
34 vector signed char res_vsc;
35 vector unsigned char res_vuc;
36 vector bool short res_vbs;
37 vector short res_vs;
38 vector unsigned short res_vus;
39 vector pixel res_vp;
40 vector bool int res_vbi;
41 vector int res_vi;
42 vector unsigned int res_vui;
43 vector float res_vf;
44 
45 // CHECK-NOALTIVEC: error: unknown type name 'vector'
46 // CHECK-NOALTIVEC-NOT: '(error)'
47 const signed char *param_sc_ld;
48 const unsigned char *param_uc_ld;
49 const short *param_s_ld;
50 const unsigned short *param_us_ld;
51 const int *param_i_ld;
52 const unsigned int *param_ui_ld;
53 const float *param_f_ld;
54 
55 signed char param_sc;
56 unsigned char param_uc;
57 short param_s;
58 unsigned short param_us;
59 int param_i;
60 unsigned int param_ui;
61 float param_f;
62 signed long long param_sll;
63 
64 int res_sc;
65 int res_uc;
66 int res_s;
67 int res_us;
68 int res_i;
69 int res_ui;
70 int res_f;
71 
72 // CHECK-LABEL: define{{.*}} void @test1
test1()73 void test1() {
74 
75   /* vec_abs */
76   vsc = vec_abs(vsc);
77 // CHECK: sub <16 x i8> zeroinitializer
78 // CHECK: @llvm.ppc.altivec.vmaxsb
79 // CHECK-LE: sub <16 x i8> zeroinitializer
80 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
81 
82   vs = vec_abs(vs);
83 // CHECK: sub <8 x i16> zeroinitializer
84 // CHECK: @llvm.ppc.altivec.vmaxsh
85 // CHECK-LE: sub <8 x i16> zeroinitializer
86 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
87 
88   vi = vec_abs(vi);
89 // CHECK: sub <4 x i32> zeroinitializer
90 // CHECK: @llvm.ppc.altivec.vmaxsw
91 // CHECK-LE: sub <4 x i32> zeroinitializer
92 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
93 
94   vf = vec_abs(vf);
95 // CHECK: bitcast <4 x float> %{{.*}} to <4 x i32>
96 // CHECK: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
97 // CHECK: bitcast <4 x i32> %{{.*}} to <4 x float>
98 // CHECK: store <4 x float> %{{.*}}, <4 x float>* @vf
99 // CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
100 // CHECK-LE: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
101 // CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
102 // CHECK-LE: store <4 x float> %{{.*}}, <4 x float>* @vf
103 
104   vsc = vec_nabs(vsc);
105 // CHECK: sub <16 x i8> zeroinitializer
106 // CHECK: @llvm.ppc.altivec.vminsb
107 // CHECK-LE: sub <16 x i8> zeroinitializer
108 // CHECK-LE: @llvm.ppc.altivec.vminsb
109 
110   vs = vec_nabs(vs);
111 // CHECK: sub <8 x i16> zeroinitializer
112 // CHECK: @llvm.ppc.altivec.vminsh
113 // CHECK-LE: sub <8 x i16> zeroinitializer
114 // CHECK-LE: @llvm.ppc.altivec.vminsh
115 
116   vi = vec_nabs(vi);
117 // CHECK: sub <4 x i32> zeroinitializer
118 // CHECK: @llvm.ppc.altivec.vminsw
119 // CHECK-LE: sub <4 x i32> zeroinitializer
120 // CHECK-LE: @llvm.ppc.altivec.vminsw
121 
122   res_vi = vec_neg(vi);
123 // CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
124 // CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
125 
126   res_vs = vec_neg(vs);
127 // CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
128 // CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
129 
130   res_vsc = vec_neg(vsc);
131 // CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
132 // CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
133 
134 
135   /* vec_abs */
136   vsc = vec_abss(vsc);
137 // CHECK: @llvm.ppc.altivec.vsubsbs
138 // CHECK: @llvm.ppc.altivec.vmaxsb
139 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
140 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
141 
142   vs = vec_abss(vs);
143 // CHECK: @llvm.ppc.altivec.vsubshs
144 // CHECK: @llvm.ppc.altivec.vmaxsh
145 // CHECK-LE: @llvm.ppc.altivec.vsubshs
146 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
147 
148   vi = vec_abss(vi);
149 // CHECK: @llvm.ppc.altivec.vsubsws
150 // CHECK: @llvm.ppc.altivec.vmaxsw
151 // CHECK-LE: @llvm.ppc.altivec.vsubsws
152 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
153 
154   /*  vec_add */
155   res_vsc = vec_add(vsc, vsc);
156 // CHECK: add <16 x i8>
157 // CHECK-LE: add <16 x i8>
158 
159   res_vsc = vec_add(vbc, vsc);
160 // CHECK: add <16 x i8>
161 // CHECK-LE: add <16 x i8>
162 
163   res_vsc = vec_add(vsc, vbc);
164 // CHECK: add <16 x i8>
165 // CHECK-LE: add <16 x i8>
166 
167   res_vuc = vec_add(vuc, vuc);
168 // CHECK: add <16 x i8>
169 // CHECK-LE: add <16 x i8>
170 
171   res_vuc = vec_add(vbc, vuc);
172 // CHECK: add <16 x i8>
173 // CHECK-LE: add <16 x i8>
174 
175   res_vuc = vec_add(vuc, vbc);
176 // CHECK: add <16 x i8>
177 // CHECK-LE: add <16 x i8>
178 
179   res_vs  = vec_add(vs, vs);
180 // CHECK: add <8 x i16>
181 // CHECK-LE: add <8 x i16>
182 
183   res_vs  = vec_add(vbs, vs);
184 // CHECK: add <8 x i16>
185 // CHECK-LE: add <8 x i16>
186 
187   res_vs  = vec_add(vs, vbs);
188 // CHECK: add <8 x i16>
189 // CHECK-LE: add <8 x i16>
190 
191   res_vus = vec_add(vus, vus);
192 // CHECK: add <8 x i16>
193 // CHECK-LE: add <8 x i16>
194 
195   res_vus = vec_add(vbs, vus);
196 // CHECK: add <8 x i16>
197 // CHECK-LE: add <8 x i16>
198 
199   res_vus = vec_add(vus, vbs);
200 // CHECK: add <8 x i16>
201 // CHECK-LE: add <8 x i16>
202 
203   res_vi  = vec_add(vi, vi);
204 // CHECK: add <4 x i32>
205 // CHECK-LE: add <4 x i32>
206 
207   res_vi  = vec_add(vbi, vi);
208 // CHECK: add <4 x i32>
209 // CHECK-LE: add <4 x i32>
210 
211   res_vi  = vec_add(vi, vbi);
212 // CHECK: add <4 x i32>
213 // CHECK-LE: add <4 x i32>
214 
215   res_vui = vec_add(vui, vui);
216 // CHECK: add <4 x i32>
217 // CHECK-LE: add <4 x i32>
218 
219   res_vui = vec_add(vbi, vui);
220 // CHECK: add <4 x i32>
221 // CHECK-LE: add <4 x i32>
222 
223   res_vui = vec_add(vui, vbi);
224 // CHECK: add <4 x i32>
225 // CHECK-LE: add <4 x i32>
226 
227   res_vf  = vec_add(vf, vf);
228 // CHECK: fadd <4 x float>
229 // CHECK-LE: fadd <4 x float>
230 
231   res_vi  = vec_adde(vi, vi, vi);
232 // CHECK: and <4 x i32>
233 // CHECK: add <4 x i32>
234 // CHECK: add <4 x i32>
235 // CHECK-LE: and <4 x i32>
236 // CHECK-LE: add <4 x i32>
237 // CHECK-LE: add <4 x i32>
238 
239   res_vui  = vec_adde(vui, vui, vui);
240 // CHECK: and <4 x i32>
241 // CHECK: add <4 x i32>
242 // CHECK: add <4 x i32>
243 // CHECK-LE: and <4 x i32>
244 // CHECK-LE: add <4 x i32>
245 // CHECK-LE: add <4 x i32>
246 
247   res_vsc = vec_vaddubm(vsc, vsc);
248 // CHECK: add <16 x i8>
249 // CHECK-LE: add <16 x i8>
250 
251   res_vsc = vec_vaddubm(vbc, vsc);
252 // CHECK: add <16 x i8>
253 // CHECK-LE: add <16 x i8>
254 
255   res_vsc = vec_vaddubm(vsc, vbc);
256 // CHECK: add <16 x i8>
257 // CHECK-LE: add <16 x i8>
258 
259   res_vuc = vec_vaddubm(vuc, vuc);
260 // CHECK: add <16 x i8>
261 // CHECK-LE: add <16 x i8>
262 
263   res_vuc = vec_vaddubm(vbc, vuc);
264 // CHECK: add <16 x i8>
265 // CHECK-LE: add <16 x i8>
266 
267   res_vuc = vec_vaddubm(vuc, vbc);
268 // CHECK: add <16 x i8>
269 // CHECK-LE: add <16 x i8>
270 
271   res_vs  = vec_vadduhm(vs, vs);
272 // CHECK: add <8 x i16>
273 // CHECK-LE: add <8 x i16>
274 
275   res_vs  = vec_vadduhm(vbs, vs);
276 // CHECK: add <8 x i16>
277 // CHECK-LE: add <8 x i16>
278 
279   res_vs  = vec_vadduhm(vs, vbs);
280 // CHECK: add <8 x i16>
281 // CHECK-LE: add <8 x i16>
282 
283   res_vus = vec_vadduhm(vus, vus);
284 // CHECK: add <8 x i16>
285 // CHECK-LE: add <8 x i16>
286 
287   res_vus = vec_vadduhm(vbs, vus);
288 // CHECK: add <8 x i16>
289 // CHECK-LE: add <8 x i16>
290 
291   res_vus = vec_vadduhm(vus, vbs);
292 // CHECK: add <8 x i16>
293 // CHECK-LE: add <8 x i16>
294 
295   res_vi  = vec_vadduwm(vi, vi);
296 // CHECK: add <4 x i32>
297 // CHECK-LE: add <4 x i32>
298 
299   res_vi  = vec_vadduwm(vbi, vi);
300 // CHECK: add <4 x i32>
301 // CHECK-LE: add <4 x i32>
302 
303   res_vi  = vec_vadduwm(vi, vbi);
304 // CHECK: add <4 x i32>
305 // CHECK-LE: add <4 x i32>
306 
307   res_vui = vec_vadduwm(vui, vui);
308 // CHECK: add <4 x i32>
309 // CHECK-LE: add <4 x i32>
310 
311   res_vui = vec_vadduwm(vbi, vui);
312 // CHECK: add <4 x i32>
313 // CHECK-LE: add <4 x i32>
314 
315   res_vui = vec_vadduwm(vui, vbi);
316 // CHECK: add <4 x i32>
317 // CHECK-LE: add <4 x i32>
318 
319   res_vf  = vec_vaddfp(vf, vf);
320 // CHECK: fadd <4 x float>
321 // CHECK-LE: fadd <4 x float>
322 
323   /* vec_addc */
324   res_vui = vec_addc(vui, vui);
325 // CHECK: @llvm.ppc.altivec.vaddcuw
326 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
327 
328   res_vui = vec_vaddcuw(vui, vui);
329 // CHECK: @llvm.ppc.altivec.vaddcuw
330 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
331 
332   /* vec_adds */
333   res_vsc = vec_adds(vsc, vsc);
334 // CHECK: @llvm.ppc.altivec.vaddsbs
335 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
336 
337   res_vsc = vec_adds(vbc, vsc);
338 // CHECK: @llvm.ppc.altivec.vaddsbs
339 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
340 
341   res_vsc = vec_adds(vsc, vbc);
342 // CHECK: @llvm.ppc.altivec.vaddsbs
343 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
344 
345   res_vuc = vec_adds(vuc, vuc);
346 // CHECK: @llvm.ppc.altivec.vaddubs
347 // CHECK-LE: @llvm.ppc.altivec.vaddubs
348 
349   res_vuc = vec_adds(vbc, vuc);
350 // CHECK: @llvm.ppc.altivec.vaddubs
351 // CHECK-LE: @llvm.ppc.altivec.vaddubs
352 
353   res_vuc = vec_adds(vuc, vbc);
354 // CHECK: @llvm.ppc.altivec.vaddubs
355 // CHECK-LE: @llvm.ppc.altivec.vaddubs
356 
357   res_vs  = vec_adds(vs, vs);
358 // CHECK: @llvm.ppc.altivec.vaddshs
359 // CHECK-LE: @llvm.ppc.altivec.vaddshs
360 
361   res_vs  = vec_adds(vbs, vs);
362 // CHECK: @llvm.ppc.altivec.vaddshs
363 // CHECK-LE: @llvm.ppc.altivec.vaddshs
364 
365   res_vs  = vec_adds(vs, vbs);
366 // CHECK: @llvm.ppc.altivec.vaddshs
367 // CHECK-LE: @llvm.ppc.altivec.vaddshs
368 
369   res_vus = vec_adds(vus, vus);
370 // CHECK: @llvm.ppc.altivec.vadduhs
371 // CHECK-LE: @llvm.ppc.altivec.vadduhs
372 
373   res_vus = vec_adds(vbs, vus);
374 // CHECK: @llvm.ppc.altivec.vadduhs
375 // CHECK-LE: @llvm.ppc.altivec.vadduhs
376 
377   res_vus = vec_adds(vus, vbs);
378 // CHECK: @llvm.ppc.altivec.vadduhs
379 // CHECK-LE: @llvm.ppc.altivec.vadduhs
380 
381   res_vi  = vec_adds(vi, vi);
382 // CHECK: @llvm.ppc.altivec.vaddsws
383 // CHECK-LE: @llvm.ppc.altivec.vaddsws
384 
385   res_vi  = vec_adds(vbi, vi);
386 // CHECK: @llvm.ppc.altivec.vaddsws
387 // CHECK-LE: @llvm.ppc.altivec.vaddsws
388 
389   res_vi  = vec_adds(vi, vbi);
390 // CHECK: @llvm.ppc.altivec.vaddsws
391 // CHECK-LE: @llvm.ppc.altivec.vaddsws
392 
393   res_vui = vec_adds(vui, vui);
394 // CHECK: @llvm.ppc.altivec.vadduws
395 // CHECK-LE: @llvm.ppc.altivec.vadduws
396 
397   res_vui = vec_adds(vbi, vui);
398 // CHECK: @llvm.ppc.altivec.vadduws
399 // CHECK-LE: @llvm.ppc.altivec.vadduws
400 
401   res_vui = vec_adds(vui, vbi);
402 // CHECK: @llvm.ppc.altivec.vadduws
403 // CHECK-LE: @llvm.ppc.altivec.vadduws
404 
405   res_vsc = vec_vaddsbs(vsc, vsc);
406 // CHECK: @llvm.ppc.altivec.vaddsbs
407 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
408 
409   res_vsc = vec_vaddsbs(vbc, vsc);
410 // CHECK: @llvm.ppc.altivec.vaddsbs
411 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
412 
413   res_vsc = vec_vaddsbs(vsc, vbc);
414 // CHECK: @llvm.ppc.altivec.vaddsbs
415 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
416 
417   res_vuc = vec_vaddubs(vuc, vuc);
418 // CHECK: @llvm.ppc.altivec.vaddubs
419 // CHECK-LE: @llvm.ppc.altivec.vaddubs
420 
421   res_vuc = vec_vaddubs(vbc, vuc);
422 // CHECK: @llvm.ppc.altivec.vaddubs
423 // CHECK-LE: @llvm.ppc.altivec.vaddubs
424 
425   res_vuc = vec_vaddubs(vuc, vbc);
426 // CHECK: @llvm.ppc.altivec.vaddubs
427 // CHECK-LE: @llvm.ppc.altivec.vaddubs
428 
429   res_vs  = vec_vaddshs(vs, vs);
430 // CHECK: @llvm.ppc.altivec.vaddshs
431 // CHECK-LE: @llvm.ppc.altivec.vaddshs
432 
433   res_vs  = vec_vaddshs(vbs, vs);
434 // CHECK: @llvm.ppc.altivec.vaddshs
435 // CHECK-LE: @llvm.ppc.altivec.vaddshs
436 
437   res_vs  = vec_vaddshs(vs, vbs);
438 // CHECK: @llvm.ppc.altivec.vaddshs
439 // CHECK-LE: @llvm.ppc.altivec.vaddshs
440 
441   res_vus = vec_vadduhs(vus, vus);
442 // CHECK: @llvm.ppc.altivec.vadduhs
443 // CHECK-LE: @llvm.ppc.altivec.vadduhs
444 
445   res_vus = vec_vadduhs(vbs, vus);
446 // CHECK: @llvm.ppc.altivec.vadduhs
447 // CHECK-LE: @llvm.ppc.altivec.vadduhs
448 
449   res_vus = vec_vadduhs(vus, vbs);
450 // CHECK: @llvm.ppc.altivec.vadduhs
451 // CHECK-LE: @llvm.ppc.altivec.vadduhs
452 
453   res_vi  = vec_vaddsws(vi, vi);
454 // CHECK: @llvm.ppc.altivec.vaddsws
455 // CHECK-LE: @llvm.ppc.altivec.vaddsws
456 
457   res_vi  = vec_vaddsws(vbi, vi);
458 // CHECK: @llvm.ppc.altivec.vaddsws
459 // CHECK-LE: @llvm.ppc.altivec.vaddsws
460 
461   res_vi  = vec_vaddsws(vi, vbi);
462 // CHECK: @llvm.ppc.altivec.vaddsws
463 // CHECK-LE: @llvm.ppc.altivec.vaddsws
464 
465   res_vui = vec_vadduws(vui, vui);
466 // CHECK: @llvm.ppc.altivec.vadduws
467 // CHECK-LE: @llvm.ppc.altivec.vadduws
468 
469   res_vui = vec_vadduws(vbi, vui);
470 // CHECK: @llvm.ppc.altivec.vadduws
471 // CHECK-LE: @llvm.ppc.altivec.vadduws
472 
473   res_vui = vec_vadduws(vui, vbi);
474 // CHECK: @llvm.ppc.altivec.vadduws
475 // CHECK-LE: @llvm.ppc.altivec.vadduws
476 
477   /* vec_and */
478   res_vsc = vec_and(vsc, vsc);
479 // CHECK: and <16 x i8>
480 // CHECK-LE: and <16 x i8>
481 
482   res_vsc = vec_and(vbc, vsc);
483 // CHECK: and <16 x i8>
484 // CHECK-LE: and <16 x i8>
485 
486   res_vsc = vec_and(vsc, vbc);
487 // CHECK: and <16 x i8>
488 // CHECK-LE: and <16 x i8>
489 
490   res_vuc = vec_and(vuc, vuc);
491 // CHECK: and <16 x i8>
492 // CHECK-LE: and <16 x i8>
493 
494   res_vuc = vec_and(vbc, vuc);
495 // CHECK: and <16 x i8>
496 // CHECK-LE: and <16 x i8>
497 
498   res_vuc = vec_and(vuc, vbc);
499 // CHECK: and <16 x i8>
500 // CHECK-LE: and <16 x i8>
501 
502   res_vbc = vec_and(vbc, vbc);
503 // CHECK: and <16 x i8>
504 // CHECK-LE: and <16 x i8>
505 
506   res_vs  = vec_and(vs, vs);
507 // CHECK: and <8 x i16>
508 // CHECK-LE: and <8 x i16>
509 
510   res_vs  = vec_and(vbs, vs);
511 // CHECK: and <8 x i16>
512 // CHECK-LE: and <8 x i16>
513 
514   res_vs  = vec_and(vs, vbs);
515 // CHECK: and <8 x i16>
516 // CHECK-LE: and <8 x i16>
517 
518   res_vus = vec_and(vus, vus);
519 // CHECK: and <8 x i16>
520 // CHECK-LE: and <8 x i16>
521 
522   res_vus = vec_and(vbs, vus);
523 // CHECK: and <8 x i16>
524 // CHECK-LE: and <8 x i16>
525 
526   res_vus = vec_and(vus, vbs);
527 // CHECK: and <8 x i16>
528 // CHECK-LE: and <8 x i16>
529 
530   res_vbs = vec_and(vbs, vbs);
531 // CHECK: and <8 x i16>
532 // CHECK-LE: and <8 x i16>
533 
534   res_vi  = vec_and(vi, vi);
535 // CHECK: and <4 x i32>
536 // CHECK-LE: and <4 x i32>
537 
538   res_vi  = vec_and(vbi, vi);
539 // CHECK: and <4 x i32>
540 // CHECK-le: and <4 x i32>
541 
542   res_vi  = vec_and(vi, vbi);
543 // CHECK: and <4 x i32>
544 // CHECK-LE: and <4 x i32>
545 
546   res_vui = vec_and(vui, vui);
547 // CHECK: and <4 x i32>
548 // CHECK-LE: and <4 x i32>
549 
550   res_vui = vec_and(vbi, vui);
551 // CHECK: and <4 x i32>
552 // CHECK-LE: and <4 x i32>
553 
554   res_vui = vec_and(vui, vbi);
555 // CHECK: and <4 x i32>
556 // CHECK-LE: and <4 x i32>
557 
558   res_vbi = vec_and(vbi, vbi);
559 // CHECK: and <4 x i32>
560 // CHECK-LE: and <4 x i32>
561 
562   res_vsc = vec_vand(vsc, vsc);
563 // CHECK: and <16 x i8>
564 // CHECK-LE: and <16 x i8>
565 
566   res_vsc = vec_vand(vbc, vsc);
567 // CHECK: and <16 x i8>
568 // CHECK-LE: and <16 x i8>
569 
570   res_vsc = vec_vand(vsc, vbc);
571 // CHECK: and <16 x i8>
572 // CHECK-LE: and <16 x i8>
573 
574   res_vuc = vec_vand(vuc, vuc);
575 // CHECK: and <16 x i8>
576 // CHECK-LE: and <16 x i8>
577 
578   res_vuc = vec_vand(vbc, vuc);
579 // CHECK: and <16 x i8>
580 // CHECK-LE: and <16 x i8>
581 
582   res_vuc = vec_vand(vuc, vbc);
583 // CHECK: and <16 x i8>
584 // CHECK-LE: and <16 x i8>
585 
586   res_vbc = vec_vand(vbc, vbc);
587 // CHECK: and <16 x i8>
588 // CHECK-LE: and <16 x i8>
589 
590   res_vs  = vec_vand(vs, vs);
591 // CHECK: and <8 x i16>
592 // CHECK-LE: and <8 x i16>
593 
594   res_vs  = vec_vand(vbs, vs);
595 // CHECK: and <8 x i16>
596 // CHECK-LE: and <8 x i16>
597 
598   res_vs  = vec_vand(vs, vbs);
599 // CHECK: and <8 x i16>
600 // CHECK-LE: and <8 x i16>
601 
602   res_vus = vec_vand(vus, vus);
603 // CHECK: and <8 x i16>
604 // CHECK-LE: and <8 x i16>
605 
606   res_vus = vec_vand(vbs, vus);
607 // CHECK: and <8 x i16>
608 // CHECK-LE: and <8 x i16>
609 
610   res_vus = vec_vand(vus, vbs);
611 // CHECK: and <8 x i16>
612 // CHECK-LE: and <8 x i16>
613 
614   res_vbs = vec_vand(vbs, vbs);
615 // CHECK: and <8 x i16>
616 // CHECK-LE: and <8 x i16>
617 
618   res_vi  = vec_vand(vi, vi);
619 // CHECK: and <4 x i32>
620 // CHECK-LE: and <4 x i32>
621 
622   res_vi  = vec_vand(vbi, vi);
623 // CHECK: and <4 x i32>
624 // CHECK-LE: and <4 x i32>
625 
626   res_vi  = vec_vand(vi, vbi);
627 // CHECK: and <4 x i32>
628 // CHECK-LE: and <4 x i32>
629 
630   res_vui = vec_vand(vui, vui);
631 // CHECK: and <4 x i32>
632 // CHECK-LE: and <4 x i32>
633 
634   res_vui = vec_vand(vbi, vui);
635 // CHECK: and <4 x i32>
636 // CHECK-LE: and <4 x i32>
637 
638   res_vui = vec_vand(vui, vbi);
639 // CHECK: and <4 x i32>
640 // CHECK-LE: and <4 x i32>
641 
642   res_vbi = vec_vand(vbi, vbi);
643 // CHECK: and <4 x i32>
644 // CHECK-LE: and <4 x i32>
645 
646   /* vec_andc */
647   res_vsc = vec_andc(vsc, vsc);
648 // CHECK: xor <16 x i8>
649 // CHECK: and <16 x i8>
650 // CHECK-LE: xor <16 x i8>
651 // CHECK-LE: and <16 x i8>
652 
653   res_vsc = vec_andc(vbc, vsc);
654 // CHECK: xor <16 x i8>
655 // CHECK: and <16 x i8>
656 // CHECK-LE: xor <16 x i8>
657 // CHECK-LE: and <16 x i8>
658 
659   res_vsc = vec_andc(vsc, vbc);
660 // CHECK: xor <16 x i8>
661 // CHECK: and <16 x i8>
662 // CHECK-LE: xor <16 x i8>
663 // CHECK-LE: and <16 x i8>
664 
665   res_vuc = vec_andc(vuc, vuc);
666 // CHECK: xor <16 x i8>
667 // CHECK: and <16 x i8>
668 // CHECK-LE: xor <16 x i8>
669 // CHECK-LE: and <16 x i8>
670 
671   res_vuc = vec_andc(vbc, vuc);
672 // CHECK: xor <16 x i8>
673 // CHECK: and <16 x i8>
674 // CHECK-LE: xor <16 x i8>
675 // CHECK-LE: and <16 x i8>
676 
677   res_vuc = vec_andc(vuc, vbc);
678 // CHECK-LE: xor <16 x i8>
679 // CHECK-LE: and <16 x i8>
680 
681   res_vbc = vec_andc(vbc, vbc);
682 // CHECK: xor <16 x i8>
683 // CHECK: and <16 x i8>
684 // CHECK-LE: xor <16 x i8>
685 // CHECK-LE: and <16 x i8>
686 
687   res_vs  = vec_andc(vs, vs);
688 // CHECK: xor <8 x i16>
689 // CHECK: and <8 x i16>
690 // CHECK-LE: xor <8 x i16>
691 // CHECK-LE: and <8 x i16>
692 
693   res_vs  = vec_andc(vbs, vs);
694 // CHECK: xor <8 x i16>
695 // CHECK: and <8 x i16>
696 // CHECK-LE: xor <8 x i16>
697 // CHECK-LE: and <8 x i16>
698 
699   res_vs  = vec_andc(vs, vbs);
700 // CHECK: xor <8 x i16>
701 // CHECK: and <8 x i16>
702 // CHECK-LE: xor <8 x i16>
703 // CHECK-LE: and <8 x i16>
704 
705   res_vus = vec_andc(vus, vus);
706 // CHECK: xor <8 x i16>
707 // CHECK: and <8 x i16>
708 // CHECK-LE: xor <8 x i16>
709 // CHECK-LE: and <8 x i16>
710 
711   res_vus = vec_andc(vbs, vus);
712 // CHECK: xor <8 x i16>
713 // CHECK: and <8 x i16>
714 // CHECK-LE: xor <8 x i16>
715 // CHECK-LE: and <8 x i16>
716 
717   res_vus = vec_andc(vus, vbs);
718 // CHECK: xor <8 x i16>
719 // CHECK: and <8 x i16>
720 // CHECK-LE: xor <8 x i16>
721 // CHECK-LE: and <8 x i16>
722 
723   res_vbs = vec_andc(vbs, vbs);
724 // CHECK: xor <8 x i16>
725 // CHECK: and <8 x i16>
726 // CHECK-LE: xor <8 x i16>
727 // CHECK-LE: and <8 x i16>
728 
729   res_vi  = vec_andc(vi, vi);
730 // CHECK: xor <4 x i32>
731 // CHECK: and <4 x i32>
732 // CHECK-LE: xor <4 x i32>
733 // CHECK-LE: and <4 x i32>
734 
735   res_vi  = vec_andc(vbi, vi);
736 // CHECK: xor <4 x i32>
737 // CHECK: and <4 x i32>
738 // CHECK-LE: xor <4 x i32>
739 // CHECK-LE: and <4 x i32>
740 
741   res_vi  = vec_andc(vi, vbi);
742 // CHECK: xor <4 x i32>
743 // CHECK: and <4 x i32>
744 // CHECK-LE: xor <4 x i32>
745 // CHECK-LE: and <4 x i32>
746 
747   res_vui = vec_andc(vui, vui);
748 // CHECK: xor <4 x i32>
749 // CHECK: and <4 x i32>
750 // CHECK-LE: xor <4 x i32>
751 // CHECK-LE: and <4 x i32>
752 
753   res_vui = vec_andc(vbi, vui);
754 // CHECK: xor <4 x i32>
755 // CHECK: and <4 x i32>
756 // CHECK-LE: xor <4 x i32>
757 // CHECK-LE: and <4 x i32>
758 
759   res_vui = vec_andc(vui, vbi);
760 // CHECK: xor <4 x i32>
761 // CHECK: and <4 x i32>
762 // CHECK-LE: xor <4 x i32>
763 // CHECK-LE: and <4 x i32>
764 
765   res_vf = vec_andc(vf, vf);
766 // CHECK: xor <4 x i32>
767 // CHECK: and <4 x i32>
768 // CHECK-LE: xor <4 x i32>
769 // CHECK-LE: and <4 x i32>
770 
771   res_vf = vec_andc(vbi, vf);
772 // CHECK: xor <4 x i32>
773 // CHECK: and <4 x i32>
774 // CHECK-LE: xor <4 x i32>
775 // CHECK-LE: and <4 x i32>
776 
777   res_vf = vec_andc(vf, vbi);
778 // CHECK: xor <4 x i32>
779 // CHECK: and <4 x i32>
780 // CHECK-LE: xor <4 x i32>
781 // CHECK-LE: and <4 x i32>
782 
783   res_vsc = vec_vandc(vsc, vsc);
784 // CHECK: xor <16 x i8>
785 // CHECK: and <16 x i8>
786 // CHECK-LE: xor <16 x i8>
787 // CHECK-LE: and <16 x i8>
788 
789   res_vsc = vec_vandc(vbc, vsc);
790 // CHECK: xor <16 x i8>
791 // CHECK: and <16 x i8>
792 // CHECK-LE: xor <16 x i8>
793 // CHECK-LE: and <16 x i8>
794 
795   res_vsc = vec_vandc(vsc, vbc);
796 // CHECK: xor <16 x i8>
797 // CHECK: and <16 x i8>
798 // CHECK-LE: xor <16 x i8>
799 // CHECK-LE: and <16 x i8>
800 
801   res_vuc = vec_vandc(vuc, vuc);
802 // CHECK: xor <16 x i8>
803 // CHECK: and <16 x i8>
804 // CHECK-LE: xor <16 x i8>
805 // CHECK-LE: and <16 x i8>
806 
807   res_vuc = vec_vandc(vbc, vuc);
808 // CHECK: xor <16 x i8>
809 // CHECK: and <16 x i8>
810 // CHECK-LE: xor <16 x i8>
811 // CHECK-LE: and <16 x i8>
812 
813   res_vuc = vec_vandc(vuc, vbc);
814 // CHECK: xor <16 x i8>
815 // CHECK: and <16 x i8>
816 // CHECK-LE: xor <16 x i8>
817 // CHECK-LE: and <16 x i8>
818 
819   res_vbc = vec_vandc(vbc, vbc);
820 // CHECK: xor <16 x i8>
821 // CHECK: and <16 x i8>
822 // CHECK-LE: xor <16 x i8>
823 // CHECK-LE: and <16 x i8>
824 
825   res_vs  = vec_vandc(vs, vs);
826 // CHECK: xor <8 x i16>
827 // CHECK: and <8 x i16>
828 // CHECK-LE: xor <8 x i16>
829 // CHECK-LE: and <8 x i16>
830 
831   res_vs  = vec_vandc(vbs, vs);
832 // CHECK: xor <8 x i16>
833 // CHECK: and <8 x i16>
834 // CHECK-LE: xor <8 x i16>
835 // CHECK-LE: and <8 x i16>
836 
837   res_vs  = vec_vandc(vs, vbs);
838 // CHECK: xor <8 x i16>
839 // CHECK: and <8 x i16>
840 // CHECK-LE: xor <8 x i16>
841 // CHECK-LE: and <8 x i16>
842 
843   res_vus = vec_vandc(vus, vus);
844 // CHECK: xor <8 x i16>
845 // CHECK: and <8 x i16>
846 // CHECK-LE: xor <8 x i16>
847 // CHECK-LE: and <8 x i16>
848 
849   res_vus = vec_vandc(vbs, vus);
850 // CHECK: xor <8 x i16>
851 // CHECK: and <8 x i16>
852 // CHECK-LE: xor <8 x i16>
853 // CHECK-LE: and <8 x i16>
854 
855   res_vus = vec_vandc(vus, vbs);
856 // CHECK: xor <8 x i16>
857 // CHECK: and <8 x i16>
858 // CHECK-LE: xor <8 x i16>
859 // CHECK-LE: and <8 x i16>
860 
861   res_vbs = vec_vandc(vbs, vbs);
862 // CHECK: xor <8 x i16>
863 // CHECK: and <8 x i16>
864 // CHECK-LE: xor <8 x i16>
865 // CHECK-LE: and <8 x i16>
866 
867   res_vi  = vec_vandc(vi, vi);
868 // CHECK: xor <4 x i32>
869 // CHECK: and <4 x i32>
870 // CHECK-LE: xor <4 x i32>
871 // CHECK-LE: and <4 x i32>
872 
873   res_vi  = vec_vandc(vbi, vi);
874 // CHECK: xor <4 x i32>
875 // CHECK: and <4 x i32>
876 // CHECK-LE: xor <4 x i32>
877 // CHECK-LE: and <4 x i32>
878 
879   res_vi  = vec_vandc(vi, vbi);
880 // CHECK: xor <4 x i32>
881 // CHECK: and <4 x i32>
882 // CHECK-LE: xor <4 x i32>
883 // CHECK-LE: and <4 x i32>
884 
885   res_vui = vec_vandc(vui, vui);
886 // CHECK: xor <4 x i32>
887 // CHECK: and <4 x i32>
888 // CHECK-LE: xor <4 x i32>
889 // CHECK-LE: and <4 x i32>
890 
891   res_vui = vec_vandc(vbi, vui);
892 // CHECK: xor <4 x i32>
893 // CHECK: and <4 x i32>
894 // CHECK-LE: xor <4 x i32>
895 // CHECK-LE: and <4 x i32>
896 
897   res_vui = vec_vandc(vui, vbi);
898 // CHECK: xor <4 x i32>
899 // CHECK: and <4 x i32>
900 // CHECK-LE: xor <4 x i32>
901 // CHECK-LE: and <4 x i32>
902 
903   res_vf = vec_vandc(vf, vf);
904 // CHECK: xor <4 x i32>
905 // CHECK: and <4 x i32>
906 // CHECK-LE: xor <4 x i32>
907 // CHECK-LE: and <4 x i32>
908 
909   res_vf = vec_vandc(vbi, vf);
910 // CHECK: xor <4 x i32>
911 // CHECK: and <4 x i32>
912 // CHECK-LE: xor <4 x i32>
913 // CHECK-LE: and <4 x i32>
914 
915   res_vf = vec_vandc(vf, vbi);
916 // CHECK: xor <4 x i32>
917 // CHECK: and <4 x i32>
918 // CHECK-LE: xor <4 x i32>
919 // CHECK-LE: and <4 x i32>
920 
921 }
922 
923 // CHECK-LABEL: define{{.*}} void @test2
test2()924 void test2() {
925   /* vec_avg */
926   res_vsc = vec_avg(vsc, vsc);
927 // CHECK: @llvm.ppc.altivec.vavgsb
928 // CHECK-LE: @llvm.ppc.altivec.vavgsb
929 
930   res_vuc = vec_avg(vuc, vuc);
931 // CHECK: @llvm.ppc.altivec.vavgub
932 // CHECK-LE: @llvm.ppc.altivec.vavgub
933 
934   res_vs  = vec_avg(vs, vs);
935 // CHECK: @llvm.ppc.altivec.vavgsh
936 // CHECK-LE: @llvm.ppc.altivec.vavgsh
937 
938   res_vus = vec_avg(vus, vus);
939 // CHECK: @llvm.ppc.altivec.vavguh
940 // CHECK-LE: @llvm.ppc.altivec.vavguh
941 
942   res_vi  = vec_avg(vi, vi);
943 // CHECK: @llvm.ppc.altivec.vavgsw
944 // CHECK-LE: @llvm.ppc.altivec.vavgsw
945 
946   res_vui = vec_avg(vui, vui);
947 // CHECK: @llvm.ppc.altivec.vavguw
948 // CHECK-LE: @llvm.ppc.altivec.vavguw
949 
950   res_vsc = vec_vavgsb(vsc, vsc);
951 // CHECK: @llvm.ppc.altivec.vavgsb
952 // CHECK-LE: @llvm.ppc.altivec.vavgsb
953 
954   res_vuc = vec_vavgub(vuc, vuc);
955 // CHECK: @llvm.ppc.altivec.vavgub
956 // CHECK-LE: @llvm.ppc.altivec.vavgub
957 
958   res_vs  = vec_vavgsh(vs, vs);
959 // CHECK: @llvm.ppc.altivec.vavgsh
960 // CHECK-LE: @llvm.ppc.altivec.vavgsh
961 
962   res_vus = vec_vavguh(vus, vus);
963 // CHECK: @llvm.ppc.altivec.vavguh
964 // CHECK-LE: @llvm.ppc.altivec.vavguh
965 
966   res_vi  = vec_vavgsw(vi, vi);
967 // CHECK: @llvm.ppc.altivec.vavgsw
968 // CHECK-LE: @llvm.ppc.altivec.vavgsw
969 
970   res_vui = vec_vavguw(vui, vui);
971 // CHECK: @llvm.ppc.altivec.vavguw
972 // CHECK-LE: @llvm.ppc.altivec.vavguw
973 
974   /* vec_ceil */
975   res_vf = vec_ceil(vf);
976 // CHECK: @llvm.ppc.altivec.vrfip
977 // CHECK-LE: @llvm.ppc.altivec.vrfip
978 
979   res_vf = vec_vrfip(vf);
980 // CHECK: @llvm.ppc.altivec.vrfip
981 // CHECK-LE: @llvm.ppc.altivec.vrfip
982 
983   /* vec_cmpb */
984   res_vi = vec_cmpb(vf, vf);
985 // CHECK: @llvm.ppc.altivec.vcmpbfp
986 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
987 
988   res_vi = vec_vcmpbfp(vf, vf);
989 // CHECK: @llvm.ppc.altivec.vcmpbfp
990 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
991 
992   /* vec_cmpeq */
993   res_vbc = vec_cmpeq(vsc, vsc);
994 // CHECK: @llvm.ppc.altivec.vcmpequb
995 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
996 
997   res_vbc = vec_cmpeq(vuc, vuc);
998 // CHECK: @llvm.ppc.altivec.vcmpequb
999 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1000 
1001   res_vbc = vec_cmpeq(vbc, vbc);
1002 // CHECK: @llvm.ppc.altivec.vcmpequb
1003 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1004 
1005   res_vbc = vec_cmpeq(vbc, vbc);
1006 // CHECK: @llvm.ppc.altivec.vcmpequb
1007 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1008 
1009   res_vbs = vec_cmpeq(vs, vs);
1010 // CHECK: @llvm.ppc.altivec.vcmpequh
1011 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1012 
1013   res_vbs = vec_cmpeq(vus, vus);
1014 // CHECK: @llvm.ppc.altivec.vcmpequh
1015 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1016 
1017   res_vbs = vec_cmpeq(vbs, vbs);
1018 // CHECK: @llvm.ppc.altivec.vcmpequh
1019 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1020 
1021   res_vbs = vec_cmpeq(vbs, vbs);
1022 // CHECK: @llvm.ppc.altivec.vcmpequh
1023 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1024 
1025   res_vbi = vec_cmpeq(vi, vi);
1026 // CHECK: @llvm.ppc.altivec.vcmpequw
1027 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1028 
1029   res_vbi = vec_cmpeq(vui, vui);
1030 // CHECK: @llvm.ppc.altivec.vcmpequw
1031 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1032 
1033   res_vbi = vec_cmpeq(vbi, vbi);
1034 // CHECK: @llvm.ppc.altivec.vcmpequw
1035 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1036 
1037   res_vbi = vec_cmpeq(vbi, vbi);
1038 // CHECK: @llvm.ppc.altivec.vcmpequw
1039 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1040 
1041   res_vbi = vec_cmpeq(vf, vf);
1042 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1043 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1044 
1045   /* vec_cmpne */
1046   res_vbc = vec_cmpne(vsc, vsc);
1047 // CHECK: @llvm.ppc.altivec.vcmpequb
1048 // CHECK: xor
1049 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1050 // CHECK-LE: xor
1051 
1052   res_vbc = vec_cmpne(vuc, vuc);
1053 // CHECK: @llvm.ppc.altivec.vcmpequb
1054 // CHECK: xor
1055 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1056 // CHECK-LE: xor
1057 
1058   res_vbc = vec_cmpne(vbc, vbc);
1059 // CHECK: @llvm.ppc.altivec.vcmpequb
1060 // CHECK: xor
1061 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1062 // CHECK-LE: xor
1063 
1064   res_vbc = vec_cmpne(vbc, vbc);
1065 // CHECK: @llvm.ppc.altivec.vcmpequb
1066 // CHECK: xor
1067 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
1068 // CHECK-LE: xor
1069 
1070   res_vbs = vec_cmpne(vs, vs);
1071 // CHECK: @llvm.ppc.altivec.vcmpequh
1072 // CHECK: xor
1073 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1074 // CHECK-LE: xor
1075 
1076   res_vbs = vec_cmpne(vus, vus);
1077 // CHECK: @llvm.ppc.altivec.vcmpequh
1078 // CHECK: xor
1079 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1080 // CHECK-LE: xor
1081 
1082   res_vbs = vec_cmpne(vbs, vbs);
1083 // CHECK: @llvm.ppc.altivec.vcmpequh
1084 // CHECK: xor
1085 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1086 // CHECK-LE: xor
1087 
1088   res_vbs = vec_cmpne(vbs, vbs);
1089 // CHECK: @llvm.ppc.altivec.vcmpequh
1090 // CHECK: xor
1091 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1092 // CHECK-LE: xor
1093 
1094   res_vbi = vec_cmpne(vi, vi);
1095 // CHECK: @llvm.ppc.altivec.vcmpequw
1096 // CHECK: xor
1097 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1098 // CHECK-LE: xor
1099 
1100   res_vbi = vec_cmpne(vui, vui);
1101 // CHECK: @llvm.ppc.altivec.vcmpequw
1102 // CHECK: xor
1103 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1104 // CHECK-LE: xor
1105 
1106   res_vbi = vec_cmpne(vbi, vbi);
1107 // CHECK: @llvm.ppc.altivec.vcmpequw
1108 // CHECK: xor
1109 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1110 // CHECK-LE: xor
1111 
1112   res_vbi = vec_cmpne(vbi, vbi);
1113 // CHECK: @llvm.ppc.altivec.vcmpequw
1114 // CHECK: xor
1115 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1116 // CHECK-LE: xor
1117 
1118   res_vbi = vec_cmpne(vf, vf);
1119 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1120 // CHECK: xor
1121 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1122 // CHECK-LE: xor
1123 
1124   /* vec_cmpge */
1125   res_vbc = vec_cmpge(vsc, vsc);
1126 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1127 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1128 
1129   res_vbc = vec_cmpge(vuc, vuc);
1130 // CHECK: @llvm.ppc.altivec.vcmpgtub
1131 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1132 
1133   res_vbs = vec_cmpge(vs, vs);
1134 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1135 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1136 
1137   res_vbs = vec_cmpge(vus, vus);
1138 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1139 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1140 
1141   res_vbi = vec_cmpge(vi, vi);
1142 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1143 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1144 
1145   res_vbi = vec_cmpge(vui, vui);
1146 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1147 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1148 
1149   res_vbi = vec_cmpge(vf, vf);
1150 // CHECK: @llvm.ppc.altivec.vcmpgefp
1151 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1152 
1153   res_vbi = vec_vcmpgefp(vf, vf);
1154 // CHECK: @llvm.ppc.altivec.vcmpgefp
1155 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1156 }
1157 
1158 // CHECK-LABEL: define{{.*}} void @test5
test5()1159 void test5() {
1160 
1161   /* vec_cmpgt */
1162   res_vbc = vec_cmpgt(vsc, vsc);
1163 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1164 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1165 
1166   res_vbc = vec_cmpgt(vuc, vuc);
1167 // CHECK: @llvm.ppc.altivec.vcmpgtub
1168 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1169 
1170   res_vbs = vec_cmpgt(vs, vs);
1171 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1172 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1173 
1174   res_vbs = vec_cmpgt(vus, vus);
1175 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1176 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1177 
1178   res_vbi = vec_cmpgt(vi, vi);
1179 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1180 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1181 
1182   res_vbi = vec_cmpgt(vui, vui);
1183 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1184 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1185 
1186   res_vbi = vec_cmpgt(vf, vf);
1187 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1189 
1190   res_vbc = vec_vcmpgtsb(vsc, vsc);
1191 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1192 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1193 
1194   res_vbc = vec_vcmpgtub(vuc, vuc);
1195 // CHECK: @llvm.ppc.altivec.vcmpgtub
1196 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1197 
1198   res_vbs = vec_vcmpgtsh(vs, vs);
1199 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1200 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1201 
1202   res_vbs = vec_vcmpgtuh(vus, vus);
1203 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1204 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1205 
1206   res_vbi = vec_vcmpgtsw(vi, vi);
1207 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1208 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1209 
1210   res_vbi = vec_vcmpgtuw(vui, vui);
1211 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1212 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1213 
1214   res_vbi = vec_vcmpgtfp(vf, vf);
1215 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1216 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1217 
1218   /* vec_cmple */
1219   res_vbc = vec_cmple(vsc, vsc);
1220 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1221 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1222 
1223   res_vbc = vec_cmple(vuc, vuc);
1224 // CHECK: @llvm.ppc.altivec.vcmpgtub
1225 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1226 
1227   res_vbs = vec_cmple(vs, vs);
1228 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1229 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1230 
1231   res_vbs = vec_cmple(vus, vus);
1232 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1233 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1234 
1235   res_vbi = vec_cmple(vi, vi);
1236 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1237 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1238 
1239   res_vbi = vec_cmple(vui, vui);
1240 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1241 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1242 
1243   res_vbi = vec_cmple(vf, vf);
1244 // CHECK: @llvm.ppc.altivec.vcmpgefp
1245 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1246 }
1247 
1248 // CHECK-LABEL: define{{.*}} void @test6
test6()1249 void test6() {
1250   /* vec_cmplt */
1251   res_vbc = vec_cmplt(vsc, vsc);
1252 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1254 
1255   res_vbc = vec_cmplt(vuc, vuc);
1256 // CHECK: @llvm.ppc.altivec.vcmpgtub
1257 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1258 
1259   res_vbs = vec_cmplt(vs, vs);
1260 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1261 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1262 
1263   res_vbs = vec_cmplt(vus, vus);
1264 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1265 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1266 
1267   res_vbi = vec_cmplt(vi, vi);
1268 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1269 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1270 
1271   res_vbi = vec_cmplt(vui, vui);
1272 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1273 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1274 
1275   res_vbi = vec_cmplt(vf, vf);
1276 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1277 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1278 
1279   /* vec_ctf */
1280   res_vf  = vec_ctf(vi, 0);
1281 // CHECK: @llvm.ppc.altivec.vcfsx
1282 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1283 
1284   res_vf  = vec_ctf(vui, 0);
1285 // CHECK: @llvm.ppc.altivec.vcfux
1286 // CHECK-LE: @llvm.ppc.altivec.vcfux
1287 
1288   res_vf  = vec_vcfsx(vi, 0);
1289 // CHECK: @llvm.ppc.altivec.vcfsx
1290 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1291 
1292   res_vf  = vec_vcfux(vui, 0);
1293 // CHECK: @llvm.ppc.altivec.vcfux
1294 // CHECK-LE: @llvm.ppc.altivec.vcfux
1295 
1296   /* vec_cts */
1297   res_vi = vec_cts(vf, 0);
1298 // CHECK: @llvm.ppc.altivec.vctsxs
1299 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1300 
1301   res_vi = vec_vctsxs(vf, 0);
1302 // CHECK: @llvm.ppc.altivec.vctsxs
1303 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1304 
1305   /* vec_ctu */
1306   res_vui = vec_ctu(vf, 0);
1307 // CHECK: @llvm.ppc.altivec.vctuxs
1308 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1309 
1310   res_vui = vec_vctuxs(vf, 0);
1311 // CHECK: @llvm.ppc.altivec.vctuxs
1312 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1313 
1314   res_vi = vec_signed(vf);
1315 // CHECK: fptosi <4 x float>
1316 // CHECK-LE: fptosi <4 x float>
1317 
1318   res_vui = vec_unsigned(vf);
1319 // CHECK: fptoui <4 x float>
1320 // CHECK-LE: fptoui <4 x float>
1321 
1322   res_vf = vec_float(vi);
1323 // CHECK: sitofp <4 x i32>
1324 // CHECK-LE: sitofp <4 x i32>
1325 
1326   res_vf = vec_float(vui);
1327 // CHECK: uitofp <4 x i32>
1328 // CHECK-LE: uitofp <4 x i32>
1329 
1330   /* vec_div */
1331   res_vsc = vec_div(vsc, vsc);
1332 // CHECK: sdiv <16 x i8>
1333 // CHECK-LE: sdiv <16 x i8>
1334 
1335   res_vuc = vec_div(vuc, vuc);
1336 // CHECK: udiv <16 x i8>
1337 // CHECK-LE: udiv <16 x i8>
1338 
1339   res_vs = vec_div(vs, vs);
1340 // CHECK: sdiv <8 x i16>
1341 // CHECK-LE: sdiv <8 x i16>
1342 
1343   res_vus = vec_div(vus, vus);
1344 // CHECK: udiv <8 x i16>
1345 // CHECK-LE: udiv <8 x i16>
1346 
1347   res_vi = vec_div(vi, vi);
1348 // CHECK: sdiv <4 x i32>
1349 // CHECK-LE: sdiv <4 x i32>
1350 
1351   res_vui = vec_div(vui, vui);
1352 // CHECK: udiv <4 x i32>
1353 // CHECK-LE: udiv <4 x i32>
1354 
1355   /* vec_dss */
1356   vec_dss(0);
1357 // CHECK: @llvm.ppc.altivec.dss
1358 // CHECK-LE: @llvm.ppc.altivec.dss
1359 
1360   /* vec_dssall */
1361   vec_dssall();
1362 // CHECK: @llvm.ppc.altivec.dssall
1363 // CHECK-LE: @llvm.ppc.altivec.dssall
1364 
1365   /* vec_dst */
1366   vec_dst(&vsc, 0, 0);
1367 // CHECK: @llvm.ppc.altivec.dst
1368 // CHECK-LE: @llvm.ppc.altivec.dst
1369 
1370   /* vec_dstst */
1371   vec_dstst(&vs, 0, 0);
1372 // CHECK: @llvm.ppc.altivec.dstst
1373 // CHECK-LE: @llvm.ppc.altivec.dstst
1374 
1375   /* vec_dststt */
1376   vec_dststt(&param_i, 0, 0);
1377 // CHECK: @llvm.ppc.altivec.dststt
1378 // CHECK-LE: @llvm.ppc.altivec.dststt
1379 
1380   /* vec_dstt */
1381   vec_dstt(&vf, 0, 0);
1382 // CHECK: @llvm.ppc.altivec.dstt
1383 // CHECK-LE: @llvm.ppc.altivec.dstt
1384 
1385   /* vec_expte */
1386   res_vf = vec_expte(vf);
1387 // CHECK: @llvm.ppc.altivec.vexptefp
1388 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1389 
1390   res_vf = vec_vexptefp(vf);
1391 // CHECK: @llvm.ppc.altivec.vexptefp
1392 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1393 
1394   /* vec_floor */
1395   res_vf = vec_floor(vf);
1396 // CHECK: @llvm.ppc.altivec.vrfim
1397 // CHECK-LE: @llvm.ppc.altivec.vrfim
1398 
1399   res_vf = vec_vrfim(vf);
1400 // CHECK: @llvm.ppc.altivec.vrfim
1401 // CHECK-LE: @llvm.ppc.altivec.vrfim
1402 
1403   /* vec_ld */
1404   res_vsc = vec_ld(0, &vsc);
1405 // CHECK: @llvm.ppc.altivec.lvx
1406 // CHECK-LE: @llvm.ppc.altivec.lvx
1407 
1408   res_vsc = vec_ld(0, param_sc_ld);
1409 // CHECK: @llvm.ppc.altivec.lvx
1410 // CHECK-LE: @llvm.ppc.altivec.lvx
1411 
1412   res_vuc = vec_ld(0, &vuc);
1413 // CHECK: @llvm.ppc.altivec.lvx
1414 // CHECK-LE: @llvm.ppc.altivec.lvx
1415 
1416   res_vuc = vec_ld(0, param_uc_ld);
1417 // CHECK: @llvm.ppc.altivec.lvx
1418 // CHECK-LE: @llvm.ppc.altivec.lvx
1419 
1420   res_vbc = vec_ld(0, &vbc);
1421 // CHECK: @llvm.ppc.altivec.lvx
1422 // CHECK-LE: @llvm.ppc.altivec.lvx
1423 
1424   res_vs  = vec_ld(0, &vs);
1425 // CHECK: @llvm.ppc.altivec.lvx
1426 // CHECK-LE: @llvm.ppc.altivec.lvx
1427 
1428   res_vs  = vec_ld(0, param_s_ld);
1429 // CHECK: @llvm.ppc.altivec.lvx
1430 // CHECK-LE: @llvm.ppc.altivec.lvx
1431 
1432   res_vus = vec_ld(0, &vus);
1433 // CHECK: @llvm.ppc.altivec.lvx
1434 // CHECK-LE: @llvm.ppc.altivec.lvx
1435 
1436   res_vus = vec_ld(0, param_us_ld);
1437 // CHECK: @llvm.ppc.altivec.lvx
1438 // CHECK-LE: @llvm.ppc.altivec.lvx
1439 
1440   res_vbs = vec_ld(0, &vbs);
1441 // CHECK: @llvm.ppc.altivec.lvx
1442 // CHECK-LE: @llvm.ppc.altivec.lvx
1443 
1444   res_vp  = vec_ld(0, &vp);
1445 // CHECK: @llvm.ppc.altivec.lvx
1446 // CHECK-LE: @llvm.ppc.altivec.lvx
1447 
1448   res_vi  = vec_ld(0, &vi);
1449 // CHECK: @llvm.ppc.altivec.lvx
1450 // CHECK-LE: @llvm.ppc.altivec.lvx
1451 
1452   res_vi  = vec_ld(0, param_i_ld);
1453 // CHECK: @llvm.ppc.altivec.lvx
1454 // CHECK-LE: @llvm.ppc.altivec.lvx
1455 
1456   res_vui = vec_ld(0, &vui);
1457 // CHECK: @llvm.ppc.altivec.lvx
1458 // CHECK-LE: @llvm.ppc.altivec.lvx
1459 
1460   res_vui = vec_ld(0, param_ui_ld);
1461 // CHECK: @llvm.ppc.altivec.lvx
1462 // CHECK-LE: @llvm.ppc.altivec.lvx
1463 
1464   res_vbi = vec_ld(0, &vbi);
1465 // CHECK: @llvm.ppc.altivec.lvx
1466 // CHECK-LE: @llvm.ppc.altivec.lvx
1467 
1468   res_vf  = vec_ld(0, &vf);
1469 // CHECK: @llvm.ppc.altivec.lvx
1470 // CHECK-LE: @llvm.ppc.altivec.lvx
1471 
1472   res_vf  = vec_ld(0, param_f_ld);
1473 // CHECK: @llvm.ppc.altivec.lvx
1474 // CHECK-LE: @llvm.ppc.altivec.lvx
1475 
1476   res_vsc = vec_lvx(0, &vsc);
1477 // CHECK: @llvm.ppc.altivec.lvx
1478 // CHECK-LE: @llvm.ppc.altivec.lvx
1479 
1480   res_vsc = vec_lvx(0, param_sc_ld);
1481 // CHECK: @llvm.ppc.altivec.lvx
1482 // CHECK-LE: @llvm.ppc.altivec.lvx
1483 
1484   res_vuc = vec_lvx(0, &vuc);
1485 // CHECK: @llvm.ppc.altivec.lvx
1486 // CHECK-LE: @llvm.ppc.altivec.lvx
1487 
1488   res_vuc = vec_lvx(0, param_uc_ld);
1489 // CHECK: @llvm.ppc.altivec.lvx
1490 // CHECK-LE: @llvm.ppc.altivec.lvx
1491 
1492   res_vbc = vec_lvx(0, &vbc);
1493 // CHECK: @llvm.ppc.altivec.lvx
1494 // CHECK-LE: @llvm.ppc.altivec.lvx
1495 
1496   res_vs  = vec_lvx(0, &vs);
1497 // CHECK: @llvm.ppc.altivec.lvx
1498 // CHECK-LE: @llvm.ppc.altivec.lvx
1499 
1500   res_vs  = vec_lvx(0, param_s_ld);
1501 // CHECK: @llvm.ppc.altivec.lvx
1502 // CHECK-LE: @llvm.ppc.altivec.lvx
1503 
1504   res_vus = vec_lvx(0, &vus);
1505 // CHECK: @llvm.ppc.altivec.lvx
1506 // CHECK-LE: @llvm.ppc.altivec.lvx
1507 
1508   res_vus = vec_lvx(0, param_us_ld);
1509 // CHECK: @llvm.ppc.altivec.lvx
1510 // CHECK-LE: @llvm.ppc.altivec.lvx
1511 
1512   res_vbs = vec_lvx(0, &vbs);
1513 // CHECK: @llvm.ppc.altivec.lvx
1514 // CHECK-LE: @llvm.ppc.altivec.lvx
1515 
1516   res_vp  = vec_lvx(0, &vp);
1517 // CHECK: @llvm.ppc.altivec.lvx
1518 // CHECK-LE: @llvm.ppc.altivec.lvx
1519 
1520   res_vi  = vec_lvx(0, &vi);
1521 // CHECK: @llvm.ppc.altivec.lvx
1522 // CHECK-LE: @llvm.ppc.altivec.lvx
1523 
1524   res_vi  = vec_lvx(0, param_i_ld);
1525 // CHECK: @llvm.ppc.altivec.lvx
1526 // CHECK-LE: @llvm.ppc.altivec.lvx
1527 
1528   res_vui = vec_lvx(0, &vui);
1529 // CHECK: @llvm.ppc.altivec.lvx
1530 // CHECK-LE: @llvm.ppc.altivec.lvx
1531 
1532   res_vui = vec_lvx(0, param_ui_ld);
1533 // CHECK: @llvm.ppc.altivec.lvx
1534 // CHECK-LE: @llvm.ppc.altivec.lvx
1535 
1536   res_vbi = vec_lvx(0, &vbi);
1537 // CHECK: @llvm.ppc.altivec.lvx
1538 // CHECK-LE: @llvm.ppc.altivec.lvx
1539 
1540   res_vf  = vec_lvx(0, &vf);
1541 // CHECK: @llvm.ppc.altivec.lvx
1542 // CHECK-LE: @llvm.ppc.altivec.lvx
1543 
1544   res_vf  = vec_lvx(0, param_f_ld);
1545 // CHECK: @llvm.ppc.altivec.lvx
1546 // CHECK-LE: @llvm.ppc.altivec.lvx
1547 
1548   /* vec_lde */
1549   res_vsc = vec_lde(0, param_sc_ld);
1550 // CHECK: @llvm.ppc.altivec.lvebx
1551 // CHECK-LE: @llvm.ppc.altivec.lvebx
1552 
1553   res_vuc = vec_lde(0, param_uc_ld);
1554 // CHECK: @llvm.ppc.altivec.lvebx
1555 // CHECK-LE: @llvm.ppc.altivec.lvebx
1556 
1557   res_vs  = vec_lde(0, param_s_ld);
1558 // CHECK: @llvm.ppc.altivec.lvehx
1559 // CHECK-LE: @llvm.ppc.altivec.lvehx
1560 
1561   res_vus = vec_lde(0, param_us_ld);
1562 // CHECK: @llvm.ppc.altivec.lvehx
1563 // CHECK-LE: @llvm.ppc.altivec.lvehx
1564 
1565   res_vi  = vec_lde(0, param_i_ld);
1566 // CHECK: @llvm.ppc.altivec.lvewx
1567 // CHECK-LE: @llvm.ppc.altivec.lvewx
1568 
1569   res_vui = vec_lde(0, param_ui_ld);
1570 // CHECK: @llvm.ppc.altivec.lvewx
1571 // CHECK-LE: @llvm.ppc.altivec.lvewx
1572 
1573   res_vf  = vec_lde(0, param_f_ld);
1574 // CHECK: @llvm.ppc.altivec.lvewx
1575 // CHECK-LE: @llvm.ppc.altivec.lvewx
1576 
1577   res_vsc = vec_lvebx(0, param_sc_ld);
1578 // CHECK: @llvm.ppc.altivec.lvebx
1579 // CHECK-LE: @llvm.ppc.altivec.lvebx
1580 
1581   res_vuc = vec_lvebx(0, param_uc_ld);
1582 // CHECK: @llvm.ppc.altivec.lvebx
1583 // CHECK-LE: @llvm.ppc.altivec.lvebx
1584 
1585   res_vs  = vec_lvehx(0, param_s_ld);
1586 // CHECK: @llvm.ppc.altivec.lvehx
1587 // CHECK-LE: @llvm.ppc.altivec.lvehx
1588 
1589   res_vus = vec_lvehx(0, param_us_ld);
1590 // CHECK: @llvm.ppc.altivec.lvehx
1591 // CHECK-LE: @llvm.ppc.altivec.lvehx
1592 
1593   res_vi  = vec_lvewx(0, param_i_ld);
1594 // CHECK: @llvm.ppc.altivec.lvewx
1595 // CHECK-LE: @llvm.ppc.altivec.lvewx
1596 
1597   res_vui = vec_lvewx(0, param_ui_ld);
1598 // CHECK: @llvm.ppc.altivec.lvewx
1599 // CHECK-LE: @llvm.ppc.altivec.lvewx
1600 
1601   res_vf  = vec_lvewx(0, param_f_ld);
1602 // CHECK: @llvm.ppc.altivec.lvewx
1603 // CHECK-LE: @llvm.ppc.altivec.lvewx
1604 
1605   /* vec_ldl */
1606   res_vsc = vec_ldl(0, &vsc);
1607 // CHECK: @llvm.ppc.altivec.lvxl
1608 // CHECK-LE: @llvm.ppc.altivec.lvxl
1609 
1610   res_vsc = vec_ldl(0, param_sc_ld);
1611 // CHECK: @llvm.ppc.altivec.lvxl
1612 // CHECK-LE: @llvm.ppc.altivec.lvxl
1613 
1614   res_vuc = vec_ldl(0, &vuc);
1615 // CHECK: @llvm.ppc.altivec.lvxl
1616 // CHECK-LE: @llvm.ppc.altivec.lvxl
1617 
1618   res_vuc = vec_ldl(0, param_uc_ld);
1619 // CHECK: @llvm.ppc.altivec.lvxl
1620 // CHECK-LE: @llvm.ppc.altivec.lvxl
1621 
1622   res_vbc = vec_ldl(0, &vbc);
1623 // CHECK: @llvm.ppc.altivec.lvxl
1624 // CHECK-LE: @llvm.ppc.altivec.lvxl
1625 
1626   res_vs  = vec_ldl(0, &vs);
1627 // CHECK: @llvm.ppc.altivec.lvxl
1628 // CHECK-LE: @llvm.ppc.altivec.lvxl
1629 
1630   res_vs  = vec_ldl(0, param_s_ld);
1631 // CHECK: @llvm.ppc.altivec.lvxl
1632 // CHECK-LE: @llvm.ppc.altivec.lvxl
1633 
1634   res_vus = vec_ldl(0, &vus);
1635 // CHECK: @llvm.ppc.altivec.lvxl
1636 // CHECK-LE: @llvm.ppc.altivec.lvxl
1637 
1638   res_vus = vec_ldl(0, param_us_ld);
1639 // CHECK: @llvm.ppc.altivec.lvxl
1640 // CHECK-LE: @llvm.ppc.altivec.lvxl
1641 
1642   res_vbs = vec_ldl(0, &vbs);
1643 // CHECK: @llvm.ppc.altivec.lvxl
1644 // CHECK-LE: @llvm.ppc.altivec.lvxl
1645 
1646   res_vp  = vec_ldl(0, &vp);
1647 // CHECK: @llvm.ppc.altivec.lvxl
1648 // CHECK-LE: @llvm.ppc.altivec.lvxl
1649 
1650   res_vi  = vec_ldl(0, &vi);
1651 // CHECK: @llvm.ppc.altivec.lvxl
1652 // CHECK-LE: @llvm.ppc.altivec.lvxl
1653 
1654   res_vi  = vec_ldl(0, param_i_ld);
1655 // CHECK: @llvm.ppc.altivec.lvxl
1656 // CHECK-LE: @llvm.ppc.altivec.lvxl
1657 
1658   res_vui = vec_ldl(0, &vui);
1659 // CHECK: @llvm.ppc.altivec.lvxl
1660 // CHECK-LE: @llvm.ppc.altivec.lvxl
1661 
1662   res_vui = vec_ldl(0, param_ui_ld);
1663 // CHECK: @llvm.ppc.altivec.lvxl
1664 // CHECK-LE: @llvm.ppc.altivec.lvxl
1665 
1666   res_vbi = vec_ldl(0, &vbi);
1667 // CHECK: @llvm.ppc.altivec.lvxl
1668 // CHECK-LE: @llvm.ppc.altivec.lvxl
1669 
1670   res_vf  = vec_ldl(0, &vf);
1671 // CHECK: @llvm.ppc.altivec.lvxl
1672 // CHECK-LE: @llvm.ppc.altivec.lvxl
1673 
1674   res_vf  = vec_ldl(0, param_f_ld);
1675 // CHECK: @llvm.ppc.altivec.lvxl
1676 // CHECK-LE: @llvm.ppc.altivec.lvxl
1677 
1678   res_vsc = vec_lvxl(0, &vsc);
1679 // CHECK: @llvm.ppc.altivec.lvxl
1680 // CHECK-LE: @llvm.ppc.altivec.lvxl
1681 
1682   res_vsc = vec_lvxl(0, param_sc_ld);
1683 // CHECK: @llvm.ppc.altivec.lvxl
1684 // CHECK-LE: @llvm.ppc.altivec.lvxl
1685 
1686   res_vuc = vec_lvxl(0, &vuc);
1687 // CHECK: @llvm.ppc.altivec.lvxl
1688 // CHECK-LE: @llvm.ppc.altivec.lvxl
1689 
1690   res_vbc = vec_lvxl(0, &vbc);
1691 // CHECK: @llvm.ppc.altivec.lvxl
1692 // CHECK-LE: @llvm.ppc.altivec.lvxl
1693 
1694   res_vuc = vec_lvxl(0, param_uc_ld);
1695 // CHECK: @llvm.ppc.altivec.lvxl
1696 // CHECK-LE: @llvm.ppc.altivec.lvxl
1697 
1698   res_vs  = vec_lvxl(0, &vs);
1699 // CHECK: @llvm.ppc.altivec.lvxl
1700 // CHECK-LE: @llvm.ppc.altivec.lvxl
1701 
1702   res_vs  = vec_lvxl(0, param_s_ld);
1703 // CHECK: @llvm.ppc.altivec.lvxl
1704 // CHECK-LE: @llvm.ppc.altivec.lvxl
1705 
1706   res_vus = vec_lvxl(0, &vus);
1707 // CHECK: @llvm.ppc.altivec.lvxl
1708 // CHECK-LE: @llvm.ppc.altivec.lvxl
1709 
1710   res_vus = vec_lvxl(0, param_us_ld);
1711 // CHECK: @llvm.ppc.altivec.lvxl
1712 // CHECK-LE: @llvm.ppc.altivec.lvxl
1713 
1714   res_vbs = vec_lvxl(0, &vbs);
1715 // CHECK: @llvm.ppc.altivec.lvxl
1716 // CHECK-LE: @llvm.ppc.altivec.lvxl
1717 
1718   res_vp  = vec_lvxl(0, &vp);
1719 // CHECK: @llvm.ppc.altivec.lvxl
1720 // CHECK-LE: @llvm.ppc.altivec.lvxl
1721 
1722   res_vi  = vec_lvxl(0, &vi);
1723 // CHECK: @llvm.ppc.altivec.lvxl
1724 // CHECK-LE: @llvm.ppc.altivec.lvxl
1725 
1726   res_vi  = vec_lvxl(0, param_i_ld);
1727 // CHECK: @llvm.ppc.altivec.lvxl
1728 // CHECK-LE: @llvm.ppc.altivec.lvxl
1729 
1730   res_vui = vec_lvxl(0, &vui);
1731 // CHECK: @llvm.ppc.altivec.lvxl
1732 // CHECK-LE: @llvm.ppc.altivec.lvxl
1733 
1734   res_vui = vec_lvxl(0, param_ui_ld);
1735 // CHECK: @llvm.ppc.altivec.lvxl
1736 // CHECK-LE: @llvm.ppc.altivec.lvxl
1737 
1738   res_vbi = vec_lvxl(0, &vbi);
1739 // CHECK: @llvm.ppc.altivec.lvxl
1740 // CHECK-LE: @llvm.ppc.altivec.lvxl
1741 
1742   res_vf  = vec_lvxl(0, &vf);
1743 // CHECK: @llvm.ppc.altivec.lvxl
1744 // CHECK-LE: @llvm.ppc.altivec.lvxl
1745 
1746   res_vf  = vec_lvxl(0, param_f_ld);
1747 // CHECK: @llvm.ppc.altivec.lvxl
1748 // CHECK-LE: @llvm.ppc.altivec.lvxl
1749 
1750   /* vec_loge */
1751   res_vf = vec_loge(vf);
1752 // CHECK: @llvm.ppc.altivec.vlogefp
1753 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1754 
1755   res_vf = vec_vlogefp(vf);
1756 // CHECK: @llvm.ppc.altivec.vlogefp
1757 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1758 
1759   /* vec_lvsl */
1760   res_vuc = vec_lvsl(0, param_i_ld);
1761 // CHECK: @llvm.ppc.altivec.lvsl
1762 // CHECK-LE: @llvm.ppc.altivec.lvsl
1763 
1764   /* vec_lvsr */
1765   res_vuc = vec_lvsr(0, param_i_ld);
1766 // CHECK: @llvm.ppc.altivec.lvsr
1767 // CHECK-LE: @llvm.ppc.altivec.lvsr
1768 
1769   /* vec_madd */
1770   res_vf =vec_madd(vf, vf, vf);
1771 // CHECK: @llvm.ppc.altivec.vmaddfp
1772 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1773 
1774   res_vf = vec_vmaddfp(vf, vf, vf);
1775 // CHECK: @llvm.ppc.altivec.vmaddfp
1776 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1777 
1778   /* vec_madds */
1779   res_vs = vec_madds(vs, vs, vs);
1780 // CHECK: @llvm.ppc.altivec.vmhaddshs
1781 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1782 
1783   res_vs = vec_vmhaddshs(vs, vs, vs);
1784 // CHECK: @llvm.ppc.altivec.vmhaddshs
1785 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1786 
1787   /* vec_max */
1788   res_vsc = vec_max(vsc, vsc);
1789 // CHECK: @llvm.ppc.altivec.vmaxsb
1790 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1791 
1792   res_vsc = vec_max(vbc, vsc);
1793 // CHECK: @llvm.ppc.altivec.vmaxsb
1794 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1795 
1796   res_vsc = vec_max(vsc, vbc);
1797 // CHECK: @llvm.ppc.altivec.vmaxsb
1798 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1799 
1800   res_vuc = vec_max(vuc, vuc);
1801 // CHECK: @llvm.ppc.altivec.vmaxub
1802 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1803 
1804   res_vuc = vec_max(vbc, vuc);
1805 // CHECK: @llvm.ppc.altivec.vmaxub
1806 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1807 
1808   res_vuc = vec_max(vuc, vbc);
1809 // CHECK: @llvm.ppc.altivec.vmaxub
1810 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1811 
1812   res_vs  = vec_max(vs, vs);
1813 // CHECK: @llvm.ppc.altivec.vmaxsh
1814 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1815 
1816   res_vs  = vec_max(vbs, vs);
1817 // CHECK: @llvm.ppc.altivec.vmaxsh
1818 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1819 
1820   res_vs  = vec_max(vs, vbs);
1821 // CHECK: @llvm.ppc.altivec.vmaxsh
1822 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1823 
1824   res_vus = vec_max(vus, vus);
1825 // CHECK: @llvm.ppc.altivec.vmaxuh
1826 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1827 
1828   res_vus = vec_max(vbs, vus);
1829 // CHECK: @llvm.ppc.altivec.vmaxuh
1830 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1831 
1832   res_vus = vec_max(vus, vbs);
1833 // CHECK: @llvm.ppc.altivec.vmaxuh
1834 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1835 
1836   res_vi  = vec_max(vi, vi);
1837 // CHECK: @llvm.ppc.altivec.vmaxsw
1838 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1839 
1840   res_vi  = vec_max(vbi, vi);
1841 // CHECK: @llvm.ppc.altivec.vmaxsw
1842 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1843 
1844   res_vi  = vec_max(vi, vbi);
1845 // CHECK: @llvm.ppc.altivec.vmaxsw
1846 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1847 
1848   res_vui = vec_max(vui, vui);
1849 // CHECK: @llvm.ppc.altivec.vmaxuw
1850 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1851 
1852   res_vui = vec_max(vbi, vui);
1853 // CHECK: @llvm.ppc.altivec.vmaxuw
1854 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1855 
1856   res_vui = vec_max(vui, vbi);
1857 // CHECK: @llvm.ppc.altivec.vmaxuw
1858 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1859 
1860   res_vf  = vec_max(vf, vf);
1861 // CHECK: @llvm.ppc.altivec.vmaxfp
1862 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1863 
1864   res_vsc = vec_vmaxsb(vsc, vsc);
1865 // CHECK: @llvm.ppc.altivec.vmaxsb
1866 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1867 
1868   res_vsc = vec_vmaxsb(vbc, vsc);
1869 // CHECK: @llvm.ppc.altivec.vmaxsb
1870 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1871 
1872   res_vsc = vec_vmaxsb(vsc, vbc);
1873 // CHECK: @llvm.ppc.altivec.vmaxsb
1874 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1875 
1876   res_vuc = vec_vmaxub(vuc, vuc);
1877 // CHECK: @llvm.ppc.altivec.vmaxub
1878 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1879 
1880   res_vuc = vec_vmaxub(vbc, vuc);
1881 // CHECK: @llvm.ppc.altivec.vmaxub
1882 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1883 
1884   res_vuc = vec_vmaxub(vuc, vbc);
1885 // CHECK: @llvm.ppc.altivec.vmaxub
1886 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1887 
1888   res_vs  = vec_vmaxsh(vs, vs);
1889 // CHECK: @llvm.ppc.altivec.vmaxsh
1890 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1891 
1892   res_vs  = vec_vmaxsh(vbs, vs);
1893 // CHECK: @llvm.ppc.altivec.vmaxsh
1894 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1895 
1896   res_vs  = vec_vmaxsh(vs, vbs);
1897 // CHECK: @llvm.ppc.altivec.vmaxsh
1898 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1899 
1900   res_vus = vec_vmaxuh(vus, vus);
1901 // CHECK: @llvm.ppc.altivec.vmaxuh
1902 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1903 
1904   res_vus = vec_vmaxuh(vbs, vus);
1905 // CHECK: @llvm.ppc.altivec.vmaxuh
1906 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1907 
1908   res_vus = vec_vmaxuh(vus, vbs);
1909 // CHECK: @llvm.ppc.altivec.vmaxuh
1910 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1911 
1912   res_vi  = vec_vmaxsw(vi, vi);
1913 // CHECK: @llvm.ppc.altivec.vmaxsw
1914 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1915 
1916   res_vi  = vec_vmaxsw(vbi, vi);
1917 // CHECK: @llvm.ppc.altivec.vmaxsw
1918 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1919 
1920   res_vi  = vec_vmaxsw(vi, vbi);
1921 // CHECK: @llvm.ppc.altivec.vmaxsw
1922 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1923 
1924   res_vui = vec_vmaxuw(vui, vui);
1925 // CHECK: @llvm.ppc.altivec.vmaxuw
1926 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1927 
1928   res_vui = vec_vmaxuw(vbi, vui);
1929 // CHECK: @llvm.ppc.altivec.vmaxuw
1930 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1931 
1932   res_vui = vec_vmaxuw(vui, vbi);
1933 // CHECK: @llvm.ppc.altivec.vmaxuw
1934 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1935 
1936   res_vf  = vec_vmaxfp(vf, vf);
1937 // CHECK: @llvm.ppc.altivec.vmaxfp
1938 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1939 
1940   /* vec_mergeh */
1941   res_vsc = vec_mergeh(vsc, vsc);
1942 // CHECK: @llvm.ppc.altivec.vperm
1943 // CHECK-LE: @llvm.ppc.altivec.vperm
1944 
1945   res_vuc = vec_mergeh(vuc, vuc);
1946 // CHECK: @llvm.ppc.altivec.vperm
1947 // CHECK-LE: @llvm.ppc.altivec.vperm
1948 
1949   res_vbc = vec_mergeh(vbc, vbc);
1950 // CHECK: @llvm.ppc.altivec.vperm
1951 // CHECK-LE: @llvm.ppc.altivec.vperm
1952 
1953   res_vs  = vec_mergeh(vs, vs);
1954 // CHECK: @llvm.ppc.altivec.vperm
1955 // CHECK-LE: @llvm.ppc.altivec.vperm
1956 
1957   res_vp  = vec_mergeh(vp, vp);
1958 // CHECK: @llvm.ppc.altivec.vperm
1959 // CHECK-LE: @llvm.ppc.altivec.vperm
1960 
1961   res_vus = vec_mergeh(vus, vus);
1962 // CHECK: @llvm.ppc.altivec.vperm
1963 // CHECK-LE: @llvm.ppc.altivec.vperm
1964 
1965   res_vbs = vec_mergeh(vbs, vbs);
1966 // CHECK: @llvm.ppc.altivec.vperm
1967 // CHECK-LE: @llvm.ppc.altivec.vperm
1968 
1969   res_vi  = vec_mergeh(vi, vi);
1970 // CHECK: @llvm.ppc.altivec.vperm
1971 // CHECK-LE: @llvm.ppc.altivec.vperm
1972 
1973   res_vui = vec_mergeh(vui, vui);
1974 // CHECK: @llvm.ppc.altivec.vperm
1975 // CHECK-LE: @llvm.ppc.altivec.vperm
1976 
1977   res_vbi = vec_mergeh(vbi, vbi);
1978 // CHECK: @llvm.ppc.altivec.vperm
1979 // CHECK-LE: @llvm.ppc.altivec.vperm
1980 
1981   res_vf  = vec_mergeh(vf, vf);
1982 // CHECK: @llvm.ppc.altivec.vperm
1983 // CHECK-LE: @llvm.ppc.altivec.vperm
1984 
1985   res_vsc = vec_vmrghb(vsc, vsc);
1986 // CHECK: @llvm.ppc.altivec.vperm
1987 // CHECK-LE: @llvm.ppc.altivec.vperm
1988 
1989   res_vuc = vec_vmrghb(vuc, vuc);
1990 // CHECK: @llvm.ppc.altivec.vperm
1991 // CHECK-LE: @llvm.ppc.altivec.vperm
1992 
1993   res_vbc = vec_vmrghb(vbc, vbc);
1994 // CHECK: @llvm.ppc.altivec.vperm
1995 // CHECK-LE: @llvm.ppc.altivec.vperm
1996 
1997   res_vs  = vec_vmrghh(vs, vs);
1998 // CHECK: @llvm.ppc.altivec.vperm
1999 // CHECK-LE: @llvm.ppc.altivec.vperm
2000 
2001   res_vp  = vec_vmrghh(vp, vp);
2002 // CHECK: @llvm.ppc.altivec.vperm
2003 // CHECK-LE: @llvm.ppc.altivec.vperm
2004 
2005   res_vus = vec_vmrghh(vus, vus);
2006 // CHECK: @llvm.ppc.altivec.vperm
2007 // CHECK-LE: @llvm.ppc.altivec.vperm
2008 
2009   res_vbs = vec_vmrghh(vbs, vbs);
2010 // CHECK: @llvm.ppc.altivec.vperm
2011 // CHECK-LE: @llvm.ppc.altivec.vperm
2012 
2013   res_vi  = vec_vmrghw(vi, vi);
2014 // CHECK: @llvm.ppc.altivec.vperm
2015 // CHECK-LE: @llvm.ppc.altivec.vperm
2016 
2017   res_vui = vec_vmrghw(vui, vui);
2018 // CHECK: @llvm.ppc.altivec.vperm
2019 // CHECK-LE: @llvm.ppc.altivec.vperm
2020 
2021   res_vbi = vec_vmrghw(vbi, vbi);
2022 // CHECK: @llvm.ppc.altivec.vperm
2023 // CHECK-LE: @llvm.ppc.altivec.vperm
2024 
2025   res_vf  = vec_vmrghw(vf, vf);
2026 // CHECK: @llvm.ppc.altivec.vperm
2027 // CHECK-LE: @llvm.ppc.altivec.vperm
2028 
2029   /* vec_mergel */
2030   res_vsc = vec_mergel(vsc, vsc);
2031 // CHECK: @llvm.ppc.altivec.vperm
2032 // CHECK-LE: @llvm.ppc.altivec.vperm
2033 
2034   res_vuc = vec_mergel(vuc, vuc);
2035 // CHECK: @llvm.ppc.altivec.vperm
2036 // CHECK-LE: @llvm.ppc.altivec.vperm
2037 
2038   res_vbc = vec_mergel(vbc, vbc);
2039 // CHECK: @llvm.ppc.altivec.vperm
2040 // CHECK-LE: @llvm.ppc.altivec.vperm
2041 
2042   res_vs  = vec_mergel(vs, vs);
2043 // CHECK: @llvm.ppc.altivec.vperm
2044 // CHECK-LE: @llvm.ppc.altivec.vperm
2045 
2046   res_vp  = vec_mergeh(vp, vp);
2047 // CHECK: @llvm.ppc.altivec.vperm
2048 // CHECK-LE: @llvm.ppc.altivec.vperm
2049 
2050   res_vus = vec_mergel(vus, vus);
2051 // CHECK: @llvm.ppc.altivec.vperm
2052 // CHECK-LE: @llvm.ppc.altivec.vperm
2053 
2054   res_vbs = vec_mergel(vbs, vbs);
2055 // CHECK: @llvm.ppc.altivec.vperm
2056 // CHECK-LE: @llvm.ppc.altivec.vperm
2057 
2058   res_vi  = vec_mergel(vi, vi);
2059 // CHECK: @llvm.ppc.altivec.vperm
2060 // CHECK-LE: @llvm.ppc.altivec.vperm
2061 
2062   res_vui = vec_mergel(vui, vui);
2063 // CHECK: @llvm.ppc.altivec.vperm
2064 // CHECK-LE: @llvm.ppc.altivec.vperm
2065 
2066   res_vbi = vec_mergel(vbi, vbi);
2067 // CHECK: @llvm.ppc.altivec.vperm
2068 // CHECK-LE: @llvm.ppc.altivec.vperm
2069 
2070   res_vf  = vec_mergel(vf, vf);
2071 // CHECK: @llvm.ppc.altivec.vperm
2072 // CHECK-LE: @llvm.ppc.altivec.vperm
2073 
2074   res_vsc = vec_vmrglb(vsc, vsc);
2075 // CHECK: @llvm.ppc.altivec.vperm
2076 // CHECK-LE: @llvm.ppc.altivec.vperm
2077 
2078   res_vuc = vec_vmrglb(vuc, vuc);
2079 // CHECK: @llvm.ppc.altivec.vperm
2080 // CHECK-LE: @llvm.ppc.altivec.vperm
2081 
2082   res_vbc = vec_vmrglb(vbc, vbc);
2083 // CHECK: @llvm.ppc.altivec.vperm
2084 // CHECK-LE: @llvm.ppc.altivec.vperm
2085 
2086   res_vs  = vec_vmrglh(vs, vs);
2087 // CHECK: @llvm.ppc.altivec.vperm
2088 // CHECK-LE: @llvm.ppc.altivec.vperm
2089 
2090   res_vp  = vec_vmrglh(vp, vp);
2091 // CHECK: @llvm.ppc.altivec.vperm
2092 // CHECK-LE: @llvm.ppc.altivec.vperm
2093 
2094   res_vus = vec_vmrglh(vus, vus);
2095 // CHECK: @llvm.ppc.altivec.vperm
2096 // CHECK-LE: @llvm.ppc.altivec.vperm
2097 
2098   res_vbs = vec_vmrglh(vbs, vbs);
2099 // CHECK: @llvm.ppc.altivec.vperm
2100 // CHECK-LE: @llvm.ppc.altivec.vperm
2101 
2102   res_vi  = vec_vmrglw(vi, vi);
2103 // CHECK: @llvm.ppc.altivec.vperm
2104 // CHECK-LE: @llvm.ppc.altivec.vperm
2105 
2106   res_vui = vec_vmrglw(vui, vui);
2107 // CHECK: @llvm.ppc.altivec.vperm
2108 // CHECK-LE: @llvm.ppc.altivec.vperm
2109 
2110   res_vbi = vec_vmrglw(vbi, vbi);
2111 // CHECK: @llvm.ppc.altivec.vperm
2112 // CHECK-LE: @llvm.ppc.altivec.vperm
2113 
2114   res_vf  = vec_vmrglw(vf, vf);
2115 // CHECK: @llvm.ppc.altivec.vperm
2116 // CHECK-LE: @llvm.ppc.altivec.vperm
2117 
2118   /* vec_mfvscr */
2119   vus = vec_mfvscr();
2120 // CHECK: @llvm.ppc.altivec.mfvscr
2121 // CHECK-LE: @llvm.ppc.altivec.mfvscr
2122 
2123   /* vec_min */
2124   res_vsc = vec_min(vsc, vsc);
2125 // CHECK: @llvm.ppc.altivec.vminsb
2126 // CHECK-LE: @llvm.ppc.altivec.vminsb
2127 
2128   res_vsc = vec_min(vbc, vsc);
2129 // CHECK: @llvm.ppc.altivec.vminsb
2130 // CHECK-LE: @llvm.ppc.altivec.vminsb
2131 
2132   res_vsc = vec_min(vsc, vbc);
2133 // CHECK: @llvm.ppc.altivec.vminsb
2134 // CHECK-LE: @llvm.ppc.altivec.vminsb
2135 
2136   res_vuc = vec_min(vuc, vuc);
2137 // CHECK: @llvm.ppc.altivec.vminub
2138 // CHECK-LE: @llvm.ppc.altivec.vminub
2139 
2140   res_vuc = vec_min(vbc, vuc);
2141 // CHECK: @llvm.ppc.altivec.vminub
2142 // CHECK-LE: @llvm.ppc.altivec.vminub
2143 
2144   res_vuc = vec_min(vuc, vbc);
2145 // CHECK: @llvm.ppc.altivec.vminub
2146 // CHECK-LE: @llvm.ppc.altivec.vminub
2147 
2148   res_vs  = vec_min(vs, vs);
2149 // CHECK: @llvm.ppc.altivec.vminsh
2150 // CHECK-LE: @llvm.ppc.altivec.vminsh
2151 
2152   res_vs  = vec_min(vbs, vs);
2153 // CHECK: @llvm.ppc.altivec.vminsh
2154 // CHECK-LE: @llvm.ppc.altivec.vminsh
2155 
2156   res_vs  = vec_min(vs, vbs);
2157 // CHECK: @llvm.ppc.altivec.vminsh
2158 // CHECK-LE: @llvm.ppc.altivec.vminsh
2159 
2160   res_vus = vec_min(vus, vus);
2161 // CHECK: @llvm.ppc.altivec.vminuh
2162 // CHECK-LE: @llvm.ppc.altivec.vminuh
2163 
2164   res_vus = vec_min(vbs, vus);
2165 // CHECK: @llvm.ppc.altivec.vminuh
2166 // CHECK-LE: @llvm.ppc.altivec.vminuh
2167 
2168   res_vus = vec_min(vus, vbs);
2169 // CHECK: @llvm.ppc.altivec.vminuh
2170 // CHECK-LE: @llvm.ppc.altivec.vminuh
2171 
2172   res_vi  = vec_min(vi, vi);
2173 // CHECK: @llvm.ppc.altivec.vminsw
2174 // CHECK-LE: @llvm.ppc.altivec.vminsw
2175 
2176   res_vi  = vec_min(vbi, vi);
2177 // CHECK: @llvm.ppc.altivec.vminsw
2178 // CHECK-LE: @llvm.ppc.altivec.vminsw
2179 
2180   res_vi  = vec_min(vi, vbi);
2181 // CHECK: @llvm.ppc.altivec.vminsw
2182 // CHECK-LE: @llvm.ppc.altivec.vminsw
2183 
2184   res_vui = vec_min(vui, vui);
2185 // CHECK: @llvm.ppc.altivec.vminuw
2186 // CHECK-LE: @llvm.ppc.altivec.vminuw
2187 
2188   res_vui = vec_min(vbi, vui);
2189 // CHECK: @llvm.ppc.altivec.vminuw
2190 // CHECK-LE: @llvm.ppc.altivec.vminuw
2191 
2192   res_vui = vec_min(vui, vbi);
2193 // CHECK: @llvm.ppc.altivec.vminuw
2194 // CHECK-LE: @llvm.ppc.altivec.vminuw
2195 
2196   res_vf  = vec_min(vf, vf);
2197 // CHECK: @llvm.ppc.altivec.vminfp
2198 // CHECK-LE: @llvm.ppc.altivec.vminfp
2199 
2200   res_vsc = vec_vminsb(vsc, vsc);
2201 // CHECK: @llvm.ppc.altivec.vminsb
2202 // CHECK-LE: @llvm.ppc.altivec.vminsb
2203 
2204   res_vsc = vec_vminsb(vbc, vsc);
2205 // CHECK: @llvm.ppc.altivec.vminsb
2206 // CHECK-LE: @llvm.ppc.altivec.vminsb
2207 
2208   res_vsc = vec_vminsb(vsc, vbc);
2209 // CHECK: @llvm.ppc.altivec.vminsb
2210 // CHECK-LE: @llvm.ppc.altivec.vminsb
2211 
2212   res_vuc = vec_vminub(vuc, vuc);
2213 // CHECK: @llvm.ppc.altivec.vminub
2214 // CHECK-LE: @llvm.ppc.altivec.vminub
2215 
2216   res_vuc = vec_vminub(vbc, vuc);
2217 // CHECK: @llvm.ppc.altivec.vminub
2218 // CHECK-LE: @llvm.ppc.altivec.vminub
2219 
2220   res_vuc = vec_vminub(vuc, vbc);
2221 // CHECK: @llvm.ppc.altivec.vminub
2222 // CHECK-LE: @llvm.ppc.altivec.vminub
2223 
2224   res_vs  = vec_vminsh(vs, vs);
2225 // CHECK: @llvm.ppc.altivec.vminsh
2226 // CHECK-LE: @llvm.ppc.altivec.vminsh
2227 
2228   res_vs  = vec_vminsh(vbs, vs);
2229 // CHECK: @llvm.ppc.altivec.vminsh
2230 // CHECK-LE: @llvm.ppc.altivec.vminsh
2231 
2232   res_vs  = vec_vminsh(vs, vbs);
2233 // CHECK: @llvm.ppc.altivec.vminsh
2234 // CHECK-LE: @llvm.ppc.altivec.vminsh
2235 
2236   res_vus = vec_vminuh(vus, vus);
2237 // CHECK: @llvm.ppc.altivec.vminuh
2238 // CHECK-LE: @llvm.ppc.altivec.vminuh
2239 
2240   res_vus = vec_vminuh(vbs, vus);
2241 // CHECK: @llvm.ppc.altivec.vminuh
2242 // CHECK-LE: @llvm.ppc.altivec.vminuh
2243 
2244   res_vus = vec_vminuh(vus, vbs);
2245 // CHECK: @llvm.ppc.altivec.vminuh
2246 // CHECK-LE: @llvm.ppc.altivec.vminuh
2247 
2248   res_vi  = vec_vminsw(vi, vi);
2249 // CHECK: @llvm.ppc.altivec.vminsw
2250 // CHECK-LE: @llvm.ppc.altivec.vminsw
2251 
2252   res_vi  = vec_vminsw(vbi, vi);
2253 // CHECK: @llvm.ppc.altivec.vminsw
2254 // CHECK-LE: @llvm.ppc.altivec.vminsw
2255 
2256   res_vi  = vec_vminsw(vi, vbi);
2257 // CHECK: @llvm.ppc.altivec.vminsw
2258 // CHECK-LE: @llvm.ppc.altivec.vminsw
2259 
2260   res_vui = vec_vminuw(vui, vui);
2261 // CHECK: @llvm.ppc.altivec.vminuw
2262 // CHECK-LE: @llvm.ppc.altivec.vminuw
2263 
2264   res_vui = vec_vminuw(vbi, vui);
2265 // CHECK: @llvm.ppc.altivec.vminuw
2266 // CHECK-LE: @llvm.ppc.altivec.vminuw
2267 
2268   res_vui = vec_vminuw(vui, vbi);
2269 // CHECK: @llvm.ppc.altivec.vminuw
2270 // CHECK-LE: @llvm.ppc.altivec.vminuw
2271 
2272   res_vf  = vec_vminfp(vf, vf);
2273 // CHECK: @llvm.ppc.altivec.vminfp
2274 // CHECK-LE: @llvm.ppc.altivec.vminfp
2275 
2276   /* vec_mladd */
2277   res_vus = vec_mladd(vus, vus, vus);
2278 // CHECK: mul <8 x i16>
2279 // CHECK: add <8 x i16>
2280 // CHECK-LE: mul <8 x i16>
2281 // CHECK-LE: add <8 x i16>
2282 
2283   res_vs = vec_mladd(vus, vs, vs);
2284 // CHECK: mul <8 x i16>
2285 // CHECK: add <8 x i16>
2286 // CHECK-LE: mul <8 x i16>
2287 // CHECK-LE: add <8 x i16>
2288 
2289   res_vs = vec_mladd(vs, vus, vus);
2290 // CHECK: mul <8 x i16>
2291 // CHECK: add <8 x i16>
2292 // CHECK-LE: mul <8 x i16>
2293 // CHECK-LE: add <8 x i16>
2294 
2295   res_vs = vec_mladd(vs, vs, vs);
2296 // CHECK: mul <8 x i16>
2297 // CHECK: add <8 x i16>
2298 // CHECK-LE: mul <8 x i16>
2299 // CHECK-LE: add <8 x i16>
2300 
2301   /* vec_mradds */
2302   res_vs = vec_mradds(vs, vs, vs);
2303 // CHECK: @llvm.ppc.altivec.vmhraddshs
2304 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2305 
2306   res_vs = vec_vmhraddshs(vs, vs, vs);
2307 // CHECK: @llvm.ppc.altivec.vmhraddshs
2308 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2309 
2310   /* vec_msum */
2311   res_vi  = vec_msum(vsc, vuc, vi);
2312 // CHECK: @llvm.ppc.altivec.vmsummbm
2313 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2314 
2315   res_vui = vec_msum(vuc, vuc, vui);
2316 // CHECK: @llvm.ppc.altivec.vmsumubm
2317 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2318 
2319   res_vi  = vec_msum(vs, vs, vi);
2320 // CHECK: @llvm.ppc.altivec.vmsumshm
2321 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2322 
2323   res_vui = vec_msum(vus, vus, vui);
2324 // CHECK: @llvm.ppc.altivec.vmsumuhm
2325 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2326 
2327   res_vi  = vec_vmsummbm(vsc, vuc, vi);
2328 // CHECK: @llvm.ppc.altivec.vmsummbm
2329 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2330 
2331   res_vui = vec_vmsumubm(vuc, vuc, vui);
2332 // CHECK: @llvm.ppc.altivec.vmsumubm
2333 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2334 
2335   res_vi  = vec_vmsumshm(vs, vs, vi);
2336 // CHECK: @llvm.ppc.altivec.vmsumshm
2337 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2338 
2339   res_vui = vec_vmsumuhm(vus, vus, vui);
2340 // CHECK: @llvm.ppc.altivec.vmsumuhm
2341 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2342 
2343   /* vec_msums */
2344   res_vi  = vec_msums(vs, vs, vi);
2345 // CHECK: @llvm.ppc.altivec.vmsumshs
2346 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2347 
2348   res_vui = vec_msums(vus, vus, vui);
2349 // CHECK: @llvm.ppc.altivec.vmsumuhs
2350 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2351 
2352   res_vi  = vec_vmsumshs(vs, vs, vi);
2353 // CHECK: @llvm.ppc.altivec.vmsumshs
2354 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2355 
2356   res_vui = vec_vmsumuhs(vus, vus, vui);
2357 // CHECK: @llvm.ppc.altivec.vmsumuhs
2358 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2359 
2360   /* vec_mtvscr */
2361   vec_mtvscr(vsc);
2362 // CHECK: @llvm.ppc.altivec.mtvscr
2363 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2364 
2365   vec_mtvscr(vuc);
2366 // CHECK: @llvm.ppc.altivec.mtvscr
2367 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2368 
2369   vec_mtvscr(vbc);
2370 // CHECK: @llvm.ppc.altivec.mtvscr
2371 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2372 
2373   vec_mtvscr(vs);
2374 // CHECK: @llvm.ppc.altivec.mtvscr
2375 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2376 
2377   vec_mtvscr(vus);
2378 // CHECK: @llvm.ppc.altivec.mtvscr
2379 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2380 
2381   vec_mtvscr(vbs);
2382 // CHECK: @llvm.ppc.altivec.mtvscr
2383 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2384 
2385   vec_mtvscr(vp);
2386 // CHECK: @llvm.ppc.altivec.mtvscr
2387 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2388 
2389   vec_mtvscr(vi);
2390 // CHECK: @llvm.ppc.altivec.mtvscr
2391 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2392 
2393   vec_mtvscr(vui);
2394 // CHECK: @llvm.ppc.altivec.mtvscr
2395 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2396 
2397   vec_mtvscr(vbi);
2398 // CHECK: @llvm.ppc.altivec.mtvscr
2399 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2400 
2401   /* vec_mul */
2402   res_vsc = vec_mul(vsc, vsc);
2403 // CHECK: mul <16 x i8>
2404 // CHECK-LE: mul <16 x i8>
2405 
2406   res_vuc = vec_mul(vuc, vuc);
2407 // CHECK: mul <16 x i8>
2408 // CHECK-LE: mul <16 x i8>
2409 
2410   res_vs = vec_mul(vs, vs);
2411 // CHECK: mul <8 x i16>
2412 // CHECK-LE: mul <8 x i16>
2413 
2414   res_vus = vec_mul(vus, vus);
2415 // CHECK: mul <8 x i16>
2416 // CHECK-LE: mul <8 x i16>
2417 
2418   res_vi = vec_mul(vi, vi);
2419 // CHECK: mul <4 x i32>
2420 // CHECK-LE: mul <4 x i32>
2421 
2422   res_vui = vec_mul(vui, vui);
2423 // CHECK: mul <4 x i32>
2424 // CHECK-LE: mul <4 x i32>
2425 
2426   /* vec_mule */
2427   res_vs  = vec_mule(vsc, vsc);
2428 // CHECK: @llvm.ppc.altivec.vmulesb
2429 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2430 
2431   res_vus = vec_mule(vuc, vuc);
2432 // CHECK: @llvm.ppc.altivec.vmuleub
2433 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2434 
2435   res_vi  = vec_mule(vs, vs);
2436 // CHECK: @llvm.ppc.altivec.vmulesh
2437 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2438 
2439   res_vui = vec_mule(vus, vus);
2440 // CHECK: @llvm.ppc.altivec.vmuleuh
2441 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2442 
2443   res_vs  = vec_vmulesb(vsc, vsc);
2444 // CHECK: @llvm.ppc.altivec.vmulesb
2445 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2446 
2447   res_vus = vec_vmuleub(vuc, vuc);
2448 // CHECK: @llvm.ppc.altivec.vmuleub
2449 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2450 
2451   res_vi  = vec_vmulesh(vs, vs);
2452 // CHECK: @llvm.ppc.altivec.vmulesh
2453 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2454 
2455   res_vui = vec_vmuleuh(vus, vus);
2456 // CHECK: @llvm.ppc.altivec.vmuleuh
2457 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2458 
2459   /* vec_mulo */
2460   res_vs  = vec_mulo(vsc, vsc);
2461 // CHECK: @llvm.ppc.altivec.vmulosb
2462 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2463 
2464   res_vus = vec_mulo(vuc, vuc);
2465 // CHECK: @llvm.ppc.altivec.vmuloub
2466 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2467 
2468   res_vi  = vec_mulo(vs, vs);
2469 // CHECK: @llvm.ppc.altivec.vmulosh
2470 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2471 
2472   res_vui = vec_mulo(vus, vus);
2473 // CHECK: @llvm.ppc.altivec.vmulouh
2474 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2475 
2476   res_vs  = vec_vmulosb(vsc, vsc);
2477 // CHECK: @llvm.ppc.altivec.vmulosb
2478 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2479 
2480   res_vus = vec_vmuloub(vuc, vuc);
2481 // CHECK: @llvm.ppc.altivec.vmuloub
2482 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2483 
2484   res_vi  = vec_vmulosh(vs, vs);
2485 // CHECK: @llvm.ppc.altivec.vmulosh
2486 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2487 
2488   res_vui = vec_vmulouh(vus, vus);
2489 // CHECK: @llvm.ppc.altivec.vmulouh
2490 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2491 
2492   /* vec_nmsub */
2493   res_vf = vec_nmsub(vf, vf, vf);
2494 // CHECK: @llvm.ppc.altivec.vnmsubfp
2495 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2496 
2497   res_vf = vec_vnmsubfp(vf, vf, vf);
2498 // CHECK: @llvm.ppc.altivec.vnmsubfp
2499 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2500 
2501   /* vec_nor */
2502   res_vsc = vec_nor(vsc, vsc);
2503 // CHECK: or <16 x i8>
2504 // CHECK: xor <16 x i8>
2505 // CHECK-LE: or <16 x i8>
2506 // CHECK-LE: xor <16 x i8>
2507 
2508   res_vuc = vec_nor(vuc, vuc);
2509 // CHECK: or <16 x i8>
2510 // CHECK: xor <16 x i8>
2511 // CHECK-LE: or <16 x i8>
2512 // CHECK-LE: xor <16 x i8>
2513 
2514   res_vbc = vec_nor(vbc, vbc);
2515 // CHECK: or <16 x i8>
2516 // CHECK: xor <16 x i8>
2517 // CHECK-LE: or <16 x i8>
2518 // CHECK-LE: xor <16 x i8>
2519 
2520   res_vs  = vec_nor(vs, vs);
2521 // CHECK: or <8 x i16>
2522 // CHECK: xor <8 x i16>
2523 // CHECK-LE: or <8 x i16>
2524 // CHECK-LE: xor <8 x i16>
2525 
2526   res_vus = vec_nor(vus, vus);
2527 // CHECK: or <8 x i16>
2528 // CHECK: xor <8 x i16>
2529 // CHECK-LE: or <8 x i16>
2530 // CHECK-LE: xor <8 x i16>
2531 
2532   res_vbs = vec_nor(vbs, vbs);
2533 // CHECK: or <8 x i16>
2534 // CHECK: xor <8 x i16>
2535 // CHECK-LE: or <8 x i16>
2536 // CHECK-LE: xor <8 x i16>
2537 
2538   res_vi  = vec_nor(vi, vi);
2539 // CHECK: or <4 x i32>
2540 // CHECK: xor <4 x i32>
2541 // CHECK-LE: or <4 x i32>
2542 // CHECK-LE: xor <4 x i32>
2543 
2544   res_vui = vec_nor(vui, vui);
2545 // CHECK: or <4 x i32>
2546 // CHECK: xor <4 x i32>
2547 // CHECK-LE: or <4 x i32>
2548 // CHECK-LE: xor <4 x i32>
2549 
2550   res_vbi = vec_nor(vbi, vbi);
2551 // CHECK: or <4 x i32>
2552 // CHECK: xor <4 x i32>
2553 // CHECK-LE: or <4 x i32>
2554 // CHECK-LE: xor <4 x i32>
2555 
2556   res_vf  = vec_nor(vf, vf);
2557 // CHECK: or <4 x i32>
2558 // CHECK: xor <4 x i32>
2559 // CHECK-LE: or <4 x i32>
2560 // CHECK-LE: xor <4 x i32>
2561 
2562   res_vsc = vec_vnor(vsc, vsc);
2563 // CHECK: or <16 x i8>
2564 // CHECK: xor <16 x i8>
2565 // CHECK-LE: or <16 x i8>
2566 // CHECK-LE: xor <16 x i8>
2567 
2568   res_vuc = vec_vnor(vuc, vuc);
2569 // CHECK: or <16 x i8>
2570 // CHECK: xor <16 x i8>
2571 // CHECK-LE: or <16 x i8>
2572 // CHECK-LE: xor <16 x i8>
2573 
2574   res_vbc = vec_vnor(vbc, vbc);
2575 // CHECK: or <16 x i8>
2576 // CHECK: xor <16 x i8>
2577 // CHECK-LE: or <16 x i8>
2578 // CHECK-LE: xor <16 x i8>
2579 
2580   res_vs  = vec_vnor(vs, vs);
2581 // CHECK: or <8 x i16>
2582 // CHECK: xor <8 x i16>
2583 // CHECK-LE: or <8 x i16>
2584 // CHECK-LE: xor <8 x i16>
2585 
2586   res_vus = vec_vnor(vus, vus);
2587 // CHECK: or <8 x i16>
2588 // CHECK: xor <8 x i16>
2589 // CHECK-LE: or <8 x i16>
2590 // CHECK-LE: xor <8 x i16>
2591 
2592   res_vbs = vec_vnor(vbs, vbs);
2593 // CHECK: or <8 x i16>
2594 // CHECK: xor <8 x i16>
2595 // CHECK-LE: or <8 x i16>
2596 // CHECK-LE: xor <8 x i16>
2597 
2598   res_vi  = vec_vnor(vi, vi);
2599 // CHECK: or <4 x i32>
2600 // CHECK: xor <4 x i32>
2601 // CHECK-LE: or <4 x i32>
2602 // CHECK-LE: xor <4 x i32>
2603 
2604   res_vui = vec_vnor(vui, vui);
2605 // CHECK: or <4 x i32>
2606 // CHECK: xor <4 x i32>
2607 // CHECK-LE: or <4 x i32>
2608 // CHECK-LE: xor <4 x i32>
2609 
2610   res_vbi = vec_vnor(vbi, vbi);
2611 // CHECK: or <4 x i32>
2612 // CHECK: xor <4 x i32>
2613 // CHECK-LE: or <4 x i32>
2614 // CHECK-LE: xor <4 x i32>
2615 
2616   res_vf  = vec_vnor(vf, vf);
2617 // CHECK: or <4 x i32>
2618 // CHECK: xor <4 x i32>
2619 // CHECK-LE: or <4 x i32>
2620 // CHECK-LE: xor <4 x i32>
2621 
2622   /* vec_or */
2623   res_vsc = vec_or(vsc, vsc);
2624 // CHECK: or <16 x i8>
2625 // CHECK-LE: or <16 x i8>
2626 
2627   res_vsc = vec_or(vbc, vsc);
2628 // CHECK: or <16 x i8>
2629 // CHECK-LE: or <16 x i8>
2630 
2631   res_vsc = vec_or(vsc, vbc);
2632 // CHECK: or <16 x i8>
2633 // CHECK-LE: or <16 x i8>
2634 
2635   res_vuc = vec_or(vuc, vuc);
2636 // CHECK: or <16 x i8>
2637 // CHECK-LE: or <16 x i8>
2638 
2639   res_vuc = vec_or(vbc, vuc);
2640 // CHECK: or <16 x i8>
2641 // CHECK-LE: or <16 x i8>
2642 
2643   res_vuc = vec_or(vuc, vbc);
2644 // CHECK: or <16 x i8>
2645 // CHECK-LE: or <16 x i8>
2646 
2647   res_vbc = vec_or(vbc, vbc);
2648 // CHECK: or <16 x i8>
2649 // CHECK-LE: or <16 x i8>
2650 
2651   res_vs  = vec_or(vs, vs);
2652 // CHECK: or <8 x i16>
2653 // CHECK-LE: or <8 x i16>
2654 
2655   res_vs  = vec_or(vbs, vs);
2656 // CHECK: or <8 x i16>
2657 // CHECK-LE: or <8 x i16>
2658 
2659   res_vs  = vec_or(vs, vbs);
2660 // CHECK: or <8 x i16>
2661 // CHECK-LE: or <8 x i16>
2662 
2663   res_vus = vec_or(vus, vus);
2664 // CHECK: or <8 x i16>
2665 // CHECK-LE: or <8 x i16>
2666 
2667   res_vus = vec_or(vbs, vus);
2668 // CHECK: or <8 x i16>
2669 // CHECK-LE: or <8 x i16>
2670 
2671   res_vus = vec_or(vus, vbs);
2672 // CHECK: or <8 x i16>
2673 // CHECK-LE: or <8 x i16>
2674 
2675   res_vbs = vec_or(vbs, vbs);
2676 // CHECK: or <8 x i16>
2677 // CHECK-LE: or <8 x i16>
2678 
2679   res_vi  = vec_or(vi, vi);
2680 // CHECK: or <4 x i32>
2681 // CHECK-LE: or <4 x i32>
2682 
2683   res_vi  = vec_or(vbi, vi);
2684 // CHECK: or <4 x i32>
2685 // CHECK-LE: or <4 x i32>
2686 
2687   res_vi  = vec_or(vi, vbi);
2688 // CHECK: or <4 x i32>
2689 // CHECK-LE: or <4 x i32>
2690 
2691   res_vui = vec_or(vui, vui);
2692 // CHECK: or <4 x i32>
2693 // CHECK-LE: or <4 x i32>
2694 
2695   res_vui = vec_or(vbi, vui);
2696 // CHECK: or <4 x i32>
2697 // CHECK-LE: or <4 x i32>
2698 
2699   res_vui = vec_or(vui, vbi);
2700 // CHECK: or <4 x i32>
2701 // CHECK-LE: or <4 x i32>
2702 
2703   res_vbi = vec_or(vbi, vbi);
2704 // CHECK: or <4 x i32>
2705 // CHECK-LE: or <4 x i32>
2706 
2707   res_vf  = vec_or(vf, vf);
2708 // CHECK: or <4 x i32>
2709 // CHECK-LE: or <4 x i32>
2710 
2711   res_vf  = vec_or(vbi, vf);
2712 // CHECK: or <4 x i32>
2713 // CHECK-LE: or <4 x i32>
2714 
2715   res_vf  = vec_or(vf, vbi);
2716 // CHECK: or <4 x i32>
2717 // CHECK-LE: or <4 x i32>
2718 
2719   res_vsc = vec_vor(vsc, vsc);
2720 // CHECK: or <16 x i8>
2721 // CHECK-LE: or <16 x i8>
2722 
2723   res_vsc = vec_vor(vbc, vsc);
2724 // CHECK: or <16 x i8>
2725 // CHECK-LE: or <16 x i8>
2726 
2727   res_vsc = vec_vor(vsc, vbc);
2728 // CHECK: or <16 x i8>
2729 // CHECK-LE: or <16 x i8>
2730 
2731   res_vuc = vec_vor(vuc, vuc);
2732 // CHECK: or <16 x i8>
2733 // CHECK-LE: or <16 x i8>
2734 
2735   res_vuc = vec_vor(vbc, vuc);
2736 // CHECK: or <16 x i8>
2737 // CHECK-LE: or <16 x i8>
2738 
2739   res_vuc = vec_vor(vuc, vbc);
2740 // CHECK: or <16 x i8>
2741 // CHECK-LE: or <16 x i8>
2742 
2743   res_vbc = vec_vor(vbc, vbc);
2744 // CHECK: or <16 x i8>
2745 // CHECK-LE: or <16 x i8>
2746 
2747   res_vs  = vec_vor(vs, vs);
2748 // CHECK: or <8 x i16>
2749 // CHECK-LE: or <8 x i16>
2750 
2751   res_vs  = vec_vor(vbs, vs);
2752 // CHECK: or <8 x i16>
2753 // CHECK-LE: or <8 x i16>
2754 
2755   res_vs  = vec_vor(vs, vbs);
2756 // CHECK: or <8 x i16>
2757 // CHECK-LE: or <8 x i16>
2758 
2759   res_vus = vec_vor(vus, vus);
2760 // CHECK: or <8 x i16>
2761 // CHECK-LE: or <8 x i16>
2762 
2763   res_vus = vec_vor(vbs, vus);
2764 // CHECK: or <8 x i16>
2765 // CHECK-LE: or <8 x i16>
2766 
2767   res_vus = vec_vor(vus, vbs);
2768 // CHECK: or <8 x i16>
2769 // CHECK-LE: or <8 x i16>
2770 
2771   res_vbs = vec_vor(vbs, vbs);
2772 // CHECK: or <8 x i16>
2773 // CHECK-LE: or <8 x i16>
2774 
2775   res_vi  = vec_vor(vi, vi);
2776 // CHECK: or <4 x i32>
2777 // CHECK-LE: or <4 x i32>
2778 
2779   res_vi  = vec_vor(vbi, vi);
2780 // CHECK: or <4 x i32>
2781 // CHECK-LE: or <4 x i32>
2782 
2783   res_vi  = vec_vor(vi, vbi);
2784 // CHECK: or <4 x i32>
2785 // CHECK-LE: or <4 x i32>
2786 
2787   res_vui = vec_vor(vui, vui);
2788 // CHECK: or <4 x i32>
2789 // CHECK-LE: or <4 x i32>
2790 
2791   res_vui = vec_vor(vbi, vui);
2792 // CHECK: or <4 x i32>
2793 // CHECK-LE: or <4 x i32>
2794 
2795   res_vui = vec_vor(vui, vbi);
2796 // CHECK: or <4 x i32>
2797 // CHECK-LE: or <4 x i32>
2798 
2799   res_vbi = vec_vor(vbi, vbi);
2800 // CHECK: or <4 x i32>
2801 // CHECK-LE: or <4 x i32>
2802 
2803   res_vf  = vec_vor(vf, vf);
2804 // CHECK: or <4 x i32>
2805 // CHECK-LE: or <4 x i32>
2806 
2807   res_vf  = vec_vor(vbi, vf);
2808 // CHECK: or <4 x i32>
2809 // CHECK-LE: or <4 x i32>
2810 
2811   res_vf  = vec_vor(vf, vbi);
2812 // CHECK: or <4 x i32>
2813 // CHECK-LE: or <4 x i32>
2814 
2815   /* vec_pack */
2816   res_vsc = vec_pack(vs, vs);
2817 // CHECK: @llvm.ppc.altivec.vperm
2818 // CHECK-LE: @llvm.ppc.altivec.vperm
2819 
2820   res_vuc = vec_pack(vus, vus);
2821 // CHECK: @llvm.ppc.altivec.vperm
2822 // CHECK-LE: @llvm.ppc.altivec.vperm
2823 
2824   res_vbc = vec_pack(vbs, vbs);
2825 // CHECK: @llvm.ppc.altivec.vperm
2826 // CHECK-LE: @llvm.ppc.altivec.vperm
2827 
2828   res_vs  = vec_pack(vi, vi);
2829 // CHECK: @llvm.ppc.altivec.vperm
2830 // CHECK-LE: @llvm.ppc.altivec.vperm
2831 
2832   res_vus = vec_pack(vui, vui);
2833 // CHECK: @llvm.ppc.altivec.vperm
2834 // CHECK-LE: @llvm.ppc.altivec.vperm
2835 
2836   res_vbs = vec_pack(vbi, vbi);
2837 // CHECK: @llvm.ppc.altivec.vperm
2838 // CHECK-LE: @llvm.ppc.altivec.vperm
2839 
2840   res_vsc = vec_vpkuhum(vs, vs);
2841 // CHECK: @llvm.ppc.altivec.vperm
2842 // CHECK-LE: @llvm.ppc.altivec.vperm
2843 
2844   res_vuc = vec_vpkuhum(vus, vus);
2845 // CHECK: @llvm.ppc.altivec.vperm
2846 // CHECK-LE: @llvm.ppc.altivec.vperm
2847 
2848   res_vbc = vec_vpkuhum(vbs, vbs);
2849 // CHECK: @llvm.ppc.altivec.vperm
2850 // CHECK-LE: @llvm.ppc.altivec.vperm
2851 
2852   res_vs  = vec_vpkuwum(vi, vi);
2853 // CHECK: @llvm.ppc.altivec.vperm
2854 // CHECK-LE: @llvm.ppc.altivec.vperm
2855 
2856   res_vus = vec_vpkuwum(vui, vui);
2857 // CHECK: @llvm.ppc.altivec.vperm
2858 // CHECK-LE: @llvm.ppc.altivec.vperm
2859 
2860   res_vbs = vec_vpkuwum(vbi, vbi);
2861 // CHECK: @llvm.ppc.altivec.vperm
2862 // CHECK-LE: @llvm.ppc.altivec.vperm
2863 
2864   /* vec_packpx */
2865   res_vp = vec_packpx(vui, vui);
2866 // CHECK: @llvm.ppc.altivec.vpkpx
2867 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2868 
2869   res_vp = vec_vpkpx(vui, vui);
2870 // CHECK: @llvm.ppc.altivec.vpkpx
2871 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2872 
2873   /* vec_packs */
2874   res_vsc = vec_packs(vs, vs);
2875 // CHECK: @llvm.ppc.altivec.vpkshss
2876 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2877 
2878   res_vuc = vec_packs(vus, vus);
2879 // CHECK: @llvm.ppc.altivec.vpkuhus
2880 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2881 
2882   res_vs  = vec_packs(vi, vi);
2883 // CHECK: @llvm.ppc.altivec.vpkswss
2884 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2885 
2886   res_vus = vec_packs(vui, vui);
2887 // CHECK: @llvm.ppc.altivec.vpkuwus
2888 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2889 
2890   res_vsc = vec_vpkshss(vs, vs);
2891 // CHECK: @llvm.ppc.altivec.vpkshss
2892 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2893 
2894   res_vuc = vec_vpkuhus(vus, vus);
2895 // CHECK: @llvm.ppc.altivec.vpkuhus
2896 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2897 
2898   res_vs  = vec_vpkswss(vi, vi);
2899 // CHECK: @llvm.ppc.altivec.vpkswss
2900 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2901 
2902   res_vus = vec_vpkuwus(vui, vui);
2903 // CHECK: @llvm.ppc.altivec.vpkuwus
2904 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2905 
2906   /* vec_packsu */
2907   res_vuc = vec_packsu(vs, vs);
2908 // CHECK: @llvm.ppc.altivec.vpkshus
2909 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2910 
2911   res_vuc = vec_packsu(vus, vus);
2912 // CHECK: @llvm.ppc.altivec.vpkuhus
2913 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2914 
2915   res_vus = vec_packsu(vi, vi);
2916 // CHECK: @llvm.ppc.altivec.vpkswus
2917 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2918 
2919   res_vus = vec_packsu(vui, vui);
2920 // CHECK: @llvm.ppc.altivec.vpkuwus
2921 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2922 
2923   res_vuc = vec_vpkshus(vs, vs);
2924 // CHECK: @llvm.ppc.altivec.vpkshus
2925 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2926 
2927   res_vuc = vec_vpkshus(vus, vus);
2928 // CHECK: @llvm.ppc.altivec.vpkuhus
2929 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2930 
2931   res_vus = vec_vpkswus(vi, vi);
2932 // CHECK: @llvm.ppc.altivec.vpkswus
2933 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2934 
2935   res_vus = vec_vpkswus(vui, vui);
2936 // CHECK: @llvm.ppc.altivec.vpkuwus
2937 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2938 
2939   /* vec_perm */
2940   res_vsc = vec_perm(vsc, vsc, vuc);
2941 // CHECK: @llvm.ppc.altivec.vperm
2942 // CHECK-LE: @llvm.ppc.altivec.vperm
2943 
2944   res_vuc = vec_perm(vuc, vuc, vuc);
2945 // CHECK: @llvm.ppc.altivec.vperm
2946 // CHECK-LE: @llvm.ppc.altivec.vperm
2947 
2948   res_vbc = vec_perm(vbc, vbc, vuc);
2949 // CHECK: @llvm.ppc.altivec.vperm
2950 // CHECK-LE: @llvm.ppc.altivec.vperm
2951 
2952   res_vs  = vec_perm(vs, vs, vuc);
2953 // CHECK: @llvm.ppc.altivec.vperm
2954 // CHECK-LE: @llvm.ppc.altivec.vperm
2955 
2956   res_vus = vec_perm(vus, vus, vuc);
2957 // CHECK: @llvm.ppc.altivec.vperm
2958 // CHECK-LE: @llvm.ppc.altivec.vperm
2959 
2960   res_vbs = vec_perm(vbs, vbs, vuc);
2961 // CHECK: @llvm.ppc.altivec.vperm
2962 // CHECK-LE: @llvm.ppc.altivec.vperm
2963 
2964   res_vp  = vec_perm(vp, vp, vuc);
2965 // CHECK: @llvm.ppc.altivec.vperm
2966 // CHECK-LE: @llvm.ppc.altivec.vperm
2967 
2968   res_vi  = vec_perm(vi, vi, vuc);
2969 // CHECK: @llvm.ppc.altivec.vperm
2970 // CHECK-LE: @llvm.ppc.altivec.vperm
2971 
2972   res_vui = vec_perm(vui, vui, vuc);
2973 // CHECK: @llvm.ppc.altivec.vperm
2974 // CHECK-LE: @llvm.ppc.altivec.vperm
2975 
2976   res_vbi = vec_perm(vbi, vbi, vuc);
2977 // CHECK: @llvm.ppc.altivec.vperm
2978 // CHECK-LE: @llvm.ppc.altivec.vperm
2979 
2980   res_vf  = vec_perm(vf, vf, vuc);
2981 // CHECK: @llvm.ppc.altivec.vperm
2982 // CHECK-LE: @llvm.ppc.altivec.vperm
2983 
2984   res_vsc = vec_vperm(vsc, vsc, vuc);
2985 // CHECK: @llvm.ppc.altivec.vperm
2986 // CHECK-LE: @llvm.ppc.altivec.vperm
2987 
2988   res_vuc = vec_vperm(vuc, vuc, vuc);
2989 // CHECK: @llvm.ppc.altivec.vperm
2990 // CHECK-LE: @llvm.ppc.altivec.vperm
2991 
2992   res_vbc = vec_vperm(vbc, vbc, vuc);
2993 // CHECK: @llvm.ppc.altivec.vperm
2994 // CHECK-LE: @llvm.ppc.altivec.vperm
2995 
2996   res_vs  = vec_vperm(vs, vs, vuc);
2997 // CHECK: @llvm.ppc.altivec.vperm
2998 // CHECK-LE: @llvm.ppc.altivec.vperm
2999 
3000   res_vus = vec_vperm(vus, vus, vuc);
3001 // CHECK: @llvm.ppc.altivec.vperm
3002 // CHECK-LE: @llvm.ppc.altivec.vperm
3003 
3004   res_vbs = vec_vperm(vbs, vbs, vuc);
3005 // CHECK: @llvm.ppc.altivec.vperm
3006 // CHECK-LE: @llvm.ppc.altivec.vperm
3007 
3008   res_vp  = vec_vperm(vp, vp, vuc);
3009 // CHECK: @llvm.ppc.altivec.vperm
3010 // CHECK-LE: @llvm.ppc.altivec.vperm
3011 
3012   res_vi  = vec_vperm(vi, vi, vuc);
3013 // CHECK: @llvm.ppc.altivec.vperm
3014 // CHECK-LE: @llvm.ppc.altivec.vperm
3015 
3016   res_vui = vec_vperm(vui, vui, vuc);
3017 // CHECK: @llvm.ppc.altivec.vperm
3018 // CHECK-LE: @llvm.ppc.altivec.vperm
3019 
3020   res_vbi = vec_vperm(vbi, vbi, vuc);
3021 // CHECK: @llvm.ppc.altivec.vperm
3022 // CHECK-LE: @llvm.ppc.altivec.vperm
3023 
3024   res_vf  = vec_vperm(vf, vf, vuc);
3025 // CHECK: @llvm.ppc.altivec.vperm
3026 // CHECK-LE: @llvm.ppc.altivec.vperm
3027 
3028   /* vec_re */
3029   res_vf = vec_re(vf);
3030 // CHECK: @llvm.ppc.altivec.vrefp
3031 // CHECK-LE: @llvm.ppc.altivec.vrefp
3032 
3033   res_vf = vec_vrefp(vf);
3034 // CHECK: @llvm.ppc.altivec.vrefp
3035 // CHECK-LE: @llvm.ppc.altivec.vrefp
3036 
3037   /* vec_rl */
3038   res_vsc = vec_rl(vsc, vuc);
3039 // CHECK: @llvm.ppc.altivec.vrlb
3040 // CHECK-LE: @llvm.ppc.altivec.vrlb
3041 
3042   res_vuc = vec_rl(vuc, vuc);
3043 // CHECK: @llvm.ppc.altivec.vrlb
3044 // CHECK-LE: @llvm.ppc.altivec.vrlb
3045 
3046   res_vs  = vec_rl(vs, vus);
3047 // CHECK: @llvm.ppc.altivec.vrlh
3048 // CHECK-LE: @llvm.ppc.altivec.vrlh
3049 
3050   res_vus = vec_rl(vus, vus);
3051 // CHECK: @llvm.ppc.altivec.vrlh
3052 // CHECK-LE: @llvm.ppc.altivec.vrlh
3053 
3054   res_vi  = vec_rl(vi, vui);
3055 // CHECK: @llvm.ppc.altivec.vrlw
3056 // CHECK-LE: @llvm.ppc.altivec.vrlw
3057 
3058   res_vui = vec_rl(vui, vui);
3059 // CHECK: @llvm.ppc.altivec.vrlw
3060 // CHECK-LE: @llvm.ppc.altivec.vrlw
3061 
3062   res_vsc = vec_vrlb(vsc, vuc);
3063 // CHECK: @llvm.ppc.altivec.vrlb
3064 // CHECK-LE: @llvm.ppc.altivec.vrlb
3065 
3066   res_vuc = vec_vrlb(vuc, vuc);
3067 // CHECK: @llvm.ppc.altivec.vrlb
3068 // CHECK-LE: @llvm.ppc.altivec.vrlb
3069 
3070   res_vs  = vec_vrlh(vs, vus);
3071 // CHECK: @llvm.ppc.altivec.vrlh
3072 // CHECK-LE: @llvm.ppc.altivec.vrlh
3073 
3074   res_vus = vec_vrlh(vus, vus);
3075 // CHECK: @llvm.ppc.altivec.vrlh
3076 // CHECK-LE: @llvm.ppc.altivec.vrlh
3077 
3078   res_vi  = vec_vrlw(vi, vui);
3079 // CHECK: @llvm.ppc.altivec.vrlw
3080 // CHECK-LE: @llvm.ppc.altivec.vrlw
3081 
3082   res_vui = vec_vrlw(vui, vui);
3083 // CHECK: @llvm.ppc.altivec.vrlw
3084 // CHECK-LE: @llvm.ppc.altivec.vrlw
3085 
3086   /* vec_round */
3087   res_vf = vec_round(vf);
3088 // CHECK: @llvm.ppc.altivec.vrfin
3089 // CHECK-LE: @llvm.ppc.altivec.vrfin
3090 
3091   res_vf = vec_vrfin(vf);
3092 // CHECK: @llvm.ppc.altivec.vrfin
3093 // CHECK-LE: @llvm.ppc.altivec.vrfin
3094 
3095   /* vec_rsqrte */
3096   res_vf = vec_rsqrte(vf);
3097 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3098 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3099 
3100   res_vf = vec_vrsqrtefp(vf);
3101 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3102 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3103 
3104   /* vec_sel */
3105   res_vsc = vec_sel(vsc, vsc, vuc);
3106 // CHECK: xor <16 x i8>
3107 // CHECK: and <16 x i8>
3108 // CHECK: and <16 x i8>
3109 // CHECK: or <16 x i8>
3110 // CHECK-LE: xor <16 x i8>
3111 // CHECK-LE: and <16 x i8>
3112 // CHECK-LE: and <16 x i8>
3113 // CHECK-LE: or <16 x i8>
3114 
3115   res_vsc = vec_sel(vsc, vsc, vbc);
3116 // CHECK: xor <16 x i8>
3117 // CHECK: and <16 x i8>
3118 // CHECK: and <16 x i8>
3119 // CHECK: or <16 x i8>
3120 // CHECK-LE: xor <16 x i8>
3121 // CHECK-LE: and <16 x i8>
3122 // CHECK-LE: and <16 x i8>
3123 // CHECK-LE: or <16 x i8>
3124 
3125   res_vuc = vec_sel(vuc, vuc, vuc);
3126 // CHECK: xor <16 x i8>
3127 // CHECK: and <16 x i8>
3128 // CHECK: and <16 x i8>
3129 // CHECK: or <16 x i8>
3130 // CHECK-LE: xor <16 x i8>
3131 // CHECK-LE: and <16 x i8>
3132 // CHECK-LE: and <16 x i8>
3133 // CHECK-LE: or <16 x i8>
3134 
3135   res_vuc = vec_sel(vuc, vuc, vbc);
3136 // CHECK: xor <16 x i8>
3137 // CHECK: and <16 x i8>
3138 // CHECK: and <16 x i8>
3139 // CHECK: or <16 x i8>
3140 // CHECK-LE: xor <16 x i8>
3141 // CHECK-LE: and <16 x i8>
3142 // CHECK-LE: and <16 x i8>
3143 // CHECK-LE: or <16 x i8>
3144 
3145   res_vbc = vec_sel(vbc, vbc, vuc);
3146 // CHECK: xor <16 x i8>
3147 // CHECK: and <16 x i8>
3148 // CHECK: and <16 x i8>
3149 // CHECK: or <16 x i8>
3150 // CHECK-LE: xor <16 x i8>
3151 // CHECK-LE: and <16 x i8>
3152 // CHECK-LE: and <16 x i8>
3153 // CHECK-LE: or <16 x i8>
3154 
3155   res_vbc = vec_sel(vbc, vbc, vbc);
3156 // CHECK: xor <16 x i8>
3157 // CHECK: and <16 x i8>
3158 // CHECK: and <16 x i8>
3159 // CHECK: or <16 x i8>
3160 // CHECK-LE: xor <16 x i8>
3161 // CHECK-LE: and <16 x i8>
3162 // CHECK-LE: and <16 x i8>
3163 // CHECK-LE: or <16 x i8>
3164 
3165   res_vs  = vec_sel(vs, vs, vus);
3166 // CHECK: xor <8 x i16>
3167 // CHECK: and <8 x i16>
3168 // CHECK: and <8 x i16>
3169 // CHECK: or <8 x i16>
3170 // CHECK-LE: xor <8 x i16>
3171 // CHECK-LE: and <8 x i16>
3172 // CHECK-LE: and <8 x i16>
3173 // CHECK-LE: or <8 x i16>
3174 
3175   res_vs  = vec_sel(vs, vs, vbs);
3176 // CHECK: xor <8 x i16>
3177 // CHECK: and <8 x i16>
3178 // CHECK: and <8 x i16>
3179 // CHECK: or <8 x i16>
3180 // CHECK-LE: xor <8 x i16>
3181 // CHECK-LE: and <8 x i16>
3182 // CHECK-LE: and <8 x i16>
3183 // CHECK-LE: or <8 x i16>
3184 
3185   res_vus = vec_sel(vus, vus, vus);
3186 // CHECK: xor <8 x i16>
3187 // CHECK: and <8 x i16>
3188 // CHECK: and <8 x i16>
3189 // CHECK: or <8 x i16>
3190 // CHECK-LE: xor <8 x i16>
3191 // CHECK-LE: and <8 x i16>
3192 // CHECK-LE: and <8 x i16>
3193 // CHECK-LE: or <8 x i16>
3194 
3195   res_vus = vec_sel(vus, vus, vbs);
3196 // CHECK: xor <8 x i16>
3197 // CHECK: and <8 x i16>
3198 // CHECK: and <8 x i16>
3199 // CHECK: or <8 x i16>
3200 // CHECK-LE: xor <8 x i16>
3201 // CHECK-LE: and <8 x i16>
3202 // CHECK-LE: and <8 x i16>
3203 // CHECK-LE: or <8 x i16>
3204 
3205   res_vbs = vec_sel(vbs, vbs, vus);
3206 // CHECK: xor <8 x i16>
3207 // CHECK: and <8 x i16>
3208 // CHECK: and <8 x i16>
3209 // CHECK: or <8 x i16>
3210 // CHECK-LE: xor <8 x i16>
3211 // CHECK-LE: and <8 x i16>
3212 // CHECK-LE: and <8 x i16>
3213 // CHECK-LE: or <8 x i16>
3214 
3215   res_vbs = vec_sel(vbs, vbs, vbs);
3216 // CHECK: xor <8 x i16>
3217 // CHECK: and <8 x i16>
3218 // CHECK: and <8 x i16>
3219 // CHECK: or <8 x i16>
3220 // CHECK-LE: xor <8 x i16>
3221 // CHECK-LE: and <8 x i16>
3222 // CHECK-LE: and <8 x i16>
3223 // CHECK-LE: or <8 x i16>
3224 
3225   res_vi  = vec_sel(vi, vi, vui);
3226 // CHECK: xor <4 x i32>
3227 // CHECK: and <4 x i32>
3228 // CHECK: and <4 x i32>
3229 // CHECK: or <4 x i32>
3230 // CHECK-LE: xor <4 x i32>
3231 // CHECK-LE: and <4 x i32>
3232 // CHECK-LE: and <4 x i32>
3233 // CHECK-LE: or <4 x i32>
3234 
3235   res_vi  = vec_sel(vi, vi, vbi);
3236 // CHECK: xor <4 x i32>
3237 // CHECK: and <4 x i32>
3238 // CHECK: and <4 x i32>
3239 // CHECK: or <4 x i32>
3240 // CHECK-LE: xor <4 x i32>
3241 // CHECK-LE: and <4 x i32>
3242 // CHECK-LE: and <4 x i32>
3243 // CHECK-LE: or <4 x i32>
3244 
3245   res_vui = vec_sel(vui, vui, vui);
3246 // CHECK: xor <4 x i32>
3247 // CHECK: and <4 x i32>
3248 // CHECK: and <4 x i32>
3249 // CHECK: or <4 x i32>
3250 // CHECK-LE: xor <4 x i32>
3251 // CHECK-LE: and <4 x i32>
3252 // CHECK-LE: and <4 x i32>
3253 // CHECK-LE: or <4 x i32>
3254 
3255   res_vui = vec_sel(vui, vui, vbi);
3256 // CHECK: xor <4 x i32>
3257 // CHECK: and <4 x i32>
3258 // CHECK: and <4 x i32>
3259 // CHECK: or <4 x i32>
3260 // CHECK-LE: xor <4 x i32>
3261 // CHECK-LE: and <4 x i32>
3262 // CHECK-LE: and <4 x i32>
3263 // CHECK-LE: or <4 x i32>
3264 
3265   res_vbi = vec_sel(vbi, vbi, vui);
3266 // CHECK: xor <4 x i32>
3267 // CHECK: and <4 x i32>
3268 // CHECK: and <4 x i32>
3269 // CHECK: or <4 x i32>
3270 // CHECK-LE: xor <4 x i32>
3271 // CHECK-LE: and <4 x i32>
3272 // CHECK-LE: and <4 x i32>
3273 // CHECK-LE: or <4 x i32>
3274 
3275   res_vbi = vec_sel(vbi, vbi, vbi);
3276 // CHECK: xor <4 x i32>
3277 // CHECK: and <4 x i32>
3278 // CHECK: and <4 x i32>
3279 // CHECK: or <4 x i32>
3280 // CHECK-LE: xor <4 x i32>
3281 // CHECK-LE: and <4 x i32>
3282 // CHECK-LE: and <4 x i32>
3283 // CHECK-LE: or <4 x i32>
3284 
3285   res_vf  = vec_sel(vf, vf, vui);
3286 // CHECK: xor <4 x i32>
3287 // CHECK: and <4 x i32>
3288 // CHECK: and <4 x i32>
3289 // CHECK: or <4 x i32>
3290 // CHECK-LE: xor <4 x i32>
3291 // CHECK-LE: and <4 x i32>
3292 // CHECK-LE: and <4 x i32>
3293 // CHECK-LE: or <4 x i32>
3294 
3295   res_vf  = vec_sel(vf, vf, vbi);
3296 // CHECK: xor <4 x i32>
3297 // CHECK: and <4 x i32>
3298 // CHECK: and <4 x i32>
3299 // CHECK: or <4 x i32>
3300 // CHECK-LE: xor <4 x i32>
3301 // CHECK-LE: and <4 x i32>
3302 // CHECK-LE: and <4 x i32>
3303 // CHECK-LE: or <4 x i32>
3304 
3305   res_vsc = vec_vsel(vsc, vsc, vuc);
3306 // CHECK: xor <16 x i8>
3307 // CHECK: and <16 x i8>
3308 // CHECK: and <16 x i8>
3309 // CHECK: or <16 x i8>
3310 // CHECK-LE: xor <16 x i8>
3311 // CHECK-LE: and <16 x i8>
3312 // CHECK-LE: and <16 x i8>
3313 // CHECK-LE: or <16 x i8>
3314 
3315   res_vsc = vec_vsel(vsc, vsc, vbc);
3316 // CHECK: xor <16 x i8>
3317 // CHECK: and <16 x i8>
3318 // CHECK: and <16 x i8>
3319 // CHECK: or <16 x i8>
3320 // CHECK-LE: xor <16 x i8>
3321 // CHECK-LE: and <16 x i8>
3322 // CHECK-LE: and <16 x i8>
3323 // CHECK-LE: or <16 x i8>
3324 
3325   res_vuc = vec_vsel(vuc, vuc, vuc);
3326 // CHECK: xor <16 x i8>
3327 // CHECK: and <16 x i8>
3328 // CHECK: and <16 x i8>
3329 // CHECK: or <16 x i8>
3330 // CHECK-LE: xor <16 x i8>
3331 // CHECK-LE: and <16 x i8>
3332 // CHECK-LE: and <16 x i8>
3333 // CHECK-LE: or <16 x i8>
3334 
3335   res_vuc = vec_vsel(vuc, vuc, vbc);
3336 // CHECK: xor <16 x i8>
3337 // CHECK: and <16 x i8>
3338 // CHECK: and <16 x i8>
3339 // CHECK: or <16 x i8>
3340 // CHECK-LE: xor <16 x i8>
3341 // CHECK-LE: and <16 x i8>
3342 // CHECK-LE: and <16 x i8>
3343 // CHECK-LE: or <16 x i8>
3344 
3345   res_vbc = vec_vsel(vbc, vbc, vuc);
3346 // CHECK: xor <16 x i8>
3347 // CHECK: and <16 x i8>
3348 // CHECK: and <16 x i8>
3349 // CHECK: or <16 x i8>
3350 // CHECK-LE: xor <16 x i8>
3351 // CHECK-LE: and <16 x i8>
3352 // CHECK-LE: and <16 x i8>
3353 // CHECK-LE: or <16 x i8>
3354 
3355   res_vbc = vec_vsel(vbc, vbc, vbc);
3356 // CHECK: xor <16 x i8>
3357 // CHECK: and <16 x i8>
3358 // CHECK: and <16 x i8>
3359 // CHECK: or <16 x i8>
3360 // CHECK-LE: xor <16 x i8>
3361 // CHECK-LE: and <16 x i8>
3362 // CHECK-LE: and <16 x i8>
3363 // CHECK-LE: or <16 x i8>
3364 
3365   res_vs  = vec_vsel(vs, vs, vus);
3366 // CHECK: xor <8 x i16>
3367 // CHECK: and <8 x i16>
3368 // CHECK: and <8 x i16>
3369 // CHECK: or <8 x i16>
3370 // CHECK-LE: xor <8 x i16>
3371 // CHECK-LE: and <8 x i16>
3372 // CHECK-LE: and <8 x i16>
3373 // CHECK-LE: or <8 x i16>
3374 
3375   res_vs  = vec_vsel(vs, vs, vbs);
3376 // CHECK: xor <8 x i16>
3377 // CHECK: and <8 x i16>
3378 // CHECK: and <8 x i16>
3379 // CHECK: or <8 x i16>
3380 // CHECK-LE: xor <8 x i16>
3381 // CHECK-LE: and <8 x i16>
3382 // CHECK-LE: and <8 x i16>
3383 // CHECK-LE: or <8 x i16>
3384 
3385   res_vus = vec_vsel(vus, vus, vus);
3386 // CHECK: xor <8 x i16>
3387 // CHECK: and <8 x i16>
3388 // CHECK: and <8 x i16>
3389 // CHECK: or <8 x i16>
3390 // CHECK-LE: xor <8 x i16>
3391 // CHECK-LE: and <8 x i16>
3392 // CHECK-LE: and <8 x i16>
3393 // CHECK-LE: or <8 x i16>
3394 
3395   res_vus = vec_vsel(vus, vus, vbs);
3396 // CHECK: xor <8 x i16>
3397 // CHECK: and <8 x i16>
3398 // CHECK: and <8 x i16>
3399 // CHECK: or <8 x i16>
3400 // CHECK-LE: xor <8 x i16>
3401 // CHECK-LE: and <8 x i16>
3402 // CHECK-LE: and <8 x i16>
3403 // CHECK-LE: or <8 x i16>
3404 
3405   res_vbs = vec_vsel(vbs, vbs, vus);
3406 // CHECK: xor <8 x i16>
3407 // CHECK: and <8 x i16>
3408 // CHECK: and <8 x i16>
3409 // CHECK: or <8 x i16>
3410 // CHECK-LE: xor <8 x i16>
3411 // CHECK-LE: and <8 x i16>
3412 // CHECK-LE: and <8 x i16>
3413 // CHECK-LE: or <8 x i16>
3414 
3415   res_vbs = vec_vsel(vbs, vbs, vbs);
3416 // CHECK: xor <8 x i16>
3417 // CHECK: and <8 x i16>
3418 // CHECK: and <8 x i16>
3419 // CHECK: or <8 x i16>
3420 // CHECK-LE: xor <8 x i16>
3421 // CHECK-LE: and <8 x i16>
3422 // CHECK-LE: and <8 x i16>
3423 // CHECK-LE: or <8 x i16>
3424 
3425   res_vi  = vec_vsel(vi, vi, vui);
3426 // CHECK: xor <4 x i32>
3427 // CHECK: and <4 x i32>
3428 // CHECK: and <4 x i32>
3429 // CHECK: or <4 x i32>
3430 // CHECK-LE: xor <4 x i32>
3431 // CHECK-LE: and <4 x i32>
3432 // CHECK-LE: and <4 x i32>
3433 // CHECK-LE: or <4 x i32>
3434 
3435   res_vi  = vec_vsel(vi, vi, vbi);
3436 // CHECK: xor <4 x i32>
3437 // CHECK: and <4 x i32>
3438 // CHECK: and <4 x i32>
3439 // CHECK: or <4 x i32>
3440 // CHECK-LE: xor <4 x i32>
3441 // CHECK-LE: and <4 x i32>
3442 // CHECK-LE: and <4 x i32>
3443 // CHECK-LE: or <4 x i32>
3444 
3445   res_vui = vec_vsel(vui, vui, vui);
3446 // CHECK: xor <4 x i32>
3447 // CHECK: and <4 x i32>
3448 // CHECK: and <4 x i32>
3449 // CHECK: or <4 x i32>
3450 // CHECK-LE: xor <4 x i32>
3451 // CHECK-LE: and <4 x i32>
3452 // CHECK-LE: and <4 x i32>
3453 // CHECK-LE: or <4 x i32>
3454 
3455   res_vui = vec_vsel(vui, vui, vbi);
3456 // CHECK: xor <4 x i32>
3457 // CHECK: and <4 x i32>
3458 // CHECK: and <4 x i32>
3459 // CHECK: or <4 x i32>
3460 // CHECK-LE: xor <4 x i32>
3461 // CHECK-LE: and <4 x i32>
3462 // CHECK-LE: and <4 x i32>
3463 // CHECK-LE: or <4 x i32>
3464 
3465   res_vbi = vec_vsel(vbi, vbi, vui);
3466 // CHECK: xor <4 x i32>
3467 // CHECK: and <4 x i32>
3468 // CHECK: and <4 x i32>
3469 // CHECK: or <4 x i32>
3470 // CHECK-LE: xor <4 x i32>
3471 // CHECK-LE: and <4 x i32>
3472 // CHECK-LE: and <4 x i32>
3473 // CHECK-LE: or <4 x i32>
3474 
3475   res_vbi = vec_vsel(vbi, vbi, vbi);
3476 // CHECK: xor <4 x i32>
3477 // CHECK: and <4 x i32>
3478 // CHECK: and <4 x i32>
3479 // CHECK: or <4 x i32>
3480 // CHECK-LE: xor <4 x i32>
3481 // CHECK-LE: and <4 x i32>
3482 // CHECK-LE: and <4 x i32>
3483 // CHECK-LE: or <4 x i32>
3484 
3485   res_vf  = vec_vsel(vf, vf, vui);
3486 // CHECK: xor <4 x i32>
3487 // CHECK: and <4 x i32>
3488 // CHECK: and <4 x i32>
3489 // CHECK: or <4 x i32>
3490 // CHECK-LE: xor <4 x i32>
3491 // CHECK-LE: and <4 x i32>
3492 // CHECK-LE: and <4 x i32>
3493 // CHECK-LE: or <4 x i32>
3494 
3495   res_vf  = vec_vsel(vf, vf, vbi);
3496 // CHECK: xor <4 x i32>
3497 // CHECK: and <4 x i32>
3498 // CHECK: and <4 x i32>
3499 // CHECK: or <4 x i32>
3500 // CHECK-LE: xor <4 x i32>
3501 // CHECK-LE: and <4 x i32>
3502 // CHECK-LE: and <4 x i32>
3503 // CHECK-LE: or <4 x i32>
3504 
3505   /* vec_sl */
3506   res_vsc = vec_sl(vsc, vuc);
3507 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3508 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3509 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3510 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3511 
3512   res_vuc = vec_sl(vuc, vuc);
3513 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3514 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3515 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3516 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3517 
3518   res_vs  = vec_sl(vs, vus);
3519 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3520 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3521 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3522 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3523 
3524   res_vus = vec_sl(vus, vus);
3525 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3526 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3527 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3528 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3529 
3530   res_vi  = vec_sl(vi, vui);
3531 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3532 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3533 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3534 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3535 
3536   res_vui = vec_sl(vui, vui);
3537 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3538 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3539 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3540 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3541 
3542   res_vsc = vec_vslb(vsc, vuc);
3543 // CHECK: shl <16 x i8>
3544 // CHECK-LE: shl <16 x i8>
3545 
3546   res_vuc = vec_vslb(vuc, vuc);
3547 // CHECK: shl <16 x i8>
3548 // CHECK-LE: shl <16 x i8>
3549 
3550   res_vs  = vec_vslh(vs, vus);
3551 // CHECK: shl <8 x i16>
3552 // CHECK-LE: shl <8 x i16>
3553 
3554   res_vus = vec_vslh(vus, vus);
3555 // CHECK: shl <8 x i16>
3556 // CHECK-LE: shl <8 x i16>
3557 
3558   res_vi  = vec_vslw(vi, vui);
3559 // CHECK: shl <4 x i32>
3560 // CHECK-LE: shl <4 x i32>
3561 
3562   res_vui = vec_vslw(vui, vui);
3563 // CHECK: shl <4 x i32>
3564 // CHECK-LE: shl <4 x i32>
3565 
3566   /* vec_sld */
3567   res_vsc = vec_sld(vsc, vsc, 0);
3568 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3569 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3570 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3571 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3572 // CHECK: @llvm.ppc.altivec.vperm
3573 // CHECK-LE: sub nsw i32 16
3574 // CHECK-LE: sub nsw i32 17
3575 // CHECK-LE: sub nsw i32 18
3576 // CHECK-LE: sub nsw i32 31
3577 // CHECK-LE: @llvm.ppc.altivec.vperm
3578 
3579   res_vuc = vec_sld(vuc, vuc, 0);
3580 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3581 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3582 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3583 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3584 // CHECK: @llvm.ppc.altivec.vperm
3585 // CHECK-LE: sub nsw i32 16
3586 // CHECK-LE: sub nsw i32 17
3587 // CHECK-LE: sub nsw i32 18
3588 // CHECK-LE: sub nsw i32 31
3589 // CHECK-LE: @llvm.ppc.altivec.vperm
3590 
3591   res_vs  = vec_sld(vs, vs, 0);
3592 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3593 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3594 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3595 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3596 // CHECK: @llvm.ppc.altivec.vperm
3597 // CHECK-LE: sub nsw i32 16
3598 // CHECK-LE: sub nsw i32 17
3599 // CHECK-LE: sub nsw i32 18
3600 // CHECK-LE: sub nsw i32 31
3601 // CHECK-LE: @llvm.ppc.altivec.vperm
3602 
3603   res_vus = vec_sld(vus, vus, 0);
3604 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3605 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3606 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3607 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3608 // CHECK: @llvm.ppc.altivec.vperm
3609 // CHECK-LE: sub nsw i32 16
3610 // CHECK-LE: sub nsw i32 17
3611 // CHECK-LE: sub nsw i32 18
3612 // CHECK-LE: sub nsw i32 31
3613 // CHECK-LE: @llvm.ppc.altivec.vperm
3614 
3615   res_vbs = vec_sld(vbs, vbs, 0);
3616 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3617 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3618 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3619 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3620 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3621 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3622 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3623 // CHECK-LE: sub nsw i32 16
3624 // CHECK-LE: sub nsw i32 17
3625 // CHECK-LE: sub nsw i32 18
3626 // CHECK-LE: sub nsw i32 31
3627 // CHECK-LE: xor <16 x i8>
3628 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3629 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3630 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3631 
3632   res_vp  = vec_sld(vp, vp, 0);
3633 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3634 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3635 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3636 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3637 // CHECK: @llvm.ppc.altivec.vperm
3638 // CHECK-LE: sub nsw i32 16
3639 // CHECK-LE: sub nsw i32 17
3640 // CHECK-LE: sub nsw i32 18
3641 // CHECK-LE: sub nsw i32 31
3642 // CHECK-LE: @llvm.ppc.altivec.vperm
3643 
3644   res_vi  = vec_sld(vi, vi, 0);
3645 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3646 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3647 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3648 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3649 // CHECK: @llvm.ppc.altivec.vperm
3650 // CHECK-LE: sub nsw i32 16
3651 // CHECK-LE: sub nsw i32 17
3652 // CHECK-LE: sub nsw i32 18
3653 // CHECK-LE: sub nsw i32 31
3654 // CHECK-LE: @llvm.ppc.altivec.vperm
3655 
3656   res_vui = vec_sld(vui, vui, 0);
3657 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3658 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3659 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3660 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3661 // CHECK: @llvm.ppc.altivec.vperm
3662 // CHECK-LE: sub nsw i32 16
3663 // CHECK-LE: sub nsw i32 17
3664 // CHECK-LE: sub nsw i32 18
3665 // CHECK-LE: sub nsw i32 31
3666 // CHECK-LE: @llvm.ppc.altivec.vperm
3667 
3668   res_vbi = vec_sld(vbi, vbi, 0);
3669 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3670 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3671 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3672 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3673 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3674 // CHECK-LE: sub nsw i32 16
3675 // CHECK-LE: sub nsw i32 17
3676 // CHECK-LE: sub nsw i32 18
3677 // CHECK-LE: sub nsw i32 31
3678 // CHECK-LE: xor <16 x i8>
3679 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3680 
3681   res_vf  = vec_sld(vf, vf, 0);
3682 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3683 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3684 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3685 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3686 // CHECK: @llvm.ppc.altivec.vperm
3687 // CHECK-LE: sub nsw i32 16
3688 // CHECK-LE: sub nsw i32 17
3689 // CHECK-LE: sub nsw i32 18
3690 // CHECK-LE: sub nsw i32 31
3691 // CHECK-LE: @llvm.ppc.altivec.vperm
3692 
3693   /* vec_sldw */
3694   res_vsc = vec_sldw(vsc, vsc, 0);
3695   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3696   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3697   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3698   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3699   // CHECK: @llvm.ppc.altivec.vperm
3700   // CHECK-LE: sub nsw i32 16
3701   // CHECK-LE: sub nsw i32 17
3702   // CHECK-LE: sub nsw i32 18
3703   // CHECK-LE: sub nsw i32 31
3704   // CHECK-LE: @llvm.ppc.altivec.vperm
3705 
3706   res_vuc = vec_sldw(vuc, vuc, 0);
3707   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3708   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3709   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3710   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3711   // CHECK: @llvm.ppc.altivec.vperm
3712   // CHECK-LE: sub nsw i32 16
3713   // CHECK-LE: sub nsw i32 17
3714   // CHECK-LE: sub nsw i32 18
3715   // CHECK-LE: sub nsw i32 31
3716   // CHECK-LE: @llvm.ppc.altivec.vperm
3717 
3718   res_vi = vec_sldw(vi, vi, 0);
3719   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3720   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3721   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3722   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3723   // CHECK: @llvm.ppc.altivec.vperm
3724   // CHECK-LE: sub nsw i32 16
3725   // CHECK-LE: sub nsw i32 17
3726   // CHECK-LE: sub nsw i32 18
3727   // CHECK-LE: sub nsw i32 31
3728   // CHECK-LE: @llvm.ppc.altivec.vperm
3729 
3730   res_vui = vec_sldw(vui, vui, 0);
3731   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3732   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3733   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3734   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3735   // CHECK: @llvm.ppc.altivec.vperm
3736   // CHECK-LE: sub nsw i32 16
3737   // CHECK-LE: sub nsw i32 17
3738   // CHECK-LE: sub nsw i32 18
3739   // CHECK-LE: sub nsw i32 31
3740   // CHECK-LE: @llvm.ppc.altivec.vperm
3741 
3742   res_vs = vec_sldw(vs, vs, 0);
3743   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3744   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3745   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3746   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3747   // CHECK: @llvm.ppc.altivec.vperm
3748   // CHECK-LE: sub nsw i32 16
3749   // CHECK-LE: sub nsw i32 17
3750   // CHECK-LE: sub nsw i32 18
3751   // CHECK-LE: sub nsw i32 31
3752   // CHECK-LE: @llvm.ppc.altivec.vperm
3753 
3754   res_vus = vec_sldw(vus, vus, 0);
3755   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3756   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3757   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3758   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3759   // CHECK: @llvm.ppc.altivec.vperm
3760   // CHECK-LE: sub nsw i32 16
3761   // CHECK-LE: sub nsw i32 17
3762   // CHECK-LE: sub nsw i32 18
3763   // CHECK-LE: sub nsw i32 31
3764   // CHECK-LE: @llvm.ppc.altivec.vperm
3765 
3766   res_vf = vec_sldw(vf, vf, 0);
3767   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3768   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3769   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3770   // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3771   // CHECK: @llvm.ppc.altivec.vperm
3772   // CHECK-LE: sub nsw i32 16
3773   // CHECK-LE: sub nsw i32 17
3774   // CHECK-LE: sub nsw i32 18
3775   // CHECK-LE: sub nsw i32 31
3776   // CHECK-LE: @llvm.ppc.altivec.vperm
3777 
3778   res_vsc = vec_vsldoi(vsc, vsc, 0);
3779 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3780 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3781 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3782 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3783 // CHECK: @llvm.ppc.altivec.vperm
3784 // CHECK-LE: sub nsw i32 16
3785 // CHECK-LE: sub nsw i32 17
3786 // CHECK-LE: sub nsw i32 18
3787 // CHECK-LE: sub nsw i32 31
3788 // CHECK-LE: @llvm.ppc.altivec.vperm
3789 
3790   res_vuc = vec_vsldoi(vuc, vuc, 0);
3791 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3792 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3793 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3794 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3795 // CHECK: @llvm.ppc.altivec.vperm
3796 // CHECK-LE: sub nsw i32 16
3797 // CHECK-LE: sub nsw i32 17
3798 // CHECK-LE: sub nsw i32 18
3799 // CHECK-LE: sub nsw i32 31
3800 // CHECK-LE: @llvm.ppc.altivec.vperm
3801 
3802   res_vs  = vec_vsldoi(vs, vs, 0);
3803 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3804 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3805 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3806 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3807 // CHECK: @llvm.ppc.altivec.vperm
3808 // CHECK-LE: sub nsw i32 16
3809 // CHECK-LE: sub nsw i32 17
3810 // CHECK-LE: sub nsw i32 18
3811 // CHECK-LE: sub nsw i32 31
3812 // CHECK-LE: @llvm.ppc.altivec.vperm
3813 
3814   res_vus = vec_vsldoi(vus, vus, 0);
3815 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3816 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3817 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3818 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3819 // CHECK: @llvm.ppc.altivec.vperm
3820 // CHECK-LE: sub nsw i32 16
3821 // CHECK-LE: sub nsw i32 17
3822 // CHECK-LE: sub nsw i32 18
3823 // CHECK-LE: sub nsw i32 31
3824 // CHECK-LE: @llvm.ppc.altivec.vperm
3825 
3826   res_vp  = vec_vsldoi(vp, vp, 0);
3827 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3828 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3829 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3830 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3831 // CHECK: @llvm.ppc.altivec.vperm
3832 // CHECK-LE: sub nsw i32 16
3833 // CHECK-LE: sub nsw i32 17
3834 // CHECK-LE: sub nsw i32 18
3835 // CHECK-LE: sub nsw i32 31
3836 // CHECK-LE: @llvm.ppc.altivec.vperm
3837 
3838   res_vi  = vec_vsldoi(vi, vi, 0);
3839 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3840 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3841 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3842 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3843 // CHECK: @llvm.ppc.altivec.vperm
3844 // CHECK-LE: sub nsw i32 16
3845 // CHECK-LE: sub nsw i32 17
3846 // CHECK-LE: sub nsw i32 18
3847 // CHECK-LE: sub nsw i32 31
3848 // CHECK-LE: @llvm.ppc.altivec.vperm
3849 
3850   res_vui = vec_vsldoi(vui, vui, 0);
3851 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3852 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3853 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3854 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3855 // CHECK: @llvm.ppc.altivec.vperm
3856 // CHECK-LE: sub nsw i32 16
3857 // CHECK-LE: sub nsw i32 17
3858 // CHECK-LE: sub nsw i32 18
3859 // CHECK-LE: sub nsw i32 31
3860 // CHECK-LE: @llvm.ppc.altivec.vperm
3861 
3862   res_vf  = vec_vsldoi(vf, vf, 0);
3863 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3864 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3865 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3866 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3867 // CHECK: @llvm.ppc.altivec.vperm
3868 // CHECK-LE: sub nsw i32 16
3869 // CHECK-LE: sub nsw i32 17
3870 // CHECK-LE: sub nsw i32 18
3871 // CHECK-LE: sub nsw i32 31
3872 // CHECK-LE: @llvm.ppc.altivec.vperm
3873 
3874   /* vec_sll */
3875   res_vsc = vec_sll(vsc, vuc);
3876 // CHECK: @llvm.ppc.altivec.vsl
3877 // CHECK-LE: @llvm.ppc.altivec.vsl
3878 
3879   res_vsc = vec_sll(vsc, vus);
3880 // CHECK: @llvm.ppc.altivec.vsl
3881 // CHECK-LE: @llvm.ppc.altivec.vsl
3882 
3883   res_vsc = vec_sll(vsc, vui);
3884 // CHECK: @llvm.ppc.altivec.vsl
3885 // CHECK-LE: @llvm.ppc.altivec.vsl
3886 
3887   res_vuc = vec_sll(vuc, vuc);
3888 // CHECK: @llvm.ppc.altivec.vsl
3889 // CHECK-LE: @llvm.ppc.altivec.vsl
3890 
3891   res_vuc = vec_sll(vuc, vus);
3892 // CHECK: @llvm.ppc.altivec.vsl
3893 // CHECK-LE: @llvm.ppc.altivec.vsl
3894 
3895   res_vuc = vec_sll(vuc, vui);
3896 // CHECK: @llvm.ppc.altivec.vsl
3897 // CHECK-LE: @llvm.ppc.altivec.vsl
3898 
3899   res_vbc = vec_sll(vbc, vuc);
3900 // CHECK: @llvm.ppc.altivec.vsl
3901 // CHECK-LE: @llvm.ppc.altivec.vsl
3902 
3903   res_vbc = vec_sll(vbc, vus);
3904 // CHECK: @llvm.ppc.altivec.vsl
3905 // CHECK-LE: @llvm.ppc.altivec.vsl
3906 
3907   res_vbc = vec_sll(vbc, vui);
3908 // CHECK: @llvm.ppc.altivec.vsl
3909 // CHECK-LE: @llvm.ppc.altivec.vsl
3910 
3911   res_vs  = vec_sll(vs, vuc);
3912 // CHECK: @llvm.ppc.altivec.vsl
3913 // CHECK-LE: @llvm.ppc.altivec.vsl
3914 
3915   res_vs  = vec_sll(vs, vus);
3916 // CHECK: @llvm.ppc.altivec.vsl
3917 // CHECK-LE: @llvm.ppc.altivec.vsl
3918 
3919   res_vs  = vec_sll(vs, vui);
3920 // CHECK: @llvm.ppc.altivec.vsl
3921 // CHECK-LE: @llvm.ppc.altivec.vsl
3922 
3923   res_vus = vec_sll(vus, vuc);
3924 // CHECK: @llvm.ppc.altivec.vsl
3925 // CHECK-LE: @llvm.ppc.altivec.vsl
3926 
3927   res_vus = vec_sll(vus, vus);
3928 // CHECK: @llvm.ppc.altivec.vsl
3929 // CHECK-LE: @llvm.ppc.altivec.vsl
3930 
3931   res_vus = vec_sll(vus, vui);
3932 // CHECK: @llvm.ppc.altivec.vsl
3933 // CHECK-LE: @llvm.ppc.altivec.vsl
3934 
3935   res_vbs = vec_sll(vbs, vuc);
3936 // CHECK: @llvm.ppc.altivec.vsl
3937 // CHECK-LE: @llvm.ppc.altivec.vsl
3938 
3939   res_vbs = vec_sll(vbs, vus);
3940 // CHECK: @llvm.ppc.altivec.vsl
3941 // CHECK-LE: @llvm.ppc.altivec.vsl
3942 
3943   res_vbs = vec_sll(vbs, vui);
3944 // CHECK: @llvm.ppc.altivec.vsl
3945 // CHECK-LE: @llvm.ppc.altivec.vsl
3946 
3947   res_vp  = vec_sll(vp, vuc);
3948 // CHECK: @llvm.ppc.altivec.vsl
3949 // CHECK-LE: @llvm.ppc.altivec.vsl
3950 
3951   res_vp  = vec_sll(vp, vus);
3952 // CHECK: @llvm.ppc.altivec.vsl
3953 // CHECK-LE: @llvm.ppc.altivec.vsl
3954 
3955   res_vp  = vec_sll(vp, vui);
3956 // CHECK: @llvm.ppc.altivec.vsl
3957 // CHECK-LE: @llvm.ppc.altivec.vsl
3958 
3959   res_vi  = vec_sll(vi, vuc);
3960 // CHECK: @llvm.ppc.altivec.vsl
3961 // CHECK-LE: @llvm.ppc.altivec.vsl
3962 
3963   res_vi  = vec_sll(vi, vus);
3964 // CHECK: @llvm.ppc.altivec.vsl
3965 // CHECK-LE: @llvm.ppc.altivec.vsl
3966 
3967   res_vi  = vec_sll(vi, vui);
3968 // CHECK: @llvm.ppc.altivec.vsl
3969 // CHECK-LE: @llvm.ppc.altivec.vsl
3970 
3971   res_vui = vec_sll(vui, vuc);
3972 // CHECK: @llvm.ppc.altivec.vsl
3973 // CHECK-LE: @llvm.ppc.altivec.vsl
3974 
3975   res_vui = vec_sll(vui, vus);
3976 // CHECK: @llvm.ppc.altivec.vsl
3977 // CHECK-LE: @llvm.ppc.altivec.vsl
3978 
3979   res_vui = vec_sll(vui, vui);
3980 // CHECK: @llvm.ppc.altivec.vsl
3981 // CHECK-LE: @llvm.ppc.altivec.vsl
3982 
3983   res_vbi = vec_sll(vbi, vuc);
3984 // CHECK: @llvm.ppc.altivec.vsl
3985 // CHECK-LE: @llvm.ppc.altivec.vsl
3986 
3987   res_vbi = vec_sll(vbi, vus);
3988 // CHECK: @llvm.ppc.altivec.vsl
3989 // CHECK-LE: @llvm.ppc.altivec.vsl
3990 
3991   res_vbi = vec_sll(vbi, vui);
3992 // CHECK: @llvm.ppc.altivec.vsl
3993 // CHECK-LE: @llvm.ppc.altivec.vsl
3994 
3995   res_vsc = vec_vsl(vsc, vuc);
3996 // CHECK: @llvm.ppc.altivec.vsl
3997 // CHECK-LE: @llvm.ppc.altivec.vsl
3998 
3999   res_vsc = vec_vsl(vsc, vus);
4000 // CHECK: @llvm.ppc.altivec.vsl
4001 // CHECK-LE: @llvm.ppc.altivec.vsl
4002 
4003   res_vsc = vec_vsl(vsc, vui);
4004 // CHECK: @llvm.ppc.altivec.vsl
4005 // CHECK-LE: @llvm.ppc.altivec.vsl
4006 
4007   res_vuc = vec_vsl(vuc, vuc);
4008 // CHECK: @llvm.ppc.altivec.vsl
4009 // CHECK-LE: @llvm.ppc.altivec.vsl
4010 
4011   res_vuc = vec_vsl(vuc, vus);
4012 // CHECK: @llvm.ppc.altivec.vsl
4013 // CHECK-LE: @llvm.ppc.altivec.vsl
4014 
4015   res_vuc = vec_vsl(vuc, vui);
4016 // CHECK: @llvm.ppc.altivec.vsl
4017 // CHECK-LE: @llvm.ppc.altivec.vsl
4018 
4019   res_vbc = vec_vsl(vbc, vuc);
4020 // CHECK: @llvm.ppc.altivec.vsl
4021 // CHECK-LE: @llvm.ppc.altivec.vsl
4022 
4023   res_vbc = vec_vsl(vbc, vus);
4024 // CHECK: @llvm.ppc.altivec.vsl
4025 // CHECK-LE: @llvm.ppc.altivec.vsl
4026 
4027   res_vbc = vec_vsl(vbc, vui);
4028 // CHECK: @llvm.ppc.altivec.vsl
4029 // CHECK-LE: @llvm.ppc.altivec.vsl
4030 
4031   res_vs  = vec_vsl(vs, vuc);
4032 // CHECK: @llvm.ppc.altivec.vsl
4033 // CHECK-LE: @llvm.ppc.altivec.vsl
4034 
4035   res_vs  = vec_vsl(vs, vus);
4036 // CHECK: @llvm.ppc.altivec.vsl
4037 // CHECK-LE: @llvm.ppc.altivec.vsl
4038 
4039   res_vs  = vec_vsl(vs, vui);
4040 // CHECK: @llvm.ppc.altivec.vsl
4041 // CHECK-LE: @llvm.ppc.altivec.vsl
4042 
4043   res_vus = vec_vsl(vus, vuc);
4044 // CHECK: @llvm.ppc.altivec.vsl
4045 // CHECK-LE: @llvm.ppc.altivec.vsl
4046 
4047   res_vus = vec_vsl(vus, vus);
4048 // CHECK: @llvm.ppc.altivec.vsl
4049 // CHECK-LE: @llvm.ppc.altivec.vsl
4050 
4051   res_vus = vec_vsl(vus, vui);
4052 // CHECK: @llvm.ppc.altivec.vsl
4053 // CHECK-LE: @llvm.ppc.altivec.vsl
4054 
4055   res_vbs = vec_vsl(vbs, vuc);
4056 // CHECK: @llvm.ppc.altivec.vsl
4057 // CHECK-LE: @llvm.ppc.altivec.vsl
4058 
4059   res_vbs = vec_vsl(vbs, vus);
4060 // CHECK: @llvm.ppc.altivec.vsl
4061 // CHECK-LE: @llvm.ppc.altivec.vsl
4062 
4063   res_vbs = vec_vsl(vbs, vui);
4064 // CHECK: @llvm.ppc.altivec.vsl
4065 // CHECK-LE: @llvm.ppc.altivec.vsl
4066 
4067   res_vp  = vec_vsl(vp, vuc);
4068 // CHECK: @llvm.ppc.altivec.vsl
4069 // CHECK-LE: @llvm.ppc.altivec.vsl
4070 
4071   res_vp  = vec_vsl(vp, vus);
4072 // CHECK: @llvm.ppc.altivec.vsl
4073 // CHECK-LE: @llvm.ppc.altivec.vsl
4074 
4075   res_vp  = vec_vsl(vp, vui);
4076 // CHECK: @llvm.ppc.altivec.vsl
4077 // CHECK-LE: @llvm.ppc.altivec.vsl
4078 
4079   res_vi  = vec_vsl(vi, vuc);
4080 // CHECK: @llvm.ppc.altivec.vsl
4081 // CHECK-LE: @llvm.ppc.altivec.vsl
4082 
4083   res_vi  = vec_vsl(vi, vus);
4084 // CHECK: @llvm.ppc.altivec.vsl
4085 // CHECK-LE: @llvm.ppc.altivec.vsl
4086 
4087   res_vi  = vec_vsl(vi, vui);
4088 // CHECK: @llvm.ppc.altivec.vsl
4089 // CHECK-LE: @llvm.ppc.altivec.vsl
4090 
4091   res_vui = vec_vsl(vui, vuc);
4092 // CHECK: @llvm.ppc.altivec.vsl
4093 // CHECK-LE: @llvm.ppc.altivec.vsl
4094 
4095   res_vui = vec_vsl(vui, vus);
4096 // CHECK: @llvm.ppc.altivec.vsl
4097 // CHECK-LE: @llvm.ppc.altivec.vsl
4098 
4099   res_vui = vec_vsl(vui, vui);
4100 // CHECK: @llvm.ppc.altivec.vsl
4101 // CHECK-LE: @llvm.ppc.altivec.vsl
4102 
4103   res_vbi = vec_vsl(vbi, vuc);
4104 // CHECK: @llvm.ppc.altivec.vsl
4105 // CHECK-LE: @llvm.ppc.altivec.vsl
4106 
4107   res_vbi = vec_vsl(vbi, vus);
4108 // CHECK: @llvm.ppc.altivec.vsl
4109 // CHECK-LE: @llvm.ppc.altivec.vsl
4110 
4111   res_vbi = vec_vsl(vbi, vui);
4112 // CHECK: @llvm.ppc.altivec.vsl
4113 // CHECK-LE: @llvm.ppc.altivec.vsl
4114 
4115   /* vec_slo */
4116   res_vsc = vec_slo(vsc, vsc);
4117 // CHECK: @llvm.ppc.altivec.vslo
4118 // CHECK-LE: @llvm.ppc.altivec.vslo
4119 
4120   res_vsc = vec_slo(vsc, vuc);
4121 // CHECK: @llvm.ppc.altivec.vslo
4122 // CHECK-LE: @llvm.ppc.altivec.vslo
4123 
4124   res_vuc = vec_slo(vuc, vsc);
4125 // CHECK: @llvm.ppc.altivec.vslo
4126 // CHECK-LE: @llvm.ppc.altivec.vslo
4127 
4128   res_vuc = vec_slo(vuc, vuc);
4129 // CHECK: @llvm.ppc.altivec.vslo
4130 // CHECK-LE: @llvm.ppc.altivec.vslo
4131 
4132   res_vs  = vec_slo(vs, vsc);
4133 // CHECK: @llvm.ppc.altivec.vslo
4134 // CHECK-LE: @llvm.ppc.altivec.vslo
4135 
4136   res_vs  = vec_slo(vs, vuc);
4137 // CHECK: @llvm.ppc.altivec.vslo
4138 // CHECK-LE: @llvm.ppc.altivec.vslo
4139 
4140   res_vus = vec_slo(vus, vsc);
4141 // CHECK: @llvm.ppc.altivec.vslo
4142 // CHECK-LE: @llvm.ppc.altivec.vslo
4143 
4144   res_vus = vec_slo(vus, vuc);
4145 // CHECK: @llvm.ppc.altivec.vslo
4146 // CHECK-LE: @llvm.ppc.altivec.vslo
4147 
4148   res_vp  = vec_slo(vp, vsc);
4149 // CHECK: @llvm.ppc.altivec.vslo
4150 // CHECK-LE: @llvm.ppc.altivec.vslo
4151 
4152   res_vp  = vec_slo(vp, vuc);
4153 // CHECK: @llvm.ppc.altivec.vslo
4154 // CHECK-LE: @llvm.ppc.altivec.vslo
4155 
4156   res_vi  = vec_slo(vi, vsc);
4157 // CHECK: @llvm.ppc.altivec.vslo
4158 // CHECK-LE: @llvm.ppc.altivec.vslo
4159 
4160   res_vi  = vec_slo(vi, vuc);
4161 // CHECK: @llvm.ppc.altivec.vslo
4162 // CHECK-LE: @llvm.ppc.altivec.vslo
4163 
4164   res_vui = vec_slo(vui, vsc);
4165 // CHECK: @llvm.ppc.altivec.vslo
4166 // CHECK-LE: @llvm.ppc.altivec.vslo
4167 
4168   res_vui = vec_slo(vui, vuc);
4169 // CHECK: @llvm.ppc.altivec.vslo
4170 // CHECK-LE: @llvm.ppc.altivec.vslo
4171 
4172   res_vf  = vec_slo(vf, vsc);
4173 // CHECK: @llvm.ppc.altivec.vslo
4174 // CHECK-LE: @llvm.ppc.altivec.vslo
4175 
4176   res_vf  = vec_slo(vf, vuc);
4177 // CHECK: @llvm.ppc.altivec.vslo
4178 // CHECK-LE: @llvm.ppc.altivec.vslo
4179 
4180   res_vsc = vec_vslo(vsc, vsc);
4181 // CHECK: @llvm.ppc.altivec.vslo
4182 // CHECK-LE: @llvm.ppc.altivec.vslo
4183 
4184   res_vsc = vec_vslo(vsc, vuc);
4185 // CHECK: @llvm.ppc.altivec.vslo
4186 // CHECK-LE: @llvm.ppc.altivec.vslo
4187 
4188   res_vuc = vec_vslo(vuc, vsc);
4189 // CHECK: @llvm.ppc.altivec.vslo
4190 // CHECK-LE: @llvm.ppc.altivec.vslo
4191 
4192   res_vuc = vec_vslo(vuc, vuc);
4193 // CHECK: @llvm.ppc.altivec.vslo
4194 // CHECK-LE: @llvm.ppc.altivec.vslo
4195 
4196   res_vs  = vec_vslo(vs, vsc);
4197 // CHECK: @llvm.ppc.altivec.vslo
4198 // CHECK-LE: @llvm.ppc.altivec.vslo
4199 
4200   res_vs  = vec_vslo(vs, vuc);
4201 // CHECK: @llvm.ppc.altivec.vslo
4202 // CHECK-LE: @llvm.ppc.altivec.vslo
4203 
4204   res_vus = vec_vslo(vus, vsc);
4205 // CHECK: @llvm.ppc.altivec.vslo
4206 // CHECK-LE: @llvm.ppc.altivec.vslo
4207 
4208   res_vus = vec_vslo(vus, vuc);
4209 // CHECK: @llvm.ppc.altivec.vslo
4210 // CHECK-LE: @llvm.ppc.altivec.vslo
4211 
4212   res_vp  = vec_vslo(vp, vsc);
4213 // CHECK: @llvm.ppc.altivec.vslo
4214 // CHECK-LE: @llvm.ppc.altivec.vslo
4215 
4216   res_vp  = vec_vslo(vp, vuc);
4217 // CHECK: @llvm.ppc.altivec.vslo
4218 // CHECK-LE: @llvm.ppc.altivec.vslo
4219 
4220   res_vi  = vec_vslo(vi, vsc);
4221 // CHECK: @llvm.ppc.altivec.vslo
4222 // CHECK-LE: @llvm.ppc.altivec.vslo
4223 
4224   res_vi  = vec_vslo(vi, vuc);
4225 // CHECK: @llvm.ppc.altivec.vslo
4226 // CHECK-LE: @llvm.ppc.altivec.vslo
4227 
4228   res_vui = vec_vslo(vui, vsc);
4229 // CHECK: @llvm.ppc.altivec.vslo
4230 // CHECK-LE: @llvm.ppc.altivec.vslo
4231 
4232   res_vui = vec_vslo(vui, vuc);
4233 // CHECK: @llvm.ppc.altivec.vslo
4234 // CHECK-LE: @llvm.ppc.altivec.vslo
4235 
4236   res_vf  = vec_vslo(vf, vsc);
4237 // CHECK: @llvm.ppc.altivec.vslo
4238 // CHECK-LE: @llvm.ppc.altivec.vslo
4239 
4240   res_vf  = vec_vslo(vf, vuc);
4241 // CHECK: @llvm.ppc.altivec.vslo
4242 // CHECK-LE: @llvm.ppc.altivec.vslo
4243 
4244   /* vec_splat */
4245   res_vsc = vec_splat(vsc, 0);
4246 // CHECK: @llvm.ppc.altivec.vperm
4247 // CHECK-LE: @llvm.ppc.altivec.vperm
4248 
4249   res_vuc = vec_splat(vuc, 0);
4250 // CHECK: @llvm.ppc.altivec.vperm
4251 // CHECK-LE: @llvm.ppc.altivec.vperm
4252 
4253   res_vbc = vec_splat(vbc, 0);
4254 // CHECK: @llvm.ppc.altivec.vperm
4255 // CHECK-LE: @llvm.ppc.altivec.vperm
4256 
4257   res_vs  = vec_splat(vs, 0);
4258 // CHECK: @llvm.ppc.altivec.vperm
4259 // CHECK-LE: @llvm.ppc.altivec.vperm
4260 
4261   res_vus = vec_splat(vus, 0);
4262 // CHECK: @llvm.ppc.altivec.vperm
4263 // CHECK-LE: @llvm.ppc.altivec.vperm
4264 
4265   res_vbs = vec_splat(vbs, 0);
4266 // CHECK: @llvm.ppc.altivec.vperm
4267 // CHECK-LE: @llvm.ppc.altivec.vperm
4268 
4269   res_vp  = vec_splat(vp, 0);
4270 // CHECK: @llvm.ppc.altivec.vperm
4271 // CHECK-LE: @llvm.ppc.altivec.vperm
4272 
4273   res_vi  = vec_splat(vi, 0);
4274 // CHECK: @llvm.ppc.altivec.vperm
4275 // CHECK-LE: @llvm.ppc.altivec.vperm
4276 
4277   res_vui = vec_splat(vui, 0);
4278 // CHECK: @llvm.ppc.altivec.vperm
4279 // CHECK-LE: @llvm.ppc.altivec.vperm
4280 
4281   res_vbi = vec_splat(vbi, 0);
4282 // CHECK: @llvm.ppc.altivec.vperm
4283 // CHECK-LE: @llvm.ppc.altivec.vperm
4284 
4285   res_vf  = vec_splat(vf, 0);
4286 // CHECK: @llvm.ppc.altivec.vperm
4287 // CHECK-LE: @llvm.ppc.altivec.vperm
4288 
4289   res_vsc = vec_vspltb(vsc, 0);
4290 // CHECK: @llvm.ppc.altivec.vperm
4291 // CHECK-LE: @llvm.ppc.altivec.vperm
4292 
4293   res_vuc = vec_vspltb(vuc, 0);
4294 // CHECK: @llvm.ppc.altivec.vperm
4295 // CHECK-LE: @llvm.ppc.altivec.vperm
4296 
4297   res_vbc = vec_vspltb(vbc, 0);
4298 // CHECK: @llvm.ppc.altivec.vperm
4299 // CHECK-LE: @llvm.ppc.altivec.vperm
4300 
4301   res_vs  = vec_vsplth(vs, 0);
4302 // CHECK: @llvm.ppc.altivec.vperm
4303 // CHECK-LE: @llvm.ppc.altivec.vperm
4304 
4305   res_vus = vec_vsplth(vus, 0);
4306 // CHECK: @llvm.ppc.altivec.vperm
4307 // CHECK-LE: @llvm.ppc.altivec.vperm
4308 
4309   res_vbs = vec_vsplth(vbs, 0);
4310 // CHECK: @llvm.ppc.altivec.vperm
4311 // CHECK-LE: @llvm.ppc.altivec.vperm
4312 
4313   res_vp  = vec_vsplth(vp, 0);
4314 // CHECK: @llvm.ppc.altivec.vperm
4315 // CHECK-LE: @llvm.ppc.altivec.vperm
4316 
4317   res_vi  = vec_vspltw(vi, 0);
4318 // CHECK: @llvm.ppc.altivec.vperm
4319 // CHECK-LE: @llvm.ppc.altivec.vperm
4320 
4321   res_vui = vec_vspltw(vui, 0);
4322 // CHECK: @llvm.ppc.altivec.vperm
4323 // CHECK-LE: @llvm.ppc.altivec.vperm
4324 
4325   res_vbi = vec_vspltw(vbi, 0);
4326 // CHECK: @llvm.ppc.altivec.vperm
4327 // CHECK-LE: @llvm.ppc.altivec.vperm
4328 
4329   res_vf  = vec_vspltw(vf, 0);
4330 // CHECK: @llvm.ppc.altivec.vperm
4331 // CHECK-LE: @llvm.ppc.altivec.vperm
4332 
4333   /* vec_splat_s8 */
4334   res_vsc = vec_splat_s8(0x09);                 // TODO: add check
4335   res_vsc = vec_vspltisb(0x09);                 // TODO: add check
4336 
4337   /* vec_splat_s16 */
4338   res_vs = vec_splat_s16(0x09);                 // TODO: add check
4339   res_vs = vec_vspltish(0x09);                  // TODO: add check
4340 
4341   /* vec_splat_s32 */
4342   res_vi = vec_splat_s32(0x09);                 // TODO: add check
4343   res_vi = vec_vspltisw(0x09);                  // TODO: add check
4344 
4345   /* vec_splat_u8 */
4346   res_vuc = vec_splat_u8(0x09);                 // TODO: add check
4347 
4348   /* vec_splat_u16 */
4349   res_vus = vec_splat_u16(0x09);                // TODO: add check
4350 
4351   /* vec_splat_u32 */
4352   res_vui = vec_splat_u32(0x09);                // TODO: add check
4353 
4354   /* vec_sr */
4355   res_vsc = vec_sr(vsc, vuc);
4356 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4357 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4358 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4359 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4360 
4361   res_vuc = vec_sr(vuc, vuc);
4362 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4363 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4364 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4365 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4366 
4367   res_vs  = vec_sr(vs, vus);
4368 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4369 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4370 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4371 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4372 
4373   res_vus = vec_sr(vus, vus);
4374 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4375 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4376 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4377 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4378 
4379   res_vi  = vec_sr(vi, vui);
4380 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4381 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4382 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4383 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4384 
4385   res_vui = vec_sr(vui, vui);
4386 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4387 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4388 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4389 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4390 
4391   res_vsc = vec_vsrb(vsc, vuc);
4392 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4393 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4394 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4395 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4396 
4397   res_vuc = vec_vsrb(vuc, vuc);
4398 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4399 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4400 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4401 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4402 
4403   res_vs  = vec_vsrh(vs, vus);
4404 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4405 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4406 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4407 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4408 
4409   res_vus = vec_vsrh(vus, vus);
4410 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4411 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4412 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4413 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4414 
4415   res_vi  = vec_vsrw(vi, vui);
4416 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4417 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4418 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4419 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4420 
4421   res_vui = vec_vsrw(vui, vui);
4422 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4423 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4424 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4425 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4426 
4427   /* vec_sra */
4428   res_vsc = vec_sra(vsc, vuc);
4429 // CHECK: @llvm.ppc.altivec.vsrab
4430 // CHECK-LE: @llvm.ppc.altivec.vsrab
4431 
4432   res_vuc = vec_sra(vuc, vuc);
4433 // CHECK: @llvm.ppc.altivec.vsrab
4434 // CHECK-LE: @llvm.ppc.altivec.vsrab
4435 
4436   res_vs  = vec_sra(vs, vus);
4437 // CHECK: @llvm.ppc.altivec.vsrah
4438 // CHECK-LE: @llvm.ppc.altivec.vsrah
4439 
4440   res_vus = vec_sra(vus, vus);
4441 // CHECK: @llvm.ppc.altivec.vsrah
4442 // CHECK-LE: @llvm.ppc.altivec.vsrah
4443 
4444   res_vi  = vec_sra(vi, vui);
4445 // CHECK: @llvm.ppc.altivec.vsraw
4446 // CHECK-LE: @llvm.ppc.altivec.vsraw
4447 
4448   res_vui = vec_sra(vui, vui);
4449 // CHECK: @llvm.ppc.altivec.vsraw
4450 // CHECK-LE: @llvm.ppc.altivec.vsraw
4451 
4452   res_vsc = vec_vsrab(vsc, vuc);
4453 // CHECK: @llvm.ppc.altivec.vsrab
4454 // CHECK-LE: @llvm.ppc.altivec.vsrab
4455 
4456   res_vuc = vec_vsrab(vuc, vuc);
4457 // CHECK: @llvm.ppc.altivec.vsrab
4458 // CHECK-LE: @llvm.ppc.altivec.vsrab
4459 
4460   res_vs  = vec_vsrah(vs, vus);
4461 // CHECK: @llvm.ppc.altivec.vsrah
4462 // CHECK-LE: @llvm.ppc.altivec.vsrah
4463 
4464   res_vus = vec_vsrah(vus, vus);
4465 // CHECK: @llvm.ppc.altivec.vsrah
4466 // CHECK-LE: @llvm.ppc.altivec.vsrah
4467 
4468   res_vi  = vec_vsraw(vi, vui);
4469 // CHECK: @llvm.ppc.altivec.vsraw
4470 // CHECK-LE: @llvm.ppc.altivec.vsraw
4471 
4472   res_vui = vec_vsraw(vui, vui);
4473 // CHECK: @llvm.ppc.altivec.vsraw
4474 // CHECK-LE: @llvm.ppc.altivec.vsraw
4475 
4476   /* vec_srl */
4477   res_vsc = vec_srl(vsc, vuc);
4478 // CHECK: @llvm.ppc.altivec.vsr
4479 // CHECK-LE: @llvm.ppc.altivec.vsr
4480 
4481   res_vsc = vec_srl(vsc, vus);
4482 // CHECK: @llvm.ppc.altivec.vsr
4483 // CHECK-LE: @llvm.ppc.altivec.vsr
4484 
4485   res_vsc = vec_srl(vsc, vui);
4486 // CHECK: @llvm.ppc.altivec.vsr
4487 // CHECK-LE: @llvm.ppc.altivec.vsr
4488 
4489   res_vuc = vec_srl(vuc, vuc);
4490 // CHECK: @llvm.ppc.altivec.vsr
4491 // CHECK-LE: @llvm.ppc.altivec.vsr
4492 
4493   res_vuc = vec_srl(vuc, vus);
4494 // CHECK: @llvm.ppc.altivec.vsr
4495 // CHECK-LE: @llvm.ppc.altivec.vsr
4496 
4497   res_vuc = vec_srl(vuc, vui);
4498 // CHECK: @llvm.ppc.altivec.vsr
4499 // CHECK-LE: @llvm.ppc.altivec.vsr
4500 
4501   res_vbc = vec_srl(vbc, vuc);
4502 // CHECK: @llvm.ppc.altivec.vsr
4503 // CHECK-LE: @llvm.ppc.altivec.vsr
4504 
4505   res_vbc = vec_srl(vbc, vus);
4506 // CHECK: @llvm.ppc.altivec.vsr
4507 // CHECK-LE: @llvm.ppc.altivec.vsr
4508 
4509   res_vbc = vec_srl(vbc, vui);
4510 // CHECK: @llvm.ppc.altivec.vsr
4511 // CHECK-LE: @llvm.ppc.altivec.vsr
4512 
4513   res_vs  = vec_srl(vs, vuc);
4514 // CHECK: @llvm.ppc.altivec.vsr
4515 // CHECK-LE: @llvm.ppc.altivec.vsr
4516 
4517   res_vs  = vec_srl(vs, vus);
4518 // CHECK: @llvm.ppc.altivec.vsr
4519 // CHECK-LE: @llvm.ppc.altivec.vsr
4520 
4521   res_vs  = vec_srl(vs, vui);
4522 // CHECK: @llvm.ppc.altivec.vsr
4523 // CHECK-LE: @llvm.ppc.altivec.vsr
4524 
4525   res_vus = vec_srl(vus, vuc);
4526 // CHECK: @llvm.ppc.altivec.vsr
4527 // CHECK-LE: @llvm.ppc.altivec.vsr
4528 
4529   res_vus = vec_srl(vus, vus);
4530 // CHECK: @llvm.ppc.altivec.vsr
4531 // CHECK-LE: @llvm.ppc.altivec.vsr
4532 
4533   res_vus = vec_srl(vus, vui);
4534 // CHECK: @llvm.ppc.altivec.vsr
4535 // CHECK-LE: @llvm.ppc.altivec.vsr
4536 
4537   res_vbs = vec_srl(vbs, vuc);
4538 // CHECK: @llvm.ppc.altivec.vsr
4539 // CHECK-LE: @llvm.ppc.altivec.vsr
4540 
4541   res_vbs = vec_srl(vbs, vus);
4542 // CHECK: @llvm.ppc.altivec.vsr
4543 // CHECK-LE: @llvm.ppc.altivec.vsr
4544 
4545   res_vbs = vec_srl(vbs, vui);
4546 // CHECK: @llvm.ppc.altivec.vsr
4547 // CHECK-LE: @llvm.ppc.altivec.vsr
4548 
4549   res_vp  = vec_srl(vp, vuc);
4550 // CHECK: @llvm.ppc.altivec.vsr
4551 // CHECK-LE: @llvm.ppc.altivec.vsr
4552 
4553   res_vp  = vec_srl(vp, vus);
4554 // CHECK: @llvm.ppc.altivec.vsr
4555 // CHECK-LE: @llvm.ppc.altivec.vsr
4556 
4557   res_vp  = vec_srl(vp, vui);
4558 // CHECK: @llvm.ppc.altivec.vsr
4559 // CHECK-LE: @llvm.ppc.altivec.vsr
4560 
4561   res_vi  = vec_srl(vi, vuc);
4562 // CHECK: @llvm.ppc.altivec.vsr
4563 // CHECK-LE: @llvm.ppc.altivec.vsr
4564 
4565   res_vi  = vec_srl(vi, vus);
4566 // CHECK: @llvm.ppc.altivec.vsr
4567 // CHECK-LE: @llvm.ppc.altivec.vsr
4568 
4569   res_vi  = vec_srl(vi, vui);
4570 // CHECK: @llvm.ppc.altivec.vsr
4571 // CHECK-LE: @llvm.ppc.altivec.vsr
4572 
4573   res_vui = vec_srl(vui, vuc);
4574 // CHECK: @llvm.ppc.altivec.vsr
4575 // CHECK-LE: @llvm.ppc.altivec.vsr
4576 
4577   res_vui = vec_srl(vui, vus);
4578 // CHECK: @llvm.ppc.altivec.vsr
4579 // CHECK-LE: @llvm.ppc.altivec.vsr
4580 
4581   res_vui = vec_srl(vui, vui);
4582 // CHECK: @llvm.ppc.altivec.vsr
4583 // CHECK-LE: @llvm.ppc.altivec.vsr
4584 
4585   res_vbi = vec_srl(vbi, vuc);
4586 // CHECK: @llvm.ppc.altivec.vsr
4587 // CHECK-LE: @llvm.ppc.altivec.vsr
4588 
4589   res_vbi = vec_srl(vbi, vus);
4590 // CHECK: @llvm.ppc.altivec.vsr
4591 // CHECK-LE: @llvm.ppc.altivec.vsr
4592 
4593   res_vbi = vec_srl(vbi, vui);
4594 // CHECK: @llvm.ppc.altivec.vsr
4595 // CHECK-LE: @llvm.ppc.altivec.vsr
4596 
4597   res_vsc = vec_vsr(vsc, vuc);
4598 // CHECK: @llvm.ppc.altivec.vsr
4599 // CHECK-LE: @llvm.ppc.altivec.vsr
4600 
4601   res_vsc = vec_vsr(vsc, vus);
4602 // CHECK: @llvm.ppc.altivec.vsr
4603 // CHECK-LE: @llvm.ppc.altivec.vsr
4604 
4605   res_vsc = vec_vsr(vsc, vui);
4606 // CHECK: @llvm.ppc.altivec.vsr
4607 // CHECK-LE: @llvm.ppc.altivec.vsr
4608 
4609   res_vuc = vec_vsr(vuc, vuc);
4610 // CHECK: @llvm.ppc.altivec.vsr
4611 // CHECK-LE: @llvm.ppc.altivec.vsr
4612 
4613   res_vuc = vec_vsr(vuc, vus);
4614 // CHECK: @llvm.ppc.altivec.vsr
4615 // CHECK-LE: @llvm.ppc.altivec.vsr
4616 
4617   res_vuc = vec_vsr(vuc, vui);
4618 // CHECK: @llvm.ppc.altivec.vsr
4619 // CHECK-LE: @llvm.ppc.altivec.vsr
4620 
4621   res_vbc = vec_vsr(vbc, vuc);
4622 // CHECK: @llvm.ppc.altivec.vsr
4623 // CHECK-LE: @llvm.ppc.altivec.vsr
4624 
4625   res_vbc = vec_vsr(vbc, vus);
4626 // CHECK: @llvm.ppc.altivec.vsr
4627 // CHECK-LE: @llvm.ppc.altivec.vsr
4628 
4629   res_vbc = vec_vsr(vbc, vui);
4630 // CHECK: @llvm.ppc.altivec.vsr
4631 // CHECK-LE: @llvm.ppc.altivec.vsr
4632 
4633   res_vs  = vec_vsr(vs, vuc);
4634 // CHECK: @llvm.ppc.altivec.vsr
4635 // CHECK-LE: @llvm.ppc.altivec.vsr
4636 
4637   res_vs  = vec_vsr(vs, vus);
4638 // CHECK: @llvm.ppc.altivec.vsr
4639 // CHECK-LE: @llvm.ppc.altivec.vsr
4640 
4641   res_vs  = vec_vsr(vs, vui);
4642 // CHECK: @llvm.ppc.altivec.vsr
4643 // CHECK-LE: @llvm.ppc.altivec.vsr
4644 
4645   res_vus = vec_vsr(vus, vuc);
4646 // CHECK: @llvm.ppc.altivec.vsr
4647 // CHECK-LE: @llvm.ppc.altivec.vsr
4648 
4649   res_vus = vec_vsr(vus, vus);
4650 // CHECK: @llvm.ppc.altivec.vsr
4651 // CHECK-LE: @llvm.ppc.altivec.vsr
4652 
4653   res_vus = vec_vsr(vus, vui);
4654 // CHECK: @llvm.ppc.altivec.vsr
4655 // CHECK-LE: @llvm.ppc.altivec.vsr
4656 
4657   res_vbs = vec_vsr(vbs, vuc);
4658 // CHECK: @llvm.ppc.altivec.vsr
4659 // CHECK-LE: @llvm.ppc.altivec.vsr
4660 
4661   res_vbs = vec_vsr(vbs, vus);
4662 // CHECK: @llvm.ppc.altivec.vsr
4663 // CHECK-LE: @llvm.ppc.altivec.vsr
4664 
4665   res_vbs = vec_vsr(vbs, vui);
4666 // CHECK: @llvm.ppc.altivec.vsr
4667 // CHECK-LE: @llvm.ppc.altivec.vsr
4668 
4669   res_vp  = vec_vsr(vp, vuc);
4670 // CHECK: @llvm.ppc.altivec.vsr
4671 // CHECK-LE: @llvm.ppc.altivec.vsr
4672 
4673   res_vp  = vec_vsr(vp, vus);
4674 // CHECK: @llvm.ppc.altivec.vsr
4675 // CHECK-LE: @llvm.ppc.altivec.vsr
4676 
4677   res_vp  = vec_vsr(vp, vui);
4678 // CHECK: @llvm.ppc.altivec.vsr
4679 // CHECK-LE: @llvm.ppc.altivec.vsr
4680 
4681   res_vi  = vec_vsr(vi, vuc);
4682 // CHECK: @llvm.ppc.altivec.vsr
4683 // CHECK-LE: @llvm.ppc.altivec.vsr
4684 
4685   res_vi  = vec_vsr(vi, vus);
4686 // CHECK: @llvm.ppc.altivec.vsr
4687 // CHECK-LE: @llvm.ppc.altivec.vsr
4688 
4689   res_vi  = vec_vsr(vi, vui);
4690 // CHECK: @llvm.ppc.altivec.vsr
4691 // CHECK-LE: @llvm.ppc.altivec.vsr
4692 
4693   res_vui = vec_vsr(vui, vuc);
4694 // CHECK: @llvm.ppc.altivec.vsr
4695 // CHECK-LE: @llvm.ppc.altivec.vsr
4696 
4697   res_vui = vec_vsr(vui, vus);
4698 // CHECK: @llvm.ppc.altivec.vsr
4699 // CHECK-LE: @llvm.ppc.altivec.vsr
4700 
4701   res_vui = vec_vsr(vui, vui);
4702 // CHECK: @llvm.ppc.altivec.vsr
4703 // CHECK-LE: @llvm.ppc.altivec.vsr
4704 
4705   res_vbi = vec_vsr(vbi, vuc);
4706 // CHECK: @llvm.ppc.altivec.vsr
4707 // CHECK-LE: @llvm.ppc.altivec.vsr
4708 
4709   res_vbi = vec_vsr(vbi, vus);
4710 // CHECK: @llvm.ppc.altivec.vsr
4711 // CHECK-LE: @llvm.ppc.altivec.vsr
4712 
4713   res_vbi = vec_vsr(vbi, vui);
4714 // CHECK: @llvm.ppc.altivec.vsr
4715 // CHECK-LE: @llvm.ppc.altivec.vsr
4716 
4717   /* vec_sro */
4718   res_vsc = vec_sro(vsc, vsc);
4719 // CHECK: @llvm.ppc.altivec.vsro
4720 // CHECK-LE: @llvm.ppc.altivec.vsro
4721 
4722   res_vsc = vec_sro(vsc, vuc);
4723 // CHECK: @llvm.ppc.altivec.vsro
4724 // CHECK-LE: @llvm.ppc.altivec.vsro
4725 
4726   res_vuc = vec_sro(vuc, vsc);
4727 // CHECK: @llvm.ppc.altivec.vsro
4728 // CHECK-LE: @llvm.ppc.altivec.vsro
4729 
4730   res_vuc = vec_sro(vuc, vuc);
4731 // CHECK: @llvm.ppc.altivec.vsro
4732 // CHECK-LE: @llvm.ppc.altivec.vsro
4733 
4734   res_vs  = vec_sro(vs, vsc);
4735 // CHECK: @llvm.ppc.altivec.vsro
4736 // CHECK-LE: @llvm.ppc.altivec.vsro
4737 
4738   res_vs  = vec_sro(vs, vuc);
4739 // CHECK: @llvm.ppc.altivec.vsro
4740 // CHECK-LE: @llvm.ppc.altivec.vsro
4741 
4742   res_vus = vec_sro(vus, vsc);
4743 // CHECK: @llvm.ppc.altivec.vsro
4744 // CHECK-LE: @llvm.ppc.altivec.vsro
4745 
4746   res_vus = vec_sro(vus, vuc);
4747 // CHECK: @llvm.ppc.altivec.vsro
4748 // CHECK-LE: @llvm.ppc.altivec.vsro
4749 
4750   res_vp  = vec_sro(vp, vsc);
4751 // CHECK: @llvm.ppc.altivec.vsro
4752 // CHECK-LE: @llvm.ppc.altivec.vsro
4753 
4754   res_vp  = vec_sro(vp, vuc);
4755 // CHECK: @llvm.ppc.altivec.vsro
4756 // CHECK-LE: @llvm.ppc.altivec.vsro
4757 
4758   res_vi  = vec_sro(vi, vsc);
4759 // CHECK: @llvm.ppc.altivec.vsro
4760 // CHECK-LE: @llvm.ppc.altivec.vsro
4761 
4762   res_vi  = vec_sro(vi, vuc);
4763 // CHECK: @llvm.ppc.altivec.vsro
4764 // CHECK-LE: @llvm.ppc.altivec.vsro
4765 
4766   res_vui = vec_sro(vui, vsc);
4767 // CHECK: @llvm.ppc.altivec.vsro
4768 // CHECK-LE: @llvm.ppc.altivec.vsro
4769 
4770   res_vui = vec_sro(vui, vuc);
4771 // CHECK: @llvm.ppc.altivec.vsro
4772 // CHECK-LE: @llvm.ppc.altivec.vsro
4773 
4774   res_vf  = vec_sro(vf, vsc);
4775 // CHECK: @llvm.ppc.altivec.vsro
4776 // CHECK-LE: @llvm.ppc.altivec.vsro
4777 
4778   res_vf  = vec_sro(vf, vuc);
4779 // CHECK: @llvm.ppc.altivec.vsro
4780 // CHECK-LE: @llvm.ppc.altivec.vsro
4781 
4782   res_vsc = vec_vsro(vsc, vsc);
4783 // CHECK: @llvm.ppc.altivec.vsro
4784 // CHECK-LE: @llvm.ppc.altivec.vsro
4785 
4786   res_vsc = vec_vsro(vsc, vuc);
4787 // CHECK: @llvm.ppc.altivec.vsro
4788 // CHECK-LE: @llvm.ppc.altivec.vsro
4789 
4790   res_vuc = vec_vsro(vuc, vsc);
4791 // CHECK: @llvm.ppc.altivec.vsro
4792 // CHECK-LE: @llvm.ppc.altivec.vsro
4793 
4794   res_vuc = vec_vsro(vuc, vuc);
4795 // CHECK: @llvm.ppc.altivec.vsro
4796 // CHECK-LE: @llvm.ppc.altivec.vsro
4797 
4798   res_vs  = vec_vsro(vs, vsc);
4799 // CHECK: @llvm.ppc.altivec.vsro
4800 // CHECK-LE: @llvm.ppc.altivec.vsro
4801 
4802   res_vs  = vec_vsro(vs, vuc);
4803 // CHECK: @llvm.ppc.altivec.vsro
4804 // CHECK-LE: @llvm.ppc.altivec.vsro
4805 
4806   res_vus = vec_vsro(vus, vsc);
4807 // CHECK: @llvm.ppc.altivec.vsro
4808 // CHECK-LE: @llvm.ppc.altivec.vsro
4809 
4810   res_vus = vec_vsro(vus, vuc);
4811 // CHECK: @llvm.ppc.altivec.vsro
4812 // CHECK-LE: @llvm.ppc.altivec.vsro
4813 
4814   res_vp  = vec_vsro(vp, vsc);
4815 // CHECK: @llvm.ppc.altivec.vsro
4816 // CHECK-LE: @llvm.ppc.altivec.vsro
4817 
4818   res_vp  = vec_vsro(vp, vuc);
4819 // CHECK: @llvm.ppc.altivec.vsro
4820 // CHECK-LE: @llvm.ppc.altivec.vsro
4821 
4822   res_vi  = vec_vsro(vi, vsc);
4823 // CHECK: @llvm.ppc.altivec.vsro
4824 // CHECK-LE: @llvm.ppc.altivec.vsro
4825 
4826   res_vi  = vec_vsro(vi, vuc);
4827 // CHECK: @llvm.ppc.altivec.vsro
4828 // CHECK-LE: @llvm.ppc.altivec.vsro
4829 
4830   res_vui = vec_vsro(vui, vsc);
4831 // CHECK: @llvm.ppc.altivec.vsro
4832 // CHECK-LE: @llvm.ppc.altivec.vsro
4833 
4834   res_vui = vec_vsro(vui, vuc);
4835 // CHECK: @llvm.ppc.altivec.vsro
4836 // CHECK-LE: @llvm.ppc.altivec.vsro
4837 
4838   res_vf  = vec_vsro(vf, vsc);
4839 // CHECK: @llvm.ppc.altivec.vsro
4840 // CHECK-LE: @llvm.ppc.altivec.vsro
4841 
4842   res_vf  = vec_vsro(vf, vuc);
4843 // CHECK: @llvm.ppc.altivec.vsro
4844 // CHECK-LE: @llvm.ppc.altivec.vsro
4845 
4846   /* vec_st */
4847   vec_st(vsc, 0, &vsc);
4848 // CHECK: @llvm.ppc.altivec.stvx
4849 // CHECK-LE: @llvm.ppc.altivec.stvx
4850 
4851   vec_st(vsc, 0, &param_sc);
4852 // CHECK: @llvm.ppc.altivec.stvx
4853 // CHECK-LE: @llvm.ppc.altivec.stvx
4854 
4855   vec_st(vuc, 0, &vuc);
4856 // CHECK: @llvm.ppc.altivec.stvx
4857 // CHECK-LE: @llvm.ppc.altivec.stvx
4858 
4859   vec_st(vuc, 0, &param_uc);
4860 // CHECK: @llvm.ppc.altivec.stvx
4861 // CHECK-LE: @llvm.ppc.altivec.stvx
4862 
4863   vec_st(vbc, 0, &param_uc);
4864 // CHECK: @llvm.ppc.altivec.stvx
4865 // CHECK-LE: @llvm.ppc.altivec.stvx
4866 
4867   vec_st(vbc, 0, &param_uc);
4868 // CHECK: @llvm.ppc.altivec.stvx
4869 // CHECK-LE: @llvm.ppc.altivec.stvx
4870 
4871   vec_st(vbc, 0, &vbc);
4872 // CHECK: @llvm.ppc.altivec.stvx
4873 // CHECK-LE: @llvm.ppc.altivec.stvx
4874 
4875   vec_st(vs, 0, &vs);
4876 // CHECK: @llvm.ppc.altivec.stvx
4877 // CHECK-LE: @llvm.ppc.altivec.stvx
4878 
4879   vec_st(vs, 0, &param_s);
4880 // CHECK: @llvm.ppc.altivec.stvx
4881 // CHECK-LE: @llvm.ppc.altivec.stvx
4882 
4883   vec_st(vus, 0, &vus);
4884 // CHECK: @llvm.ppc.altivec.stvx
4885 // CHECK-LE: @llvm.ppc.altivec.stvx
4886 
4887   vec_st(vus, 0, &param_us);
4888 // CHECK: @llvm.ppc.altivec.stvx
4889 // CHECK-LE: @llvm.ppc.altivec.stvx
4890 
4891   vec_st(vbs, 0, &param_s);
4892 // CHECK: @llvm.ppc.altivec.stvx
4893 // CHECK-LE: @llvm.ppc.altivec.stvx
4894 
4895   vec_st(vbs, 0, &param_us);
4896 // CHECK: @llvm.ppc.altivec.stvx
4897 // CHECK-LE: @llvm.ppc.altivec.stvx
4898 
4899   vec_st(vbs, 0, &vbs);
4900 // CHECK: @llvm.ppc.altivec.stvx
4901 // CHECK-LE: @llvm.ppc.altivec.stvx
4902 
4903   vec_st(vp, 0, &param_s);
4904 // CHECK: @llvm.ppc.altivec.stvx
4905 // CHECK-LE: @llvm.ppc.altivec.stvx
4906 
4907   vec_st(vp, 0, &param_us);
4908 // CHECK: @llvm.ppc.altivec.stvx
4909 // CHECK-LE: @llvm.ppc.altivec.stvx
4910 
4911   vec_st(vp, 0, &vp);
4912 // CHECK: @llvm.ppc.altivec.stvx
4913 // CHECK-LE: @llvm.ppc.altivec.stvx
4914 
4915   vec_st(vi, 0, &vi);
4916 // CHECK: @llvm.ppc.altivec.stvx
4917 // CHECK-LE: @llvm.ppc.altivec.stvx
4918 
4919   vec_st(vi, 0, &param_i);
4920 // CHECK: @llvm.ppc.altivec.stvx
4921 // CHECK-LE: @llvm.ppc.altivec.stvx
4922 
4923   vec_st(vui, 0, &vui);
4924 // CHECK: @llvm.ppc.altivec.stvx
4925 // CHECK-LE: @llvm.ppc.altivec.stvx
4926 
4927   vec_st(vui, 0, &param_ui);
4928 // CHECK: @llvm.ppc.altivec.stvx
4929 // CHECK-LE: @llvm.ppc.altivec.stvx
4930 
4931   vec_st(vbi, 0, &param_i);
4932 // CHECK: @llvm.ppc.altivec.stvx
4933 // CHECK-LE: @llvm.ppc.altivec.stvx
4934 
4935   vec_st(vbi, 0, &param_ui);
4936 // CHECK: @llvm.ppc.altivec.stvx
4937 // CHECK-LE: @llvm.ppc.altivec.stvx
4938 
4939   vec_st(vbi, 0, &vbi);
4940 // CHECK: @llvm.ppc.altivec.stvx
4941 // CHECK-LE: @llvm.ppc.altivec.stvx
4942 
4943   vec_st(vf, 0, &vf);
4944 // CHECK: @llvm.ppc.altivec.stvx
4945 // CHECK-LE: @llvm.ppc.altivec.stvx
4946 
4947   vec_st(vf, 0, &param_f);
4948 // CHECK: @llvm.ppc.altivec.stvx
4949 // CHECK-LE: @llvm.ppc.altivec.stvx
4950 
4951   vec_stvx(vsc, 0, &vsc);
4952 // CHECK: @llvm.ppc.altivec.stvx
4953 // CHECK-LE: @llvm.ppc.altivec.stvx
4954 
4955   vec_stvx(vsc, 0, &param_sc);
4956 // CHECK: @llvm.ppc.altivec.stvx
4957 // CHECK-LE: @llvm.ppc.altivec.stvx
4958 
4959   vec_stvx(vuc, 0, &vuc);
4960 // CHECK: @llvm.ppc.altivec.stvx
4961 // CHECK-LE: @llvm.ppc.altivec.stvx
4962 
4963   vec_stvx(vuc, 0, &param_uc);
4964 // CHECK: @llvm.ppc.altivec.stvx
4965 // CHECK-LE: @llvm.ppc.altivec.stvx
4966 
4967   vec_stvx(vbc, 0, &param_uc);
4968 // CHECK: @llvm.ppc.altivec.stvx
4969 // CHECK-LE: @llvm.ppc.altivec.stvx
4970 
4971   vec_stvx(vbc, 0, &param_uc);
4972 // CHECK: @llvm.ppc.altivec.stvx
4973 // CHECK-LE: @llvm.ppc.altivec.stvx
4974 
4975   vec_stvx(vbc, 0, &vbc);
4976 // CHECK: @llvm.ppc.altivec.stvx
4977 // CHECK-LE: @llvm.ppc.altivec.stvx
4978 
4979   vec_stvx(vs, 0, &vs);
4980 // CHECK: @llvm.ppc.altivec.stvx
4981 // CHECK-LE: @llvm.ppc.altivec.stvx
4982 
4983   vec_stvx(vs, 0, &param_s);
4984 // CHECK: @llvm.ppc.altivec.stvx
4985 // CHECK-LE: @llvm.ppc.altivec.stvx
4986 
4987   vec_stvx(vus, 0, &vus);
4988 // CHECK: @llvm.ppc.altivec.stvx
4989 // CHECK-LE: @llvm.ppc.altivec.stvx
4990 
4991   vec_stvx(vus, 0, &param_us);
4992 // CHECK: @llvm.ppc.altivec.stvx
4993 // CHECK-LE: @llvm.ppc.altivec.stvx
4994 
4995   vec_stvx(vbs, 0, &param_s);
4996 // CHECK: @llvm.ppc.altivec.stvx
4997 // CHECK-LE: @llvm.ppc.altivec.stvx
4998 
4999   vec_stvx(vbs, 0, &param_us);
5000 // CHECK: @llvm.ppc.altivec.stvx
5001 // CHECK-LE: @llvm.ppc.altivec.stvx
5002 
5003   vec_stvx(vbs, 0, &vbs);
5004 // CHECK: @llvm.ppc.altivec.stvx
5005 // CHECK-LE: @llvm.ppc.altivec.stvx
5006 
5007   vec_stvx(vp, 0, &param_s);
5008 // CHECK: @llvm.ppc.altivec.stvx
5009 // CHECK-LE: @llvm.ppc.altivec.stvx
5010 
5011   vec_stvx(vp, 0, &param_us);
5012 // CHECK: @llvm.ppc.altivec.stvx
5013 // CHECK-LE: @llvm.ppc.altivec.stvx
5014 
5015   vec_stvx(vp, 0, &vp);
5016 // CHECK: @llvm.ppc.altivec.stvx
5017 // CHECK-LE: @llvm.ppc.altivec.stvx
5018 
5019   vec_stvx(vi, 0, &vi);
5020 // CHECK: @llvm.ppc.altivec.stvx
5021 // CHECK-LE: @llvm.ppc.altivec.stvx
5022 
5023   vec_stvx(vi, 0, &param_i);
5024 // CHECK: @llvm.ppc.altivec.stvx
5025 // CHECK-LE: @llvm.ppc.altivec.stvx
5026 
5027   vec_stvx(vui, 0, &vui);
5028 // CHECK: @llvm.ppc.altivec.stvx
5029 // CHECK-LE: @llvm.ppc.altivec.stvx
5030 
5031   vec_stvx(vui, 0, &param_ui);
5032 // CHECK: @llvm.ppc.altivec.stvx
5033 // CHECK-LE: @llvm.ppc.altivec.stvx
5034 
5035   vec_stvx(vbi, 0, &param_i);
5036 // CHECK: @llvm.ppc.altivec.stvx
5037 // CHECK-LE: @llvm.ppc.altivec.stvx
5038 
5039   vec_stvx(vbi, 0, &param_ui);
5040 // CHECK: @llvm.ppc.altivec.stvx
5041 // CHECK-LE: @llvm.ppc.altivec.stvx
5042 
5043   vec_stvx(vbi, 0, &vbi);
5044 // CHECK: @llvm.ppc.altivec.stvx
5045 // CHECK-LE: @llvm.ppc.altivec.stvx
5046 
5047   vec_stvx(vf, 0, &vf);
5048 // CHECK: @llvm.ppc.altivec.stvx
5049 // CHECK-LE: @llvm.ppc.altivec.stvx
5050 
5051   vec_stvx(vf, 0, &param_f);
5052 // CHECK: @llvm.ppc.altivec.stvx
5053 // CHECK-LE: @llvm.ppc.altivec.stvx
5054 
5055   /* vec_ste */
5056   vec_ste(vsc, 0, &param_sc);
5057 // CHECK: @llvm.ppc.altivec.stvebx
5058 // CHECK-LE: @llvm.ppc.altivec.stvebx
5059 
5060   vec_ste(vuc, 0, &param_uc);
5061 // CHECK: @llvm.ppc.altivec.stvebx
5062 // CHECK-LE: @llvm.ppc.altivec.stvebx
5063 
5064   vec_ste(vbc, 0, &param_sc);
5065 // CHECK: @llvm.ppc.altivec.stvebx
5066 // CHECK-LE: @llvm.ppc.altivec.stvebx
5067 
5068   vec_ste(vbc, 0, &param_uc);
5069 // CHECK: @llvm.ppc.altivec.stvebx
5070 // CHECK-LE: @llvm.ppc.altivec.stvebx
5071 
5072   vec_ste(vs, 0, &param_s);
5073 // CHECK: @llvm.ppc.altivec.stvehx
5074 // CHECK-LE: @llvm.ppc.altivec.stvehx
5075 
5076   vec_ste(vus, 0, &param_us);
5077 // CHECK: @llvm.ppc.altivec.stvehx
5078 // CHECK-LE: @llvm.ppc.altivec.stvehx
5079 
5080   vec_ste(vbs, 0, &param_s);
5081 // CHECK: @llvm.ppc.altivec.stvehx
5082 // CHECK-LE: @llvm.ppc.altivec.stvehx
5083 
5084   vec_ste(vbs, 0, &param_us);
5085 // CHECK: @llvm.ppc.altivec.stvehx
5086 // CHECK-LE: @llvm.ppc.altivec.stvehx
5087 
5088   vec_ste(vp, 0, &param_s);
5089 // CHECK: @llvm.ppc.altivec.stvehx
5090 // CHECK-LE: @llvm.ppc.altivec.stvehx
5091 
5092   vec_ste(vp, 0, &param_us);
5093 // CHECK: @llvm.ppc.altivec.stvehx
5094 // CHECK-LE: @llvm.ppc.altivec.stvehx
5095 
5096   vec_ste(vi, 0, &param_i);
5097 // CHECK: @llvm.ppc.altivec.stvewx
5098 // CHECK-LE: @llvm.ppc.altivec.stvewx
5099 
5100   vec_ste(vui, 0, &param_ui);
5101 // CHECK: @llvm.ppc.altivec.stvewx
5102 // CHECK-LE: @llvm.ppc.altivec.stvewx
5103 
5104   vec_ste(vbi, 0, &param_i);
5105 // CHECK: @llvm.ppc.altivec.stvewx
5106 // CHECK-LE: @llvm.ppc.altivec.stvewx
5107 
5108   vec_ste(vbi, 0, &param_ui);
5109 // CHECK: @llvm.ppc.altivec.stvewx
5110 // CHECK-LE: @llvm.ppc.altivec.stvewx
5111 
5112   vec_ste(vf, 0, &param_f);
5113 // CHECK: @llvm.ppc.altivec.stvewx
5114 // CHECK-LE: @llvm.ppc.altivec.stvewx
5115 
5116   vec_stvebx(vsc, 0, &param_sc);
5117 // CHECK: @llvm.ppc.altivec.stvebx
5118 // CHECK-LE: @llvm.ppc.altivec.stvebx
5119 
5120   vec_stvebx(vuc, 0, &param_uc);
5121 // CHECK: @llvm.ppc.altivec.stvebx
5122 // CHECK-LE: @llvm.ppc.altivec.stvebx
5123 
5124   vec_stvebx(vbc, 0, &param_sc);
5125 // CHECK: @llvm.ppc.altivec.stvebx
5126 // CHECK-LE: @llvm.ppc.altivec.stvebx
5127 
5128   vec_stvebx(vbc, 0, &param_uc);
5129 // CHECK: @llvm.ppc.altivec.stvebx
5130 // CHECK-LE: @llvm.ppc.altivec.stvebx
5131 
5132   vec_stvehx(vs, 0, &param_s);
5133 // CHECK: @llvm.ppc.altivec.stvehx
5134 // CHECK-LE: @llvm.ppc.altivec.stvehx
5135 
5136   vec_stvehx(vus, 0, &param_us);
5137 // CHECK: @llvm.ppc.altivec.stvehx
5138 // CHECK-LE: @llvm.ppc.altivec.stvehx
5139 
5140   vec_stvehx(vbs, 0, &param_s);
5141 // CHECK: @llvm.ppc.altivec.stvehx
5142 // CHECK-LE: @llvm.ppc.altivec.stvehx
5143 
5144   vec_stvehx(vbs, 0, &param_us);
5145 // CHECK: @llvm.ppc.altivec.stvehx
5146 // CHECK-LE: @llvm.ppc.altivec.stvehx
5147 
5148   vec_stvehx(vp, 0, &param_s);
5149 // CHECK: @llvm.ppc.altivec.stvehx
5150 // CHECK-LE: @llvm.ppc.altivec.stvehx
5151 
5152   vec_stvehx(vp, 0, &param_us);
5153 // CHECK: @llvm.ppc.altivec.stvehx
5154 // CHECK-LE: @llvm.ppc.altivec.stvehx
5155 
5156   vec_stvewx(vi, 0, &param_i);
5157 // CHECK: @llvm.ppc.altivec.stvewx
5158 // CHECK-LE: @llvm.ppc.altivec.stvewx
5159 
5160   vec_stvewx(vui, 0, &param_ui);
5161 // CHECK: @llvm.ppc.altivec.stvewx
5162 // CHECK-LE: @llvm.ppc.altivec.stvewx
5163 
5164   vec_stvewx(vbi, 0, &param_i);
5165 // CHECK: @llvm.ppc.altivec.stvewx
5166 // CHECK-LE: @llvm.ppc.altivec.stvewx
5167 
5168   vec_stvewx(vbi, 0, &param_ui);
5169 // CHECK: @llvm.ppc.altivec.stvewx
5170 // CHECK-LE: @llvm.ppc.altivec.stvewx
5171 
5172   vec_stvewx(vf, 0, &param_f);
5173 // CHECK: @llvm.ppc.altivec.stvewx
5174 // CHECK-LE: @llvm.ppc.altivec.stvewx
5175 
5176   /* vec_stl */
5177   vec_stl(vsc, 0, &vsc);
5178 // CHECK: @llvm.ppc.altivec.stvxl
5179 // CHECK-LE: @llvm.ppc.altivec.stvxl
5180 
5181   vec_stl(vsc, 0, &param_sc);
5182 // CHECK: @llvm.ppc.altivec.stvxl
5183 // CHECK-LE: @llvm.ppc.altivec.stvxl
5184 
5185   vec_stl(vuc, 0, &vuc);
5186 // CHECK: @llvm.ppc.altivec.stvxl
5187 // CHECK-LE: @llvm.ppc.altivec.stvxl
5188 
5189   vec_stl(vuc, 0, &param_uc);
5190 // CHECK: @llvm.ppc.altivec.stvxl
5191 // CHECK-LE: @llvm.ppc.altivec.stvxl
5192 
5193   vec_stl(vbc, 0, &param_sc);
5194 // CHECK: @llvm.ppc.altivec.stvxl
5195 // CHECK-LE: @llvm.ppc.altivec.stvxl
5196 
5197   vec_stl(vbc, 0, &param_uc);
5198 // CHECK: @llvm.ppc.altivec.stvxl
5199 // CHECK-LE: @llvm.ppc.altivec.stvxl
5200 
5201   vec_stl(vbc, 0, &vbc);
5202 // CHECK: @llvm.ppc.altivec.stvxl
5203 // CHECK-LE: @llvm.ppc.altivec.stvxl
5204 
5205   vec_stl(vs, 0, &vs);
5206 // CHECK: @llvm.ppc.altivec.stvxl
5207 // CHECK-LE: @llvm.ppc.altivec.stvxl
5208 
5209   vec_stl(vs, 0, &param_s);
5210 // CHECK: @llvm.ppc.altivec.stvxl
5211 // CHECK-LE: @llvm.ppc.altivec.stvxl
5212 
5213   vec_stl(vus, 0, &vus);
5214 // CHECK: @llvm.ppc.altivec.stvxl
5215 // CHECK-LE: @llvm.ppc.altivec.stvxl
5216 
5217   vec_stl(vus, 0, &param_us);
5218 // CHECK: @llvm.ppc.altivec.stvxl
5219 // CHECK-LE: @llvm.ppc.altivec.stvxl
5220 
5221   vec_stl(vbs, 0, &param_s);
5222 // CHECK: @llvm.ppc.altivec.stvxl
5223 // CHECK-LE: @llvm.ppc.altivec.stvxl
5224 
5225   vec_stl(vbs, 0, &param_us);
5226 // CHECK: @llvm.ppc.altivec.stvxl
5227 // CHECK-LE: @llvm.ppc.altivec.stvxl
5228 
5229   vec_stl(vbs, 0, &vbs);
5230 // CHECK: @llvm.ppc.altivec.stvxl
5231 // CHECK-LE: @llvm.ppc.altivec.stvxl
5232 
5233   vec_stl(vp, 0, &param_s);
5234 // CHECK: @llvm.ppc.altivec.stvxl
5235 // CHECK-LE: @llvm.ppc.altivec.stvxl
5236 
5237   vec_stl(vp, 0, &param_us);
5238 // CHECK: @llvm.ppc.altivec.stvxl
5239 // CHECK-LE: @llvm.ppc.altivec.stvxl
5240 
5241   vec_stl(vp, 0, &vp);
5242 // CHECK: @llvm.ppc.altivec.stvxl
5243 // CHECK-LE: @llvm.ppc.altivec.stvxl
5244 
5245   vec_stl(vi, 0, &vi);
5246 // CHECK: @llvm.ppc.altivec.stvxl
5247 // CHECK-LE: @llvm.ppc.altivec.stvxl
5248 
5249   vec_stl(vi, 0, &param_i);
5250 // CHECK: @llvm.ppc.altivec.stvxl
5251 // CHECK-LE: @llvm.ppc.altivec.stvxl
5252 
5253   vec_stl(vui, 0, &vui);
5254 // CHECK: @llvm.ppc.altivec.stvxl
5255 // CHECK-LE: @llvm.ppc.altivec.stvxl
5256 
5257   vec_stl(vui, 0, &param_ui);
5258 // CHECK: @llvm.ppc.altivec.stvxl
5259 // CHECK-LE: @llvm.ppc.altivec.stvxl
5260 
5261   vec_stl(vbi, 0, &param_i);
5262 // CHECK: @llvm.ppc.altivec.stvxl
5263 // CHECK-LE: @llvm.ppc.altivec.stvxl
5264 
5265   vec_stl(vbi, 0, &param_ui);
5266 // CHECK: @llvm.ppc.altivec.stvxl
5267 // CHECK-LE: @llvm.ppc.altivec.stvxl
5268 
5269   vec_stl(vbi, 0, &vbi);
5270 // CHECK: @llvm.ppc.altivec.stvxl
5271 // CHECK-LE: @llvm.ppc.altivec.stvxl
5272 
5273   vec_stl(vf, 0, &vf);
5274 // CHECK: @llvm.ppc.altivec.stvxl
5275 // CHECK-LE: @llvm.ppc.altivec.stvxl
5276 
5277   vec_stl(vf, 0, &param_f);
5278 // CHECK: @llvm.ppc.altivec.stvxl
5279 // CHECK-LE: @llvm.ppc.altivec.stvxl
5280 
5281   vec_stvxl(vsc, 0, &vsc);
5282 // CHECK: @llvm.ppc.altivec.stvxl
5283 // CHECK-LE: @llvm.ppc.altivec.stvxl
5284 
5285   vec_stvxl(vsc, 0, &param_sc);
5286 // CHECK: @llvm.ppc.altivec.stvxl
5287 // CHECK-LE: @llvm.ppc.altivec.stvxl
5288 
5289   vec_stvxl(vuc, 0, &vuc);
5290 // CHECK: @llvm.ppc.altivec.stvxl
5291 // CHECK-LE: @llvm.ppc.altivec.stvxl
5292 
5293   vec_stvxl(vuc, 0, &param_uc);
5294 // CHECK: @llvm.ppc.altivec.stvxl
5295 // CHECK-LE: @llvm.ppc.altivec.stvxl
5296 
5297   vec_stvxl(vbc, 0, &param_sc);
5298 // CHECK: @llvm.ppc.altivec.stvxl
5299 // CHECK-LE: @llvm.ppc.altivec.stvxl
5300 
5301   vec_stvxl(vbc, 0, &param_uc);
5302 // CHECK: @llvm.ppc.altivec.stvxl
5303 // CHECK-LE: @llvm.ppc.altivec.stvxl
5304 
5305   vec_stvxl(vbc, 0, &vbc);
5306 // CHECK: @llvm.ppc.altivec.stvxl
5307 // CHECK-LE: @llvm.ppc.altivec.stvxl
5308 
5309   vec_stvxl(vs, 0, &vs);
5310 // CHECK: @llvm.ppc.altivec.stvxl
5311 // CHECK-LE: @llvm.ppc.altivec.stvxl
5312 
5313   vec_stvxl(vs, 0, &param_s);
5314 // CHECK: @llvm.ppc.altivec.stvxl
5315 // CHECK-LE: @llvm.ppc.altivec.stvxl
5316 
5317   vec_stvxl(vus, 0, &vus);
5318 // CHECK: @llvm.ppc.altivec.stvxl
5319 // CHECK-LE: @llvm.ppc.altivec.stvxl
5320 
5321   vec_stvxl(vus, 0, &param_us);
5322 // CHECK: @llvm.ppc.altivec.stvxl
5323 // CHECK-LE: @llvm.ppc.altivec.stvxl
5324 
5325   vec_stvxl(vbs, 0, &param_s);
5326 // CHECK: @llvm.ppc.altivec.stvxl
5327 // CHECK-LE: @llvm.ppc.altivec.stvxl
5328 
5329   vec_stvxl(vbs, 0, &param_us);
5330 // CHECK: @llvm.ppc.altivec.stvxl
5331 // CHECK-LE: @llvm.ppc.altivec.stvxl
5332 
5333   vec_stvxl(vbs, 0, &vbs);
5334 // CHECK: @llvm.ppc.altivec.stvxl
5335 // CHECK-LE: @llvm.ppc.altivec.stvxl
5336 
5337   vec_stvxl(vp, 0, &param_s);
5338 // CHECK: @llvm.ppc.altivec.stvxl
5339 // CHECK-LE: @llvm.ppc.altivec.stvxl
5340 
5341   vec_stvxl(vp, 0, &param_us);
5342 // CHECK: @llvm.ppc.altivec.stvxl
5343 // CHECK-LE: @llvm.ppc.altivec.stvxl
5344 
5345   vec_stvxl(vp, 0, &vp);
5346 // CHECK: @llvm.ppc.altivec.stvxl
5347 // CHECK-LE: @llvm.ppc.altivec.stvxl
5348 
5349   vec_stvxl(vi, 0, &vi);
5350 // CHECK: @llvm.ppc.altivec.stvxl
5351 // CHECK-LE: @llvm.ppc.altivec.stvxl
5352 
5353   vec_stvxl(vi, 0, &param_i);
5354 // CHECK: @llvm.ppc.altivec.stvxl
5355 // CHECK-LE: @llvm.ppc.altivec.stvxl
5356 
5357   vec_stvxl(vui, 0, &vui);
5358 // CHECK: @llvm.ppc.altivec.stvxl
5359 // CHECK-LE: @llvm.ppc.altivec.stvxl
5360 
5361   vec_stvxl(vui, 0, &param_ui);
5362 // CHECK: @llvm.ppc.altivec.stvxl
5363 // CHECK-LE: @llvm.ppc.altivec.stvxl
5364 
5365   vec_stvxl(vbi, 0, &param_i);
5366 // CHECK: @llvm.ppc.altivec.stvxl
5367 // CHECK-LE: @llvm.ppc.altivec.stvxl
5368 
5369   vec_stvxl(vbi, 0, &param_ui);
5370 // CHECK: @llvm.ppc.altivec.stvxl
5371 // CHECK-LE: @llvm.ppc.altivec.stvxl
5372 
5373   vec_stvxl(vbi, 0, &vbi);
5374 // CHECK: @llvm.ppc.altivec.stvxl
5375 // CHECK-LE: @llvm.ppc.altivec.stvxl
5376 
5377   vec_stvxl(vf, 0, &vf);
5378 // CHECK: @llvm.ppc.altivec.stvxl
5379 // CHECK-LE: @llvm.ppc.altivec.stvxl
5380 
5381   vec_stvxl(vf, 0, &param_f);
5382 // CHECK: @llvm.ppc.altivec.stvxl
5383 // CHECK-LE: @llvm.ppc.altivec.stvxl
5384 
5385   /* vec_sub */
5386   res_vsc = vec_sub(vsc, vsc);
5387 // CHECK: sub <16 x i8>
5388 // CHECK-LE: sub <16 x i8>
5389 
5390   res_vsc = vec_sub(vbc, vsc);
5391 // CHECK: sub <16 x i8>
5392 // CHECK-LE: sub <16 x i8>
5393 
5394   res_vsc = vec_sub(vsc, vbc);
5395 // CHECK: sub <16 x i8>
5396 // CHECK-LE: sub <16 x i8>
5397 
5398   res_vuc = vec_sub(vuc, vuc);
5399 // CHECK: sub <16 x i8>
5400 // CHECK-LE: sub <16 x i8>
5401 
5402   res_vuc = vec_sub(vbc, vuc);
5403 // CHECK: sub <16 x i8>
5404 // CHECK-LE: sub <16 x i8>
5405 
5406   res_vuc = vec_sub(vuc, vbc);
5407 // CHECK: sub <16 x i8>
5408 // CHECK-LE: sub <16 x i8>
5409 
5410   res_vs  = vec_sub(vs, vs);
5411 // CHECK: sub <8 x i16>
5412 // CHECK-LE: sub <8 x i16>
5413 
5414   res_vs  = vec_sub(vbs, vs);
5415 // CHECK: sub <8 x i16>
5416 // CHECK-LE: sub <8 x i16>
5417 
5418   res_vs  = vec_sub(vs, vbs);
5419 // CHECK: sub <8 x i16>
5420 // CHECK-LE: sub <8 x i16>
5421 
5422   res_vus = vec_sub(vus, vus);
5423 // CHECK: sub <8 x i16>
5424 // CHECK-LE: sub <8 x i16>
5425 
5426   res_vus = vec_sub(vbs, vus);
5427 // CHECK: sub <8 x i16>
5428 // CHECK-LE: sub <8 x i16>
5429 
5430   res_vus = vec_sub(vus, vbs);
5431 // CHECK: sub <8 x i16>
5432 // CHECK-LE: sub <8 x i16>
5433 
5434   res_vi  = vec_sub(vi, vi);
5435 // CHECK: sub <4 x i32>
5436 // CHECK-LE: sub <4 x i32>
5437 
5438   res_vi  = vec_sub(vbi, vi);
5439 // CHECK: sub <4 x i32>
5440 // CHECK-LE: sub <4 x i32>
5441 
5442   res_vi  = vec_sub(vi, vbi);
5443 // CHECK: sub <4 x i32>
5444 // CHECK-LE: sub <4 x i32>
5445 
5446   res_vui = vec_sub(vui, vui);
5447 // CHECK: sub <4 x i32>
5448 // CHECK-LE: sub <4 x i32>
5449 
5450   res_vui = vec_sub(vbi, vui);
5451 // CHECK: sub <4 x i32>
5452 // CHECK-LE: sub <4 x i32>
5453 
5454   res_vui = vec_sub(vui, vbi);
5455 // CHECK: sub <4 x i32>
5456 // CHECK-LE: sub <4 x i32>
5457 
5458   res_vf  = vec_sub(vf, vf);
5459 // CHECK: fsub <4 x float>
5460 // CHECK-LE: fsub <4 x float>
5461 
5462 
5463 
5464   res_vsc = vec_vsububm(vsc, vsc);
5465 // CHECK: sub <16 x i8>
5466 // CHECK-LE: sub <16 x i8>
5467 
5468   res_vsc = vec_vsububm(vbc, vsc);
5469 // CHECK: sub <16 x i8>
5470 // CHECK-LE: sub <16 x i8>
5471 
5472   res_vsc = vec_vsububm(vsc, vbc);
5473 // CHECK: sub <16 x i8>
5474 // CHECK-LE: sub <16 x i8>
5475 
5476   res_vuc = vec_vsububm(vuc, vuc);
5477 // CHECK: sub <16 x i8>
5478 // CHECK-LE: sub <16 x i8>
5479 
5480   res_vuc = vec_vsububm(vbc, vuc);
5481 // CHECK: sub <16 x i8>
5482 // CHECK-LE: sub <16 x i8>
5483 
5484   res_vuc = vec_vsububm(vuc, vbc);
5485 // CHECK: sub <16 x i8>
5486 // CHECK-LE: sub <16 x i8>
5487 
5488   res_vs  = vec_vsubuhm(vs, vs);
5489 // CHECK: sub <8 x i16>
5490 // CHECK-LE: sub <8 x i16>
5491 
5492   res_vs  = vec_vsubuhm(vbs, vs);
5493 // CHECK: sub <8 x i16>
5494 // CHECK-LE: sub <8 x i16>
5495 
5496   res_vs  = vec_vsubuhm(vs, vbs);
5497 // CHECK: sub <8 x i16>
5498 // CHECK-LE: sub <8 x i16>
5499 
5500   res_vus = vec_vsubuhm(vus, vus);
5501 // CHECK: sub <8 x i16>
5502 // CHECK-LE: sub <8 x i16>
5503 
5504   res_vus = vec_vsubuhm(vbs, vus);
5505 // CHECK: sub <8 x i16>
5506 // CHECK-LE: sub <8 x i16>
5507 
5508   res_vus = vec_vsubuhm(vus, vbs);
5509 // CHECK: sub <8 x i16>
5510 // CHECK-LE: sub <8 x i16>
5511 
5512   res_vi  = vec_vsubuwm(vi, vi);
5513 // CHECK: sub <4 x i32>
5514 // CHECK-LE: sub <4 x i32>
5515 
5516   res_vi  = vec_vsubuwm(vbi, vi);
5517 // CHECK: sub <4 x i32>
5518 // CHECK-LE: sub <4 x i32>
5519 
5520   res_vi  = vec_vsubuwm(vi, vbi);
5521 // CHECK: sub <4 x i32>
5522 // CHECK-LE: sub <4 x i32>
5523 
5524   res_vui = vec_vsubuwm(vui, vui);
5525 // CHECK: sub <4 x i32>
5526 // CHECK-LE: sub <4 x i32>
5527 
5528   res_vui = vec_vsubuwm(vbi, vui);
5529 // CHECK: sub <4 x i32>
5530 // CHECK-LE: sub <4 x i32>
5531 
5532   res_vui = vec_vsubuwm(vui, vbi);
5533 // CHECK: sub <4 x i32>
5534 // CHECK-LE: sub <4 x i32>
5535 
5536   res_vf  = vec_vsubfp(vf, vf);
5537 // CHECK: fsub <4 x float>
5538 // CHECK-LE: fsub <4 x float>
5539 
5540   /* vec_subc */
5541   res_vui = vec_subc(vui, vui);
5542 // CHECK: @llvm.ppc.altivec.vsubcuw
5543 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5544 
5545   res_vi = vec_subc(vi, vi);
5546 // CHECK: @llvm.ppc.altivec.vsubcuw
5547 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5548 
5549   res_vui = vec_vsubcuw(vui, vui);
5550 // CHECK: @llvm.ppc.altivec.vsubcuw
5551 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5552 
5553   /* vec_subs */
5554   res_vsc = vec_subs(vsc, vsc);
5555 // CHECK: @llvm.ppc.altivec.vsubsbs
5556 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5557 
5558   res_vsc = vec_subs(vbc, vsc);
5559 // CHECK: @llvm.ppc.altivec.vsubsbs
5560 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5561 
5562   res_vsc = vec_subs(vsc, vbc);
5563 // CHECK: @llvm.ppc.altivec.vsubsbs
5564 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5565 
5566   res_vuc = vec_subs(vuc, vuc);
5567 // CHECK: @llvm.ppc.altivec.vsububs
5568 // CHECK-LE: @llvm.ppc.altivec.vsububs
5569 
5570   res_vuc = vec_subs(vbc, vuc);
5571 // CHECK: @llvm.ppc.altivec.vsububs
5572 // CHECK-LE: @llvm.ppc.altivec.vsububs
5573 
5574   res_vuc = vec_subs(vuc, vbc);
5575 // CHECK: @llvm.ppc.altivec.vsububs
5576 // CHECK-LE: @llvm.ppc.altivec.vsububs
5577 
5578   res_vs  = vec_subs(vs, vs);
5579 // CHECK: @llvm.ppc.altivec.vsubshs
5580 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5581 
5582   res_vs  = vec_subs(vbs, vs);
5583 // CHECK: @llvm.ppc.altivec.vsubshs
5584 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5585 
5586   res_vs  = vec_subs(vs, vbs);
5587 // CHECK: @llvm.ppc.altivec.vsubshs
5588 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5589 
5590   res_vus = vec_subs(vus, vus);
5591 // CHECK: @llvm.ppc.altivec.vsubuhs
5592 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5593 
5594   res_vus = vec_subs(vbs, vus);
5595 // CHECK: @llvm.ppc.altivec.vsubuhs
5596 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5597 
5598   res_vus = vec_subs(vus, vbs);
5599 // CHECK: @llvm.ppc.altivec.vsubuhs
5600 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5601 
5602   res_vi  = vec_subs(vi, vi);
5603 // CHECK: @llvm.ppc.altivec.vsubsws
5604 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5605 
5606   res_vi  = vec_subs(vbi, vi);
5607 // CHECK: @llvm.ppc.altivec.vsubsws
5608 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5609 
5610   res_vi  = vec_subs(vi, vbi);
5611 // CHECK: @llvm.ppc.altivec.vsubsws
5612 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5613 
5614   res_vui = vec_subs(vui, vui);
5615 // CHECK: @llvm.ppc.altivec.vsubuws
5616 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5617 
5618   res_vui = vec_subs(vbi, vui);
5619 // CHECK: @llvm.ppc.altivec.vsubuws
5620 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5621 
5622   res_vui = vec_subs(vui, vbi);
5623 // CHECK: @llvm.ppc.altivec.vsubuws
5624 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5625 
5626   res_vi = vec_sube(vi, vi, vi);
5627 // CHECK: and <4 x i32>
5628 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5629 // CHECK: add <4 x i32>
5630 // CHECK: add <4 x i32>
5631 // CHECK-LE: and <4 x i32>
5632 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5633 // CHECK-LE: add <4 x i32>
5634 // CHECK-LE: add <4 x i32>
5635 
5636   res_vui = vec_sube(vui, vui, vui);
5637 // CHECK: and <4 x i32>
5638 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5639 // CHECK: add <4 x i32>
5640 // CHECK: add <4 x i32>
5641 // CHECK-LE: and <4 x i32>
5642 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5643 // CHECK-LE: add <4 x i32>
5644 // CHECK-LE: add <4 x i32>
5645 
5646   res_vsc = vec_vsubsbs(vsc, vsc);
5647 // CHECK: @llvm.ppc.altivec.vsubsbs
5648 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5649 
5650   res_vsc = vec_vsubsbs(vbc, vsc);
5651 // CHECK: @llvm.ppc.altivec.vsubsbs
5652 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5653 
5654   res_vsc = vec_vsubsbs(vsc, vbc);
5655 // CHECK: @llvm.ppc.altivec.vsubsbs
5656 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5657 
5658   res_vuc = vec_vsububs(vuc, vuc);
5659 // CHECK: @llvm.ppc.altivec.vsububs
5660 // CHECK-LE: @llvm.ppc.altivec.vsububs
5661 
5662   res_vuc = vec_vsububs(vbc, vuc);
5663 // CHECK: @llvm.ppc.altivec.vsububs
5664 // CHECK-LE: @llvm.ppc.altivec.vsububs
5665 
5666   res_vuc = vec_vsububs(vuc, vbc);
5667 // CHECK: @llvm.ppc.altivec.vsububs
5668 // CHECK-LE: @llvm.ppc.altivec.vsububs
5669 
5670   res_vs  = vec_vsubshs(vs, vs);
5671 // CHECK: @llvm.ppc.altivec.vsubshs
5672 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5673 
5674   res_vs  = vec_vsubshs(vbs, vs);
5675 // CHECK: @llvm.ppc.altivec.vsubshs
5676 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5677 
5678   res_vs  = vec_vsubshs(vs, vbs);
5679 // CHECK: @llvm.ppc.altivec.vsubshs
5680 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5681 
5682   res_vus = vec_vsubuhs(vus, vus);
5683 // CHECK: @llvm.ppc.altivec.vsubuhs
5684 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5685 
5686   res_vus = vec_vsubuhs(vbs, vus);
5687 // CHECK: @llvm.ppc.altivec.vsubuhs
5688 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5689 
5690   res_vus = vec_vsubuhs(vus, vbs);
5691 // CHECK: @llvm.ppc.altivec.vsubuhs
5692 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5693 
5694   res_vi  = vec_vsubsws(vi, vi);
5695 // CHECK: @llvm.ppc.altivec.vsubsws
5696 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5697 
5698   res_vi  = vec_vsubsws(vbi, vi);
5699 // CHECK: @llvm.ppc.altivec.vsubsws
5700 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5701 
5702   res_vi  = vec_vsubsws(vi, vbi);
5703 // CHECK: @llvm.ppc.altivec.vsubsws
5704 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5705 
5706   res_vui = vec_vsubuws(vui, vui);
5707 // CHECK: @llvm.ppc.altivec.vsubuws
5708 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5709 
5710   res_vui = vec_vsubuws(vbi, vui);
5711 // CHECK: @llvm.ppc.altivec.vsubuws
5712 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5713 
5714   res_vui = vec_vsubuws(vui, vbi);
5715 // CHECK: @llvm.ppc.altivec.vsubuws
5716 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5717 
5718   /* vec_sum4s */
5719   res_vi  = vec_sum4s(vsc, vi);
5720 // CHECK: @llvm.ppc.altivec.vsum4sbs
5721 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5722 
5723   res_vui = vec_sum4s(vuc, vui);
5724 // CHECK: @llvm.ppc.altivec.vsum4ubs
5725 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5726 
5727   res_vi  = vec_sum4s(vs, vi);
5728 // CHECK: @llvm.ppc.altivec.vsum4shs
5729 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5730 
5731   res_vi  = vec_vsum4sbs(vsc, vi);
5732 // CHECK: @llvm.ppc.altivec.vsum4sbs
5733 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5734 
5735   res_vui = vec_vsum4ubs(vuc, vui);
5736 // CHECK: @llvm.ppc.altivec.vsum4ubs
5737 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5738 
5739   res_vi  = vec_vsum4shs(vs, vi);
5740 // CHECK: @llvm.ppc.altivec.vsum4shs
5741 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5742 
5743   /* vec_sum2s */
5744   res_vi = vec_sum2s(vi, vi);
5745 // CHECK: @llvm.ppc.altivec.vsum2sws
5746 // CHECK-LE: @llvm.ppc.altivec.vperm
5747 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5748 // CHECK-LE: @llvm.ppc.altivec.vperm
5749 
5750   res_vi = vec_vsum2sws(vi, vi);
5751 // CHECK: @llvm.ppc.altivec.vsum2sws
5752 // CHECK-LE: @llvm.ppc.altivec.vperm
5753 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5754 // CHECK-LE: @llvm.ppc.altivec.vperm
5755 
5756   /* vec_sums */
5757   res_vi = vec_sums(vi, vi);
5758 // CHECK: @llvm.ppc.altivec.vsumsws
5759 // CHECK-LE: @llvm.ppc.altivec.vperm
5760 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5761 
5762   res_vi = vec_vsumsws(vi, vi);
5763 // CHECK: @llvm.ppc.altivec.vsumsws
5764 // CHECK-LE: @llvm.ppc.altivec.vperm
5765 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5766 
5767   /* vec_trunc */
5768   res_vf = vec_trunc(vf);
5769 // CHECK: @llvm.ppc.altivec.vrfiz
5770 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5771 
5772   res_vf = vec_vrfiz(vf);
5773 // CHECK: @llvm.ppc.altivec.vrfiz
5774 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5775 
5776   /* vec_unpackh */
5777   res_vs  = vec_unpackh(vsc);
5778 // CHECK: @llvm.ppc.altivec.vupkhsb
5779 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5780 
5781   res_vbs = vec_unpackh(vbc);
5782 // CHECK: @llvm.ppc.altivec.vupkhsb
5783 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5784 
5785   res_vi  = vec_unpackh(vs);
5786 // CHECK: @llvm.ppc.altivec.vupkhsh
5787 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5788 
5789   res_vbi = vec_unpackh(vbs);
5790 // CHECK: @llvm.ppc.altivec.vupkhsh
5791 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5792 
5793   res_vui = vec_unpackh(vp);
5794 // CHECK: @llvm.ppc.altivec.vupkhpx
5795 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5796 
5797   res_vui = vec_vupkhpx(vp);
5798 // CHECK: @llvm.ppc.altivec.vupkhpx
5799 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5800 
5801   res_vs  = vec_vupkhsb(vsc);
5802 // CHECK: @llvm.ppc.altivec.vupkhsb
5803 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5804 
5805   res_vbs = vec_vupkhsb(vbc);
5806 // CHECK: @llvm.ppc.altivec.vupkhsb
5807 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5808 
5809   res_vi  = vec_vupkhsh(vs);
5810 // CHECK: @llvm.ppc.altivec.vupkhsh
5811 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5812 
5813   res_vbi = vec_vupkhsh(vbs);
5814 // CHECK: @llvm.ppc.altivec.vupkhsh
5815 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5816 
5817   res_vui = vec_vupkhsh(vp);
5818 // CHECK: @llvm.ppc.altivec.vupkhpx
5819 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5820 
5821   /* vec_unpackl */
5822   res_vs  = vec_unpackl(vsc);
5823 // CHECK: @llvm.ppc.altivec.vupklsb
5824 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5825 
5826   res_vbs = vec_unpackl(vbc);
5827 // CHECK: @llvm.ppc.altivec.vupklsb
5828 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5829 
5830   res_vi  = vec_unpackl(vs);
5831 // CHECK: @llvm.ppc.altivec.vupklsh
5832 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5833 
5834   res_vbi = vec_unpackl(vbs);
5835 // CHECK: @llvm.ppc.altivec.vupklsh
5836 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5837 
5838   res_vui = vec_unpackl(vp);
5839 // CHECK: @llvm.ppc.altivec.vupklpx
5840 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5841 
5842   res_vui = vec_vupklpx(vp);
5843 // CHECK: @llvm.ppc.altivec.vupklpx
5844 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5845 
5846   res_vs  = vec_vupklsb(vsc);
5847 // CHECK: @llvm.ppc.altivec.vupklsb
5848 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5849 
5850   res_vbs = vec_vupklsb(vbc);
5851 // CHECK: @llvm.ppc.altivec.vupklsb
5852 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5853 
5854   res_vi  = vec_vupklsh(vs);
5855 // CHECK: @llvm.ppc.altivec.vupklsh
5856 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5857 
5858   res_vbi = vec_vupklsh(vbs);
5859 // CHECK: @llvm.ppc.altivec.vupklsh
5860 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5861 
5862   res_vui = vec_vupklsh(vp);
5863 // CHECK: @llvm.ppc.altivec.vupklpx
5864 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5865 
5866   /* vec_xor */
5867   res_vsc = vec_xor(vsc, vsc);
5868 // CHECK: xor <16 x i8>
5869 // CHECK-LE: xor <16 x i8>
5870 
5871   res_vsc = vec_xor(vbc, vsc);
5872 // CHECK: xor <16 x i8>
5873 // CHECK-LE: xor <16 x i8>
5874 
5875   res_vsc = vec_xor(vsc, vbc);
5876 // CHECK: xor <16 x i8>
5877 // CHECK-LE: xor <16 x i8>
5878 
5879   res_vuc = vec_xor(vuc, vuc);
5880 // CHECK: xor <16 x i8>
5881 // CHECK-LE: xor <16 x i8>
5882 
5883   res_vuc = vec_xor(vbc, vuc);
5884 // CHECK: xor <16 x i8>
5885 // CHECK-LE: xor <16 x i8>
5886 
5887   res_vuc = vec_xor(vuc, vbc);
5888 // CHECK: xor <16 x i8>
5889 // CHECK-LE: xor <16 x i8>
5890 
5891   res_vbc = vec_xor(vbc, vbc);
5892 // CHECK: xor <16 x i8>
5893 // CHECK-LE: xor <16 x i8>
5894 
5895   res_vs  = vec_xor(vs, vs);
5896 // CHECK: xor <8 x i16>
5897 // CHECK-LE: xor <8 x i16>
5898 
5899   res_vs  = vec_xor(vbs, vs);
5900 // CHECK: xor <8 x i16>
5901 // CHECK-LE: xor <8 x i16>
5902 
5903   res_vs  = vec_xor(vs, vbs);
5904 // CHECK: xor <8 x i16>
5905 // CHECK-LE: xor <8 x i16>
5906 
5907   res_vus = vec_xor(vus, vus);
5908 // CHECK: xor <8 x i16>
5909 // CHECK-LE: xor <8 x i16>
5910 
5911   res_vus = vec_xor(vbs, vus);
5912 // CHECK: xor <8 x i16>
5913 // CHECK-LE: xor <8 x i16>
5914 
5915   res_vus = vec_xor(vus, vbs);
5916 // CHECK: xor <8 x i16>
5917 // CHECK-LE: xor <8 x i16>
5918 
5919   res_vbs = vec_xor(vbs, vbs);
5920 // CHECK: xor <8 x i16>
5921 // CHECK-LE: xor <8 x i16>
5922 
5923   res_vi  = vec_xor(vi, vi);
5924 // CHECK: xor <4 x i32>
5925 // CHECK-LE: xor <4 x i32>
5926 
5927   res_vi  = vec_xor(vbi, vi);
5928 // CHECK: xor <4 x i32>
5929 // CHECK-LE: xor <4 x i32>
5930 
5931   res_vi  = vec_xor(vi, vbi);
5932 // CHECK: xor <4 x i32>
5933 // CHECK-LE: xor <4 x i32>
5934 
5935   res_vui = vec_xor(vui, vui);
5936 // CHECK: xor <4 x i32>
5937 // CHECK-LE: xor <4 x i32>
5938 
5939   res_vui = vec_xor(vbi, vui);
5940 // CHECK: xor <4 x i32>
5941 // CHECK-LE: xor <4 x i32>
5942 
5943   res_vui = vec_xor(vui, vbi);
5944 // CHECK: xor <4 x i32>
5945 // CHECK-LE: xor <4 x i32>
5946 
5947   res_vbi = vec_xor(vbi, vbi);
5948 // CHECK: xor <4 x i32>
5949 // CHECK-LE: xor <4 x i32>
5950 
5951   res_vf  = vec_xor(vf, vf);
5952 // CHECK: xor <4 x i32>
5953 // CHECK-LE: xor <4 x i32>
5954 
5955   res_vf  = vec_xor(vbi, vf);
5956 // CHECK: xor <4 x i32>
5957 // CHECK-LE: xor <4 x i32>
5958 
5959   res_vf  = vec_xor(vf, vbi);
5960 // CHECK: xor <4 x i32>
5961 // CHECK-LE: xor <4 x i32>
5962 
5963   res_vsc = vec_vxor(vsc, vsc);
5964 // CHECK: xor <16 x i8>
5965 // CHECK-LE: xor <16 x i8>
5966 
5967   res_vsc = vec_vxor(vbc, vsc);
5968 // CHECK: xor <16 x i8>
5969 // CHECK-LE: xor <16 x i8>
5970 
5971   res_vsc = vec_vxor(vsc, vbc);
5972 // CHECK: xor <16 x i8>
5973 // CHECK-LE: xor <16 x i8>
5974 
5975   res_vuc = vec_vxor(vuc, vuc);
5976 // CHECK: xor <16 x i8>
5977 // CHECK-LE: xor <16 x i8>
5978 
5979   res_vuc = vec_vxor(vbc, vuc);
5980 // CHECK: xor <16 x i8>
5981 // CHECK-LE: xor <16 x i8>
5982 
5983   res_vuc = vec_vxor(vuc, vbc);
5984 // CHECK: xor <16 x i8>
5985 // CHECK-LE: xor <16 x i8>
5986 
5987   res_vbc = vec_vxor(vbc, vbc);
5988 // CHECK: xor <16 x i8>
5989 // CHECK-LE: xor <16 x i8>
5990 
5991   res_vs  = vec_vxor(vs, vs);
5992 // CHECK: xor <8 x i16>
5993 // CHECK-LE: xor <8 x i16>
5994 
5995   res_vs  = vec_vxor(vbs, vs);
5996 // CHECK: xor <8 x i16>
5997 // CHECK-LE: xor <8 x i16>
5998 
5999   res_vs  = vec_vxor(vs, vbs);
6000 // CHECK: xor <8 x i16>
6001 // CHECK-LE: xor <8 x i16>
6002 
6003   res_vus = vec_vxor(vus, vus);
6004 // CHECK: xor <8 x i16>
6005 // CHECK-LE: xor <8 x i16>
6006 
6007   res_vus = vec_vxor(vbs, vus);
6008 // CHECK: xor <8 x i16>
6009 // CHECK-LE: xor <8 x i16>
6010 
6011   res_vus = vec_vxor(vus, vbs);
6012 // CHECK: xor <8 x i16>
6013 // CHECK-LE: xor <8 x i16>
6014 
6015   res_vbs = vec_vxor(vbs, vbs);
6016 // CHECK: xor <8 x i16>
6017 // CHECK-LE: xor <8 x i16>
6018 
6019   res_vi  = vec_vxor(vi, vi);
6020 // CHECK: xor <4 x i32>
6021 // CHECK-LE: xor <4 x i32>
6022 
6023   res_vi  = vec_vxor(vbi, vi);
6024 // CHECK: xor <4 x i32>
6025 // CHECK-LE: xor <4 x i32>
6026 
6027   res_vi  = vec_vxor(vi, vbi);
6028 // CHECK: xor <4 x i32>
6029 // CHECK-LE: xor <4 x i32>
6030 
6031   res_vui = vec_vxor(vui, vui);
6032 // CHECK: xor <4 x i32>
6033 // CHECK-LE: xor <4 x i32>
6034 
6035   res_vui = vec_vxor(vbi, vui);
6036 // CHECK: xor <4 x i32>
6037 // CHECK-LE: xor <4 x i32>
6038 
6039   res_vui = vec_vxor(vui, vbi);
6040 // CHECK: xor <4 x i32>
6041 // CHECK-LE: xor <4 x i32>
6042 
6043   res_vbi = vec_vxor(vbi, vbi);
6044 // CHECK: xor <4 x i32>
6045 // CHECK-LE: xor <4 x i32>
6046 
6047   res_vf  = vec_vxor(vf, vf);
6048 // CHECK: xor <4 x i32>
6049 // CHECK-LE: xor <4 x i32>
6050 
6051   res_vf  = vec_vxor(vbi, vf);
6052 // CHECK: xor <4 x i32>
6053 // CHECK-LE: xor <4 x i32>
6054 
6055   res_vf  = vec_vxor(vf, vbi);
6056 // CHECK: xor <4 x i32>
6057 // CHECK-LE: xor <4 x i32>
6058 
6059   /* ------------------------------ extensions -------------------------------------- */
6060 
6061   /* vec_extract */
6062   res_sc = vec_extract(vsc, param_i);
6063 // CHECK: extractelement <16 x i8>
6064 // CHECK-LE: extractelement <16 x i8>
6065 
6066   res_uc = vec_extract(vuc, param_i);
6067 // CHECK: extractelement <16 x i8>
6068 // CHECK-LE: extractelement <16 x i8>
6069 
6070   res_uc = vec_extract(vbc, param_i);
6071 // CHECK: extractelement <16 x i8>
6072 // CHECK-LE: extractelement <16 x i8>
6073 
6074   res_s  = vec_extract(vs, param_i);
6075 // CHECK: extractelement <8 x i16>
6076 // CHECK-LE: extractelement <8 x i16>
6077 
6078   res_us = vec_extract(vus, param_i);
6079 // CHECK: extractelement <8 x i16>
6080 // CHECK-LE: extractelement <8 x i16>
6081 
6082   res_us = vec_extract(vbs, param_i);
6083 // CHECK: extractelement <8 x i16>
6084 // CHECK-LE: extractelement <8 x i16>
6085 
6086   res_i  = vec_extract(vi, param_i);
6087 // CHECK: extractelement <4 x i32>
6088 // CHECK-LE: extractelement <4 x i32>
6089 
6090   res_ui = vec_extract(vui, param_i);
6091 // CHECK: extractelement <4 x i32>
6092 // CHECK-LE: extractelement <4 x i32>
6093 
6094   res_ui = vec_extract(vbi, param_i);
6095 // CHECK: extractelement <4 x i32>
6096 // CHECK-LE: extractelement <4 x i32>
6097 
6098   res_f  = vec_extract(vf, param_i);
6099 // CHECK: extractelement <4 x float>
6100 // CHECK-LE: extractelement <4 x float>
6101 
6102   /* vec_insert */
6103   res_vsc = vec_insert(param_sc, vsc, param_i);
6104 // CHECK: insertelement <16 x i8>
6105 // CHECK-LE: insertelement <16 x i8>
6106 
6107   res_vuc = vec_insert(param_uc, vuc, param_i);
6108 // CHECK: insertelement <16 x i8>
6109 // CHECK-LE: insertelement <16 x i8>
6110 
6111   res_vbc = vec_insert(param_uc, vbc, param_i);
6112 // CHECK: insertelement <16 x i8>
6113 // CHECK-LE: insertelement <16 x i8>
6114 
6115   res_vs  = vec_insert(param_s, vs, param_i);
6116 // CHECK: insertelement <8 x i16>
6117 // CHECK-LE: insertelement <8 x i16>
6118 
6119   res_vus = vec_insert(param_us, vus, param_i);
6120 // CHECK: insertelement <8 x i16>
6121 // CHECK-LE: insertelement <8 x i16>
6122 
6123   res_vbs = vec_insert(param_us, vbs, param_i);
6124 // CHECK: insertelement <8 x i16>
6125 // CHECK-LE: insertelement <8 x i16>
6126 
6127   res_vi  = vec_insert(param_i, vi, param_i);
6128 // CHECK: insertelement <4 x i32>
6129 // CHECK-LE: insertelement <4 x i32>
6130 
6131   res_vui = vec_insert(param_ui, vui, param_i);
6132 // CHECK: insertelement <4 x i32>
6133 // CHECK-LE: insertelement <4 x i32>
6134 
6135   res_vbi = vec_insert(param_ui, vbi, param_i);
6136 // CHECK: insertelement <4 x i32>
6137 // CHECK-LE: insertelement <4 x i32>
6138 
6139   res_vf  = vec_insert(param_f, vf, param_i);
6140 // CHECK: insertelement <4 x float>
6141 // CHECK-LE: insertelement <4 x float>
6142 
6143   /* vec_lvlx */
6144   res_vsc = vec_lvlx(0, param_sc_ld);
6145 // CHECK: @llvm.ppc.altivec.lvx
6146 // CHECK: @llvm.ppc.altivec.lvsl
6147 // CHECK: store <16 x i8> zeroinitializer
6148 // CHECK: @llvm.ppc.altivec.vperm
6149 // CHECK-LE: @llvm.ppc.altivec.lvx
6150 // CHECK-LE: @llvm.ppc.altivec.lvsl
6151 // CHECK-LE: store <16 x i8> zeroinitializer
6152 // CHECK-LE: @llvm.ppc.altivec.vperm
6153 
6154   res_vsc = vec_lvlx(0, &vsc);
6155 // CHECK: @llvm.ppc.altivec.lvx
6156 // CHECK: @llvm.ppc.altivec.lvsl
6157 // CHECK: store <16 x i8> zeroinitializer
6158 // CHECK: @llvm.ppc.altivec.vperm
6159 // CHECK-LE: @llvm.ppc.altivec.lvx
6160 // CHECK-LE: @llvm.ppc.altivec.lvsl
6161 // CHECK-LE: store <16 x i8> zeroinitializer
6162 // CHECK-LE: @llvm.ppc.altivec.vperm
6163 
6164   res_vuc = vec_lvlx(0, param_uc_ld);
6165 // CHECK: @llvm.ppc.altivec.lvx
6166 // CHECK: @llvm.ppc.altivec.lvsl
6167 // CHECK: store <16 x i8> zeroinitializer
6168 // CHECK: @llvm.ppc.altivec.vperm
6169 // CHECK-LE: @llvm.ppc.altivec.lvx
6170 // CHECK-LE: @llvm.ppc.altivec.lvsl
6171 // CHECK-LE: store <16 x i8> zeroinitializer
6172 // CHECK-LE: @llvm.ppc.altivec.vperm
6173 
6174   res_vuc = vec_lvlx(0, &vuc);
6175 // CHECK: @llvm.ppc.altivec.lvx
6176 // CHECK: @llvm.ppc.altivec.lvsl
6177 // CHECK: store <16 x i8> zeroinitializer
6178 // CHECK: @llvm.ppc.altivec.vperm
6179 // CHECK-LE: @llvm.ppc.altivec.lvx
6180 // CHECK-LE: @llvm.ppc.altivec.lvsl
6181 // CHECK-LE: store <16 x i8> zeroinitializer
6182 // CHECK-LE: @llvm.ppc.altivec.vperm
6183 
6184   res_vbc = vec_lvlx(0, &vbc);
6185 // CHECK: @llvm.ppc.altivec.lvx
6186 // CHECK: store <16 x i8> zeroinitializer
6187 // CHECK: @llvm.ppc.altivec.lvsl
6188 // CHECK: @llvm.ppc.altivec.vperm
6189 // CHECK-LE: @llvm.ppc.altivec.lvx
6190 // CHECK-LE: store <16 x i8> zeroinitializer
6191 // CHECK-LE: @llvm.ppc.altivec.lvsl
6192 // CHECK-LE: @llvm.ppc.altivec.vperm
6193 
6194   res_vs  = vec_lvlx(0, param_s_ld);
6195 // CHECK: @llvm.ppc.altivec.lvx
6196 // CHECK: @llvm.ppc.altivec.lvsl
6197 // CHECK: store <8 x i16> zeroinitializer
6198 // CHECK: @llvm.ppc.altivec.vperm
6199 // CHECK-LE: @llvm.ppc.altivec.lvx
6200 // CHECK-LE: @llvm.ppc.altivec.lvsl
6201 // CHECK-LE: store <8 x i16> zeroinitializer
6202 // CHECK-LE: @llvm.ppc.altivec.vperm
6203 
6204   res_vs  = vec_lvlx(0, &vs);
6205 // CHECK: @llvm.ppc.altivec.lvx
6206 // CHECK: @llvm.ppc.altivec.lvsl
6207 // CHECK: store <8 x i16> zeroinitializer
6208 // CHECK: @llvm.ppc.altivec.vperm
6209 // CHECK-LE: @llvm.ppc.altivec.lvx
6210 // CHECK-LE: @llvm.ppc.altivec.lvsl
6211 // CHECK-LE: store <8 x i16> zeroinitializer
6212 // CHECK-LE: @llvm.ppc.altivec.vperm
6213 
6214   res_vus = vec_lvlx(0, param_us_ld);
6215 // CHECK: @llvm.ppc.altivec.lvx
6216 // CHECK: @llvm.ppc.altivec.lvsl
6217 // CHECK: store <8 x i16> zeroinitializer
6218 // CHECK: @llvm.ppc.altivec.vperm
6219 // CHECK-LE: @llvm.ppc.altivec.lvx
6220 // CHECK-LE: @llvm.ppc.altivec.lvsl
6221 // CHECK-LE: store <8 x i16> zeroinitializer
6222 // CHECK-LE: @llvm.ppc.altivec.vperm
6223 
6224   res_vus = vec_lvlx(0, &vus);
6225 // CHECK: @llvm.ppc.altivec.lvx
6226 // CHECK: @llvm.ppc.altivec.lvsl
6227 // CHECK: store <8 x i16> zeroinitializer
6228 // CHECK: @llvm.ppc.altivec.vperm
6229 // CHECK-LE: @llvm.ppc.altivec.lvx
6230 // CHECK-LE: @llvm.ppc.altivec.lvsl
6231 // CHECK-LE: store <8 x i16> zeroinitializer
6232 // CHECK-LE: @llvm.ppc.altivec.vperm
6233 
6234   res_vbs = vec_lvlx(0, &vbs);
6235 // CHECK: @llvm.ppc.altivec.lvx
6236 // CHECK: store <8 x i16> zeroinitializer
6237 // CHECK: @llvm.ppc.altivec.lvsl
6238 // CHECK: @llvm.ppc.altivec.vperm
6239 // CHECK-LE: @llvm.ppc.altivec.lvx
6240 // CHECK-LE: store <8 x i16> zeroinitializer
6241 // CHECK-LE: @llvm.ppc.altivec.lvsl
6242 // CHECK-LE: @llvm.ppc.altivec.vperm
6243 
6244   res_vp  = vec_lvlx(0, &vp);
6245 // CHECK: @llvm.ppc.altivec.lvx
6246 // CHECK: store <8 x i16> zeroinitializer
6247 // CHECK: @llvm.ppc.altivec.lvsl
6248 // CHECK: @llvm.ppc.altivec.vperm
6249 // CHECK-LE: @llvm.ppc.altivec.lvx
6250 // CHECK-LE: store <8 x i16> zeroinitializer
6251 // CHECK-LE: @llvm.ppc.altivec.lvsl
6252 // CHECK-LE: @llvm.ppc.altivec.vperm
6253 
6254   res_vi  = vec_lvlx(0, param_i_ld);
6255 // CHECK: @llvm.ppc.altivec.lvx
6256 // CHECK: @llvm.ppc.altivec.lvsl
6257 // CHECK: store <4 x i32> zeroinitializer
6258 // CHECK: @llvm.ppc.altivec.vperm
6259 // CHECK-LE: @llvm.ppc.altivec.lvx
6260 // CHECK-LE: @llvm.ppc.altivec.lvsl
6261 // CHECK-LE: store <4 x i32> zeroinitializer
6262 // CHECK-LE: @llvm.ppc.altivec.vperm
6263 
6264   res_vi  = vec_lvlx(0, &vi);
6265 // CHECK: @llvm.ppc.altivec.lvx
6266 // CHECK: @llvm.ppc.altivec.lvsl
6267 // CHECK: store <4 x i32> zeroinitializer
6268 // CHECK: @llvm.ppc.altivec.vperm
6269 // CHECK-LE: @llvm.ppc.altivec.lvx
6270 // CHECK-LE: @llvm.ppc.altivec.lvsl
6271 // CHECK-LE: store <4 x i32> zeroinitializer
6272 // CHECK-LE: @llvm.ppc.altivec.vperm
6273 
6274   res_vui = vec_lvlx(0, param_ui_ld);
6275 // CHECK: @llvm.ppc.altivec.lvx
6276 // CHECK: @llvm.ppc.altivec.lvsl
6277 // CHECK: store <4 x i32> zeroinitializer
6278 // CHECK: @llvm.ppc.altivec.vperm
6279 // CHECK-LE: @llvm.ppc.altivec.lvx
6280 // CHECK-LE: @llvm.ppc.altivec.lvsl
6281 // CHECK-LE: store <4 x i32> zeroinitializer
6282 // CHECK-LE: @llvm.ppc.altivec.vperm
6283 
6284   res_vui = vec_lvlx(0, &vui);
6285 // CHECK: @llvm.ppc.altivec.lvx
6286 // CHECK: @llvm.ppc.altivec.lvsl
6287 // CHECK: store <4 x i32> zeroinitializer
6288 // CHECK: @llvm.ppc.altivec.vperm
6289 // CHECK-LE: @llvm.ppc.altivec.lvx
6290 // CHECK-LE: @llvm.ppc.altivec.lvsl
6291 // CHECK-LE: store <4 x i32> zeroinitializer
6292 // CHECK-LE: @llvm.ppc.altivec.vperm
6293 
6294   res_vbi = vec_lvlx(0, &vbi);
6295 // CHECK: @llvm.ppc.altivec.lvx
6296 // CHECK: store <4 x i32> zeroinitializer
6297 // CHECK: @llvm.ppc.altivec.lvsl
6298 // CHECK: @llvm.ppc.altivec.vperm
6299 // CHECK-LE: @llvm.ppc.altivec.lvx
6300 // CHECK-LE: store <4 x i32> zeroinitializer
6301 // CHECK-LE: @llvm.ppc.altivec.lvsl
6302 // CHECK-LE: @llvm.ppc.altivec.vperm
6303 
6304   res_vf  = vec_lvlx(0, &vf);
6305 // CHECK: @llvm.ppc.altivec.lvx
6306 // CHECK: @llvm.ppc.altivec.lvsl
6307 // CHECK: store <4 x float> zeroinitializer
6308 // CHECK: @llvm.ppc.altivec.vperm
6309 // CHECK-LE: @llvm.ppc.altivec.lvx
6310 // CHECK-LE: @llvm.ppc.altivec.lvsl
6311 // CHECK-LE: store <4 x float> zeroinitializer
6312 // CHECK-LE: @llvm.ppc.altivec.vperm
6313 
6314   /* vec_lvlxl */
6315   res_vsc = vec_lvlxl(0, param_sc_ld);
6316 // CHECK: @llvm.ppc.altivec.lvxl
6317 // CHECK: @llvm.ppc.altivec.lvsl
6318 // CHECK: store <16 x i8> zeroinitializer
6319 // CHECK: @llvm.ppc.altivec.vperm
6320 // CHECK-LE: @llvm.ppc.altivec.lvxl
6321 // CHECK-LE: @llvm.ppc.altivec.lvsl
6322 // CHECK-LE: store <16 x i8> zeroinitializer
6323 // CHECK-LE: @llvm.ppc.altivec.vperm
6324 
6325   res_vsc = vec_lvlxl(0, &vsc);
6326 // CHECK: @llvm.ppc.altivec.lvxl
6327 // CHECK: @llvm.ppc.altivec.lvsl
6328 // CHECK: store <16 x i8> zeroinitializer
6329 // CHECK: @llvm.ppc.altivec.vperm
6330 // CHECK-LE: @llvm.ppc.altivec.lvxl
6331 // CHECK-LE: @llvm.ppc.altivec.lvsl
6332 // CHECK-LE: store <16 x i8> zeroinitializer
6333 // CHECK-LE: @llvm.ppc.altivec.vperm
6334 
6335   res_vuc = vec_lvlxl(0, param_uc_ld);
6336 // CHECK: @llvm.ppc.altivec.lvxl
6337 // CHECK: @llvm.ppc.altivec.lvsl
6338 // CHECK: store <16 x i8> zeroinitializer
6339 // CHECK: @llvm.ppc.altivec.vperm
6340 // CHECK-LE: @llvm.ppc.altivec.lvxl
6341 // CHECK-LE: @llvm.ppc.altivec.lvsl
6342 // CHECK-LE: store <16 x i8> zeroinitializer
6343 // CHECK-LE: @llvm.ppc.altivec.vperm
6344 
6345   res_vuc = vec_lvlxl(0, &vuc);
6346 // CHECK: @llvm.ppc.altivec.lvxl
6347 // CHECK: @llvm.ppc.altivec.lvsl
6348 // CHECK: store <16 x i8> zeroinitializer
6349 // CHECK: @llvm.ppc.altivec.vperm
6350 // CHECK-LE: @llvm.ppc.altivec.lvxl
6351 // CHECK-LE: @llvm.ppc.altivec.lvsl
6352 // CHECK-LE: store <16 x i8> zeroinitializer
6353 // CHECK-LE: @llvm.ppc.altivec.vperm
6354 
6355   res_vbc = vec_lvlxl(0, &vbc);
6356 // CHECK: @llvm.ppc.altivec.lvxl
6357 // CHECK: store <16 x i8> zeroinitializer
6358 // CHECK: @llvm.ppc.altivec.lvsl
6359 // CHECK: @llvm.ppc.altivec.vperm
6360 // CHECK-LE: @llvm.ppc.altivec.lvxl
6361 // CHECK-LE: store <16 x i8> zeroinitializer
6362 // CHECK-LE: @llvm.ppc.altivec.lvsl
6363 // CHECK-LE: @llvm.ppc.altivec.vperm
6364 
6365   res_vs  = vec_lvlxl(0, param_s_ld);
6366 // CHECK: @llvm.ppc.altivec.lvxl
6367 // CHECK: @llvm.ppc.altivec.lvsl
6368 // CHECK: store <8 x i16> zeroinitializer
6369 // CHECK: @llvm.ppc.altivec.vperm
6370 // CHECK-LE: @llvm.ppc.altivec.lvxl
6371 // CHECK-LE: @llvm.ppc.altivec.lvsl
6372 // CHECK-LE: store <8 x i16> zeroinitializer
6373 // CHECK-LE: @llvm.ppc.altivec.vperm
6374 
6375   res_vs  = vec_lvlxl(0, &vs);
6376 // CHECK: @llvm.ppc.altivec.lvxl
6377 // CHECK: @llvm.ppc.altivec.lvsl
6378 // CHECK: store <8 x i16> zeroinitializer
6379 // CHECK: @llvm.ppc.altivec.vperm
6380 // CHECK-LE: @llvm.ppc.altivec.lvxl
6381 // CHECK-LE: @llvm.ppc.altivec.lvsl
6382 // CHECK-LE: store <8 x i16> zeroinitializer
6383 // CHECK-LE: @llvm.ppc.altivec.vperm
6384 
6385   res_vus = vec_lvlxl(0, param_us_ld);
6386 // CHECK: @llvm.ppc.altivec.lvxl
6387 // CHECK: @llvm.ppc.altivec.lvsl
6388 // CHECK: store <8 x i16> zeroinitializer
6389 // CHECK: @llvm.ppc.altivec.vperm
6390 // CHECK-LE: @llvm.ppc.altivec.lvxl
6391 // CHECK-LE: @llvm.ppc.altivec.lvsl
6392 // CHECK-LE: store <8 x i16> zeroinitializer
6393 // CHECK-LE: @llvm.ppc.altivec.vperm
6394 
6395   res_vus = vec_lvlxl(0, &vus);
6396 // CHECK: @llvm.ppc.altivec.lvxl
6397 // CHECK: @llvm.ppc.altivec.lvsl
6398 // CHECK: store <8 x i16> zeroinitializer
6399 // CHECK: @llvm.ppc.altivec.vperm
6400 // CHECK-LE: @llvm.ppc.altivec.lvxl
6401 // CHECK-LE: @llvm.ppc.altivec.lvsl
6402 // CHECK-LE: store <8 x i16> zeroinitializer
6403 // CHECK-LE: @llvm.ppc.altivec.vperm
6404 
6405   res_vbs = vec_lvlxl(0, &vbs);
6406 // CHECK: @llvm.ppc.altivec.lvxl
6407 // CHECK: store <8 x i16> zeroinitializer
6408 // CHECK: @llvm.ppc.altivec.lvsl
6409 // CHECK: @llvm.ppc.altivec.vperm
6410 // CHECK-LE: @llvm.ppc.altivec.lvxl
6411 // CHECK-LE: store <8 x i16> zeroinitializer
6412 // CHECK-LE: @llvm.ppc.altivec.lvsl
6413 // CHECK-LE: @llvm.ppc.altivec.vperm
6414 
6415   res_vp  = vec_lvlxl(0, &vp);
6416 // CHECK: @llvm.ppc.altivec.lvxl
6417 // CHECK: store <8 x i16> zeroinitializer
6418 // CHECK: @llvm.ppc.altivec.lvsl
6419 // CHECK: @llvm.ppc.altivec.vperm
6420 // CHECK-LE: @llvm.ppc.altivec.lvxl
6421 // CHECK-LE: store <8 x i16> zeroinitializer
6422 // CHECK-LE: @llvm.ppc.altivec.lvsl
6423 // CHECK-LE: @llvm.ppc.altivec.vperm
6424 
6425   res_vi  = vec_lvlxl(0, param_i_ld);
6426 // CHECK: @llvm.ppc.altivec.lvxl
6427 // CHECK: @llvm.ppc.altivec.lvsl
6428 // CHECK: store <4 x i32> zeroinitializer
6429 // CHECK: @llvm.ppc.altivec.vperm
6430 // CHECK-LE: @llvm.ppc.altivec.lvxl
6431 // CHECK-LE: @llvm.ppc.altivec.lvsl
6432 // CHECK-LE: store <4 x i32> zeroinitializer
6433 // CHECK-LE: @llvm.ppc.altivec.vperm
6434 
6435   res_vi  = vec_lvlxl(0, &vi);
6436 // CHECK: @llvm.ppc.altivec.lvxl
6437 // CHECK: @llvm.ppc.altivec.lvsl
6438 // CHECK: store <4 x i32> zeroinitializer
6439 // CHECK: @llvm.ppc.altivec.vperm
6440 // CHECK-LE: @llvm.ppc.altivec.lvxl
6441 // CHECK-LE: @llvm.ppc.altivec.lvsl
6442 // CHECK-LE: store <4 x i32> zeroinitializer
6443 // CHECK-LE: @llvm.ppc.altivec.vperm
6444 
6445   res_vui = vec_lvlxl(0, param_ui_ld);
6446 // CHECK: @llvm.ppc.altivec.lvxl
6447 // CHECK: @llvm.ppc.altivec.lvsl
6448 // CHECK: store <4 x i32> zeroinitializer
6449 // CHECK: @llvm.ppc.altivec.vperm
6450 // CHECK-LE: @llvm.ppc.altivec.lvxl
6451 // CHECK-LE: @llvm.ppc.altivec.lvsl
6452 // CHECK-LE: store <4 x i32> zeroinitializer
6453 // CHECK-LE: @llvm.ppc.altivec.vperm
6454 
6455   res_vui = vec_lvlxl(0, &vui);
6456 // CHECK: @llvm.ppc.altivec.lvxl
6457 // CHECK: @llvm.ppc.altivec.lvsl
6458 // CHECK: store <4 x i32> zeroinitializer
6459 // CHECK: @llvm.ppc.altivec.vperm
6460 // CHECK-LE: @llvm.ppc.altivec.lvxl
6461 // CHECK-LE: @llvm.ppc.altivec.lvsl
6462 // CHECK-LE: store <4 x i32> zeroinitializer
6463 // CHECK-LE: @llvm.ppc.altivec.vperm
6464 
6465   res_vbi = vec_lvlxl(0, &vbi);
6466 // CHECK: @llvm.ppc.altivec.lvxl
6467 // CHECK: store <4 x i32> zeroinitializer
6468 // CHECK: @llvm.ppc.altivec.lvsl
6469 // CHECK: @llvm.ppc.altivec.vperm
6470 // CHECK-LE: @llvm.ppc.altivec.lvxl
6471 // CHECK-LE: store <4 x i32> zeroinitializer
6472 // CHECK-LE: @llvm.ppc.altivec.lvsl
6473 // CHECK-LE: @llvm.ppc.altivec.vperm
6474 
6475   res_vf  = vec_lvlxl(0, &vf);
6476 // CHECK: @llvm.ppc.altivec.lvxl
6477 // CHECK: @llvm.ppc.altivec.lvsl
6478 // CHECK: store <4 x float> zeroinitializer
6479 // CHECK: @llvm.ppc.altivec.vperm
6480 // CHECK-LE: @llvm.ppc.altivec.lvxl
6481 // CHECK-LE: @llvm.ppc.altivec.lvsl
6482 // CHECK-LE: store <4 x float> zeroinitializer
6483 // CHECK-LE: @llvm.ppc.altivec.vperm
6484 
6485   /* vec_lvrx */
6486   res_vsc = vec_lvrx(0, param_sc_ld);
6487 // CHECK: @llvm.ppc.altivec.lvx
6488 // CHECK: @llvm.ppc.altivec.lvsl
6489 // CHECK: store <16 x i8> zeroinitializer
6490 // CHECK: @llvm.ppc.altivec.vperm
6491 // CHECK-LE: @llvm.ppc.altivec.lvx
6492 // CHECK-LE: @llvm.ppc.altivec.lvsl
6493 // CHECK-LE: store <16 x i8> zeroinitializer
6494 // CHECK-LE: @llvm.ppc.altivec.vperm
6495 
6496   res_vsc = vec_lvrx(0, &vsc);
6497 // CHECK: @llvm.ppc.altivec.lvx
6498 // CHECK: @llvm.ppc.altivec.lvsl
6499 // CHECK: store <16 x i8> zeroinitializer
6500 // CHECK: @llvm.ppc.altivec.vperm
6501 // CHECK-LE: @llvm.ppc.altivec.lvx
6502 // CHECK-LE: @llvm.ppc.altivec.lvsl
6503 // CHECK-LE: store <16 x i8> zeroinitializer
6504 // CHECK-LE: @llvm.ppc.altivec.vperm
6505 
6506   res_vuc = vec_lvrx(0, param_uc_ld);
6507 // CHECK: @llvm.ppc.altivec.lvx
6508 // CHECK: @llvm.ppc.altivec.lvsl
6509 // CHECK: store <16 x i8> zeroinitializer
6510 // CHECK: @llvm.ppc.altivec.vperm
6511 // CHECK-LE: @llvm.ppc.altivec.lvx
6512 // CHECK-LE: @llvm.ppc.altivec.lvsl
6513 // CHECK-LE: store <16 x i8> zeroinitializer
6514 // CHECK-LE: @llvm.ppc.altivec.vperm
6515 
6516   res_vuc = vec_lvrx(0, &vuc);
6517 // CHECK: @llvm.ppc.altivec.lvx
6518 // CHECK: @llvm.ppc.altivec.lvsl
6519 // CHECK: store <16 x i8> zeroinitializer
6520 // CHECK: @llvm.ppc.altivec.vperm
6521 // CHECK-LE: @llvm.ppc.altivec.lvx
6522 // CHECK-LE: @llvm.ppc.altivec.lvsl
6523 // CHECK-LE: store <16 x i8> zeroinitializer
6524 // CHECK-LE: @llvm.ppc.altivec.vperm
6525 
6526   res_vbc = vec_lvrx(0, &vbc);
6527 // CHECK: store <16 x i8> zeroinitializer
6528 // CHECK: @llvm.ppc.altivec.lvx
6529 // CHECK: @llvm.ppc.altivec.lvsl
6530 // CHECK: @llvm.ppc.altivec.vperm
6531 // CHECK-LE: store <16 x i8> zeroinitializer
6532 // CHECK-LE: @llvm.ppc.altivec.lvx
6533 // CHECK-LE: @llvm.ppc.altivec.lvsl
6534 // CHECK-LE: @llvm.ppc.altivec.vperm
6535 
6536   res_vs  = vec_lvrx(0, param_s_ld);
6537 // CHECK: @llvm.ppc.altivec.lvx
6538 // CHECK: @llvm.ppc.altivec.lvsl
6539 // CHECK: store <8 x i16> zeroinitializer
6540 // CHECK: @llvm.ppc.altivec.vperm
6541 // CHECK-LE: @llvm.ppc.altivec.lvx
6542 // CHECK-LE: @llvm.ppc.altivec.lvsl
6543 // CHECK-LE: store <8 x i16> zeroinitializer
6544 // CHECK-LE: @llvm.ppc.altivec.vperm
6545 
6546   res_vs  = vec_lvrx(0, &vs);
6547 // CHECK: @llvm.ppc.altivec.lvx
6548 // CHECK: @llvm.ppc.altivec.lvsl
6549 // CHECK: store <8 x i16> zeroinitializer
6550 // CHECK: @llvm.ppc.altivec.vperm
6551 // CHECK-LE: @llvm.ppc.altivec.lvx
6552 // CHECK-LE: @llvm.ppc.altivec.lvsl
6553 // CHECK-LE: store <8 x i16> zeroinitializer
6554 // CHECK-LE: @llvm.ppc.altivec.vperm
6555 
6556   res_vus = vec_lvrx(0, param_us_ld);
6557 // CHECK: @llvm.ppc.altivec.lvx
6558 // CHECK: @llvm.ppc.altivec.lvsl
6559 // CHECK: store <8 x i16> zeroinitializer
6560 // CHECK: @llvm.ppc.altivec.vperm
6561 // CHECK-LE: @llvm.ppc.altivec.lvx
6562 // CHECK-LE: @llvm.ppc.altivec.lvsl
6563 // CHECK-LE: store <8 x i16> zeroinitializer
6564 // CHECK-LE: @llvm.ppc.altivec.vperm
6565 
6566   res_vus = vec_lvrx(0, &vus);
6567 // CHECK: @llvm.ppc.altivec.lvx
6568 // CHECK: @llvm.ppc.altivec.lvsl
6569 // CHECK: store <8 x i16> zeroinitializer
6570 // CHECK: @llvm.ppc.altivec.vperm
6571 // CHECK-LE: @llvm.ppc.altivec.lvx
6572 // CHECK-LE: @llvm.ppc.altivec.lvsl
6573 // CHECK-LE: store <8 x i16> zeroinitializer
6574 // CHECK-LE: @llvm.ppc.altivec.vperm
6575 
6576   res_vbs = vec_lvrx(0, &vbs);
6577 // CHECK: store <8 x i16> zeroinitializer
6578 // CHECK: @llvm.ppc.altivec.lvx
6579 // CHECK: @llvm.ppc.altivec.lvsl
6580 // CHECK: @llvm.ppc.altivec.vperm
6581 // CHECK-LE: store <8 x i16> zeroinitializer
6582 // CHECK-LE: @llvm.ppc.altivec.lvx
6583 // CHECK-LE: @llvm.ppc.altivec.lvsl
6584 // CHECK-LE: @llvm.ppc.altivec.vperm
6585 
6586   res_vp  = vec_lvrx(0, &vp);
6587 // CHECK: store <8 x i16> zeroinitializer
6588 // CHECK: @llvm.ppc.altivec.lvx
6589 // CHECK: @llvm.ppc.altivec.lvsl
6590 // CHECK: @llvm.ppc.altivec.vperm
6591 // CHECK-LE: store <8 x i16> zeroinitializer
6592 // CHECK-LE: @llvm.ppc.altivec.lvx
6593 // CHECK-LE: @llvm.ppc.altivec.lvsl
6594 // CHECK-LE: @llvm.ppc.altivec.vperm
6595 
6596   res_vi  = vec_lvrx(0, param_i_ld);
6597 // CHECK: @llvm.ppc.altivec.lvx
6598 // CHECK: @llvm.ppc.altivec.lvsl
6599 // CHECK: store <4 x i32> zeroinitializer
6600 // CHECK: @llvm.ppc.altivec.vperm
6601 // CHECK-LE: @llvm.ppc.altivec.lvx
6602 // CHECK-LE: @llvm.ppc.altivec.lvsl
6603 // CHECK-LE: store <4 x i32> zeroinitializer
6604 // CHECK-LE: @llvm.ppc.altivec.vperm
6605 
6606   res_vi  = vec_lvrx(0, &vi);
6607 // CHECK: @llvm.ppc.altivec.lvx
6608 // CHECK: @llvm.ppc.altivec.lvsl
6609 // CHECK: store <4 x i32> zeroinitializer
6610 // CHECK: @llvm.ppc.altivec.vperm
6611 // CHECK-LE: @llvm.ppc.altivec.lvx
6612 // CHECK-LE: @llvm.ppc.altivec.lvsl
6613 // CHECK-LE: store <4 x i32> zeroinitializer
6614 // CHECK-LE: @llvm.ppc.altivec.vperm
6615 
6616   res_vui = vec_lvrx(0, param_ui_ld);
6617 // CHECK: @llvm.ppc.altivec.lvx
6618 // CHECK: @llvm.ppc.altivec.lvsl
6619 // CHECK: store <4 x i32> zeroinitializer
6620 // CHECK: @llvm.ppc.altivec.vperm
6621 // CHECK-LE: @llvm.ppc.altivec.lvx
6622 // CHECK-LE: @llvm.ppc.altivec.lvsl
6623 // CHECK-LE: store <4 x i32> zeroinitializer
6624 // CHECK-LE: @llvm.ppc.altivec.vperm
6625 
6626   res_vui = vec_lvrx(0, &vui);
6627 // CHECK: @llvm.ppc.altivec.lvx
6628 // CHECK: @llvm.ppc.altivec.lvsl
6629 // CHECK: store <4 x i32> zeroinitializer
6630 // CHECK: @llvm.ppc.altivec.vperm
6631 // CHECK-LE: @llvm.ppc.altivec.lvx
6632 // CHECK-LE: @llvm.ppc.altivec.lvsl
6633 // CHECK-LE: store <4 x i32> zeroinitializer
6634 // CHECK-LE: @llvm.ppc.altivec.vperm
6635 
6636   res_vbi = vec_lvrx(0, &vbi);
6637 // CHECK: store <4 x i32> zeroinitializer
6638 // CHECK: @llvm.ppc.altivec.lvx
6639 // CHECK: @llvm.ppc.altivec.lvsl
6640 // CHECK: @llvm.ppc.altivec.vperm
6641 // CHECK-LE: store <4 x i32> zeroinitializer
6642 // CHECK-LE: @llvm.ppc.altivec.lvx
6643 // CHECK-LE: @llvm.ppc.altivec.lvsl
6644 // CHECK-LE: @llvm.ppc.altivec.vperm
6645 
6646   res_vf  = vec_lvrx(0, &vf);
6647 // CHECK: @llvm.ppc.altivec.lvx
6648 // CHECK: @llvm.ppc.altivec.lvsl
6649 // CHECK: store <4 x float> zeroinitializer
6650 // CHECK: @llvm.ppc.altivec.vperm
6651 // CHECK-LE: @llvm.ppc.altivec.lvx
6652 // CHECK-LE: @llvm.ppc.altivec.lvsl
6653 // CHECK-LE: store <4 x float> zeroinitializer
6654 // CHECK-LE: @llvm.ppc.altivec.vperm
6655 
6656   /* vec_lvrxl */
6657   res_vsc = vec_lvrxl(0, param_sc_ld);
6658 // CHECK: @llvm.ppc.altivec.lvxl
6659 // CHECK: @llvm.ppc.altivec.lvsl
6660 // CHECK: store <16 x i8> zeroinitializer
6661 // CHECK: @llvm.ppc.altivec.vperm
6662 // CHECK-LE: @llvm.ppc.altivec.lvxl
6663 // CHECK-LE: @llvm.ppc.altivec.lvsl
6664 // CHECK-LE: store <16 x i8> zeroinitializer
6665 // CHECK-LE: @llvm.ppc.altivec.vperm
6666 
6667   res_vsc = vec_lvrxl(0, &vsc);
6668 // CHECK: @llvm.ppc.altivec.lvxl
6669 // CHECK: @llvm.ppc.altivec.lvsl
6670 // CHECK: store <16 x i8> zeroinitializer
6671 // CHECK: @llvm.ppc.altivec.vperm
6672 // CHECK-LE: @llvm.ppc.altivec.lvxl
6673 // CHECK-LE: @llvm.ppc.altivec.lvsl
6674 // CHECK-LE: store <16 x i8> zeroinitializer
6675 // CHECK-LE: @llvm.ppc.altivec.vperm
6676 
6677   res_vuc = vec_lvrxl(0, param_uc_ld);
6678 // CHECK: @llvm.ppc.altivec.lvxl
6679 // CHECK: @llvm.ppc.altivec.lvsl
6680 // CHECK: store <16 x i8> zeroinitializer
6681 // CHECK: @llvm.ppc.altivec.vperm
6682 // CHECK-LE: @llvm.ppc.altivec.lvxl
6683 // CHECK-LE: @llvm.ppc.altivec.lvsl
6684 // CHECK-LE: store <16 x i8> zeroinitializer
6685 // CHECK-LE: @llvm.ppc.altivec.vperm
6686 
6687   res_vuc = vec_lvrxl(0, &vuc);
6688 // CHECK: @llvm.ppc.altivec.lvxl
6689 // CHECK: @llvm.ppc.altivec.lvsl
6690 // CHECK: store <16 x i8> zeroinitializer
6691 // CHECK: @llvm.ppc.altivec.vperm
6692 // CHECK-LE: @llvm.ppc.altivec.lvxl
6693 // CHECK-LE: @llvm.ppc.altivec.lvsl
6694 // CHECK-LE: store <16 x i8> zeroinitializer
6695 // CHECK-LE: @llvm.ppc.altivec.vperm
6696 
6697   res_vbc = vec_lvrxl(0, &vbc);
6698 // CHECK: store <16 x i8> zeroinitializer
6699 // CHECK: @llvm.ppc.altivec.lvxl
6700 // CHECK: @llvm.ppc.altivec.lvsl
6701 // CHECK: @llvm.ppc.altivec.vperm
6702 // CHECK-LE: store <16 x i8> zeroinitializer
6703 // CHECK-LE: @llvm.ppc.altivec.lvxl
6704 // CHECK-LE: @llvm.ppc.altivec.lvsl
6705 // CHECK-LE: @llvm.ppc.altivec.vperm
6706 
6707   res_vs  = vec_lvrxl(0, param_s_ld);
6708 // CHECK: @llvm.ppc.altivec.lvxl
6709 // CHECK: @llvm.ppc.altivec.lvsl
6710 // CHECK: store <8 x i16> zeroinitializer
6711 // CHECK: @llvm.ppc.altivec.vperm
6712 // CHECK-LE: @llvm.ppc.altivec.lvxl
6713 // CHECK-LE: @llvm.ppc.altivec.lvsl
6714 // CHECK-LE: store <8 x i16> zeroinitializer
6715 // CHECK-LE: @llvm.ppc.altivec.vperm
6716 
6717   res_vs  = vec_lvrxl(0, &vs);
6718 // CHECK: @llvm.ppc.altivec.lvxl
6719 // CHECK: @llvm.ppc.altivec.lvsl
6720 // CHECK: store <8 x i16> zeroinitializer
6721 // CHECK: @llvm.ppc.altivec.vperm
6722 // CHECK-LE: @llvm.ppc.altivec.lvxl
6723 // CHECK-LE: @llvm.ppc.altivec.lvsl
6724 // CHECK-LE: store <8 x i16> zeroinitializer
6725 // CHECK-LE: @llvm.ppc.altivec.vperm
6726 
6727   res_vus = vec_lvrxl(0, param_us_ld);
6728 // CHECK: @llvm.ppc.altivec.lvxl
6729 // CHECK: @llvm.ppc.altivec.lvsl
6730 // CHECK: store <8 x i16> zeroinitializer
6731 // CHECK: @llvm.ppc.altivec.vperm
6732 // CHECK-LE: @llvm.ppc.altivec.lvxl
6733 // CHECK-LE: @llvm.ppc.altivec.lvsl
6734 // CHECK-LE: store <8 x i16> zeroinitializer
6735 // CHECK-LE: @llvm.ppc.altivec.vperm
6736 
6737   res_vus = vec_lvrxl(0, &vus);
6738 // CHECK: @llvm.ppc.altivec.lvxl
6739 // CHECK: @llvm.ppc.altivec.lvsl
6740 // CHECK: store <8 x i16> zeroinitializer
6741 // CHECK: @llvm.ppc.altivec.vperm
6742 // CHECK-LE: @llvm.ppc.altivec.lvxl
6743 // CHECK-LE: @llvm.ppc.altivec.lvsl
6744 // CHECK-LE: store <8 x i16> zeroinitializer
6745 // CHECK-LE: @llvm.ppc.altivec.vperm
6746 
6747   res_vbs = vec_lvrxl(0, &vbs);
6748 // CHECK: store <8 x i16> zeroinitializer
6749 // CHECK: @llvm.ppc.altivec.lvxl
6750 // CHECK: @llvm.ppc.altivec.lvsl
6751 // CHECK: @llvm.ppc.altivec.vperm
6752 // CHECK-LE: store <8 x i16> zeroinitializer
6753 // CHECK-LE: @llvm.ppc.altivec.lvxl
6754 // CHECK-LE: @llvm.ppc.altivec.lvsl
6755 // CHECK-LE: @llvm.ppc.altivec.vperm
6756 
6757   res_vp  = vec_lvrxl(0, &vp);
6758 // CHECK: store <8 x i16> zeroinitializer
6759 // CHECK: @llvm.ppc.altivec.lvxl
6760 // CHECK: @llvm.ppc.altivec.lvsl
6761 // CHECK: @llvm.ppc.altivec.vperm
6762 // CHECK-LE: store <8 x i16> zeroinitializer
6763 // CHECK-LE: @llvm.ppc.altivec.lvxl
6764 // CHECK-LE: @llvm.ppc.altivec.lvsl
6765 // CHECK-LE: @llvm.ppc.altivec.vperm
6766 
6767   res_vi  = vec_lvrxl(0, param_i_ld);
6768 // CHECK: @llvm.ppc.altivec.lvxl
6769 // CHECK: @llvm.ppc.altivec.lvsl
6770 // CHECK: store <4 x i32> zeroinitializer
6771 // CHECK: @llvm.ppc.altivec.vperm
6772 // CHECK-LE: @llvm.ppc.altivec.lvxl
6773 // CHECK-LE: @llvm.ppc.altivec.lvsl
6774 // CHECK-LE: store <4 x i32> zeroinitializer
6775 // CHECK-LE: @llvm.ppc.altivec.vperm
6776 
6777   res_vi  = vec_lvrxl(0, &vi);
6778 // CHECK: @llvm.ppc.altivec.lvxl
6779 // CHECK: @llvm.ppc.altivec.lvsl
6780 // CHECK: store <4 x i32> zeroinitializer
6781 // CHECK: @llvm.ppc.altivec.vperm
6782 // CHECK-LE: @llvm.ppc.altivec.lvxl
6783 // CHECK-LE: @llvm.ppc.altivec.lvsl
6784 // CHECK-LE: store <4 x i32> zeroinitializer
6785 // CHECK-LE: @llvm.ppc.altivec.vperm
6786 
6787   res_vui = vec_lvrxl(0, param_ui_ld);
6788 // CHECK: @llvm.ppc.altivec.lvxl
6789 // CHECK: @llvm.ppc.altivec.lvsl
6790 // CHECK: store <4 x i32> zeroinitializer
6791 // CHECK: @llvm.ppc.altivec.vperm
6792 // CHECK-LE: @llvm.ppc.altivec.lvxl
6793 // CHECK-LE: @llvm.ppc.altivec.lvsl
6794 // CHECK-LE: store <4 x i32> zeroinitializer
6795 // CHECK-LE: @llvm.ppc.altivec.vperm
6796 
6797   res_vui = vec_lvrxl(0, &vui);
6798 // CHECK: @llvm.ppc.altivec.lvxl
6799 // CHECK: @llvm.ppc.altivec.lvsl
6800 // CHECK: store <4 x i32> zeroinitializer
6801 // CHECK: @llvm.ppc.altivec.vperm
6802 // CHECK-LE: @llvm.ppc.altivec.lvxl
6803 // CHECK-LE: @llvm.ppc.altivec.lvsl
6804 // CHECK-LE: store <4 x i32> zeroinitializer
6805 // CHECK-LE: @llvm.ppc.altivec.vperm
6806 
6807   res_vbi = vec_lvrxl(0, &vbi);
6808 // CHECK: store <4 x i32> zeroinitializer
6809 // CHECK: @llvm.ppc.altivec.lvxl
6810 // CHECK: @llvm.ppc.altivec.lvsl
6811 // CHECK: @llvm.ppc.altivec.vperm
6812 // CHECK-LE: store <4 x i32> zeroinitializer
6813 // CHECK-LE: @llvm.ppc.altivec.lvxl
6814 // CHECK-LE: @llvm.ppc.altivec.lvsl
6815 // CHECK-LE: @llvm.ppc.altivec.vperm
6816 
6817   res_vf  = vec_lvrxl(0, &vf);
6818 // CHECK: @llvm.ppc.altivec.lvxl
6819 // CHECK: @llvm.ppc.altivec.lvsl
6820 // CHECK: store <4 x float> zeroinitializer
6821 // CHECK: @llvm.ppc.altivec.vperm
6822 // CHECK-LE: @llvm.ppc.altivec.lvxl
6823 // CHECK-LE: @llvm.ppc.altivec.lvsl
6824 // CHECK-LE: store <4 x float> zeroinitializer
6825 // CHECK-LE: @llvm.ppc.altivec.vperm
6826 
6827   /* vec_stvlx */
6828   vec_stvlx(vsc, 0, &param_sc);
6829 // CHECK: @llvm.ppc.altivec.lvx
6830 // CHECK: @llvm.ppc.altivec.lvsl
6831 // CHECK: store <16 x i8> zeroinitializer
6832 // CHECK: @llvm.ppc.altivec.vperm
6833 // CHECK: @llvm.ppc.altivec.lvsr
6834 // CHECK: @llvm.ppc.altivec.vperm
6835 // CHECK: @llvm.ppc.altivec.stvx
6836 // CHECK-LE: @llvm.ppc.altivec.lvx
6837 // CHECK-LE: @llvm.ppc.altivec.lvsl
6838 // CHECK-LE: store <16 x i8> zeroinitializer
6839 // CHECK-LE: @llvm.ppc.altivec.vperm
6840 // CHECK-LE: @llvm.ppc.altivec.lvsr
6841 // CHECK-LE: @llvm.ppc.altivec.vperm
6842 // CHECK-LE: @llvm.ppc.altivec.stvx
6843 
6844   vec_stvlx(vsc, 0, &vsc);
6845 // CHECK: @llvm.ppc.altivec.lvx
6846 // CHECK: @llvm.ppc.altivec.lvsl
6847 // CHECK: store <16 x i8> zeroinitializer
6848 // CHECK: @llvm.ppc.altivec.vperm
6849 // CHECK: @llvm.ppc.altivec.lvsr
6850 // CHECK: @llvm.ppc.altivec.vperm
6851 // CHECK: @llvm.ppc.altivec.stvx
6852 // CHECK-LE: @llvm.ppc.altivec.lvx
6853 // CHECK-LE: @llvm.ppc.altivec.lvsl
6854 // CHECK-LE: store <16 x i8> zeroinitializer
6855 // CHECK-LE: @llvm.ppc.altivec.vperm
6856 // CHECK-LE: @llvm.ppc.altivec.lvsr
6857 // CHECK-LE: @llvm.ppc.altivec.vperm
6858 // CHECK-LE: @llvm.ppc.altivec.stvx
6859 
6860   vec_stvlx(vuc, 0, &param_uc);
6861 // CHECK: @llvm.ppc.altivec.lvx
6862 // CHECK: @llvm.ppc.altivec.lvsl
6863 // CHECK: store <16 x i8> zeroinitializer
6864 // CHECK: @llvm.ppc.altivec.vperm
6865 // CHECK: @llvm.ppc.altivec.lvsr
6866 // CHECK: @llvm.ppc.altivec.vperm
6867 // CHECK: @llvm.ppc.altivec.stvx
6868 // CHECK-LE: @llvm.ppc.altivec.lvx
6869 // CHECK-LE: @llvm.ppc.altivec.lvsl
6870 // CHECK-LE: store <16 x i8> zeroinitializer
6871 // CHECK-LE: @llvm.ppc.altivec.vperm
6872 // CHECK-LE: @llvm.ppc.altivec.lvsr
6873 // CHECK-LE: @llvm.ppc.altivec.vperm
6874 // CHECK-LE: @llvm.ppc.altivec.stvx
6875 
6876   vec_stvlx(vuc, 0, &vuc);
6877 // CHECK: @llvm.ppc.altivec.lvx
6878 // CHECK: @llvm.ppc.altivec.lvsl
6879 // CHECK: store <16 x i8> zeroinitializer
6880 // CHECK: @llvm.ppc.altivec.vperm
6881 // CHECK: @llvm.ppc.altivec.lvsr
6882 // CHECK: @llvm.ppc.altivec.vperm
6883 // CHECK: @llvm.ppc.altivec.stvx
6884 // CHECK-LE: @llvm.ppc.altivec.lvx
6885 // CHECK-LE: @llvm.ppc.altivec.lvsl
6886 // CHECK-LE: store <16 x i8> zeroinitializer
6887 // CHECK-LE: @llvm.ppc.altivec.vperm
6888 // CHECK-LE: @llvm.ppc.altivec.lvsr
6889 // CHECK-LE: @llvm.ppc.altivec.vperm
6890 // CHECK-LE: @llvm.ppc.altivec.stvx
6891 
6892   vec_stvlx(vbc, 0, &vbc);
6893 // CHECK: store <16 x i8> zeroinitializer
6894 // CHECK: @llvm.ppc.altivec.lvx
6895 // CHECK: @llvm.ppc.altivec.lvsl
6896 // CHECK: @llvm.ppc.altivec.vperm
6897 // CHECK: @llvm.ppc.altivec.lvsr
6898 // CHECK: @llvm.ppc.altivec.vperm
6899 // CHECK: @llvm.ppc.altivec.stvx
6900 // CHECK-LE: store <16 x i8> zeroinitializer
6901 // CHECK-LE: @llvm.ppc.altivec.lvx
6902 // CHECK-LE: @llvm.ppc.altivec.lvsl
6903 // CHECK-LE: @llvm.ppc.altivec.vperm
6904 // CHECK-LE: @llvm.ppc.altivec.lvsr
6905 // CHECK-LE: @llvm.ppc.altivec.vperm
6906 // CHECK-LE: @llvm.ppc.altivec.stvx
6907 
6908   vec_stvlx(vs, 0, &param_s);
6909 // CHECK: @llvm.ppc.altivec.lvx
6910 // CHECK: @llvm.ppc.altivec.lvsl
6911 // CHECK: store <8 x i16> zeroinitializer
6912 // CHECK: @llvm.ppc.altivec.vperm
6913 // CHECK: @llvm.ppc.altivec.lvsr
6914 // CHECK: @llvm.ppc.altivec.vperm
6915 // CHECK: @llvm.ppc.altivec.stvx
6916 // CHECK-LE: @llvm.ppc.altivec.lvx
6917 // CHECK-LE: @llvm.ppc.altivec.lvsl
6918 // CHECK-LE: store <8 x i16> zeroinitializer
6919 // CHECK-LE: @llvm.ppc.altivec.vperm
6920 // CHECK-LE: @llvm.ppc.altivec.lvsr
6921 // CHECK-LE: @llvm.ppc.altivec.vperm
6922 // CHECK-LE: @llvm.ppc.altivec.stvx
6923 
6924   vec_stvlx(vs, 0, &vs);
6925 // CHECK: @llvm.ppc.altivec.lvx
6926 // CHECK: @llvm.ppc.altivec.lvsl
6927 // CHECK: store <8 x i16> zeroinitializer
6928 // CHECK: @llvm.ppc.altivec.vperm
6929 // CHECK: @llvm.ppc.altivec.lvsr
6930 // CHECK: @llvm.ppc.altivec.vperm
6931 // CHECK: @llvm.ppc.altivec.stvx
6932 // CHECK-LE: @llvm.ppc.altivec.lvx
6933 // CHECK-LE: @llvm.ppc.altivec.lvsl
6934 // CHECK-LE: store <8 x i16> zeroinitializer
6935 // CHECK-LE: @llvm.ppc.altivec.vperm
6936 // CHECK-LE: @llvm.ppc.altivec.lvsr
6937 // CHECK-LE: @llvm.ppc.altivec.vperm
6938 // CHECK-LE: @llvm.ppc.altivec.stvx
6939 
6940   vec_stvlx(vus, 0, &param_us);
6941 // CHECK: @llvm.ppc.altivec.lvx
6942 // CHECK: @llvm.ppc.altivec.lvsl
6943 // CHECK: store <8 x i16> zeroinitializer
6944 // CHECK: @llvm.ppc.altivec.vperm
6945 // CHECK: @llvm.ppc.altivec.lvsr
6946 // CHECK: @llvm.ppc.altivec.vperm
6947 // CHECK: @llvm.ppc.altivec.stvx
6948 // CHECK-LE: @llvm.ppc.altivec.lvx
6949 // CHECK-LE: @llvm.ppc.altivec.lvsl
6950 // CHECK-LE: store <8 x i16> zeroinitializer
6951 // CHECK-LE: @llvm.ppc.altivec.vperm
6952 // CHECK-LE: @llvm.ppc.altivec.lvsr
6953 // CHECK-LE: @llvm.ppc.altivec.vperm
6954 // CHECK-LE: @llvm.ppc.altivec.stvx
6955 
6956   vec_stvlx(vus, 0, &vus);
6957 // CHECK: @llvm.ppc.altivec.lvx
6958 // CHECK: @llvm.ppc.altivec.lvsl
6959 // CHECK: store <8 x i16> zeroinitializer
6960 // CHECK: @llvm.ppc.altivec.vperm
6961 // CHECK: @llvm.ppc.altivec.lvsr
6962 // CHECK: @llvm.ppc.altivec.vperm
6963 // CHECK: @llvm.ppc.altivec.stvx
6964 // CHECK-LE: @llvm.ppc.altivec.lvx
6965 // CHECK-LE: @llvm.ppc.altivec.lvsl
6966 // CHECK-LE: store <8 x i16> zeroinitializer
6967 // CHECK-LE: @llvm.ppc.altivec.vperm
6968 // CHECK-LE: @llvm.ppc.altivec.lvsr
6969 // CHECK-LE: @llvm.ppc.altivec.vperm
6970 // CHECK-LE: @llvm.ppc.altivec.stvx
6971 
6972   vec_stvlx(vbs, 0, &vbs);
6973 // CHECK: store <8 x i16> zeroinitializer
6974 // CHECK: @llvm.ppc.altivec.lvx
6975 // CHECK: @llvm.ppc.altivec.lvsl
6976 // CHECK: @llvm.ppc.altivec.vperm
6977 // CHECK: @llvm.ppc.altivec.lvsr
6978 // CHECK: @llvm.ppc.altivec.vperm
6979 // CHECK: @llvm.ppc.altivec.stvx
6980 // CHECK-LE: store <8 x i16> zeroinitializer
6981 // CHECK-LE: @llvm.ppc.altivec.lvx
6982 // CHECK-LE: @llvm.ppc.altivec.lvsl
6983 // CHECK-LE: @llvm.ppc.altivec.vperm
6984 // CHECK-LE: @llvm.ppc.altivec.lvsr
6985 // CHECK-LE: @llvm.ppc.altivec.vperm
6986 // CHECK-LE: @llvm.ppc.altivec.stvx
6987 
6988   vec_stvlx(vp, 0, &vp);
6989 // CHECK: store <8 x i16> zeroinitializer
6990 // CHECK: @llvm.ppc.altivec.lvx
6991 // CHECK: @llvm.ppc.altivec.lvsl
6992 // CHECK: @llvm.ppc.altivec.vperm
6993 // CHECK: @llvm.ppc.altivec.lvsr
6994 // CHECK: @llvm.ppc.altivec.vperm
6995 // CHECK: @llvm.ppc.altivec.stvx
6996 // CHECK-LE: store <8 x i16> zeroinitializer
6997 // CHECK-LE: @llvm.ppc.altivec.lvx
6998 // CHECK-LE: @llvm.ppc.altivec.lvsl
6999 // CHECK-LE: @llvm.ppc.altivec.vperm
7000 // CHECK-LE: @llvm.ppc.altivec.lvsr
7001 // CHECK-LE: @llvm.ppc.altivec.vperm
7002 // CHECK-LE: @llvm.ppc.altivec.stvx
7003 
7004   vec_stvlx(vi, 0, &param_i);
7005 // CHECK: @llvm.ppc.altivec.lvx
7006 // CHECK: @llvm.ppc.altivec.lvsl
7007 // CHECK: store <4 x i32> zeroinitializer
7008 // CHECK: @llvm.ppc.altivec.vperm
7009 // CHECK: @llvm.ppc.altivec.lvsr
7010 // CHECK: @llvm.ppc.altivec.vperm
7011 // CHECK: @llvm.ppc.altivec.stvx
7012 // CHECK-LE: @llvm.ppc.altivec.lvx
7013 // CHECK-LE: @llvm.ppc.altivec.lvsl
7014 // CHECK-LE: store <4 x i32> zeroinitializer
7015 // CHECK-LE: @llvm.ppc.altivec.vperm
7016 // CHECK-LE: @llvm.ppc.altivec.lvsr
7017 // CHECK-LE: @llvm.ppc.altivec.vperm
7018 // CHECK-LE: @llvm.ppc.altivec.stvx
7019 
7020   vec_stvlx(vi, 0, &vi);
7021 // CHECK: @llvm.ppc.altivec.lvx
7022 // CHECK: @llvm.ppc.altivec.lvsl
7023 // CHECK: store <4 x i32> zeroinitializer
7024 // CHECK: @llvm.ppc.altivec.vperm
7025 // CHECK: @llvm.ppc.altivec.lvsr
7026 // CHECK: @llvm.ppc.altivec.vperm
7027 // CHECK: @llvm.ppc.altivec.stvx
7028 // CHECK-LE: @llvm.ppc.altivec.lvx
7029 // CHECK-LE: @llvm.ppc.altivec.lvsl
7030 // CHECK-LE: store <4 x i32> zeroinitializer
7031 // CHECK-LE: @llvm.ppc.altivec.vperm
7032 // CHECK-LE: @llvm.ppc.altivec.lvsr
7033 // CHECK-LE: @llvm.ppc.altivec.vperm
7034 // CHECK-LE: @llvm.ppc.altivec.stvx
7035 
7036   vec_stvlx(vui, 0, &param_ui);
7037 // CHECK: @llvm.ppc.altivec.lvx
7038 // CHECK: @llvm.ppc.altivec.lvsl
7039 // CHECK: store <4 x i32> zeroinitializer
7040 // CHECK: @llvm.ppc.altivec.vperm
7041 // CHECK: @llvm.ppc.altivec.lvsr
7042 // CHECK: @llvm.ppc.altivec.vperm
7043 // CHECK: @llvm.ppc.altivec.stvx
7044 // CHECK-LE: @llvm.ppc.altivec.lvx
7045 // CHECK-LE: @llvm.ppc.altivec.lvsl
7046 // CHECK-LE: store <4 x i32> zeroinitializer
7047 // CHECK-LE: @llvm.ppc.altivec.vperm
7048 // CHECK-LE: @llvm.ppc.altivec.lvsr
7049 // CHECK-LE: @llvm.ppc.altivec.vperm
7050 // CHECK-LE: @llvm.ppc.altivec.stvx
7051 
7052   vec_stvlx(vui, 0, &vui);
7053 // CHECK: @llvm.ppc.altivec.lvx
7054 // CHECK: @llvm.ppc.altivec.lvsl
7055 // CHECK: store <4 x i32> zeroinitializer
7056 // CHECK: @llvm.ppc.altivec.vperm
7057 // CHECK: @llvm.ppc.altivec.lvsr
7058 // CHECK: @llvm.ppc.altivec.vperm
7059 // CHECK: @llvm.ppc.altivec.stvx
7060 // CHECK-LE: @llvm.ppc.altivec.lvx
7061 // CHECK-LE: @llvm.ppc.altivec.lvsl
7062 // CHECK-LE: store <4 x i32> zeroinitializer
7063 // CHECK-LE: @llvm.ppc.altivec.vperm
7064 // CHECK-LE: @llvm.ppc.altivec.lvsr
7065 // CHECK-LE: @llvm.ppc.altivec.vperm
7066 // CHECK-LE: @llvm.ppc.altivec.stvx
7067 
7068   vec_stvlx(vbi, 0, &vbi);
7069 // CHECK: store <4 x i32> zeroinitializer
7070 // CHECK: @llvm.ppc.altivec.lvx
7071 // CHECK: @llvm.ppc.altivec.lvsl
7072 // CHECK: @llvm.ppc.altivec.vperm
7073 // CHECK: @llvm.ppc.altivec.lvsr
7074 // CHECK: @llvm.ppc.altivec.vperm
7075 // CHECK: @llvm.ppc.altivec.stvx
7076 // CHECK-LE: store <4 x i32> zeroinitializer
7077 // CHECK-LE: @llvm.ppc.altivec.lvx
7078 // CHECK-LE: @llvm.ppc.altivec.lvsl
7079 // CHECK-LE: @llvm.ppc.altivec.vperm
7080 // CHECK-LE: @llvm.ppc.altivec.lvsr
7081 // CHECK-LE: @llvm.ppc.altivec.vperm
7082 // CHECK-LE: @llvm.ppc.altivec.stvx
7083 
7084   vec_stvlx(vf, 0, &vf);
7085 // CHECK: @llvm.ppc.altivec.lvx
7086 // CHECK: @llvm.ppc.altivec.lvsl
7087 // CHECK: store <4 x float> zeroinitializer
7088 // CHECK: @llvm.ppc.altivec.vperm
7089 // CHECK: @llvm.ppc.altivec.lvsr
7090 // CHECK: @llvm.ppc.altivec.vperm
7091 // CHECK: @llvm.ppc.altivec.stvx
7092 // CHECK-LE: @llvm.ppc.altivec.lvx
7093 // CHECK-LE: @llvm.ppc.altivec.lvsl
7094 // CHECK-LE: store <4 x float> zeroinitializer
7095 // CHECK-LE: @llvm.ppc.altivec.vperm
7096 // CHECK-LE: @llvm.ppc.altivec.lvsr
7097 // CHECK-LE: @llvm.ppc.altivec.vperm
7098 // CHECK-LE: @llvm.ppc.altivec.stvx
7099 
7100   /* vec_stvlxl */
7101   vec_stvlxl(vsc, 0, &param_sc);
7102 // CHECK: @llvm.ppc.altivec.lvx
7103 // CHECK: @llvm.ppc.altivec.lvsl
7104 // CHECK: store <16 x i8> zeroinitializer
7105 // CHECK: @llvm.ppc.altivec.vperm
7106 // CHECK: @llvm.ppc.altivec.lvsr
7107 // CHECK: @llvm.ppc.altivec.vperm
7108 // CHECK: @llvm.ppc.altivec.stvxl
7109 // CHECK-LE: @llvm.ppc.altivec.lvx
7110 // CHECK-LE: @llvm.ppc.altivec.lvsl
7111 // CHECK-LE: store <16 x i8> zeroinitializer
7112 // CHECK-LE: @llvm.ppc.altivec.vperm
7113 // CHECK-LE: @llvm.ppc.altivec.lvsr
7114 // CHECK-LE: @llvm.ppc.altivec.vperm
7115 // CHECK-LE: @llvm.ppc.altivec.stvxl
7116 
7117   vec_stvlxl(vsc, 0, &vsc);
7118 // CHECK: @llvm.ppc.altivec.lvx
7119 // CHECK: @llvm.ppc.altivec.lvsl
7120 // CHECK: store <16 x i8> zeroinitializer
7121 // CHECK: @llvm.ppc.altivec.vperm
7122 // CHECK: @llvm.ppc.altivec.lvsr
7123 // CHECK: @llvm.ppc.altivec.vperm
7124 // CHECK: @llvm.ppc.altivec.stvxl
7125 // CHECK-LE: @llvm.ppc.altivec.lvx
7126 // CHECK-LE: @llvm.ppc.altivec.lvsl
7127 // CHECK-LE: store <16 x i8> zeroinitializer
7128 // CHECK-LE: @llvm.ppc.altivec.vperm
7129 // CHECK-LE: @llvm.ppc.altivec.lvsr
7130 // CHECK-LE: @llvm.ppc.altivec.vperm
7131 // CHECK-LE: @llvm.ppc.altivec.stvxl
7132 
7133   vec_stvlxl(vuc, 0, &param_uc);
7134 // CHECK: @llvm.ppc.altivec.lvx
7135 // CHECK: @llvm.ppc.altivec.lvsl
7136 // CHECK: store <16 x i8> zeroinitializer
7137 // CHECK: @llvm.ppc.altivec.vperm
7138 // CHECK: @llvm.ppc.altivec.lvsr
7139 // CHECK: @llvm.ppc.altivec.vperm
7140 // CHECK: @llvm.ppc.altivec.stvxl
7141 // CHECK-LE: @llvm.ppc.altivec.lvx
7142 // CHECK-LE: @llvm.ppc.altivec.lvsl
7143 // CHECK-LE: store <16 x i8> zeroinitializer
7144 // CHECK-LE: @llvm.ppc.altivec.vperm
7145 // CHECK-LE: @llvm.ppc.altivec.lvsr
7146 // CHECK-LE: @llvm.ppc.altivec.vperm
7147 // CHECK-LE: @llvm.ppc.altivec.stvxl
7148 
7149   vec_stvlxl(vuc, 0, &vuc);
7150 // CHECK: @llvm.ppc.altivec.lvx
7151 // CHECK: @llvm.ppc.altivec.lvsl
7152 // CHECK: store <16 x i8> zeroinitializer
7153 // CHECK: @llvm.ppc.altivec.vperm
7154 // CHECK: @llvm.ppc.altivec.lvsr
7155 // CHECK: @llvm.ppc.altivec.vperm
7156 // CHECK: @llvm.ppc.altivec.stvxl
7157 // CHECK-LE: @llvm.ppc.altivec.lvx
7158 // CHECK-LE: @llvm.ppc.altivec.lvsl
7159 // CHECK-LE: store <16 x i8> zeroinitializer
7160 // CHECK-LE: @llvm.ppc.altivec.vperm
7161 // CHECK-LE: @llvm.ppc.altivec.lvsr
7162 // CHECK-LE: @llvm.ppc.altivec.vperm
7163 // CHECK-LE: @llvm.ppc.altivec.stvxl
7164 
7165   vec_stvlxl(vbc, 0, &vbc);
7166 // CHECK: store <16 x i8> zeroinitializer
7167 // CHECK: @llvm.ppc.altivec.lvx
7168 // CHECK: @llvm.ppc.altivec.lvsl
7169 // CHECK: @llvm.ppc.altivec.vperm
7170 // CHECK: @llvm.ppc.altivec.lvsr
7171 // CHECK: @llvm.ppc.altivec.vperm
7172 // CHECK: @llvm.ppc.altivec.stvxl
7173 // CHECK-LE: store <16 x i8> zeroinitializer
7174 // CHECK-LE: @llvm.ppc.altivec.lvx
7175 // CHECK-LE: @llvm.ppc.altivec.lvsl
7176 // CHECK-LE: @llvm.ppc.altivec.vperm
7177 // CHECK-LE: @llvm.ppc.altivec.lvsr
7178 // CHECK-LE: @llvm.ppc.altivec.vperm
7179 // CHECK-LE: @llvm.ppc.altivec.stvxl
7180 
7181   vec_stvlxl(vs, 0, &param_s);
7182 // CHECK: @llvm.ppc.altivec.lvx
7183 // CHECK: @llvm.ppc.altivec.lvsl
7184 // CHECK: store <8 x i16> zeroinitializer
7185 // CHECK: @llvm.ppc.altivec.vperm
7186 // CHECK: @llvm.ppc.altivec.lvsr
7187 // CHECK: @llvm.ppc.altivec.vperm
7188 // CHECK: @llvm.ppc.altivec.stvxl
7189 // CHECK-LE: @llvm.ppc.altivec.lvx
7190 // CHECK-LE: @llvm.ppc.altivec.lvsl
7191 // CHECK-LE: store <8 x i16> zeroinitializer
7192 // CHECK-LE: @llvm.ppc.altivec.vperm
7193 // CHECK-LE: @llvm.ppc.altivec.lvsr
7194 // CHECK-LE: @llvm.ppc.altivec.vperm
7195 // CHECK-LE: @llvm.ppc.altivec.stvxl
7196 
7197   vec_stvlxl(vs, 0, &vs);
7198 // CHECK: @llvm.ppc.altivec.lvx
7199 // CHECK: @llvm.ppc.altivec.lvsl
7200 // CHECK: store <8 x i16> zeroinitializer
7201 // CHECK: @llvm.ppc.altivec.vperm
7202 // CHECK: @llvm.ppc.altivec.lvsr
7203 // CHECK: @llvm.ppc.altivec.vperm
7204 // CHECK: @llvm.ppc.altivec.stvxl
7205 // CHECK-LE: @llvm.ppc.altivec.lvx
7206 // CHECK-LE: @llvm.ppc.altivec.lvsl
7207 // CHECK-LE: store <8 x i16> zeroinitializer
7208 // CHECK-LE: @llvm.ppc.altivec.vperm
7209 // CHECK-LE: @llvm.ppc.altivec.lvsr
7210 // CHECK-LE: @llvm.ppc.altivec.vperm
7211 // CHECK-LE: @llvm.ppc.altivec.stvxl
7212 
7213   vec_stvlxl(vus, 0, &param_us);
7214 // CHECK: @llvm.ppc.altivec.lvx
7215 // CHECK: @llvm.ppc.altivec.lvsl
7216 // CHECK: store <8 x i16> zeroinitializer
7217 // CHECK: @llvm.ppc.altivec.vperm
7218 // CHECK: @llvm.ppc.altivec.lvsr
7219 // CHECK: @llvm.ppc.altivec.vperm
7220 // CHECK: @llvm.ppc.altivec.stvxl
7221 // CHECK-LE: @llvm.ppc.altivec.lvx
7222 // CHECK-LE: @llvm.ppc.altivec.lvsl
7223 // CHECK-LE: store <8 x i16> zeroinitializer
7224 // CHECK-LE: @llvm.ppc.altivec.vperm
7225 // CHECK-LE: @llvm.ppc.altivec.lvsr
7226 // CHECK-LE: @llvm.ppc.altivec.vperm
7227 // CHECK-LE: @llvm.ppc.altivec.stvxl
7228 
7229   vec_stvlxl(vus, 0, &vus);
7230 // CHECK: @llvm.ppc.altivec.lvx
7231 // CHECK: @llvm.ppc.altivec.lvsl
7232 // CHECK: store <8 x i16> zeroinitializer
7233 // CHECK: @llvm.ppc.altivec.vperm
7234 // CHECK: @llvm.ppc.altivec.lvsr
7235 // CHECK: @llvm.ppc.altivec.vperm
7236 // CHECK: @llvm.ppc.altivec.stvxl
7237 // CHECK-LE: @llvm.ppc.altivec.lvx
7238 // CHECK-LE: @llvm.ppc.altivec.lvsl
7239 // CHECK-LE: store <8 x i16> zeroinitializer
7240 // CHECK-LE: @llvm.ppc.altivec.vperm
7241 // CHECK-LE: @llvm.ppc.altivec.lvsr
7242 // CHECK-LE: @llvm.ppc.altivec.vperm
7243 // CHECK-LE: @llvm.ppc.altivec.stvxl
7244 
7245   vec_stvlxl(vbs, 0, &vbs);
7246 // CHECK: store <8 x i16> zeroinitializer
7247 // CHECK: @llvm.ppc.altivec.lvx
7248 // CHECK: @llvm.ppc.altivec.lvsl
7249 // CHECK: @llvm.ppc.altivec.vperm
7250 // CHECK: @llvm.ppc.altivec.lvsr
7251 // CHECK: @llvm.ppc.altivec.vperm
7252 // CHECK: @llvm.ppc.altivec.stvxl
7253 // CHECK-LE: store <8 x i16> zeroinitializer
7254 // CHECK-LE: @llvm.ppc.altivec.lvx
7255 // CHECK-LE: @llvm.ppc.altivec.lvsl
7256 // CHECK-LE: @llvm.ppc.altivec.vperm
7257 // CHECK-LE: @llvm.ppc.altivec.lvsr
7258 // CHECK-LE: @llvm.ppc.altivec.vperm
7259 // CHECK-LE: @llvm.ppc.altivec.stvxl
7260 
7261   vec_stvlxl(vp, 0, &vp);
7262 // CHECK: store <8 x i16> zeroinitializer
7263 // CHECK: @llvm.ppc.altivec.lvx
7264 // CHECK: @llvm.ppc.altivec.lvsl
7265 // CHECK: @llvm.ppc.altivec.vperm
7266 // CHECK: @llvm.ppc.altivec.lvsr
7267 // CHECK: @llvm.ppc.altivec.vperm
7268 // CHECK: @llvm.ppc.altivec.stvxl
7269 // CHECK-LE: store <8 x i16> zeroinitializer
7270 // CHECK-LE: @llvm.ppc.altivec.lvx
7271 // CHECK-LE: @llvm.ppc.altivec.lvsl
7272 // CHECK-LE: @llvm.ppc.altivec.vperm
7273 // CHECK-LE: @llvm.ppc.altivec.lvsr
7274 // CHECK-LE: @llvm.ppc.altivec.vperm
7275 // CHECK-LE: @llvm.ppc.altivec.stvxl
7276 
7277   vec_stvlxl(vi, 0, &param_i);
7278 // CHECK: @llvm.ppc.altivec.lvx
7279 // CHECK: @llvm.ppc.altivec.lvsl
7280 // CHECK: store <4 x i32> zeroinitializer
7281 // CHECK: @llvm.ppc.altivec.vperm
7282 // CHECK: @llvm.ppc.altivec.lvsr
7283 // CHECK: @llvm.ppc.altivec.vperm
7284 // CHECK: @llvm.ppc.altivec.stvxl
7285 // CHECK-LE: @llvm.ppc.altivec.lvx
7286 // CHECK-LE: @llvm.ppc.altivec.lvsl
7287 // CHECK-LE: store <4 x i32> zeroinitializer
7288 // CHECK-LE: @llvm.ppc.altivec.vperm
7289 // CHECK-LE: @llvm.ppc.altivec.lvsr
7290 // CHECK-LE: @llvm.ppc.altivec.vperm
7291 // CHECK-LE: @llvm.ppc.altivec.stvxl
7292 
7293   vec_stvlxl(vi, 0, &vi);
7294 // CHECK: @llvm.ppc.altivec.lvx
7295 // CHECK: @llvm.ppc.altivec.lvsl
7296 // CHECK: store <4 x i32> zeroinitializer
7297 // CHECK: @llvm.ppc.altivec.vperm
7298 // CHECK: @llvm.ppc.altivec.lvsr
7299 // CHECK: @llvm.ppc.altivec.vperm
7300 // CHECK: @llvm.ppc.altivec.stvxl
7301 // CHECK-LE: @llvm.ppc.altivec.lvx
7302 // CHECK-LE: @llvm.ppc.altivec.lvsl
7303 // CHECK-LE: store <4 x i32> zeroinitializer
7304 // CHECK-LE: @llvm.ppc.altivec.vperm
7305 // CHECK-LE: @llvm.ppc.altivec.lvsr
7306 // CHECK-LE: @llvm.ppc.altivec.vperm
7307 // CHECK-LE: @llvm.ppc.altivec.stvxl
7308 
7309   vec_stvlxl(vui, 0, &param_ui);
7310 // CHECK: @llvm.ppc.altivec.lvx
7311 // CHECK: @llvm.ppc.altivec.lvsl
7312 // CHECK: store <4 x i32> zeroinitializer
7313 // CHECK: @llvm.ppc.altivec.vperm
7314 // CHECK: @llvm.ppc.altivec.lvsr
7315 // CHECK: @llvm.ppc.altivec.vperm
7316 // CHECK: @llvm.ppc.altivec.stvxl
7317 // CHECK-LE: @llvm.ppc.altivec.lvx
7318 // CHECK-LE: @llvm.ppc.altivec.lvsl
7319 // CHECK-LE: store <4 x i32> zeroinitializer
7320 // CHECK-LE: @llvm.ppc.altivec.vperm
7321 // CHECK-LE: @llvm.ppc.altivec.lvsr
7322 // CHECK-LE: @llvm.ppc.altivec.vperm
7323 // CHECK-LE: @llvm.ppc.altivec.stvxl
7324 
7325   vec_stvlxl(vui, 0, &vui);
7326 // CHECK: @llvm.ppc.altivec.lvx
7327 // CHECK: @llvm.ppc.altivec.lvsl
7328 // CHECK: store <4 x i32> zeroinitializer
7329 // CHECK: @llvm.ppc.altivec.vperm
7330 // CHECK: @llvm.ppc.altivec.lvsr
7331 // CHECK: @llvm.ppc.altivec.vperm
7332 // CHECK: @llvm.ppc.altivec.stvxl
7333 // CHECK-LE: @llvm.ppc.altivec.lvx
7334 // CHECK-LE: @llvm.ppc.altivec.lvsl
7335 // CHECK-LE: store <4 x i32> zeroinitializer
7336 // CHECK-LE: @llvm.ppc.altivec.vperm
7337 // CHECK-LE: @llvm.ppc.altivec.lvsr
7338 // CHECK-LE: @llvm.ppc.altivec.vperm
7339 // CHECK-LE: @llvm.ppc.altivec.stvxl
7340 
7341   vec_stvlxl(vbi, 0, &vbi);
7342 // CHECK: store <4 x i32> zeroinitializer
7343 // CHECK: @llvm.ppc.altivec.lvx
7344 // CHECK: @llvm.ppc.altivec.lvsl
7345 // CHECK: @llvm.ppc.altivec.vperm
7346 // CHECK: @llvm.ppc.altivec.lvsr
7347 // CHECK: @llvm.ppc.altivec.vperm
7348 // CHECK: @llvm.ppc.altivec.stvxl
7349 // CHECK-LE: store <4 x i32> zeroinitializer
7350 // CHECK-LE: @llvm.ppc.altivec.lvx
7351 // CHECK-LE: @llvm.ppc.altivec.lvsl
7352 // CHECK-LE: @llvm.ppc.altivec.vperm
7353 // CHECK-LE: @llvm.ppc.altivec.lvsr
7354 // CHECK-LE: @llvm.ppc.altivec.vperm
7355 // CHECK-LE: @llvm.ppc.altivec.stvxl
7356 
7357   vec_stvlxl(vf, 0, &vf);
7358 // CHECK: @llvm.ppc.altivec.lvx
7359 // CHECK: @llvm.ppc.altivec.lvsl
7360 // CHECK: store <4 x float> zeroinitializer
7361 // CHECK: @llvm.ppc.altivec.vperm
7362 // CHECK: @llvm.ppc.altivec.lvsr
7363 // CHECK: @llvm.ppc.altivec.vperm
7364 // CHECK: @llvm.ppc.altivec.stvxl
7365 // CHECK-LE: @llvm.ppc.altivec.lvx
7366 // CHECK-LE: @llvm.ppc.altivec.lvsl
7367 // CHECK-LE: store <4 x float> zeroinitializer
7368 // CHECK-LE: @llvm.ppc.altivec.vperm
7369 // CHECK-LE: @llvm.ppc.altivec.lvsr
7370 // CHECK-LE: @llvm.ppc.altivec.vperm
7371 // CHECK-LE: @llvm.ppc.altivec.stvxl
7372 
7373   /* vec_stvrx */
7374   vec_stvrx(vsc, 0, &param_sc);
7375 // CHECK: @llvm.ppc.altivec.lvx
7376 // CHECK: @llvm.ppc.altivec.lvsl
7377 // CHECK: store <16 x i8> zeroinitializer
7378 // CHECK: @llvm.ppc.altivec.vperm
7379 // CHECK: @llvm.ppc.altivec.lvsr
7380 // CHECK: @llvm.ppc.altivec.vperm
7381 // CHECK: @llvm.ppc.altivec.stvx
7382 // CHECK-LE: @llvm.ppc.altivec.lvx
7383 // CHECK-LE: @llvm.ppc.altivec.lvsl
7384 // CHECK-LE: store <16 x i8> zeroinitializer
7385 // CHECK-LE: @llvm.ppc.altivec.vperm
7386 // CHECK-LE: @llvm.ppc.altivec.lvsr
7387 // CHECK-LE: @llvm.ppc.altivec.vperm
7388 // CHECK-LE: @llvm.ppc.altivec.stvx
7389 
7390   vec_stvrx(vsc, 0, &vsc);
7391 // CHECK: @llvm.ppc.altivec.lvx
7392 // CHECK: @llvm.ppc.altivec.lvsl
7393 // CHECK: store <16 x i8> zeroinitializer
7394 // CHECK: @llvm.ppc.altivec.vperm
7395 // CHECK: @llvm.ppc.altivec.lvsr
7396 // CHECK: @llvm.ppc.altivec.vperm
7397 // CHECK: @llvm.ppc.altivec.stvx
7398 // CHECK-LE: @llvm.ppc.altivec.lvx
7399 // CHECK-LE: @llvm.ppc.altivec.lvsl
7400 // CHECK-LE: store <16 x i8> zeroinitializer
7401 // CHECK-LE: @llvm.ppc.altivec.vperm
7402 // CHECK-LE: @llvm.ppc.altivec.lvsr
7403 // CHECK-LE: @llvm.ppc.altivec.vperm
7404 // CHECK-LE: @llvm.ppc.altivec.stvx
7405 
7406   vec_stvrx(vuc, 0, &param_uc);
7407 // CHECK: @llvm.ppc.altivec.lvx
7408 // CHECK: @llvm.ppc.altivec.lvsl
7409 // CHECK: store <16 x i8> zeroinitializer
7410 // CHECK: @llvm.ppc.altivec.vperm
7411 // CHECK: @llvm.ppc.altivec.lvsr
7412 // CHECK: @llvm.ppc.altivec.vperm
7413 // CHECK: @llvm.ppc.altivec.stvx
7414 // CHECK-LE: @llvm.ppc.altivec.lvx
7415 // CHECK-LE: @llvm.ppc.altivec.lvsl
7416 // CHECK-LE: store <16 x i8> zeroinitializer
7417 // CHECK-LE: @llvm.ppc.altivec.vperm
7418 // CHECK-LE: @llvm.ppc.altivec.lvsr
7419 // CHECK-LE: @llvm.ppc.altivec.vperm
7420 // CHECK-LE: @llvm.ppc.altivec.stvx
7421 
7422   vec_stvrx(vuc, 0, &vuc);
7423 // CHECK: @llvm.ppc.altivec.lvx
7424 // CHECK: @llvm.ppc.altivec.lvsl
7425 // CHECK: store <16 x i8> zeroinitializer
7426 // CHECK: @llvm.ppc.altivec.vperm
7427 // CHECK: @llvm.ppc.altivec.lvsr
7428 // CHECK: @llvm.ppc.altivec.vperm
7429 // CHECK: @llvm.ppc.altivec.stvx
7430 // CHECK-LE: @llvm.ppc.altivec.lvx
7431 // CHECK-LE: @llvm.ppc.altivec.lvsl
7432 // CHECK-LE: store <16 x i8> zeroinitializer
7433 // CHECK-LE: @llvm.ppc.altivec.vperm
7434 // CHECK-LE: @llvm.ppc.altivec.lvsr
7435 // CHECK-LE: @llvm.ppc.altivec.vperm
7436 // CHECK-LE: @llvm.ppc.altivec.stvx
7437 
7438   vec_stvrx(vbc, 0, &vbc);
7439 // CHECK: @llvm.ppc.altivec.lvx
7440 // CHECK: store <16 x i8> zeroinitializer
7441 // CHECK: @llvm.ppc.altivec.lvsl
7442 // CHECK: @llvm.ppc.altivec.vperm
7443 // CHECK: @llvm.ppc.altivec.lvsr
7444 // CHECK: @llvm.ppc.altivec.vperm
7445 // CHECK: @llvm.ppc.altivec.stvx
7446 // CHECK-LE: @llvm.ppc.altivec.lvx
7447 // CHECK-LE: store <16 x i8> zeroinitializer
7448 // CHECK-LE: @llvm.ppc.altivec.lvsl
7449 // CHECK-LE: @llvm.ppc.altivec.vperm
7450 // CHECK-LE: @llvm.ppc.altivec.lvsr
7451 // CHECK-LE: @llvm.ppc.altivec.vperm
7452 // CHECK-LE: @llvm.ppc.altivec.stvx
7453 
7454   vec_stvrx(vs, 0, &param_s);
7455 // CHECK: @llvm.ppc.altivec.lvx
7456 // CHECK: @llvm.ppc.altivec.lvsl
7457 // CHECK: store <8 x i16> zeroinitializer
7458 // CHECK: @llvm.ppc.altivec.vperm
7459 // CHECK: @llvm.ppc.altivec.lvsr
7460 // CHECK: @llvm.ppc.altivec.vperm
7461 // CHECK: @llvm.ppc.altivec.stvx
7462 // CHECK-LE: @llvm.ppc.altivec.lvx
7463 // CHECK-LE: @llvm.ppc.altivec.lvsl
7464 // CHECK-LE: store <8 x i16> zeroinitializer
7465 // CHECK-LE: @llvm.ppc.altivec.vperm
7466 // CHECK-LE: @llvm.ppc.altivec.lvsr
7467 // CHECK-LE: @llvm.ppc.altivec.vperm
7468 // CHECK-LE: @llvm.ppc.altivec.stvx
7469 
7470   vec_stvrx(vs, 0, &vs);
7471 // CHECK: @llvm.ppc.altivec.lvx
7472 // CHECK: @llvm.ppc.altivec.lvsl
7473 // CHECK: store <8 x i16> zeroinitializer
7474 // CHECK: @llvm.ppc.altivec.vperm
7475 // CHECK: @llvm.ppc.altivec.lvsr
7476 // CHECK: @llvm.ppc.altivec.vperm
7477 // CHECK: @llvm.ppc.altivec.stvx
7478 // CHECK-LE: @llvm.ppc.altivec.lvx
7479 // CHECK-LE: @llvm.ppc.altivec.lvsl
7480 // CHECK-LE: store <8 x i16> zeroinitializer
7481 // CHECK-LE: @llvm.ppc.altivec.vperm
7482 // CHECK-LE: @llvm.ppc.altivec.lvsr
7483 // CHECK-LE: @llvm.ppc.altivec.vperm
7484 // CHECK-LE: @llvm.ppc.altivec.stvx
7485 
7486   vec_stvrx(vus, 0, &param_us);
7487 // CHECK: @llvm.ppc.altivec.lvx
7488 // CHECK: @llvm.ppc.altivec.lvsl
7489 // CHECK: store <8 x i16> zeroinitializer
7490 // CHECK: @llvm.ppc.altivec.vperm
7491 // CHECK: @llvm.ppc.altivec.lvsr
7492 // CHECK: @llvm.ppc.altivec.vperm
7493 // CHECK: @llvm.ppc.altivec.stvx
7494 // CHECK-LE: @llvm.ppc.altivec.lvx
7495 // CHECK-LE: @llvm.ppc.altivec.lvsl
7496 // CHECK-LE: store <8 x i16> zeroinitializer
7497 // CHECK-LE: @llvm.ppc.altivec.vperm
7498 // CHECK-LE: @llvm.ppc.altivec.lvsr
7499 // CHECK-LE: @llvm.ppc.altivec.vperm
7500 // CHECK-LE: @llvm.ppc.altivec.stvx
7501 
7502   vec_stvrx(vus, 0, &vus);
7503 // CHECK: @llvm.ppc.altivec.lvx
7504 // CHECK: @llvm.ppc.altivec.lvsl
7505 // CHECK: store <8 x i16> zeroinitializer
7506 // CHECK: @llvm.ppc.altivec.vperm
7507 // CHECK: @llvm.ppc.altivec.lvsr
7508 // CHECK: @llvm.ppc.altivec.vperm
7509 // CHECK: @llvm.ppc.altivec.stvx
7510 // CHECK-LE: @llvm.ppc.altivec.lvx
7511 // CHECK-LE: @llvm.ppc.altivec.lvsl
7512 // CHECK-LE: store <8 x i16> zeroinitializer
7513 // CHECK-LE: @llvm.ppc.altivec.vperm
7514 // CHECK-LE: @llvm.ppc.altivec.lvsr
7515 // CHECK-LE: @llvm.ppc.altivec.vperm
7516 // CHECK-LE: @llvm.ppc.altivec.stvx
7517 
7518   vec_stvrx(vbs, 0, &vbs);
7519 // CHECK: @llvm.ppc.altivec.lvx
7520 // CHECK: store <8 x i16> zeroinitializer
7521 // CHECK: @llvm.ppc.altivec.lvsl
7522 // CHECK: @llvm.ppc.altivec.vperm
7523 // CHECK: @llvm.ppc.altivec.lvsr
7524 // CHECK: @llvm.ppc.altivec.vperm
7525 // CHECK: @llvm.ppc.altivec.stvx
7526 // CHECK-LE: @llvm.ppc.altivec.lvx
7527 // CHECK-LE: store <8 x i16> zeroinitializer
7528 // CHECK-LE: @llvm.ppc.altivec.lvsl
7529 // CHECK-LE: @llvm.ppc.altivec.vperm
7530 // CHECK-LE: @llvm.ppc.altivec.lvsr
7531 // CHECK-LE: @llvm.ppc.altivec.vperm
7532 // CHECK-LE: @llvm.ppc.altivec.stvx
7533 
7534   vec_stvrx(vp, 0, &vp);
7535 // CHECK: @llvm.ppc.altivec.lvx
7536 // CHECK: store <8 x i16> zeroinitializer
7537 // CHECK: @llvm.ppc.altivec.lvsl
7538 // CHECK: @llvm.ppc.altivec.vperm
7539 // CHECK: @llvm.ppc.altivec.lvsr
7540 // CHECK: @llvm.ppc.altivec.vperm
7541 // CHECK: @llvm.ppc.altivec.stvx
7542 // CHECK-LE: @llvm.ppc.altivec.lvx
7543 // CHECK-LE: store <8 x i16> zeroinitializer
7544 // CHECK-LE: @llvm.ppc.altivec.lvsl
7545 // CHECK-LE: @llvm.ppc.altivec.vperm
7546 // CHECK-LE: @llvm.ppc.altivec.lvsr
7547 // CHECK-LE: @llvm.ppc.altivec.vperm
7548 // CHECK-LE: @llvm.ppc.altivec.stvx
7549 
7550   vec_stvrx(vi, 0, &param_i);
7551 // CHECK: @llvm.ppc.altivec.lvx
7552 // CHECK: @llvm.ppc.altivec.lvsl
7553 // CHECK: store <4 x i32> zeroinitializer
7554 // CHECK: @llvm.ppc.altivec.vperm
7555 // CHECK: @llvm.ppc.altivec.lvsr
7556 // CHECK: @llvm.ppc.altivec.vperm
7557 // CHECK: @llvm.ppc.altivec.stvx
7558 // CHECK-LE: @llvm.ppc.altivec.lvx
7559 // CHECK-LE: @llvm.ppc.altivec.lvsl
7560 // CHECK-LE: store <4 x i32> zeroinitializer
7561 // CHECK-LE: @llvm.ppc.altivec.vperm
7562 // CHECK-LE: @llvm.ppc.altivec.lvsr
7563 // CHECK-LE: @llvm.ppc.altivec.vperm
7564 // CHECK-LE: @llvm.ppc.altivec.stvx
7565 
7566   vec_stvrx(vi, 0, &vi);
7567 // CHECK: @llvm.ppc.altivec.lvx
7568 // CHECK: @llvm.ppc.altivec.lvsl
7569 // CHECK: store <4 x i32> zeroinitializer
7570 // CHECK: @llvm.ppc.altivec.vperm
7571 // CHECK: @llvm.ppc.altivec.lvsr
7572 // CHECK: @llvm.ppc.altivec.vperm
7573 // CHECK: @llvm.ppc.altivec.stvx
7574 // CHECK-LE: @llvm.ppc.altivec.lvx
7575 // CHECK-LE: @llvm.ppc.altivec.lvsl
7576 // CHECK-LE: store <4 x i32> zeroinitializer
7577 // CHECK-LE: @llvm.ppc.altivec.vperm
7578 // CHECK-LE: @llvm.ppc.altivec.lvsr
7579 // CHECK-LE: @llvm.ppc.altivec.vperm
7580 // CHECK-LE: @llvm.ppc.altivec.stvx
7581 
7582   vec_stvrx(vui, 0, &param_ui);
7583 // CHECK: @llvm.ppc.altivec.lvx
7584 // CHECK: @llvm.ppc.altivec.lvsl
7585 // CHECK: store <4 x i32> zeroinitializer
7586 // CHECK: @llvm.ppc.altivec.vperm
7587 // CHECK: @llvm.ppc.altivec.lvsr
7588 // CHECK: @llvm.ppc.altivec.vperm
7589 // CHECK: @llvm.ppc.altivec.stvx
7590 // CHECK-LE: @llvm.ppc.altivec.lvx
7591 // CHECK-LE: @llvm.ppc.altivec.lvsl
7592 // CHECK-LE: store <4 x i32> zeroinitializer
7593 // CHECK-LE: @llvm.ppc.altivec.vperm
7594 // CHECK-LE: @llvm.ppc.altivec.lvsr
7595 // CHECK-LE: @llvm.ppc.altivec.vperm
7596 // CHECK-LE: @llvm.ppc.altivec.stvx
7597 
7598   vec_stvrx(vui, 0, &vui);
7599 // CHECK: @llvm.ppc.altivec.lvx
7600 // CHECK: @llvm.ppc.altivec.lvsl
7601 // CHECK: store <4 x i32> zeroinitializer
7602 // CHECK: @llvm.ppc.altivec.vperm
7603 // CHECK: @llvm.ppc.altivec.lvsr
7604 // CHECK: @llvm.ppc.altivec.vperm
7605 // CHECK: @llvm.ppc.altivec.stvx
7606 // CHECK-LE: @llvm.ppc.altivec.lvx
7607 // CHECK-LE: @llvm.ppc.altivec.lvsl
7608 // CHECK-LE: store <4 x i32> zeroinitializer
7609 // CHECK-LE: @llvm.ppc.altivec.vperm
7610 // CHECK-LE: @llvm.ppc.altivec.lvsr
7611 // CHECK-LE: @llvm.ppc.altivec.vperm
7612 // CHECK-LE: @llvm.ppc.altivec.stvx
7613 
7614   vec_stvrx(vbi, 0, &vbi);
7615 // CHECK: @llvm.ppc.altivec.lvx
7616 // CHECK: store <4 x i32> zeroinitializer
7617 // CHECK: @llvm.ppc.altivec.lvsl
7618 // CHECK: @llvm.ppc.altivec.vperm
7619 // CHECK: @llvm.ppc.altivec.lvsr
7620 // CHECK: @llvm.ppc.altivec.vperm
7621 // CHECK: @llvm.ppc.altivec.stvx
7622 // CHECK-LE: @llvm.ppc.altivec.lvx
7623 // CHECK-LE: store <4 x i32> zeroinitializer
7624 // CHECK-LE: @llvm.ppc.altivec.lvsl
7625 // CHECK-LE: @llvm.ppc.altivec.vperm
7626 // CHECK-LE: @llvm.ppc.altivec.lvsr
7627 // CHECK-LE: @llvm.ppc.altivec.vperm
7628 // CHECK-LE: @llvm.ppc.altivec.stvx
7629 
7630   vec_stvrx(vf, 0, &vf);
7631 // CHECK: @llvm.ppc.altivec.lvx
7632 // CHECK: @llvm.ppc.altivec.lvsl
7633 // CHECK: store <4 x float> zeroinitializer
7634 // CHECK: @llvm.ppc.altivec.vperm
7635 // CHECK: @llvm.ppc.altivec.lvsr
7636 // CHECK: @llvm.ppc.altivec.vperm
7637 // CHECK: @llvm.ppc.altivec.stvx
7638 // CHECK-LE: @llvm.ppc.altivec.lvx
7639 // CHECK-LE: @llvm.ppc.altivec.lvsl
7640 // CHECK-LE: store <4 x float> zeroinitializer
7641 // CHECK-LE: @llvm.ppc.altivec.vperm
7642 // CHECK-LE: @llvm.ppc.altivec.lvsr
7643 // CHECK-LE: @llvm.ppc.altivec.vperm
7644 // CHECK-LE: @llvm.ppc.altivec.stvx
7645 
7646   /* vec_stvrxl */
7647   vec_stvrxl(vsc, 0, &param_sc);
7648 // CHECK: @llvm.ppc.altivec.lvx
7649 // CHECK: @llvm.ppc.altivec.lvsl
7650 // CHECK: store <16 x i8> zeroinitializer
7651 // CHECK: @llvm.ppc.altivec.vperm
7652 // CHECK: @llvm.ppc.altivec.lvsr
7653 // CHECK: @llvm.ppc.altivec.vperm
7654 // CHECK: @llvm.ppc.altivec.stvxl
7655 // CHECK-LE: @llvm.ppc.altivec.lvx
7656 // CHECK-LE: @llvm.ppc.altivec.lvsl
7657 // CHECK-LE: store <16 x i8> zeroinitializer
7658 // CHECK-LE: @llvm.ppc.altivec.vperm
7659 // CHECK-LE: @llvm.ppc.altivec.lvsr
7660 // CHECK-LE: @llvm.ppc.altivec.vperm
7661 // CHECK-LE: @llvm.ppc.altivec.stvxl
7662 
7663   vec_stvrxl(vsc, 0, &vsc);
7664 // CHECK: @llvm.ppc.altivec.lvx
7665 // CHECK: @llvm.ppc.altivec.lvsl
7666 // CHECK: store <16 x i8> zeroinitializer
7667 // CHECK: @llvm.ppc.altivec.vperm
7668 // CHECK: @llvm.ppc.altivec.lvsr
7669 // CHECK: @llvm.ppc.altivec.vperm
7670 // CHECK: @llvm.ppc.altivec.stvxl
7671 // CHECK-LE: @llvm.ppc.altivec.lvx
7672 // CHECK-LE: @llvm.ppc.altivec.lvsl
7673 // CHECK-LE: store <16 x i8> zeroinitializer
7674 // CHECK-LE: @llvm.ppc.altivec.vperm
7675 // CHECK-LE: @llvm.ppc.altivec.lvsr
7676 // CHECK-LE: @llvm.ppc.altivec.vperm
7677 // CHECK-LE: @llvm.ppc.altivec.stvxl
7678 
7679   vec_stvrxl(vuc, 0, &param_uc);
7680 // CHECK: @llvm.ppc.altivec.lvx
7681 // CHECK: @llvm.ppc.altivec.lvsl
7682 // CHECK: store <16 x i8> zeroinitializer
7683 // CHECK: @llvm.ppc.altivec.vperm
7684 // CHECK: @llvm.ppc.altivec.lvsr
7685 // CHECK: @llvm.ppc.altivec.vperm
7686 // CHECK: @llvm.ppc.altivec.stvxl
7687 // CHECK-LE: @llvm.ppc.altivec.lvx
7688 // CHECK-LE: @llvm.ppc.altivec.lvsl
7689 // CHECK-LE: store <16 x i8> zeroinitializer
7690 // CHECK-LE: @llvm.ppc.altivec.vperm
7691 // CHECK-LE: @llvm.ppc.altivec.lvsr
7692 // CHECK-LE: @llvm.ppc.altivec.vperm
7693 // CHECK-LE: @llvm.ppc.altivec.stvxl
7694 
7695   vec_stvrxl(vuc, 0, &vuc);
7696 // CHECK: @llvm.ppc.altivec.lvx
7697 // CHECK: @llvm.ppc.altivec.lvsl
7698 // CHECK: store <16 x i8> zeroinitializer
7699 // CHECK: @llvm.ppc.altivec.vperm
7700 // CHECK: @llvm.ppc.altivec.lvsr
7701 // CHECK: @llvm.ppc.altivec.vperm
7702 // CHECK: @llvm.ppc.altivec.stvxl
7703 // CHECK-LE: @llvm.ppc.altivec.lvx
7704 // CHECK-LE: @llvm.ppc.altivec.lvsl
7705 // CHECK-LE: store <16 x i8> zeroinitializer
7706 // CHECK-LE: @llvm.ppc.altivec.vperm
7707 // CHECK-LE: @llvm.ppc.altivec.lvsr
7708 // CHECK-LE: @llvm.ppc.altivec.vperm
7709 // CHECK-LE: @llvm.ppc.altivec.stvxl
7710 
7711   vec_stvrxl(vbc, 0, &vbc);
7712 // CHECK: @llvm.ppc.altivec.lvx
7713 // CHECK: store <16 x i8> zeroinitializer
7714 // CHECK: @llvm.ppc.altivec.lvsl
7715 // CHECK: @llvm.ppc.altivec.vperm
7716 // CHECK: @llvm.ppc.altivec.lvsr
7717 // CHECK: @llvm.ppc.altivec.vperm
7718 // CHECK: @llvm.ppc.altivec.stvxl
7719 // CHECK-LE: @llvm.ppc.altivec.lvx
7720 // CHECK-LE: store <16 x i8> zeroinitializer
7721 // CHECK-LE: @llvm.ppc.altivec.lvsl
7722 // CHECK-LE: @llvm.ppc.altivec.vperm
7723 // CHECK-LE: @llvm.ppc.altivec.lvsr
7724 // CHECK-LE: @llvm.ppc.altivec.vperm
7725 // CHECK-LE: @llvm.ppc.altivec.stvxl
7726 
7727   vec_stvrxl(vs, 0, &param_s);
7728 // CHECK: @llvm.ppc.altivec.lvx
7729 // CHECK: @llvm.ppc.altivec.lvsl
7730 // CHECK: store <8 x i16> zeroinitializer
7731 // CHECK: @llvm.ppc.altivec.vperm
7732 // CHECK: @llvm.ppc.altivec.lvsr
7733 // CHECK: @llvm.ppc.altivec.vperm
7734 // CHECK: @llvm.ppc.altivec.stvxl
7735 // CHECK-LE: @llvm.ppc.altivec.lvx
7736 // CHECK-LE: @llvm.ppc.altivec.lvsl
7737 // CHECK-LE: store <8 x i16> zeroinitializer
7738 // CHECK-LE: @llvm.ppc.altivec.vperm
7739 // CHECK-LE: @llvm.ppc.altivec.lvsr
7740 // CHECK-LE: @llvm.ppc.altivec.vperm
7741 // CHECK-LE: @llvm.ppc.altivec.stvxl
7742 
7743   vec_stvrxl(vs, 0, &vs);
7744 // CHECK: @llvm.ppc.altivec.lvx
7745 // CHECK: @llvm.ppc.altivec.lvsl
7746 // CHECK: store <8 x i16> zeroinitializer
7747 // CHECK: @llvm.ppc.altivec.vperm
7748 // CHECK: @llvm.ppc.altivec.lvsr
7749 // CHECK: @llvm.ppc.altivec.vperm
7750 // CHECK: @llvm.ppc.altivec.stvxl
7751 // CHECK-LE: @llvm.ppc.altivec.lvx
7752 // CHECK-LE: @llvm.ppc.altivec.lvsl
7753 // CHECK-LE: store <8 x i16> zeroinitializer
7754 // CHECK-LE: @llvm.ppc.altivec.vperm
7755 // CHECK-LE: @llvm.ppc.altivec.lvsr
7756 // CHECK-LE: @llvm.ppc.altivec.vperm
7757 // CHECK-LE: @llvm.ppc.altivec.stvxl
7758 
7759   vec_stvrxl(vus, 0, &param_us);
7760 // CHECK: @llvm.ppc.altivec.lvx
7761 // CHECK: @llvm.ppc.altivec.lvsl
7762 // CHECK: store <8 x i16> zeroinitializer
7763 // CHECK: @llvm.ppc.altivec.vperm
7764 // CHECK: @llvm.ppc.altivec.lvsr
7765 // CHECK: @llvm.ppc.altivec.vperm
7766 // CHECK: @llvm.ppc.altivec.stvxl
7767 // CHECK-LE: @llvm.ppc.altivec.lvx
7768 // CHECK-LE: @llvm.ppc.altivec.lvsl
7769 // CHECK-LE: store <8 x i16> zeroinitializer
7770 // CHECK-LE: @llvm.ppc.altivec.vperm
7771 // CHECK-LE: @llvm.ppc.altivec.lvsr
7772 // CHECK-LE: @llvm.ppc.altivec.vperm
7773 // CHECK-LE: @llvm.ppc.altivec.stvxl
7774 
7775   vec_stvrxl(vus, 0, &vus);
7776 // CHECK: @llvm.ppc.altivec.lvx
7777 // CHECK: @llvm.ppc.altivec.lvsl
7778 // CHECK: store <8 x i16> zeroinitializer
7779 // CHECK: @llvm.ppc.altivec.vperm
7780 // CHECK: @llvm.ppc.altivec.lvsr
7781 // CHECK: @llvm.ppc.altivec.vperm
7782 // CHECK: @llvm.ppc.altivec.stvxl
7783 // CHECK-LE: @llvm.ppc.altivec.lvx
7784 // CHECK-LE: @llvm.ppc.altivec.lvsl
7785 // CHECK-LE: store <8 x i16> zeroinitializer
7786 // CHECK-LE: @llvm.ppc.altivec.vperm
7787 // CHECK-LE: @llvm.ppc.altivec.lvsr
7788 // CHECK-LE: @llvm.ppc.altivec.vperm
7789 // CHECK-LE: @llvm.ppc.altivec.stvxl
7790 
7791   vec_stvrxl(vbs, 0, &vbs);
7792 // CHECK: @llvm.ppc.altivec.lvx
7793 // CHECK: store <8 x i16> zeroinitializer
7794 // CHECK: @llvm.ppc.altivec.lvsl
7795 // CHECK: @llvm.ppc.altivec.vperm
7796 // CHECK: @llvm.ppc.altivec.lvsr
7797 // CHECK: @llvm.ppc.altivec.vperm
7798 // CHECK: @llvm.ppc.altivec.stvxl
7799 // CHECK-LE: @llvm.ppc.altivec.lvx
7800 // CHECK-LE: store <8 x i16> zeroinitializer
7801 // CHECK-LE: @llvm.ppc.altivec.lvsl
7802 // CHECK-LE: @llvm.ppc.altivec.vperm
7803 // CHECK-LE: @llvm.ppc.altivec.lvsr
7804 // CHECK-LE: @llvm.ppc.altivec.vperm
7805 // CHECK-LE: @llvm.ppc.altivec.stvxl
7806 
7807   vec_stvrxl(vp, 0, &vp);
7808 // CHECK: @llvm.ppc.altivec.lvx
7809 // CHECK: store <8 x i16> zeroinitializer
7810 // CHECK: @llvm.ppc.altivec.lvsl
7811 // CHECK: @llvm.ppc.altivec.vperm
7812 // CHECK: @llvm.ppc.altivec.lvsr
7813 // CHECK: @llvm.ppc.altivec.vperm
7814 // CHECK: @llvm.ppc.altivec.stvxl
7815 // CHECK-LE: @llvm.ppc.altivec.lvx
7816 // CHECK-LE: store <8 x i16> zeroinitializer
7817 // CHECK-LE: @llvm.ppc.altivec.lvsl
7818 // CHECK-LE: @llvm.ppc.altivec.vperm
7819 // CHECK-LE: @llvm.ppc.altivec.lvsr
7820 // CHECK-LE: @llvm.ppc.altivec.vperm
7821 // CHECK-LE: @llvm.ppc.altivec.stvxl
7822 
7823   vec_stvrxl(vi, 0, &param_i);
7824 // CHECK: @llvm.ppc.altivec.lvx
7825 // CHECK: @llvm.ppc.altivec.lvsl
7826 // CHECK: store <4 x i32> zeroinitializer
7827 // CHECK: @llvm.ppc.altivec.vperm
7828 // CHECK: @llvm.ppc.altivec.lvsr
7829 // CHECK: @llvm.ppc.altivec.vperm
7830 // CHECK: @llvm.ppc.altivec.stvxl
7831 // CHECK-LE: @llvm.ppc.altivec.lvx
7832 // CHECK-LE: @llvm.ppc.altivec.lvsl
7833 // CHECK-LE: store <4 x i32> zeroinitializer
7834 // CHECK-LE: @llvm.ppc.altivec.vperm
7835 // CHECK-LE: @llvm.ppc.altivec.lvsr
7836 // CHECK-LE: @llvm.ppc.altivec.vperm
7837 // CHECK-LE: @llvm.ppc.altivec.stvxl
7838 
7839   vec_stvrxl(vi, 0, &vi);
7840 // CHECK: @llvm.ppc.altivec.lvx
7841 // CHECK: @llvm.ppc.altivec.lvsl
7842 // CHECK: store <4 x i32> zeroinitializer
7843 // CHECK: @llvm.ppc.altivec.vperm
7844 // CHECK: @llvm.ppc.altivec.lvsr
7845 // CHECK: @llvm.ppc.altivec.vperm
7846 // CHECK: @llvm.ppc.altivec.stvxl
7847 // CHECK-LE: @llvm.ppc.altivec.lvx
7848 // CHECK-LE: @llvm.ppc.altivec.lvsl
7849 // CHECK-LE: store <4 x i32> zeroinitializer
7850 // CHECK-LE: @llvm.ppc.altivec.vperm
7851 // CHECK-LE: @llvm.ppc.altivec.lvsr
7852 // CHECK-LE: @llvm.ppc.altivec.vperm
7853 // CHECK-LE: @llvm.ppc.altivec.stvxl
7854 
7855   vec_stvrxl(vui, 0, &param_ui);
7856 // CHECK: @llvm.ppc.altivec.lvx
7857 // CHECK: @llvm.ppc.altivec.lvsl
7858 // CHECK: store <4 x i32> zeroinitializer
7859 // CHECK: @llvm.ppc.altivec.vperm
7860 // CHECK: @llvm.ppc.altivec.lvsr
7861 // CHECK: @llvm.ppc.altivec.vperm
7862 // CHECK: @llvm.ppc.altivec.stvxl
7863 // CHECK-LE: @llvm.ppc.altivec.lvx
7864 // CHECK-LE: @llvm.ppc.altivec.lvsl
7865 // CHECK-LE: store <4 x i32> zeroinitializer
7866 // CHECK-LE: @llvm.ppc.altivec.vperm
7867 // CHECK-LE: @llvm.ppc.altivec.lvsr
7868 // CHECK-LE: @llvm.ppc.altivec.vperm
7869 // CHECK-LE: @llvm.ppc.altivec.stvxl
7870 
7871   vec_stvrxl(vui, 0, &vui);
7872 // CHECK: @llvm.ppc.altivec.lvx
7873 // CHECK: @llvm.ppc.altivec.lvsl
7874 // CHECK: store <4 x i32> zeroinitializer
7875 // CHECK: @llvm.ppc.altivec.vperm
7876 // CHECK: @llvm.ppc.altivec.lvsr
7877 // CHECK: @llvm.ppc.altivec.vperm
7878 // CHECK: @llvm.ppc.altivec.stvxl
7879 // CHECK-LE: @llvm.ppc.altivec.lvx
7880 // CHECK-LE: @llvm.ppc.altivec.lvsl
7881 // CHECK-LE: store <4 x i32> zeroinitializer
7882 // CHECK-LE: @llvm.ppc.altivec.vperm
7883 // CHECK-LE: @llvm.ppc.altivec.lvsr
7884 // CHECK-LE: @llvm.ppc.altivec.vperm
7885 // CHECK-LE: @llvm.ppc.altivec.stvxl
7886 
7887   vec_stvrxl(vbi, 0, &vbi);
7888 // CHECK: @llvm.ppc.altivec.lvx
7889 // CHECK: store <4 x i32> zeroinitializer
7890 // CHECK: @llvm.ppc.altivec.lvsl
7891 // CHECK: @llvm.ppc.altivec.vperm
7892 // CHECK: @llvm.ppc.altivec.lvsr
7893 // CHECK: @llvm.ppc.altivec.vperm
7894 // CHECK: @llvm.ppc.altivec.stvxl
7895 // CHECK-LE: @llvm.ppc.altivec.lvx
7896 // CHECK-LE: store <4 x i32> zeroinitializer
7897 // CHECK-LE: @llvm.ppc.altivec.lvsl
7898 // CHECK-LE: @llvm.ppc.altivec.vperm
7899 // CHECK-LE: @llvm.ppc.altivec.lvsr
7900 // CHECK-LE: @llvm.ppc.altivec.vperm
7901 // CHECK-LE: @llvm.ppc.altivec.stvxl
7902 
7903   vec_stvrxl(vf, 0, &vf);
7904 // CHECK: @llvm.ppc.altivec.lvx
7905 // CHECK: @llvm.ppc.altivec.lvsl
7906 // CHECK: store <4 x float> zeroinitializer
7907 // CHECK: @llvm.ppc.altivec.vperm
7908 // CHECK: @llvm.ppc.altivec.lvsr
7909 // CHECK: @llvm.ppc.altivec.vperm
7910 // CHECK: @llvm.ppc.altivec.stvxl
7911 // CHECK-LE: @llvm.ppc.altivec.lvx
7912 // CHECK-LE: @llvm.ppc.altivec.lvsl
7913 // CHECK-LE: store <4 x float> zeroinitializer
7914 // CHECK-LE: @llvm.ppc.altivec.vperm
7915 // CHECK-LE: @llvm.ppc.altivec.lvsr
7916 // CHECK-LE: @llvm.ppc.altivec.vperm
7917 // CHECK-LE: @llvm.ppc.altivec.stvxl
7918 
7919   /* vec_promote */
7920   res_vsc = vec_promote(param_sc, 0);
7921 // CHECK: store <16 x i8> zeroinitializer
7922 // CHECK: insertelement <16 x i8>
7923 // CHECK-LE: store <16 x i8> zeroinitializer
7924 // CHECK-LE: insertelement <16 x i8>
7925 
7926   res_vuc = vec_promote(param_uc, 0);
7927 // CHECK: store <16 x i8> zeroinitializer
7928 // CHECK: insertelement <16 x i8>
7929 // CHECK-LE: store <16 x i8> zeroinitializer
7930 // CHECK-LE: insertelement <16 x i8>
7931 
7932   res_vs  = vec_promote(param_s, 0);
7933 // CHECK: store <8 x i16> zeroinitializer
7934 // CHECK: insertelement <8 x i16>
7935 // CHECK-LE: store <8 x i16> zeroinitializer
7936 // CHECK-LE: insertelement <8 x i16>
7937 
7938   res_vus = vec_promote(param_us, 0);
7939 // CHECK: store <8 x i16> zeroinitializer
7940 // CHECK: insertelement <8 x i16>
7941 // CHECK-LE: store <8 x i16> zeroinitializer
7942 // CHECK-LE: insertelement <8 x i16>
7943 
7944   res_vi  = vec_promote(param_i, 0);
7945 // CHECK: store <4 x i32> zeroinitializer
7946 // CHECK: insertelement <4 x i32>
7947 // CHECK-LE: store <4 x i32> zeroinitializer
7948 // CHECK-LE: insertelement <4 x i32>
7949 
7950   res_vui = vec_promote(param_ui, 0);
7951 // CHECK: store <4 x i32> zeroinitializer
7952 // CHECK: insertelement <4 x i32>
7953 // CHECK-LE: store <4 x i32> zeroinitializer
7954 // CHECK-LE: insertelement <4 x i32>
7955 
7956   res_vf  = vec_promote(param_f, 0);
7957 // CHECK: store <4 x float> zeroinitializer
7958 // CHECK: insertelement <4 x float>
7959 // CHECK-LE: store <4 x float> zeroinitializer
7960 // CHECK-LE: insertelement <4 x float>
7961 
7962   /* vec_splats */
7963   res_vsc = vec_splats(param_sc);
7964 // CHECK: insertelement <16 x i8>
7965 // CHECK-LE: insertelement <16 x i8>
7966 
7967   res_vuc = vec_splats(param_uc);
7968 // CHECK: insertelement <16 x i8>
7969 // CHECK-LE: insertelement <16 x i8>
7970 
7971   res_vs  = vec_splats(param_s);
7972 // CHECK: insertelement <8 x i16>
7973 // CHECK-LE: insertelement <8 x i16>
7974 
7975   res_vus = vec_splats(param_us);
7976 // CHECK: insertelement <8 x i16>
7977 // CHECK-LE: insertelement <8 x i16>
7978 
7979   res_vi  = vec_splats(param_i);
7980 // CHECK: insertelement <4 x i32>
7981 // CHECK-LE: insertelement <4 x i32>
7982 
7983   res_vui = vec_splats(param_ui);
7984 // CHECK: insertelement <4 x i32>
7985 // CHECK-LE: insertelement <4 x i32>
7986 
7987   res_vf  = vec_splats(param_f);
7988 // CHECK: insertelement <4 x float>
7989 // CHECK-LE: insertelement <4 x float>
7990 
7991   /* ------------------------------ predicates -------------------------------------- */
7992 
7993   /* vec_all_eq */
7994   res_i = vec_all_eq(vsc, vsc);
7995 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7996 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7997 
7998   res_i = vec_all_eq(vsc, vbc);
7999 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8000 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8001 
8002   res_i = vec_all_eq(vuc, vuc);
8003 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8004 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8005 
8006   res_i = vec_all_eq(vuc, vbc);
8007 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8008 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8009 
8010   res_i = vec_all_eq(vbc, vsc);
8011 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8012 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8013 
8014   res_i = vec_all_eq(vbc, vuc);
8015 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8016 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8017 
8018   res_i = vec_all_eq(vbc, vbc);
8019 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8020 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8021 
8022   res_i = vec_all_eq(vs, vs);
8023 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8024 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8025 
8026   res_i = vec_all_eq(vs, vbs);
8027 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8028 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8029 
8030   res_i = vec_all_eq(vus, vus);
8031 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8032 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8033 
8034   res_i = vec_all_eq(vus, vbs);
8035 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8036 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8037 
8038   res_i = vec_all_eq(vbs, vs);
8039 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8040 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8041 
8042   res_i = vec_all_eq(vbs, vus);
8043 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8044 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8045 
8046   res_i = vec_all_eq(vbs, vbs);
8047 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8048 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8049 
8050   res_i = vec_all_eq(vp, vp);
8051 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8052 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8053 
8054   res_i = vec_all_eq(vi, vi);
8055 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8056 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8057 
8058   res_i = vec_all_eq(vi, vbi);
8059 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8060 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8061 
8062   res_i = vec_all_eq(vui, vui);
8063 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8064 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8065 
8066   res_i = vec_all_eq(vui, vbi);
8067 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8068 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8069 
8070   res_i = vec_all_eq(vbi, vi);
8071 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8072 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8073 
8074   res_i = vec_all_eq(vbi, vui);
8075 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8076 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8077 
8078   res_i = vec_all_eq(vbi, vbi);
8079 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8080 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8081 
8082   res_i = vec_all_eq(vf, vf);
8083 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8084 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8085 
8086   /* vec_all_ge */
8087   res_i = vec_all_ge(vsc, vsc);
8088 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8089 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8090 
8091   res_i = vec_all_ge(vsc, vbc);
8092 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8093 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8094 
8095   res_i = vec_all_ge(vuc, vuc);
8096 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8097 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8098 
8099   res_i = vec_all_ge(vuc, vbc);
8100 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8101 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8102 
8103   res_i = vec_all_ge(vbc, vsc);
8104 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8105 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8106 
8107   res_i = vec_all_ge(vbc, vuc);
8108 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8109 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8110 
8111   res_i = vec_all_ge(vbc, vbc);
8112 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8113 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8114 
8115   res_i = vec_all_ge(vs, vs);
8116 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8117 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8118 
8119   res_i = vec_all_ge(vs, vbs);
8120 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8121 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8122 
8123   res_i = vec_all_ge(vus, vus);
8124 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8125 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8126 
8127   res_i = vec_all_ge(vus, vbs);
8128 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8130 
8131   res_i = vec_all_ge(vbs, vs);
8132 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8134 
8135   res_i = vec_all_ge(vbs, vus);
8136 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8138 
8139   res_i = vec_all_ge(vbs, vbs);
8140 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8142 
8143   res_i = vec_all_ge(vi, vi);
8144 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8145 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8146 
8147   res_i = vec_all_ge(vi, vbi);
8148 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8149 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8150 
8151   res_i = vec_all_ge(vui, vui);
8152 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8153 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8154 
8155   res_i = vec_all_ge(vui, vbi);
8156 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8157 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8158 
8159   res_i = vec_all_ge(vbi, vi);
8160 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8161 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8162 
8163   res_i = vec_all_ge(vbi, vui);
8164 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8165 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8166 
8167   res_i = vec_all_ge(vbi, vbi);
8168 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8169 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8170 
8171   res_i = vec_all_ge(vf, vf);
8172 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8173 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8174 
8175   /* vec_all_gt */
8176   res_i = vec_all_gt(vsc, vsc);
8177 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8178 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8179 
8180   res_i = vec_all_gt(vsc, vbc);
8181 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8182 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8183 
8184   res_i = vec_all_gt(vuc, vuc);
8185 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8186 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8187 
8188   res_i = vec_all_gt(vuc, vbc);
8189 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8190 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8191 
8192   res_i = vec_all_gt(vbc, vsc);
8193 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8194 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8195 
8196   res_i = vec_all_gt(vbc, vuc);
8197 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8198 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8199 
8200   res_i = vec_all_gt(vbc, vbc);
8201 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8202 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8203 
8204   res_i = vec_all_gt(vs, vs);
8205 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8206 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8207 
8208   res_i = vec_all_gt(vs, vbs);
8209 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8210 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8211 
8212   res_i = vec_all_gt(vus, vus);
8213 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8214 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8215 
8216   res_i = vec_all_gt(vus, vbs);
8217 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8218 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8219 
8220   res_i = vec_all_gt(vbs, vs);
8221 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8222 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8223 
8224   res_i = vec_all_gt(vbs, vus);
8225 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8226 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8227 
8228   res_i = vec_all_gt(vbs, vbs);
8229 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8230 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8231 
8232   res_i = vec_all_gt(vi, vi);
8233 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8234 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8235 
8236   res_i = vec_all_gt(vi, vbi);
8237 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8238 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8239 
8240   res_i = vec_all_gt(vui, vui);
8241 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8242 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8243 
8244   res_i = vec_all_gt(vui, vbi);
8245 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8246 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8247 
8248   res_i = vec_all_gt(vbi, vi);
8249 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8250 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8251 
8252   res_i = vec_all_gt(vbi, vui);
8253 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8254 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8255 
8256   res_i = vec_all_gt(vbi, vbi);
8257 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8258 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8259 
8260   res_i = vec_all_gt(vf, vf);
8261 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8262 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8263 
8264   /* vec_all_in */
8265   res_i = vec_all_in(vf, vf);
8266 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
8267 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8268 
8269   /* vec_all_le */
8270   res_i = vec_all_le(vsc, vsc);
8271 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8272 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8273 
8274   res_i = vec_all_le(vsc, vbc);
8275 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8276 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8277 
8278   res_i = vec_all_le(vuc, vuc);
8279 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8280 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8281 
8282   res_i = vec_all_le(vuc, vbc);
8283 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8284 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8285 
8286   res_i = vec_all_le(vbc, vsc);
8287 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8288 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8289 
8290   res_i = vec_all_le(vbc, vuc);
8291 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8292 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8293 
8294   res_i = vec_all_le(vbc, vbc);
8295 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8296 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8297 
8298   res_i = vec_all_le(vs, vs);
8299 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8300 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8301 
8302   res_i = vec_all_le(vs, vbs);
8303 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8304 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8305 
8306   res_i = vec_all_le(vus, vus);
8307 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8308 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8309 
8310   res_i = vec_all_le(vus, vbs);
8311 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8312 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8313 
8314   res_i = vec_all_le(vbs, vs);
8315 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8316 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8317 
8318   res_i = vec_all_le(vbs, vus);
8319 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8320 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8321 
8322   res_i = vec_all_le(vbs, vbs);
8323 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8324 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8325 
8326   res_i = vec_all_le(vi, vi);
8327 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8328 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8329 
8330   res_i = vec_all_le(vi, vbi);
8331 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8332 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8333 
8334   res_i = vec_all_le(vui, vui);
8335 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8336 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8337 
8338   res_i = vec_all_le(vui, vbi);
8339 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8340 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8341 
8342   res_i = vec_all_le(vbi, vi);
8343 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8344 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8345 
8346   res_i = vec_all_le(vbi, vui);
8347 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8348 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8349 
8350   res_i = vec_all_le(vbi, vbi);
8351 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8352 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8353 
8354   res_i = vec_all_le(vf, vf);
8355 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8356 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8357 
8358   /* vec_all_lt */
8359   res_i = vec_all_lt(vsc, vsc);
8360 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8361 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8362 
8363   res_i = vec_all_lt(vsc, vbc);
8364 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8365 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8366 
8367   res_i = vec_all_lt(vuc, vuc);
8368 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8369 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8370 
8371   res_i = vec_all_lt(vuc, vbc);
8372 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8373 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8374 
8375   res_i = vec_all_lt(vbc, vsc);
8376 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8377 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8378 
8379   res_i = vec_all_lt(vbc, vuc);
8380 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8381 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8382 
8383   res_i = vec_all_lt(vbc, vbc);
8384 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8385 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8386 
8387   res_i = vec_all_lt(vs, vs);
8388 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8389 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8390 
8391   res_i = vec_all_lt(vs, vbs);
8392 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8393 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8394 
8395   res_i = vec_all_lt(vus, vus);
8396 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8397 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8398 
8399   res_i = vec_all_lt(vus, vbs);
8400 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8401 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8402 
8403   res_i = vec_all_lt(vbs, vs);
8404 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8405 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8406 
8407   res_i = vec_all_lt(vbs, vus);
8408 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8409 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8410 
8411   res_i = vec_all_lt(vbs, vbs);
8412 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8413 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8414 
8415   res_i = vec_all_lt(vi, vi);
8416 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8417 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8418 
8419   res_i = vec_all_lt(vi, vbi);
8420 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8421 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8422 
8423   res_i = vec_all_lt(vui, vui);
8424 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8425 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8426 
8427   res_i = vec_all_lt(vui, vbi);
8428 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8429 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8430 
8431   res_i = vec_all_lt(vbi, vi);
8432 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8433 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8434 
8435   res_i = vec_all_lt(vbi, vui);
8436 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8437 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8438 
8439   res_i = vec_all_lt(vbi, vbi);
8440 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8441 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8442 
8443   res_i = vec_all_lt(vf, vf);
8444 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8445 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8446 
8447   /* vec_all_nan */
8448   res_i = vec_all_nan(vf);
8449 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8450 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8451 
8452   /*  vec_all_ne */
8453   res_i = vec_all_ne(vsc, vsc);
8454 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8455 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8456 
8457   res_i = vec_all_ne(vsc, vbc);
8458 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8459 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8460 
8461   res_i = vec_all_ne(vuc, vuc);
8462 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8463 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8464 
8465   res_i = vec_all_ne(vuc, vbc);
8466 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8467 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8468 
8469   res_i = vec_all_ne(vbc, vsc);
8470 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8471 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8472 
8473   res_i = vec_all_ne(vbc, vuc);
8474 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8475 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8476 
8477   res_i = vec_all_ne(vbc, vbc);
8478 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8479 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8480 
8481   res_i = vec_all_ne(vs, vs);
8482 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8483 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8484 
8485   res_i = vec_all_ne(vs, vbs);
8486 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8487 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8488 
8489   res_i = vec_all_ne(vus, vus);
8490 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8491 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8492 
8493   res_i = vec_all_ne(vus, vbs);
8494 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8495 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8496 
8497   res_i = vec_all_ne(vbs, vs);
8498 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8499 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8500 
8501   res_i = vec_all_ne(vbs, vus);
8502 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8503 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8504 
8505   res_i = vec_all_ne(vbs, vbs);
8506 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8507 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8508 
8509   res_i = vec_all_ne(vp, vp);
8510 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8511 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8512 
8513   res_i = vec_all_ne(vi, vi);
8514 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8515 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8516 
8517   res_i = vec_all_ne(vi, vbi);
8518 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8519 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8520 
8521   res_i = vec_all_ne(vui, vui);
8522 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8523 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8524 
8525   res_i = vec_all_ne(vui, vbi);
8526 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8527 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8528 
8529   res_i = vec_all_ne(vbi, vi);
8530 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8531 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8532 
8533   res_i = vec_all_ne(vbi, vui);
8534 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8535 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8536 
8537   res_i = vec_all_ne(vbi, vbi);
8538 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8539 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8540 
8541   res_i = vec_all_ne(vf, vf);
8542 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8543 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8544 
8545   /* vec_all_nge */
8546   res_i = vec_all_nge(vf, vf);
8547 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8548 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8549 
8550   /* vec_all_ngt */
8551   res_i = vec_all_ngt(vf, vf);
8552 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8553 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8554 
8555   /* vec_all_nle */
8556   res_i = vec_all_nle(vf, vf);
8557 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8558 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8559 
8560   /* vec_all_nlt */
8561   res_i = vec_all_nlt(vf, vf);
8562 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8563 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8564 
8565   /* vec_all_numeric */
8566   res_i = vec_all_numeric(vf);
8567 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8568 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8569 
8570   /*  vec_any_eq */
8571   res_i = vec_any_eq(vsc, vsc);
8572 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8573 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8574 
8575   res_i = vec_any_eq(vsc, vbc);
8576 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8577 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8578 
8579   res_i = vec_any_eq(vuc, vuc);
8580 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8581 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8582 
8583   res_i = vec_any_eq(vuc, vbc);
8584 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8585 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8586 
8587   res_i = vec_any_eq(vbc, vsc);
8588 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8589 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8590 
8591   res_i = vec_any_eq(vbc, vuc);
8592 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8593 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8594 
8595   res_i = vec_any_eq(vbc, vbc);
8596 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8597 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8598 
8599   res_i = vec_any_eq(vs, vs);
8600 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8601 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8602 
8603   res_i = vec_any_eq(vs, vbs);
8604 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8605 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8606 
8607   res_i = vec_any_eq(vus, vus);
8608 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8609 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8610 
8611   res_i = vec_any_eq(vus, vbs);
8612 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8613 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8614 
8615   res_i = vec_any_eq(vbs, vs);
8616 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8617 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8618 
8619   res_i = vec_any_eq(vbs, vus);
8620 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8621 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8622 
8623   res_i = vec_any_eq(vbs, vbs);
8624 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8625 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8626 
8627   res_i = vec_any_eq(vp, vp);
8628 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8629 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8630 
8631   res_i = vec_any_eq(vi, vi);
8632 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8633 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8634 
8635   res_i = vec_any_eq(vi, vbi);
8636 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8637 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8638 
8639   res_i = vec_any_eq(vui, vui);
8640 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8641 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8642 
8643   res_i = vec_any_eq(vui, vbi);
8644 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8645 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8646 
8647   res_i = vec_any_eq(vbi, vi);
8648 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8649 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8650 
8651   res_i = vec_any_eq(vbi, vui);
8652 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8653 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8654 
8655   res_i = vec_any_eq(vbi, vbi);
8656 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8657 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8658 
8659   res_i = vec_any_eq(vf, vf);
8660 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8661 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8662 
8663   /* vec_any_ge */
8664   res_i = vec_any_ge(vsc, vsc);
8665 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8666 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8667 
8668   res_i = vec_any_ge(vsc, vbc);
8669 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8670 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8671 
8672   res_i = vec_any_ge(vuc, vuc);
8673 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8674 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8675 
8676   res_i = vec_any_ge(vuc, vbc);
8677 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8678 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8679 
8680   res_i = vec_any_ge(vbc, vsc);
8681 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8682 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8683 
8684   res_i = vec_any_ge(vbc, vuc);
8685 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8686 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8687 
8688   res_i = vec_any_ge(vbc, vbc);
8689 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8690 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8691 
8692   res_i = vec_any_ge(vs, vs);
8693 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8694 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8695 
8696   res_i = vec_any_ge(vs, vbs);
8697 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8698 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8699 
8700   res_i = vec_any_ge(vus, vus);
8701 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8702 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8703 
8704   res_i = vec_any_ge(vus, vbs);
8705 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8706 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8707 
8708   res_i = vec_any_ge(vbs, vs);
8709 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8710 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8711 
8712   res_i = vec_any_ge(vbs, vus);
8713 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8714 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8715 
8716   res_i = vec_any_ge(vbs, vbs);
8717 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8718 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8719 
8720   res_i = vec_any_ge(vi, vi);
8721 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8722 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8723 
8724   res_i = vec_any_ge(vi, vbi);
8725 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8726 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8727 
8728   res_i = vec_any_ge(vui, vui);
8729 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8730 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8731 
8732   res_i = vec_any_ge(vui, vbi);
8733 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8734 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8735 
8736   res_i = vec_any_ge(vbi, vi);
8737 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8738 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8739 
8740   res_i = vec_any_ge(vbi, vui);
8741 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8742 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8743 
8744   res_i = vec_any_ge(vbi, vbi);
8745 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8746 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8747 
8748   res_i = vec_any_ge(vf, vf);
8749 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8750 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8751 
8752   /* vec_any_gt */
8753   res_i = vec_any_gt(vsc, vsc);
8754 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8755 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8756 
8757   res_i = vec_any_gt(vsc, vbc);
8758 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8759 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8760 
8761   res_i = vec_any_gt(vuc, vuc);
8762 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8763 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8764 
8765   res_i = vec_any_gt(vuc, vbc);
8766 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8767 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8768 
8769   res_i = vec_any_gt(vbc, vsc);
8770 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8771 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8772 
8773   res_i = vec_any_gt(vbc, vuc);
8774 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8775 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8776 
8777   res_i = vec_any_gt(vbc, vbc);
8778 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8779 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8780 
8781   res_i = vec_any_gt(vs, vs);
8782 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8783 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8784 
8785   res_i = vec_any_gt(vs, vbs);
8786 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8787 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8788 
8789   res_i = vec_any_gt(vus, vus);
8790 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8791 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8792 
8793   res_i = vec_any_gt(vus, vbs);
8794 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8795 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8796 
8797   res_i = vec_any_gt(vbs, vs);
8798 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8799 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8800 
8801   res_i = vec_any_gt(vbs, vus);
8802 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8803 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8804 
8805   res_i = vec_any_gt(vbs, vbs);
8806 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8807 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8808 
8809   res_i = vec_any_gt(vi, vi);
8810 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8811 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8812 
8813   res_i = vec_any_gt(vi, vbi);
8814 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8815 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8816 
8817   res_i = vec_any_gt(vui, vui);
8818 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8819 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8820 
8821   res_i = vec_any_gt(vui, vbi);
8822 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8823 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8824 
8825   res_i = vec_any_gt(vbi, vi);
8826 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8827 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8828 
8829   res_i = vec_any_gt(vbi, vui);
8830 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8831 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8832 
8833   res_i = vec_any_gt(vbi, vbi);
8834 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8835 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8836 
8837   res_i = vec_any_gt(vf, vf);
8838 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8839 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8840 
8841   /* vec_any_le */
8842   res_i = vec_any_le(vsc, vsc);
8843 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8844 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8845 
8846   res_i = vec_any_le(vsc, vbc);
8847 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8848 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8849 
8850   res_i = vec_any_le(vuc, vuc);
8851 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8852 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8853 
8854   res_i = vec_any_le(vuc, vbc);
8855 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8856 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8857 
8858   res_i = vec_any_le(vbc, vsc);
8859 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8860 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8861 
8862   res_i = vec_any_le(vbc, vuc);
8863 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8864 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8865 
8866   res_i = vec_any_le(vbc, vbc);
8867 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8868 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8869 
8870   res_i = vec_any_le(vs, vs);
8871 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8872 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8873 
8874   res_i = vec_any_le(vs, vbs);
8875 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8876 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8877 
8878   res_i = vec_any_le(vus, vus);
8879 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8880 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8881 
8882   res_i = vec_any_le(vus, vbs);
8883 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8884 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8885 
8886   res_i = vec_any_le(vbs, vs);
8887 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8888 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8889 
8890   res_i = vec_any_le(vbs, vus);
8891 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8892 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8893 
8894   res_i = vec_any_le(vbs, vbs);
8895 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8896 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8897 
8898   res_i = vec_any_le(vi, vi);
8899 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8900 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8901 
8902   res_i = vec_any_le(vi, vbi);
8903 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8904 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8905 
8906   res_i = vec_any_le(vui, vui);
8907 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8908 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8909 
8910   res_i = vec_any_le(vui, vbi);
8911 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8912 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8913 
8914   res_i = vec_any_le(vbi, vi);
8915 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8916 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8917 
8918   res_i = vec_any_le(vbi, vui);
8919 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8920 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8921 
8922   res_i = vec_any_le(vbi, vbi);
8923 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8924 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8925 
8926   res_i = vec_any_le(vf, vf);
8927 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8928 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8929 
8930   /* vec_any_lt */
8931   res_i = vec_any_lt(vsc, vsc);
8932 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8933 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8934 
8935   res_i = vec_any_lt(vsc, vbc);
8936 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8937 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8938 
8939   res_i = vec_any_lt(vuc, vuc);
8940 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8941 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8942 
8943   res_i = vec_any_lt(vuc, vbc);
8944 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8945 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8946 
8947   res_i = vec_any_lt(vbc, vsc);
8948 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8949 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8950 
8951   res_i = vec_any_lt(vbc, vuc);
8952 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8953 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8954 
8955   res_i = vec_any_lt(vbc, vbc);
8956 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8957 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8958 
8959   res_i = vec_any_lt(vs, vs);
8960 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8961 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8962 
8963   res_i = vec_any_lt(vs, vbs);
8964 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8965 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8966 
8967   res_i = vec_any_lt(vus, vus);
8968 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8969 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8970 
8971   res_i = vec_any_lt(vus, vbs);
8972 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8973 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8974 
8975   res_i = vec_any_lt(vbs, vs);
8976 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8977 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8978 
8979   res_i = vec_any_lt(vbs, vus);
8980 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8981 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8982 
8983   res_i = vec_any_lt(vbs, vbs);
8984 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8985 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8986 
8987   res_i = vec_any_lt(vi, vi);
8988 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8989 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8990 
8991   res_i = vec_any_lt(vi, vbi);
8992 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8993 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8994 
8995   res_i = vec_any_lt(vui, vui);
8996 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8997 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8998 
8999   res_i = vec_any_lt(vui, vbi);
9000 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9001 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9002 
9003   res_i = vec_any_lt(vbi, vi);
9004 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
9005 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
9006 
9007   res_i = vec_any_lt(vbi, vui);
9008 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9009 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9010 
9011   res_i = vec_any_lt(vbi, vbi);
9012 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
9013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
9014 
9015   res_i = vec_any_lt(vf, vf);
9016 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9017 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9018 
9019   /* vec_any_nan */
9020   res_i = vec_any_nan(vf);
9021 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9022 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9023 
9024   /* vec_any_ne */
9025   res_i = vec_any_ne(vsc, vsc);
9026 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9027 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9028 
9029   res_i = vec_any_ne(vsc, vbc);
9030 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9031 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9032 
9033   res_i = vec_any_ne(vuc, vuc);
9034 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9035 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9036 
9037   res_i = vec_any_ne(vuc, vbc);
9038 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9039 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9040 
9041   res_i = vec_any_ne(vbc, vsc);
9042 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9043 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9044 
9045   res_i = vec_any_ne(vbc, vuc);
9046 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9047 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9048 
9049   res_i = vec_any_ne(vbc, vbc);
9050 // CHECK: @llvm.ppc.altivec.vcmpequb.p
9051 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
9052 
9053   res_i = vec_any_ne(vs, vs);
9054 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9055 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9056 
9057   res_i = vec_any_ne(vs, vbs);
9058 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9059 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9060 
9061   res_i = vec_any_ne(vus, vus);
9062 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9063 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9064 
9065   res_i = vec_any_ne(vus, vbs);
9066 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9067 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9068 
9069   res_i = vec_any_ne(vbs, vs);
9070 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9071 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9072 
9073   res_i = vec_any_ne(vbs, vus);
9074 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9075 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9076 
9077   res_i = vec_any_ne(vbs, vbs);
9078 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9079 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9080 
9081   res_i = vec_any_ne(vp, vp);
9082 // CHECK: @llvm.ppc.altivec.vcmpequh.p
9083 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
9084 
9085   res_i = vec_any_ne(vi, vi);
9086 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9087 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9088 
9089   res_i = vec_any_ne(vi, vbi);
9090 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9091 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9092 
9093   res_i = vec_any_ne(vui, vui);
9094 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9095 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9096 
9097   res_i = vec_any_ne(vui, vbi);
9098 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9099 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9100 
9101   res_i = vec_any_ne(vbi, vi);
9102 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9103 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9104 
9105   res_i = vec_any_ne(vbi, vui);
9106 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9107 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9108 
9109   res_i = vec_any_ne(vbi, vbi);
9110 // CHECK: @llvm.ppc.altivec.vcmpequw.p
9111 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9112 
9113   res_i = vec_any_ne(vf, vf);
9114 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9115 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9116 
9117   /* vec_any_nge */
9118   res_i = vec_any_nge(vf, vf);
9119 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9120 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9121 
9122   /* vec_any_ngt */
9123   res_i = vec_any_ngt(vf, vf);
9124 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9125 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9126 
9127   /* vec_any_nle */
9128   res_i = vec_any_nle(vf, vf);
9129 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9130 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9131 
9132   /* vec_any_nlt */
9133   res_i = vec_any_nlt(vf, vf);
9134 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9135 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9136 
9137   /* vec_any_numeric */
9138   res_i = vec_any_numeric(vf);
9139 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9140 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9141 
9142   /* vec_any_out */
9143   res_i = vec_any_out(vf, vf);
9144 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
9145 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9146 }
9147 
9148 /* ------------------------------ Relational Operators ------------------------------ */
9149 // CHECK-LABEL: define{{.*}} void @test7
test7()9150 void test7() {
9151   vector signed char vsc1 = (vector signed char)(-1);
9152   vector signed char vsc2 = (vector signed char)(-2);
9153   res_i = (vsc1 == vsc2);
9154 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9155 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9156 
9157   res_i = (vsc1 != vsc2);
9158 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9159 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9160 
9161   res_i = (vsc1 <  vsc2);
9162 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9163 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9164 
9165   res_i = (vsc1 >  vsc2);
9166 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9167 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9168 
9169   res_i = (vsc1 <= vsc2);
9170 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9171 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9172 
9173   res_i = (vsc1 >= vsc2);
9174 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9175 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9176 
9177   vector unsigned char vuc1 = (vector unsigned char)(1);
9178   vector unsigned char vuc2 = (vector unsigned char)(2);
9179   res_i = (vuc1 == vuc2);
9180 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9181 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9182 
9183   res_i = (vuc1 != vuc2);
9184 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9185 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9186 
9187   res_i = (vuc1 <  vuc2);
9188 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9189 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9190 
9191   res_i = (vuc1 >  vuc2);
9192 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9193 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9194 
9195   res_i = (vuc1 <= vuc2);
9196 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9197 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9198 
9199   res_i = (vuc1 >= vuc2);
9200 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9201 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9202 
9203   vector short vs1 = (vector short)(-1);
9204   vector short vs2 = (vector short)(-2);
9205   res_i = (vs1 == vs2);
9206 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9207 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9208 
9209   res_i = (vs1 != vs2);
9210 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9211 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9212 
9213   res_i = (vs1 <  vs2);
9214 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9215 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9216 
9217   res_i = (vs1 >  vs2);
9218 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9219 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9220 
9221   res_i = (vs1 <= vs2);
9222 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9223 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9224 
9225   res_i = (vs1 >= vs2);
9226 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9227 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9228 
9229   vector unsigned short vus1 = (vector unsigned short)(1);
9230   vector unsigned short vus2 = (vector unsigned short)(2);
9231   res_i = (vus1 == vus2);
9232 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9233 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9234 
9235   res_i = (vus1 != vus2);
9236 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9237 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9238 
9239   res_i = (vus1 <  vus2);
9240 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9241 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9242 
9243   res_i = (vus1 >  vus2);
9244 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9245 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9246 
9247   res_i = (vus1 <= vus2);
9248 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9249 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9250 
9251   res_i = (vus1 >= vus2);
9252 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9254 
9255   vector int vi1 = (vector int)(-1);
9256   vector int vi2 = (vector int)(-2);
9257   res_i = (vi1 == vi2);
9258 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9259 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9260 
9261   res_i = (vi1 != vi2);
9262 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9263 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9264 
9265   res_i = (vi1 <  vi2);
9266 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9267 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9268 
9269   res_i = (vi1 >  vi2);
9270 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9271 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9272 
9273   res_i = (vi1 <= vi2);
9274 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9275 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9276 
9277   res_i = (vi1 >= vi2);
9278 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9279 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9280 
9281   vector unsigned int vui1 = (vector unsigned int)(1);
9282   vector unsigned int vui2 = (vector unsigned int)(2);
9283   res_i = (vui1 == vui2);
9284 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9285 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9286 
9287   res_i = (vui1 != vui2);
9288 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9289 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9290 
9291   res_i = (vui1 <  vui2);
9292 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9293 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9294 
9295   res_i = (vui1 >  vui2);
9296 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9297 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9298 
9299   res_i = (vui1 <= vui2);
9300 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9301 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9302 
9303   res_i = (vui1 >= vui2);
9304 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9305 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9306 
9307   vector float vf1 = (vector float)(1.0);
9308   vector float vf2 = (vector float)(2.0);
9309   res_i = (vf1 == vf2);
9310 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9311 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9312 
9313   res_i = (vf1 != vf2);
9314 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9315 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9316 
9317   res_i = (vf1 <  vf2);
9318 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9319 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9320 
9321   res_i = (vf1 >  vf2);
9322 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9323 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9324 
9325   res_i = (vf1 <= vf2);
9326 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9327 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9328 
9329   res_i = (vf1 >= vf2);
9330 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9331 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9332 }
9333 
9334 /* ------------------------------ optional ---------------------------------- */
test8()9335 void test8() {
9336 // CHECK-LABEL: define{{.*}} void @test8
9337 // CHECK-LE-LABEL: define{{.*}} void @test8
9338   res_vbc = vec_reve(vbc);
9339   // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9340   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9341 
9342   res_vsc = vec_reve(vsc);
9343   // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9344   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9345 
9346   res_vuc = vec_reve(vuc);
9347   // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9348   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9349 
9350   res_vbi = vec_reve(vbi);
9351   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9352   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9353 
9354   res_vi = vec_reve(vi);
9355   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9356   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9357 
9358   res_vui = vec_reve(vui);
9359   // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9360   // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9361 
9362   res_vbs = vec_reve(vbs);
9363   // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9364   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9365 
9366   res_vs = vec_reve(vs);
9367   // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9368   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9369 
9370   res_vus = vec_reve(vus);
9371   // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9372   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9373 
9374   res_vf = vec_reve(vf);
9375   // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9376   // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9377 
9378   res_vbc = vec_revb(vbc);
9379 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9380 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9381 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9382 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9383 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9384 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9385 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9386 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9387 
9388   res_vsc = vec_revb(vsc);
9389 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9390 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9391 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9392 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9393 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9394 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9395 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9396 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9397 
9398   res_vuc = vec_revb(vuc);
9399 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9400 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9401 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9402 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9403 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9404 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9405 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9406 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9407 
9408   res_vbs = vec_revb(vbs);
9409 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9410 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9411 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9412 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9413 // CHECK-LE: xor <16 x i8>
9414 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9415 
9416   res_vs = vec_revb(vs);
9417 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9418 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9419 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9420 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9421 // CHECK-LE: xor <16 x i8>
9422 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9423 
9424   res_vus = vec_revb(vus);
9425 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9426 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9427 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9428 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9429 // CHECK-LE: xor <16 x i8>
9430 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9431 
9432   res_vbi = vec_revb(vbi);
9433 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9434 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9435 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9436 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9437 // CHECK-LE: xor <16 x i8>
9438 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9439 
9440   res_vi = vec_revb(vi);
9441 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9442 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9443 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9444 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9445 // CHECK-LE: xor <16 x i8>
9446 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9447 
9448   res_vui = vec_revb(vui);
9449 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9450 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9451 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9452 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9453 // CHECK-LE: xor <16 x i8>
9454 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9455 
9456   res_vf = vec_revb(vf);
9457 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9458 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9459 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9460 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9461 // CHECK-LE: xor <16 x i8>
9462 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9463 }
9464 
9465 /* ------------------------------ vec_xl ------------------------------------ */
test9()9466 void test9() {
9467   // CHECK-LABEL: define{{.*}} void @test9
9468   // CHECK-LE-LABEL: define{{.*}} void @test9
9469   res_vsc = vec_xl(param_sll, param_sc_ld);
9470   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9471   // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9472 
9473   res_vuc = vec_xl(param_sll, param_uc_ld);
9474   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9475   // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9476 
9477   res_vs = vec_xl(param_sll, param_s_ld);
9478   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9479   // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9480 
9481   res_vus = vec_xl(param_sll, param_us_ld);
9482   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9483   // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9484 
9485   res_vi = vec_xl(param_sll, param_i_ld);
9486   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9487   // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9488 
9489   res_vui = vec_xl(param_sll, param_ui_ld);
9490   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9491   // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9492 
9493   res_vf = vec_xl(param_sll, param_f_ld);
9494   // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9495   // CHECK-LE: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9496 }
9497 
9498 /* ------------------------------ vec_xst ----------------------------------- */
test10()9499 void test10() {
9500   // CHECK-LABEL: define{{.*}} void @test10
9501   // CHECK-LE-LABEL: define{{.*}} void @test10
9502   vec_xst(vsc, param_sll, &param_sc);
9503   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9504   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9505 
9506   vec_xst(vuc, param_sll, &param_uc);
9507   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9508   // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9509 
9510   vec_xst(vs, param_sll, &param_s);
9511   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9512   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9513 
9514   vec_xst(vus, param_sll, &param_us);
9515   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9516   // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9517 
9518   vec_xst(vi, param_sll, &param_i);
9519   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9520   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9521 
9522   vec_xst(vui, param_sll, &param_ui);
9523   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9524   // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9525 
9526   vec_xst(vf, param_sll, &param_f);
9527   // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9528   // CHECK-LE: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9529 }
9530 
9531 /* ----------------------------- vec_xl_be ---------------------------------- */
test11()9532 void test11() {
9533   // CHECK-LABEL: define{{.*}} void @test11
9534   // CHECK-LE-LABEL: define{{.*}} void @test11
9535   res_vsc = vec_xl_be(param_sll, param_sc_ld);
9536   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9537   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9538   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9539 
9540   res_vuc = vec_xl_be(param_sll, param_uc_ld);
9541   // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9542   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9543   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9544 
9545   res_vs = vec_xl_be(param_sll, param_s_ld);
9546   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9547   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9548   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9549 
9550   res_vus = vec_xl_be(param_sll, param_us_ld);
9551   // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9552   // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9553   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9554 
9555   res_vi = vec_xl_be(param_sll, param_i_ld);
9556   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9557   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9558 
9559   res_vui = vec_xl_be(param_sll, param_ui_ld);
9560   // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9561   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9562 
9563   res_vf = vec_xl_be(param_sll, param_f_ld);
9564   // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9565   // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9566 }
9567 
9568 /* ----------------------------- vec_xst_be --------------------------------- */
test12()9569 void test12() {
9570   // CHECK-LABEL: define{{.*}} void @test12
9571   // CHECK-LE-LABEL: define{{.*}} void @test12
9572   vec_xst_be(vsc, param_sll, &param_sc);
9573   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9574   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9575   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9576 
9577   vec_xst_be(vuc, param_sll, &param_uc);
9578   // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9579   // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9580   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9581 
9582   vec_xst_be(vs, param_sll, &param_s);
9583   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9584   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9585   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9586 
9587   vec_xst_be(vus, param_sll, &param_us);
9588   // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9589   // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9590   // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9591 
9592   vec_xst_be(vi, param_sll, &param_i);
9593   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9594   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9595 
9596   vec_xst_be(vui, param_sll, &param_ui);
9597   // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9598   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9599 
9600   vec_xst_be(vf, param_sll, &param_f);
9601   // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9602   // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9603 }
9604 
test_rsqrtf(vector float a,vector float b)9605 vector float test_rsqrtf(vector float a, vector float b) {
9606   // CHECK-LABEL: test_rsqrtf
9607   // CHECK: call fast <4 x float> @llvm.sqrt.v4f32
9608   // CHECK: fdiv fast <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
9609   // CHECK-LE-LABEL: test_rsqrtf
9610   // CHECK-LE: call fast <4 x float> @llvm.sqrt.v4f32
9611   // CHECK-LE: fdiv fast <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
9612   return vec_rsqrt(a);
9613 }
9614 
test_recipdivf(vector float a,vector float b)9615 vector float test_recipdivf(vector float a, vector float b) {
9616   // CHECK-LABEL: test_recipdivf
9617   // CHECK: fdiv fast <4 x float>
9618   // CHECK-LE-LABEL: test_recipdivf
9619   // CHECK-LE: fdiv fast <4 x float>
9620   return vec_recipdiv(a, b);
9621 }
9622