Clang Project

clang_source_code/test/CodeGen/builtins-ppc-altivec.c
1// REQUIRES: powerpc-registered-target
2// RUN: %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown -emit-llvm %s \
3// RUN:            -o - | FileCheck %s
4// RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown -emit-llvm %s \
5// RUN:            -o - | FileCheck %s
6// RUN: %clang_cc1 -target-feature +altivec -triple powerpc64le-unknown-unknown -emit-llvm %s \
7// RUN:            -o - | FileCheck %s -check-prefix=CHECK-LE
8// RUN: not %clang_cc1 -triple powerpc64le-unknown-unknown -emit-llvm %s \
9// RUN:            -ferror-limit 0 -DNO_ALTIVEC -o - 2>&1 \
10// RUN:            | FileCheck %s -check-prefix=CHECK-NOALTIVEC
11#ifndef NO_ALTIVEC
12#include <altivec.h>
13#endif
14
15vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
16vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
17vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
18vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
19vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
20vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
21vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
22vector bool int vbi = { 1, 0, 1, 0 };
23vector int vi = { -1, 2, -3, 4 };
24vector unsigned int vui = { 1, 2, 3, 4 };
25vector float vf = { -1.5, 2.5, -3.5, 4.5 };
26
27vector bool char res_vbc;
28vector signed char res_vsc;
29vector unsigned char res_vuc;
30vector bool short res_vbs;
31vector short res_vs;
32vector unsigned short res_vus;
33vector pixel res_vp;
34vector bool int res_vbi;
35vector int res_vi;
36vector unsigned int res_vui;
37vector float res_vf;
38
39// CHECK-NOALTIVEC: error: unknown type name 'vector'
40
41signed char param_sc;
42unsigned char param_uc;
43short param_s;
44unsigned short param_us;
45int param_i;
46unsigned int param_ui;
47float param_f;
48signed long long param_sll;
49
50int res_sc;
51int res_uc;
52int res_s;
53int res_us;
54int res_i;
55int res_ui;
56int res_f;
57
58// CHECK-LABEL: define void @test1
59void test1() {
60
61  /* vec_abs */
62  vsc = vec_abs(vsc);
63// CHECK: sub <16 x i8> zeroinitializer
64// CHECK: @llvm.ppc.altivec.vmaxsb
65// CHECK-LE: sub <16 x i8> zeroinitializer
66// CHECK-LE: @llvm.ppc.altivec.vmaxsb
67
68  vs = vec_abs(vs);
69// CHECK: sub <8 x i16> zeroinitializer
70// CHECK: @llvm.ppc.altivec.vmaxsh
71// CHECK-LE: sub <8 x i16> zeroinitializer
72// CHECK-LE: @llvm.ppc.altivec.vmaxsh
73
74  vi = vec_abs(vi);
75// CHECK: sub <4 x i32> zeroinitializer
76// CHECK: @llvm.ppc.altivec.vmaxsw
77// CHECK-LE: sub <4 x i32> zeroinitializer
78// CHECK-LE: @llvm.ppc.altivec.vmaxsw
79
80  vf = vec_abs(vf);
81// CHECK: bitcast <4 x float> %{{.*}} to <4 x i32>
82// CHECK: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
83// CHECK: bitcast <4 x i32> %{{.*}} to <4 x float>
84// CHECK: store <4 x float> %{{.*}}, <4 x float>* @vf
85// CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
86// CHECK-LE: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
87// CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
88// CHECK-LE: store <4 x float> %{{.*}}, <4 x float>* @vf
89// CHECK-NOALTIVEC: error: use of undeclared identifier 'vf'
90// CHECK-NOALTIVEC: vf = vec_abs(vf) 
91
92  vsc = vec_nabs(vsc);
93// CHECK: sub <16 x i8> zeroinitializer
94// CHECK: @llvm.ppc.altivec.vminsb
95// CHECK-LE: sub <16 x i8> zeroinitializer
96// CHECK-LE: @llvm.ppc.altivec.vminsb
97
98  vs = vec_nabs(vs);
99// CHECK: sub <8 x i16> zeroinitializer
100// CHECK: @llvm.ppc.altivec.vminsh
101// CHECK-LE: sub <8 x i16> zeroinitializer
102// CHECK-LE: @llvm.ppc.altivec.vminsh
103
104  vi = vec_nabs(vi);
105// CHECK: sub <4 x i32> zeroinitializer
106// CHECK: @llvm.ppc.altivec.vminsw
107// CHECK-LE: sub <4 x i32> zeroinitializer
108// CHECK-LE: @llvm.ppc.altivec.vminsw
109
110  res_vi = vec_neg(vi);
111// CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
112// CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
113// CHECK-NOALTIVEC: error: use of undeclared identifier 'vi'
114// CHECK-NOALTIVEC: vi = vec_neg(vi);
115
116  res_vs = vec_neg(vs);
117// CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
118// CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
119// CHECK-NOALTIVEC: error: use of undeclared identifier 'vs'
120// CHECK-NOALTIVEC: res_vs = vec_neg(vs);
121
122  res_vsc = vec_neg(vsc);
123// CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
124// CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
125// CHECK-NOALTIVEC: error: use of undeclared identifier 'vsc'
126// CHECK-NOALTIVEC: res_vsc = vec_neg(vsc);
127
128
129  /* vec_abs */
130  vsc = vec_abss(vsc);
131// CHECK: @llvm.ppc.altivec.vsubsbs
132// CHECK: @llvm.ppc.altivec.vmaxsb
133// CHECK-LE: @llvm.ppc.altivec.vsubsbs
134// CHECK-LE: @llvm.ppc.altivec.vmaxsb
135
136  vs = vec_abss(vs);
137// CHECK: @llvm.ppc.altivec.vsubshs
138// CHECK: @llvm.ppc.altivec.vmaxsh
139// CHECK-LE: @llvm.ppc.altivec.vsubshs
140// CHECK-LE: @llvm.ppc.altivec.vmaxsh
141
142  vi = vec_abss(vi);
143// CHECK: @llvm.ppc.altivec.vsubsws
144// CHECK: @llvm.ppc.altivec.vmaxsw
145// CHECK-LE: @llvm.ppc.altivec.vsubsws
146// CHECK-LE: @llvm.ppc.altivec.vmaxsw
147
148  /*  vec_add */
149  res_vsc = vec_add(vsc, vsc);
150// CHECK: add <16 x i8>
151// CHECK-LE: add <16 x i8>
152
153  res_vsc = vec_add(vbc, vsc);
154// CHECK: add <16 x i8>
155// CHECK-LE: add <16 x i8>
156
157  res_vsc = vec_add(vsc, vbc);
158// CHECK: add <16 x i8>
159// CHECK-LE: add <16 x i8>
160
161  res_vuc = vec_add(vuc, vuc);
162// CHECK: add <16 x i8>
163// CHECK-LE: add <16 x i8>
164
165  res_vuc = vec_add(vbc, vuc);
166// CHECK: add <16 x i8>
167// CHECK-LE: add <16 x i8>
168
169  res_vuc = vec_add(vuc, vbc);
170// CHECK: add <16 x i8>
171// CHECK-LE: add <16 x i8>
172
173  res_vs  = vec_add(vs, vs);
174// CHECK: add <8 x i16>
175// CHECK-LE: add <8 x i16>
176
177  res_vs  = vec_add(vbs, vs);
178// CHECK: add <8 x i16>
179// CHECK-LE: add <8 x i16>
180
181  res_vs  = vec_add(vs, vbs);
182// CHECK: add <8 x i16>
183// CHECK-LE: add <8 x i16>
184
185  res_vus = vec_add(vus, vus);
186// CHECK: add <8 x i16>
187// CHECK-LE: add <8 x i16>
188
189  res_vus = vec_add(vbs, vus);
190// CHECK: add <8 x i16>
191// CHECK-LE: add <8 x i16>
192
193  res_vus = vec_add(vus, vbs);
194// CHECK: add <8 x i16>
195// CHECK-LE: add <8 x i16>
196
197  res_vi  = vec_add(vi, vi);
198// CHECK: add <4 x i32>
199// CHECK-LE: add <4 x i32>
200
201  res_vi  = vec_add(vbi, vi);
202// CHECK: add <4 x i32>
203// CHECK-LE: add <4 x i32>
204
205  res_vi  = vec_add(vi, vbi);
206// CHECK: add <4 x i32>
207// CHECK-LE: add <4 x i32>
208
209  res_vui = vec_add(vui, vui);
210// CHECK: add <4 x i32>
211// CHECK-LE: add <4 x i32>
212
213  res_vui = vec_add(vbi, vui);
214// CHECK: add <4 x i32>
215// CHECK-LE: add <4 x i32>
216
217  res_vui = vec_add(vui, vbi);
218// CHECK: add <4 x i32>
219// CHECK-LE: add <4 x i32>
220
221  res_vf  = vec_add(vf, vf);
222// CHECK: fadd <4 x float>
223// CHECK-LE: fadd <4 x float>
224
225  res_vi  = vec_adde(vi, vi, vi);
226// CHECK: and <4 x i32>
227// CHECK: add <4 x i32>
228// CHECK: add <4 x i32>
229// CHECK-LE: and <4 x i32>
230// CHECK-LE: add <4 x i32>
231// CHECK-LE: add <4 x i32>
232
233  res_vui  = vec_adde(vui, vui, vui);
234// CHECK: and <4 x i32>
235// CHECK: add <4 x i32>
236// CHECK: add <4 x i32>
237// CHECK-LE: and <4 x i32>
238// CHECK-LE: add <4 x i32>
239// CHECK-LE: add <4 x i32>
240
241  res_vsc = vec_vaddubm(vsc, vsc);
242// CHECK: add <16 x i8>
243// CHECK-LE: add <16 x i8>
244
245  res_vsc = vec_vaddubm(vbc, vsc);
246// CHECK: add <16 x i8>
247// CHECK-LE: add <16 x i8>
248
249  res_vsc = vec_vaddubm(vsc, vbc);
250// CHECK: add <16 x i8>
251// CHECK-LE: add <16 x i8>
252
253  res_vuc = vec_vaddubm(vuc, vuc);
254// CHECK: add <16 x i8>
255// CHECK-LE: add <16 x i8>
256
257  res_vuc = vec_vaddubm(vbc, vuc);
258// CHECK: add <16 x i8>
259// CHECK-LE: add <16 x i8>
260
261  res_vuc = vec_vaddubm(vuc, vbc);
262// CHECK: add <16 x i8>
263// CHECK-LE: add <16 x i8>
264
265  res_vs  = vec_vadduhm(vs, vs);
266// CHECK: add <8 x i16>
267// CHECK-LE: add <8 x i16>
268
269  res_vs  = vec_vadduhm(vbs, vs);
270// CHECK: add <8 x i16>
271// CHECK-LE: add <8 x i16>
272
273  res_vs  = vec_vadduhm(vs, vbs);
274// CHECK: add <8 x i16>
275// CHECK-LE: add <8 x i16>
276
277  res_vus = vec_vadduhm(vus, vus);
278// CHECK: add <8 x i16>
279// CHECK-LE: add <8 x i16>
280
281  res_vus = vec_vadduhm(vbs, vus);
282// CHECK: add <8 x i16>
283// CHECK-LE: add <8 x i16>
284
285  res_vus = vec_vadduhm(vus, vbs);
286// CHECK: add <8 x i16>
287// CHECK-LE: add <8 x i16>
288
289  res_vi  = vec_vadduwm(vi, vi);
290// CHECK: add <4 x i32>
291// CHECK-LE: add <4 x i32>
292
293  res_vi  = vec_vadduwm(vbi, vi);
294// CHECK: add <4 x i32>
295// CHECK-LE: add <4 x i32>
296
297  res_vi  = vec_vadduwm(vi, vbi);
298// CHECK: add <4 x i32>
299// CHECK-LE: add <4 x i32>
300
301  res_vui = vec_vadduwm(vui, vui);
302// CHECK: add <4 x i32>
303// CHECK-LE: add <4 x i32>
304
305  res_vui = vec_vadduwm(vbi, vui);
306// CHECK: add <4 x i32>
307// CHECK-LE: add <4 x i32>
308
309  res_vui = vec_vadduwm(vui, vbi);
310// CHECK: add <4 x i32>
311// CHECK-LE: add <4 x i32>
312
313  res_vf  = vec_vaddfp(vf, vf);
314// CHECK: fadd <4 x float>
315// CHECK-LE: fadd <4 x float>
316
317  /* vec_addc */
318  res_vui = vec_addc(vui, vui);
319// CHECK: @llvm.ppc.altivec.vaddcuw
320// CHECK-LE: @llvm.ppc.altivec.vaddcuw
321
322  res_vui = vec_vaddcuw(vui, vui);
323// CHECK: @llvm.ppc.altivec.vaddcuw
324// CHECK-LE: @llvm.ppc.altivec.vaddcuw
325
326  /* vec_adds */
327  res_vsc = vec_adds(vsc, vsc);
328// CHECK: @llvm.ppc.altivec.vaddsbs
329// CHECK-LE: @llvm.ppc.altivec.vaddsbs
330
331  res_vsc = vec_adds(vbc, vsc);
332// CHECK: @llvm.ppc.altivec.vaddsbs
333// CHECK-LE: @llvm.ppc.altivec.vaddsbs
334
335  res_vsc = vec_adds(vsc, vbc);
336// CHECK: @llvm.ppc.altivec.vaddsbs
337// CHECK-LE: @llvm.ppc.altivec.vaddsbs
338
339  res_vuc = vec_adds(vuc, vuc);
340// CHECK: @llvm.ppc.altivec.vaddubs
341// CHECK-LE: @llvm.ppc.altivec.vaddubs
342
343  res_vuc = vec_adds(vbc, vuc);
344// CHECK: @llvm.ppc.altivec.vaddubs
345// CHECK-LE: @llvm.ppc.altivec.vaddubs
346
347  res_vuc = vec_adds(vuc, vbc);
348// CHECK: @llvm.ppc.altivec.vaddubs
349// CHECK-LE: @llvm.ppc.altivec.vaddubs
350
351  res_vs  = vec_adds(vs, vs);
352// CHECK: @llvm.ppc.altivec.vaddshs
353// CHECK-LE: @llvm.ppc.altivec.vaddshs
354
355  res_vs  = vec_adds(vbs, vs);
356// CHECK: @llvm.ppc.altivec.vaddshs
357// CHECK-LE: @llvm.ppc.altivec.vaddshs
358
359  res_vs  = vec_adds(vs, vbs);
360// CHECK: @llvm.ppc.altivec.vaddshs
361// CHECK-LE: @llvm.ppc.altivec.vaddshs
362
363  res_vus = vec_adds(vus, vus);
364// CHECK: @llvm.ppc.altivec.vadduhs
365// CHECK-LE: @llvm.ppc.altivec.vadduhs
366
367  res_vus = vec_adds(vbs, vus);
368// CHECK: @llvm.ppc.altivec.vadduhs
369// CHECK-LE: @llvm.ppc.altivec.vadduhs
370
371  res_vus = vec_adds(vus, vbs);
372// CHECK: @llvm.ppc.altivec.vadduhs
373// CHECK-LE: @llvm.ppc.altivec.vadduhs
374
375  res_vi  = vec_adds(vi, vi);
376// CHECK: @llvm.ppc.altivec.vaddsws
377// CHECK-LE: @llvm.ppc.altivec.vaddsws
378
379  res_vi  = vec_adds(vbi, vi);
380// CHECK: @llvm.ppc.altivec.vaddsws
381// CHECK-LE: @llvm.ppc.altivec.vaddsws
382
383  res_vi  = vec_adds(vi, vbi);
384// CHECK: @llvm.ppc.altivec.vaddsws
385// CHECK-LE: @llvm.ppc.altivec.vaddsws
386
387  res_vui = vec_adds(vui, vui);
388// CHECK: @llvm.ppc.altivec.vadduws
389// CHECK-LE: @llvm.ppc.altivec.vadduws
390
391  res_vui = vec_adds(vbi, vui);
392// CHECK: @llvm.ppc.altivec.vadduws
393// CHECK-LE: @llvm.ppc.altivec.vadduws
394
395  res_vui = vec_adds(vui, vbi);
396// CHECK: @llvm.ppc.altivec.vadduws
397// CHECK-LE: @llvm.ppc.altivec.vadduws
398
399  res_vsc = vec_vaddsbs(vsc, vsc);
400// CHECK: @llvm.ppc.altivec.vaddsbs
401// CHECK-LE: @llvm.ppc.altivec.vaddsbs
402
403  res_vsc = vec_vaddsbs(vbc, vsc);
404// CHECK: @llvm.ppc.altivec.vaddsbs
405// CHECK-LE: @llvm.ppc.altivec.vaddsbs
406
407  res_vsc = vec_vaddsbs(vsc, vbc);
408// CHECK: @llvm.ppc.altivec.vaddsbs
409// CHECK-LE: @llvm.ppc.altivec.vaddsbs
410
411  res_vuc = vec_vaddubs(vuc, vuc);
412// CHECK: @llvm.ppc.altivec.vaddubs
413// CHECK-LE: @llvm.ppc.altivec.vaddubs
414
415  res_vuc = vec_vaddubs(vbc, vuc);
416// CHECK: @llvm.ppc.altivec.vaddubs
417// CHECK-LE: @llvm.ppc.altivec.vaddubs
418
419  res_vuc = vec_vaddubs(vuc, vbc);
420// CHECK: @llvm.ppc.altivec.vaddubs
421// CHECK-LE: @llvm.ppc.altivec.vaddubs
422
423  res_vs  = vec_vaddshs(vs, vs);
424// CHECK: @llvm.ppc.altivec.vaddshs
425// CHECK-LE: @llvm.ppc.altivec.vaddshs
426
427  res_vs  = vec_vaddshs(vbs, vs);
428// CHECK: @llvm.ppc.altivec.vaddshs
429// CHECK-LE: @llvm.ppc.altivec.vaddshs
430
431  res_vs  = vec_vaddshs(vs, vbs);
432// CHECK: @llvm.ppc.altivec.vaddshs
433// CHECK-LE: @llvm.ppc.altivec.vaddshs
434
435  res_vus = vec_vadduhs(vus, vus);
436// CHECK: @llvm.ppc.altivec.vadduhs
437// CHECK-LE: @llvm.ppc.altivec.vadduhs
438
439  res_vus = vec_vadduhs(vbs, vus);
440// CHECK: @llvm.ppc.altivec.vadduhs
441// CHECK-LE: @llvm.ppc.altivec.vadduhs
442
443  res_vus = vec_vadduhs(vus, vbs);
444// CHECK: @llvm.ppc.altivec.vadduhs
445// CHECK-LE: @llvm.ppc.altivec.vadduhs
446
447  res_vi  = vec_vaddsws(vi, vi);
448// CHECK: @llvm.ppc.altivec.vaddsws
449// CHECK-LE: @llvm.ppc.altivec.vaddsws
450
451  res_vi  = vec_vaddsws(vbi, vi);
452// CHECK: @llvm.ppc.altivec.vaddsws
453// CHECK-LE: @llvm.ppc.altivec.vaddsws
454
455  res_vi  = vec_vaddsws(vi, vbi);
456// CHECK: @llvm.ppc.altivec.vaddsws
457// CHECK-LE: @llvm.ppc.altivec.vaddsws
458
459  res_vui = vec_vadduws(vui, vui);
460// CHECK: @llvm.ppc.altivec.vadduws
461// CHECK-LE: @llvm.ppc.altivec.vadduws
462
463  res_vui = vec_vadduws(vbi, vui);
464// CHECK: @llvm.ppc.altivec.vadduws
465// CHECK-LE: @llvm.ppc.altivec.vadduws
466
467  res_vui = vec_vadduws(vui, vbi);
468// CHECK: @llvm.ppc.altivec.vadduws
469// CHECK-LE: @llvm.ppc.altivec.vadduws
470
471  /* vec_and */
472  res_vsc = vec_and(vsc, vsc);
473// CHECK: and <16 x i8>
474// CHECK-LE: and <16 x i8>
475
476  res_vsc = vec_and(vbc, vsc);
477// CHECK: and <16 x i8>
478// CHECK-LE: and <16 x i8>
479
480  res_vsc = vec_and(vsc, vbc);
481// CHECK: and <16 x i8>
482// CHECK-LE: and <16 x i8>
483
484  res_vuc = vec_and(vuc, vuc);
485// CHECK: and <16 x i8>
486// CHECK-LE: and <16 x i8>
487
488  res_vuc = vec_and(vbc, vuc);
489// CHECK: and <16 x i8>
490// CHECK-LE: and <16 x i8>
491
492  res_vuc = vec_and(vuc, vbc);
493// CHECK: and <16 x i8>
494// CHECK-LE: and <16 x i8>
495
496  res_vbc = vec_and(vbc, vbc);
497// CHECK: and <16 x i8>
498// CHECK-LE: and <16 x i8>
499
500  res_vs  = vec_and(vs, vs);
501// CHECK: and <8 x i16>
502// CHECK-LE: and <8 x i16>
503
504  res_vs  = vec_and(vbs, vs);
505// CHECK: and <8 x i16>
506// CHECK-LE: and <8 x i16>
507
508  res_vs  = vec_and(vs, vbs);
509// CHECK: and <8 x i16>
510// CHECK-LE: and <8 x i16>
511
512  res_vus = vec_and(vus, vus);
513// CHECK: and <8 x i16>
514// CHECK-LE: and <8 x i16>
515
516  res_vus = vec_and(vbs, vus);
517// CHECK: and <8 x i16>
518// CHECK-LE: and <8 x i16>
519
520  res_vus = vec_and(vus, vbs);
521// CHECK: and <8 x i16>
522// CHECK-LE: and <8 x i16>
523
524  res_vbs = vec_and(vbs, vbs);
525// CHECK: and <8 x i16>
526// CHECK-LE: and <8 x i16>
527
528  res_vi  = vec_and(vi, vi);
529// CHECK: and <4 x i32>
530// CHECK-LE: and <4 x i32>
531
532  res_vi  = vec_and(vbi, vi);
533// CHECK: and <4 x i32>
534// CHECK-le: and <4 x i32>
535
536  res_vi  = vec_and(vi, vbi);
537// CHECK: and <4 x i32>
538// CHECK-LE: and <4 x i32>
539
540  res_vui = vec_and(vui, vui);
541// CHECK: and <4 x i32>
542// CHECK-LE: and <4 x i32>
543
544  res_vui = vec_and(vbi, vui);
545// CHECK: and <4 x i32>
546// CHECK-LE: and <4 x i32>
547
548  res_vui = vec_and(vui, vbi);
549// CHECK: and <4 x i32>
550// CHECK-LE: and <4 x i32>
551
552  res_vbi = vec_and(vbi, vbi);
553// CHECK: and <4 x i32>
554// CHECK-LE: and <4 x i32>
555
556  res_vsc = vec_vand(vsc, vsc);
557// CHECK: and <16 x i8>
558// CHECK-LE: and <16 x i8>
559
560  res_vsc = vec_vand(vbc, vsc);
561// CHECK: and <16 x i8>
562// CHECK-LE: and <16 x i8>
563
564  res_vsc = vec_vand(vsc, vbc);
565// CHECK: and <16 x i8>
566// CHECK-LE: and <16 x i8>
567
568  res_vuc = vec_vand(vuc, vuc);
569// CHECK: and <16 x i8>
570// CHECK-LE: and <16 x i8>
571
572  res_vuc = vec_vand(vbc, vuc);
573// CHECK: and <16 x i8>
574// CHECK-LE: and <16 x i8>
575
576  res_vuc = vec_vand(vuc, vbc);
577// CHECK: and <16 x i8>
578// CHECK-LE: and <16 x i8>
579
580  res_vbc = vec_vand(vbc, vbc);
581// CHECK: and <16 x i8>
582// CHECK-LE: and <16 x i8>
583
584  res_vs  = vec_vand(vs, vs);
585// CHECK: and <8 x i16>
586// CHECK-LE: and <8 x i16>
587
588  res_vs  = vec_vand(vbs, vs);
589// CHECK: and <8 x i16>
590// CHECK-LE: and <8 x i16>
591
592  res_vs  = vec_vand(vs, vbs);
593// CHECK: and <8 x i16>
594// CHECK-LE: and <8 x i16>
595
596  res_vus = vec_vand(vus, vus);
597// CHECK: and <8 x i16>
598// CHECK-LE: and <8 x i16>
599
600  res_vus = vec_vand(vbs, vus);
601// CHECK: and <8 x i16>
602// CHECK-LE: and <8 x i16>
603
604  res_vus = vec_vand(vus, vbs);
605// CHECK: and <8 x i16>
606// CHECK-LE: and <8 x i16>
607
608  res_vbs = vec_vand(vbs, vbs);
609// CHECK: and <8 x i16>
610// CHECK-LE: and <8 x i16>
611
612  res_vi  = vec_vand(vi, vi);
613// CHECK: and <4 x i32>
614// CHECK-LE: and <4 x i32>
615
616  res_vi  = vec_vand(vbi, vi);
617// CHECK: and <4 x i32>
618// CHECK-LE: and <4 x i32>
619
620  res_vi  = vec_vand(vi, vbi);
621// CHECK: and <4 x i32>
622// CHECK-LE: and <4 x i32>
623
624  res_vui = vec_vand(vui, vui);
625// CHECK: and <4 x i32>
626// CHECK-LE: and <4 x i32>
627
628  res_vui = vec_vand(vbi, vui);
629// CHECK: and <4 x i32>
630// CHECK-LE: and <4 x i32>
631
632  res_vui = vec_vand(vui, vbi);
633// CHECK: and <4 x i32>
634// CHECK-LE: and <4 x i32>
635
636  res_vbi = vec_vand(vbi, vbi);
637// CHECK: and <4 x i32>
638// CHECK-LE: and <4 x i32>
639
640  /* vec_andc */
641  res_vsc = vec_andc(vsc, vsc);
642// CHECK: xor <16 x i8>
643// CHECK: and <16 x i8>
644// CHECK-LE: xor <16 x i8>
645// CHECK-LE: and <16 x i8>
646
647  res_vsc = vec_andc(vbc, 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(vsc, vbc);
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_vuc = vec_andc(vuc, vuc);
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(vbc, 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(vuc, vbc);
672// CHECK-LE: xor <16 x i8>
673// CHECK-LE: and <16 x i8>
674
675  res_vbc = vec_andc(vbc, vbc);
676// CHECK: xor <16 x i8>
677// CHECK: and <16 x i8>
678// CHECK-LE: xor <16 x i8>
679// CHECK-LE: and <16 x i8>
680
681  res_vs  = vec_andc(vs, vs);
682// CHECK: xor <8 x i16>
683// CHECK: and <8 x i16>
684// CHECK-LE: xor <8 x i16>
685// CHECK-LE: and <8 x i16>
686
687  res_vs  = vec_andc(vbs, 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(vs, vbs);
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_vus = vec_andc(vus, vus);
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(vbs, 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(vus, vbs);
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_vbs = vec_andc(vbs, 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_vi  = vec_andc(vi, vi);
724// CHECK: xor <4 x i32>
725// CHECK: and <4 x i32>
726// CHECK-LE: xor <4 x i32>
727// CHECK-LE: and <4 x i32>
728
729  res_vi  = vec_andc(vbi, 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(vi, vbi);
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_vui = vec_andc(vui, vui);
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(vbi, 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(vui, vbi);
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_vf = vec_andc(vf, vf);
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(vbi, 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(vf, vbi);
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_vsc = vec_vandc(vsc, vsc);
778// CHECK: xor <16 x i8>
779// CHECK: and <16 x i8>
780// CHECK-LE: xor <16 x i8>
781// CHECK-LE: and <16 x i8>
782
783  res_vsc = vec_vandc(vbc, 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(vsc, vbc);
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_vuc = vec_vandc(vuc, vuc);
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(vbc, 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(vuc, vbc);
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_vbc = vec_vandc(vbc, 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_vs  = vec_vandc(vs, vs);
820// CHECK: xor <8 x i16>
821// CHECK: and <8 x i16>
822// CHECK-LE: xor <8 x i16>
823// CHECK-LE: and <8 x i16>
824
825  res_vs  = vec_vandc(vbs, 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(vs, vbs);
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_vus = vec_vandc(vus, vus);
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(vbs, 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(vus, vbs);
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_vbs = vec_vandc(vbs, 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_vi  = vec_vandc(vi, vi);
862// CHECK: xor <4 x i32>
863// CHECK: and <4 x i32>
864// CHECK-LE: xor <4 x i32>
865// CHECK-LE: and <4 x i32>
866
867  res_vi  = vec_vandc(vbi, 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(vi, vbi);
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_vui = vec_vandc(vui, vui);
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(vbi, 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(vui, vbi);
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_vf = vec_vandc(vf, vf);
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(vbi, 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(vf, vbi);
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}
916
917// CHECK-LABEL: define void @test2
918void test2() {
919  /* vec_avg */
920  res_vsc = vec_avg(vsc, vsc);
921// CHECK: @llvm.ppc.altivec.vavgsb
922// CHECK-LE: @llvm.ppc.altivec.vavgsb
923
924  res_vuc = vec_avg(vuc, vuc);
925// CHECK: @llvm.ppc.altivec.vavgub
926// CHECK-LE: @llvm.ppc.altivec.vavgub
927
928  res_vs  = vec_avg(vs, vs);
929// CHECK: @llvm.ppc.altivec.vavgsh
930// CHECK-LE: @llvm.ppc.altivec.vavgsh
931
932  res_vus = vec_avg(vus, vus);
933// CHECK: @llvm.ppc.altivec.vavguh
934// CHECK-LE: @llvm.ppc.altivec.vavguh
935
936  res_vi  = vec_avg(vi, vi);
937// CHECK: @llvm.ppc.altivec.vavgsw
938// CHECK-LE: @llvm.ppc.altivec.vavgsw
939
940  res_vui = vec_avg(vui, vui);
941// CHECK: @llvm.ppc.altivec.vavguw
942// CHECK-LE: @llvm.ppc.altivec.vavguw
943
944  res_vsc = vec_vavgsb(vsc, vsc);
945// CHECK: @llvm.ppc.altivec.vavgsb
946// CHECK-LE: @llvm.ppc.altivec.vavgsb
947
948  res_vuc = vec_vavgub(vuc, vuc);
949// CHECK: @llvm.ppc.altivec.vavgub
950// CHECK-LE: @llvm.ppc.altivec.vavgub
951
952  res_vs  = vec_vavgsh(vs, vs);
953// CHECK: @llvm.ppc.altivec.vavgsh
954// CHECK-LE: @llvm.ppc.altivec.vavgsh
955
956  res_vus = vec_vavguh(vus, vus);
957// CHECK: @llvm.ppc.altivec.vavguh
958// CHECK-LE: @llvm.ppc.altivec.vavguh
959
960  res_vi  = vec_vavgsw(vi, vi);
961// CHECK: @llvm.ppc.altivec.vavgsw
962// CHECK-LE: @llvm.ppc.altivec.vavgsw
963
964  res_vui = vec_vavguw(vui, vui);
965// CHECK: @llvm.ppc.altivec.vavguw
966// CHECK-LE: @llvm.ppc.altivec.vavguw
967
968  /* vec_ceil */
969  res_vf = vec_ceil(vf);
970// CHECK: @llvm.ppc.altivec.vrfip
971// CHECK-LE: @llvm.ppc.altivec.vrfip
972
973  res_vf = vec_vrfip(vf);
974// CHECK: @llvm.ppc.altivec.vrfip
975// CHECK-LE: @llvm.ppc.altivec.vrfip
976
977  /* vec_cmpb */
978  res_vi = vec_cmpb(vf, vf);
979// CHECK: @llvm.ppc.altivec.vcmpbfp
980// CHECK-LE: @llvm.ppc.altivec.vcmpbfp
981
982  res_vi = vec_vcmpbfp(vf, vf);
983// CHECK: @llvm.ppc.altivec.vcmpbfp
984// CHECK-LE: @llvm.ppc.altivec.vcmpbfp
985
986  /* vec_cmpeq */
987  res_vbc = vec_cmpeq(vsc, vsc);
988// CHECK: @llvm.ppc.altivec.vcmpequb
989// CHECK-LE: @llvm.ppc.altivec.vcmpequb
990
991  res_vbc = vec_cmpeq(vuc, vuc);
992// CHECK: @llvm.ppc.altivec.vcmpequb
993// CHECK-LE: @llvm.ppc.altivec.vcmpequb
994
995  res_vbc = vec_cmpeq(vbc, vbc);
996// CHECK: @llvm.ppc.altivec.vcmpequb
997// CHECK-LE: @llvm.ppc.altivec.vcmpequb
998
999  res_vbc = vec_cmpeq(vbc, vbc);
1000// CHECK: @llvm.ppc.altivec.vcmpequb
1001// CHECK-LE: @llvm.ppc.altivec.vcmpequb
1002
1003  res_vbs = vec_cmpeq(vs, vs);
1004// CHECK: @llvm.ppc.altivec.vcmpequh
1005// CHECK-LE: @llvm.ppc.altivec.vcmpequh
1006
1007  res_vbs = vec_cmpeq(vus, vus);
1008// CHECK: @llvm.ppc.altivec.vcmpequh
1009// CHECK-LE: @llvm.ppc.altivec.vcmpequh
1010
1011  res_vbs = vec_cmpeq(vbs, vbs);
1012// CHECK: @llvm.ppc.altivec.vcmpequh
1013// CHECK-LE: @llvm.ppc.altivec.vcmpequh
1014
1015  res_vbs = vec_cmpeq(vbs, vbs);
1016// CHECK: @llvm.ppc.altivec.vcmpequh
1017// CHECK-LE: @llvm.ppc.altivec.vcmpequh
1018
1019  res_vbi = vec_cmpeq(vi, vi);
1020// CHECK: @llvm.ppc.altivec.vcmpequw
1021// CHECK-LE: @llvm.ppc.altivec.vcmpequw
1022
1023  res_vbi = vec_cmpeq(vui, vui);
1024// CHECK: @llvm.ppc.altivec.vcmpequw
1025// CHECK-LE: @llvm.ppc.altivec.vcmpequw
1026
1027  res_vbi = vec_cmpeq(vbi, vbi);
1028// CHECK: @llvm.ppc.altivec.vcmpequw
1029// CHECK-LE: @llvm.ppc.altivec.vcmpequw
1030
1031  res_vbi = vec_cmpeq(vbi, vbi);
1032// CHECK: @llvm.ppc.altivec.vcmpequw
1033// CHECK-LE: @llvm.ppc.altivec.vcmpequw
1034
1035  res_vbi = vec_cmpeq(vf, vf);
1036// CHECK: @llvm.ppc.altivec.vcmpeqfp
1037// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1038
1039  /* vec_cmpge */
1040  res_vbc = vec_cmpge(vsc, vsc);
1041// CHECK: @llvm.ppc.altivec.vcmpgtsb
1042// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1043
1044  res_vbc = vec_cmpge(vuc, vuc);
1045// CHECK: @llvm.ppc.altivec.vcmpgtub
1046// CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1047
1048  res_vbs = vec_cmpge(vs, vs);
1049// CHECK: @llvm.ppc.altivec.vcmpgtsh
1050// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1051
1052  res_vbs = vec_cmpge(vus, vus);
1053// CHECK: @llvm.ppc.altivec.vcmpgtuh
1054// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1055
1056  res_vbi = vec_cmpge(vi, vi);
1057// CHECK: @llvm.ppc.altivec.vcmpgtsw
1058// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1059
1060  res_vbi = vec_cmpge(vui, vui);
1061// CHECK: @llvm.ppc.altivec.vcmpgtuw
1062// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1063
1064  res_vbi = vec_cmpge(vf, vf);
1065// CHECK: @llvm.ppc.altivec.vcmpgefp
1066// CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1067
1068  res_vbi = vec_vcmpgefp(vf, vf);
1069// CHECK: @llvm.ppc.altivec.vcmpgefp
1070// CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1071}
1072
1073// CHECK-LABEL: define void @test5
1074void test5() {
1075
1076  /* vec_cmpgt */
1077  res_vbc = vec_cmpgt(vsc, vsc);
1078// CHECK: @llvm.ppc.altivec.vcmpgtsb
1079// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1080
1081  res_vbc = vec_cmpgt(vuc, vuc);
1082// CHECK: @llvm.ppc.altivec.vcmpgtub
1083// CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1084
1085  res_vbs = vec_cmpgt(vs, vs);
1086// CHECK: @llvm.ppc.altivec.vcmpgtsh
1087// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1088
1089  res_vbs = vec_cmpgt(vus, vus);
1090// CHECK: @llvm.ppc.altivec.vcmpgtuh
1091// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1092
1093  res_vbi = vec_cmpgt(vi, vi);
1094// CHECK: @llvm.ppc.altivec.vcmpgtsw
1095// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1096
1097  res_vbi = vec_cmpgt(vui, vui);
1098// CHECK: @llvm.ppc.altivec.vcmpgtuw
1099// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1100
1101  res_vbi = vec_cmpgt(vf, vf);
1102// CHECK: @llvm.ppc.altivec.vcmpgtfp
1103// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1104
1105  res_vbc = vec_vcmpgtsb(vsc, vsc);
1106// CHECK: @llvm.ppc.altivec.vcmpgtsb
1107// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1108
1109  res_vbc = vec_vcmpgtub(vuc, vuc);
1110// CHECK: @llvm.ppc.altivec.vcmpgtub
1111// CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1112
1113  res_vbs = vec_vcmpgtsh(vs, vs);
1114// CHECK: @llvm.ppc.altivec.vcmpgtsh
1115// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1116
1117  res_vbs = vec_vcmpgtuh(vus, vus);
1118// CHECK: @llvm.ppc.altivec.vcmpgtuh
1119// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1120
1121  res_vbi = vec_vcmpgtsw(vi, vi);
1122// CHECK: @llvm.ppc.altivec.vcmpgtsw
1123// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1124
1125  res_vbi = vec_vcmpgtuw(vui, vui);
1126// CHECK: @llvm.ppc.altivec.vcmpgtuw
1127// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1128
1129  res_vbi = vec_vcmpgtfp(vf, vf);
1130// CHECK: @llvm.ppc.altivec.vcmpgtfp
1131// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1132
1133  /* vec_cmple */
1134  res_vbc = vec_cmple(vsc, vsc);
1135// CHECK: @llvm.ppc.altivec.vcmpgtsb
1136// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1137
1138  res_vbc = vec_cmple(vuc, vuc);
1139// CHECK: @llvm.ppc.altivec.vcmpgtub
1140// CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1141
1142  res_vbs = vec_cmple(vs, vs);
1143// CHECK: @llvm.ppc.altivec.vcmpgtsh
1144// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1145
1146  res_vbs = vec_cmple(vus, vus);
1147// CHECK: @llvm.ppc.altivec.vcmpgtuh
1148// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1149
1150  res_vbi = vec_cmple(vi, vi);
1151// CHECK: @llvm.ppc.altivec.vcmpgtsw
1152// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1153
1154  res_vbi = vec_cmple(vui, vui);
1155// CHECK: @llvm.ppc.altivec.vcmpgtuw
1156// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1157
1158  res_vbi = vec_cmple(vf, vf);
1159// CHECK: @llvm.ppc.altivec.vcmpgefp
1160// CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1161}
1162
1163// CHECK-LABEL: define void @test6
1164void test6() {
1165  /* vec_cmplt */
1166  res_vbc = vec_cmplt(vsc, vsc);
1167// CHECK: @llvm.ppc.altivec.vcmpgtsb
1168// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1169
1170  res_vbc = vec_cmplt(vuc, vuc);
1171// CHECK: @llvm.ppc.altivec.vcmpgtub
1172// CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1173
1174  res_vbs = vec_cmplt(vs, vs);
1175// CHECK: @llvm.ppc.altivec.vcmpgtsh
1176// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1177
1178  res_vbs = vec_cmplt(vus, vus);
1179// CHECK: @llvm.ppc.altivec.vcmpgtuh
1180// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1181
1182  res_vbi = vec_cmplt(vi, vi);
1183// CHECK: @llvm.ppc.altivec.vcmpgtsw
1184// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1185
1186  res_vbi = vec_cmplt(vui, vui);
1187// CHECK: @llvm.ppc.altivec.vcmpgtuw
1188// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1189
1190  res_vbi = vec_cmplt(vf, vf);
1191// CHECK: @llvm.ppc.altivec.vcmpgtfp
1192// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1193
1194  /* vec_ctf */
1195  res_vf  = vec_ctf(vi, 0);
1196// CHECK: @llvm.ppc.altivec.vcfsx
1197// CHECK-LE: @llvm.ppc.altivec.vcfsx
1198
1199  res_vf  = vec_ctf(vui, 0);
1200// CHECK: @llvm.ppc.altivec.vcfux
1201// CHECK-LE: @llvm.ppc.altivec.vcfux
1202
1203  res_vf  = vec_vcfsx(vi, 0);
1204// CHECK: @llvm.ppc.altivec.vcfsx
1205// CHECK-LE: @llvm.ppc.altivec.vcfsx
1206
1207  res_vf  = vec_vcfux(vui, 0);
1208// CHECK: @llvm.ppc.altivec.vcfux
1209// CHECK-LE: @llvm.ppc.altivec.vcfux
1210
1211  /* vec_cts */
1212  res_vi = vec_cts(vf, 0);
1213// CHECK: @llvm.ppc.altivec.vctsxs
1214// CHECK-LE: @llvm.ppc.altivec.vctsxs
1215
1216  res_vi = vec_vctsxs(vf, 0);
1217// CHECK: @llvm.ppc.altivec.vctsxs
1218// CHECK-LE: @llvm.ppc.altivec.vctsxs
1219
1220  /* vec_ctu */
1221  res_vui = vec_ctu(vf, 0);
1222// CHECK: @llvm.ppc.altivec.vctuxs
1223// CHECK-LE: @llvm.ppc.altivec.vctuxs
1224
1225  res_vui = vec_vctuxs(vf, 0);
1226// CHECK: @llvm.ppc.altivec.vctuxs
1227// CHECK-LE: @llvm.ppc.altivec.vctuxs
1228
1229  res_vi = vec_signed(vf);
1230// CHECK: fptosi <4 x float>
1231// CHECK-LE: fptosi <4 x float>
1232
1233  res_vui = vec_unsigned(vf);
1234// CHECK: fptoui <4 x float>
1235// CHECK-LE: fptoui <4 x float>
1236
1237  res_vf = vec_float(vi);
1238// CHECK: sitofp <4 x i32>
1239// CHECK-LE: sitofp <4 x i32>
1240
1241  res_vf = vec_float(vui);
1242// CHECK: uitofp <4 x i32>
1243// CHECK-LE: uitofp <4 x i32>
1244
1245  /* vec_div */
1246  res_vsc = vec_div(vsc, vsc);
1247// CHECK: sdiv <16 x i8>
1248// CHECK-LE: sdiv <16 x i8>
1249
1250  res_vuc = vec_div(vuc, vuc);
1251// CHECK: udiv <16 x i8>
1252// CHECK-LE: udiv <16 x i8>
1253
1254  res_vs = vec_div(vs, vs);
1255// CHECK: sdiv <8 x i16>
1256// CHECK-LE: sdiv <8 x i16>
1257
1258  res_vus = vec_div(vus, vus);
1259// CHECK: udiv <8 x i16>
1260// CHECK-LE: udiv <8 x i16>
1261
1262  res_vi = vec_div(vi, vi);
1263// CHECK: sdiv <4 x i32>
1264// CHECK-LE: sdiv <4 x i32>
1265
1266  res_vui = vec_div(vui, vui);
1267// CHECK: udiv <4 x i32>
1268// CHECK-LE: udiv <4 x i32>
1269
1270  /* vec_dss */
1271  vec_dss(0);
1272// CHECK: @llvm.ppc.altivec.dss
1273// CHECK-LE: @llvm.ppc.altivec.dss
1274
1275  /* vec_dssall */
1276  vec_dssall();
1277// CHECK: @llvm.ppc.altivec.dssall
1278// CHECK-LE: @llvm.ppc.altivec.dssall
1279
1280  /* vec_dst */
1281  vec_dst(&vsc, 0, 0);
1282// CHECK: @llvm.ppc.altivec.dst
1283// CHECK-LE: @llvm.ppc.altivec.dst
1284
1285  /* vec_dstst */
1286  vec_dstst(&vs, 0, 0);
1287// CHECK: @llvm.ppc.altivec.dstst
1288// CHECK-LE: @llvm.ppc.altivec.dstst
1289
1290  /* vec_dststt */
1291  vec_dststt(&param_i, 0, 0);
1292// CHECK: @llvm.ppc.altivec.dststt
1293// CHECK-LE: @llvm.ppc.altivec.dststt
1294
1295  /* vec_dstt */
1296  vec_dstt(&vf, 0, 0);
1297// CHECK: @llvm.ppc.altivec.dstt
1298// CHECK-LE: @llvm.ppc.altivec.dstt
1299
1300  /* vec_expte */
1301  res_vf = vec_expte(vf);
1302// CHECK: @llvm.ppc.altivec.vexptefp
1303// CHECK-LE: @llvm.ppc.altivec.vexptefp
1304
1305  res_vf = vec_vexptefp(vf);
1306// CHECK: @llvm.ppc.altivec.vexptefp
1307// CHECK-LE: @llvm.ppc.altivec.vexptefp
1308
1309  /* vec_floor */
1310  res_vf = vec_floor(vf);
1311// CHECK: @llvm.ppc.altivec.vrfim
1312// CHECK-LE: @llvm.ppc.altivec.vrfim
1313
1314  res_vf = vec_vrfim(vf);
1315// CHECK: @llvm.ppc.altivec.vrfim
1316// CHECK-LE: @llvm.ppc.altivec.vrfim
1317
1318  /* vec_ld */
1319  res_vsc = vec_ld(0, &vsc);
1320// CHECK: @llvm.ppc.altivec.lvx
1321// CHECK-LE: @llvm.ppc.altivec.lvx
1322
1323  res_vsc = vec_ld(0, &param_sc);
1324// CHECK: @llvm.ppc.altivec.lvx
1325// CHECK-LE: @llvm.ppc.altivec.lvx
1326
1327  res_vuc = vec_ld(0, &vuc);
1328// CHECK: @llvm.ppc.altivec.lvx
1329// CHECK-LE: @llvm.ppc.altivec.lvx
1330
1331  res_vuc = vec_ld(0, &param_uc);
1332// CHECK: @llvm.ppc.altivec.lvx
1333// CHECK-LE: @llvm.ppc.altivec.lvx
1334
1335  res_vbc = vec_ld(0, &vbc);
1336// CHECK: @llvm.ppc.altivec.lvx
1337// CHECK-LE: @llvm.ppc.altivec.lvx
1338
1339  res_vs  = vec_ld(0, &vs);
1340// CHECK: @llvm.ppc.altivec.lvx
1341// CHECK-LE: @llvm.ppc.altivec.lvx
1342
1343  res_vs  = vec_ld(0, &param_s);
1344// CHECK: @llvm.ppc.altivec.lvx
1345// CHECK-LE: @llvm.ppc.altivec.lvx
1346
1347  res_vus = vec_ld(0, &vus);
1348// CHECK: @llvm.ppc.altivec.lvx
1349// CHECK-LE: @llvm.ppc.altivec.lvx
1350
1351  res_vus = vec_ld(0, &param_us);
1352// CHECK: @llvm.ppc.altivec.lvx
1353// CHECK-LE: @llvm.ppc.altivec.lvx
1354
1355  res_vbs = vec_ld(0, &vbs);
1356// CHECK: @llvm.ppc.altivec.lvx
1357// CHECK-LE: @llvm.ppc.altivec.lvx
1358
1359  res_vp  = vec_ld(0, &vp);
1360// CHECK: @llvm.ppc.altivec.lvx
1361// CHECK-LE: @llvm.ppc.altivec.lvx
1362
1363  res_vi  = vec_ld(0, &vi);
1364// CHECK: @llvm.ppc.altivec.lvx
1365// CHECK-LE: @llvm.ppc.altivec.lvx
1366
1367  res_vi  = vec_ld(0, &param_i);
1368// CHECK: @llvm.ppc.altivec.lvx
1369// CHECK-LE: @llvm.ppc.altivec.lvx
1370
1371  res_vui = vec_ld(0, &vui);
1372// CHECK: @llvm.ppc.altivec.lvx
1373// CHECK-LE: @llvm.ppc.altivec.lvx
1374
1375  res_vui = vec_ld(0, &param_ui);
1376// CHECK: @llvm.ppc.altivec.lvx
1377// CHECK-LE: @llvm.ppc.altivec.lvx
1378
1379  res_vbi = vec_ld(0, &vbi);
1380// CHECK: @llvm.ppc.altivec.lvx
1381// CHECK-LE: @llvm.ppc.altivec.lvx
1382
1383  res_vf  = vec_ld(0, &vf);
1384// CHECK: @llvm.ppc.altivec.lvx
1385// CHECK-LE: @llvm.ppc.altivec.lvx
1386
1387  res_vf  = vec_ld(0, &param_f);
1388// CHECK: @llvm.ppc.altivec.lvx
1389// CHECK-LE: @llvm.ppc.altivec.lvx
1390
1391  res_vsc = vec_lvx(0, &vsc);
1392// CHECK: @llvm.ppc.altivec.lvx
1393// CHECK-LE: @llvm.ppc.altivec.lvx
1394
1395  res_vsc = vec_lvx(0, &param_sc);
1396// CHECK: @llvm.ppc.altivec.lvx
1397// CHECK-LE: @llvm.ppc.altivec.lvx
1398
1399  res_vuc = vec_lvx(0, &vuc);
1400// CHECK: @llvm.ppc.altivec.lvx
1401// CHECK-LE: @llvm.ppc.altivec.lvx
1402
1403  res_vuc = vec_lvx(0, &param_uc);
1404// CHECK: @llvm.ppc.altivec.lvx
1405// CHECK-LE: @llvm.ppc.altivec.lvx
1406
1407  res_vbc = vec_lvx(0, &vbc);
1408// CHECK: @llvm.ppc.altivec.lvx
1409// CHECK-LE: @llvm.ppc.altivec.lvx
1410
1411  res_vs  = vec_lvx(0, &vs);
1412// CHECK: @llvm.ppc.altivec.lvx
1413// CHECK-LE: @llvm.ppc.altivec.lvx
1414
1415  res_vs  = vec_lvx(0, &param_s);
1416// CHECK: @llvm.ppc.altivec.lvx
1417// CHECK-LE: @llvm.ppc.altivec.lvx
1418
1419  res_vus = vec_lvx(0, &vus);
1420// CHECK: @llvm.ppc.altivec.lvx
1421// CHECK-LE: @llvm.ppc.altivec.lvx
1422
1423  res_vus = vec_lvx(0, &param_us);
1424// CHECK: @llvm.ppc.altivec.lvx
1425// CHECK-LE: @llvm.ppc.altivec.lvx
1426
1427  res_vbs = vec_lvx(0, &vbs);
1428// CHECK: @llvm.ppc.altivec.lvx
1429// CHECK-LE: @llvm.ppc.altivec.lvx
1430
1431  res_vp  = vec_lvx(0, &vp);
1432// CHECK: @llvm.ppc.altivec.lvx
1433// CHECK-LE: @llvm.ppc.altivec.lvx
1434
1435  res_vi  = vec_lvx(0, &vi);
1436// CHECK: @llvm.ppc.altivec.lvx
1437// CHECK-LE: @llvm.ppc.altivec.lvx
1438
1439  res_vi  = vec_lvx(0, &param_i);
1440// CHECK: @llvm.ppc.altivec.lvx
1441// CHECK-LE: @llvm.ppc.altivec.lvx
1442
1443  res_vui = vec_lvx(0, &vui);
1444// CHECK: @llvm.ppc.altivec.lvx
1445// CHECK-LE: @llvm.ppc.altivec.lvx
1446
1447  res_vui = vec_lvx(0, &param_ui);
1448// CHECK: @llvm.ppc.altivec.lvx
1449// CHECK-LE: @llvm.ppc.altivec.lvx
1450
1451  res_vbi = vec_lvx(0, &vbi);
1452// CHECK: @llvm.ppc.altivec.lvx
1453// CHECK-LE: @llvm.ppc.altivec.lvx
1454
1455  res_vf  = vec_lvx(0, &vf);
1456// CHECK: @llvm.ppc.altivec.lvx
1457// CHECK-LE: @llvm.ppc.altivec.lvx
1458
1459  res_vf  = vec_lvx(0, &param_f);
1460// CHECK: @llvm.ppc.altivec.lvx
1461// CHECK-LE: @llvm.ppc.altivec.lvx
1462
1463  /* vec_lde */
1464  res_vsc = vec_lde(0, &param_sc);
1465// CHECK: @llvm.ppc.altivec.lvebx
1466// CHECK-LE: @llvm.ppc.altivec.lvebx
1467
1468  res_vuc = vec_lde(0, &param_uc);
1469// CHECK: @llvm.ppc.altivec.lvebx
1470// CHECK-LE: @llvm.ppc.altivec.lvebx
1471
1472  res_vs  = vec_lde(0, &param_s);
1473// CHECK: @llvm.ppc.altivec.lvehx
1474// CHECK-LE: @llvm.ppc.altivec.lvehx
1475
1476  res_vus = vec_lde(0, &param_us);
1477// CHECK: @llvm.ppc.altivec.lvehx
1478// CHECK-LE: @llvm.ppc.altivec.lvehx
1479
1480  res_vi  = vec_lde(0, &param_i);
1481// CHECK: @llvm.ppc.altivec.lvewx
1482// CHECK-LE: @llvm.ppc.altivec.lvewx
1483
1484  res_vui = vec_lde(0, &param_ui);
1485// CHECK: @llvm.ppc.altivec.lvewx
1486// CHECK-LE: @llvm.ppc.altivec.lvewx
1487
1488  res_vf  = vec_lde(0, &param_f);
1489// CHECK: @llvm.ppc.altivec.lvewx
1490// CHECK-LE: @llvm.ppc.altivec.lvewx
1491
1492  res_vsc = vec_lvebx(0, &param_sc);
1493// CHECK: @llvm.ppc.altivec.lvebx
1494// CHECK-LE: @llvm.ppc.altivec.lvebx
1495
1496  res_vuc = vec_lvebx(0, &param_uc);
1497// CHECK: @llvm.ppc.altivec.lvebx
1498// CHECK-LE: @llvm.ppc.altivec.lvebx
1499
1500  res_vs  = vec_lvehx(0, &param_s);
1501// CHECK: @llvm.ppc.altivec.lvehx
1502// CHECK-LE: @llvm.ppc.altivec.lvehx
1503
1504  res_vus = vec_lvehx(0, &param_us);
1505// CHECK: @llvm.ppc.altivec.lvehx
1506// CHECK-LE: @llvm.ppc.altivec.lvehx
1507
1508  res_vi  = vec_lvewx(0, &param_i);
1509// CHECK: @llvm.ppc.altivec.lvewx
1510// CHECK-LE: @llvm.ppc.altivec.lvewx
1511
1512  res_vui = vec_lvewx(0, &param_ui);
1513// CHECK: @llvm.ppc.altivec.lvewx
1514// CHECK-LE: @llvm.ppc.altivec.lvewx
1515
1516  res_vf  = vec_lvewx(0, &param_f);
1517// CHECK: @llvm.ppc.altivec.lvewx
1518// CHECK-LE: @llvm.ppc.altivec.lvewx
1519
1520  /* vec_ldl */
1521  res_vsc = vec_ldl(0, &vsc);
1522// CHECK: @llvm.ppc.altivec.lvxl
1523// CHECK-LE: @llvm.ppc.altivec.lvxl
1524
1525  res_vsc = vec_ldl(0, &param_sc);
1526// CHECK: @llvm.ppc.altivec.lvxl
1527// CHECK-LE: @llvm.ppc.altivec.lvxl
1528
1529  res_vuc = vec_ldl(0, &vuc);
1530// CHECK: @llvm.ppc.altivec.lvxl
1531// CHECK-LE: @llvm.ppc.altivec.lvxl
1532
1533  res_vuc = vec_ldl(0, &param_uc);
1534// CHECK: @llvm.ppc.altivec.lvxl
1535// CHECK-LE: @llvm.ppc.altivec.lvxl
1536
1537  res_vbc = vec_ldl(0, &vbc);
1538// CHECK: @llvm.ppc.altivec.lvxl
1539// CHECK-LE: @llvm.ppc.altivec.lvxl
1540
1541  res_vs  = vec_ldl(0, &vs);
1542// CHECK: @llvm.ppc.altivec.lvxl
1543// CHECK-LE: @llvm.ppc.altivec.lvxl
1544
1545  res_vs  = vec_ldl(0, &param_s);
1546// CHECK: @llvm.ppc.altivec.lvxl
1547// CHECK-LE: @llvm.ppc.altivec.lvxl
1548
1549  res_vus = vec_ldl(0, &vus);
1550// CHECK: @llvm.ppc.altivec.lvxl
1551// CHECK-LE: @llvm.ppc.altivec.lvxl
1552
1553  res_vus = vec_ldl(0, &param_us);
1554// CHECK: @llvm.ppc.altivec.lvxl
1555// CHECK-LE: @llvm.ppc.altivec.lvxl
1556
1557  res_vbs = vec_ldl(0, &vbs);
1558// CHECK: @llvm.ppc.altivec.lvxl
1559// CHECK-LE: @llvm.ppc.altivec.lvxl
1560
1561  res_vp  = vec_ldl(0, &vp);
1562// CHECK: @llvm.ppc.altivec.lvxl
1563// CHECK-LE: @llvm.ppc.altivec.lvxl
1564
1565  res_vi  = vec_ldl(0, &vi);
1566// CHECK: @llvm.ppc.altivec.lvxl
1567// CHECK-LE: @llvm.ppc.altivec.lvxl
1568
1569  res_vi  = vec_ldl(0, &param_i);
1570// CHECK: @llvm.ppc.altivec.lvxl
1571// CHECK-LE: @llvm.ppc.altivec.lvxl
1572
1573  res_vui = vec_ldl(0, &vui);
1574// CHECK: @llvm.ppc.altivec.lvxl
1575// CHECK-LE: @llvm.ppc.altivec.lvxl
1576
1577  res_vui = vec_ldl(0, &param_ui);
1578// CHECK: @llvm.ppc.altivec.lvxl
1579// CHECK-LE: @llvm.ppc.altivec.lvxl
1580
1581  res_vbi = vec_ldl(0, &vbi);
1582// CHECK: @llvm.ppc.altivec.lvxl
1583// CHECK-LE: @llvm.ppc.altivec.lvxl
1584
1585  res_vf  = vec_ldl(0, &vf);
1586// CHECK: @llvm.ppc.altivec.lvxl
1587// CHECK-LE: @llvm.ppc.altivec.lvxl
1588
1589  res_vf  = vec_ldl(0, &param_f);
1590// CHECK: @llvm.ppc.altivec.lvxl
1591// CHECK-LE: @llvm.ppc.altivec.lvxl
1592
1593  res_vsc = vec_lvxl(0, &vsc);
1594// CHECK: @llvm.ppc.altivec.lvxl
1595// CHECK-LE: @llvm.ppc.altivec.lvxl
1596
1597  res_vsc = vec_lvxl(0, &param_sc);
1598// CHECK: @llvm.ppc.altivec.lvxl
1599// CHECK-LE: @llvm.ppc.altivec.lvxl
1600
1601  res_vuc = vec_lvxl(0, &vuc);
1602// CHECK: @llvm.ppc.altivec.lvxl
1603// CHECK-LE: @llvm.ppc.altivec.lvxl
1604
1605  res_vbc = vec_lvxl(0, &vbc);
1606// CHECK: @llvm.ppc.altivec.lvxl
1607// CHECK-LE: @llvm.ppc.altivec.lvxl
1608
1609  res_vuc = vec_lvxl(0, &param_uc);
1610// CHECK: @llvm.ppc.altivec.lvxl
1611// CHECK-LE: @llvm.ppc.altivec.lvxl
1612
1613  res_vs  = vec_lvxl(0, &vs);
1614// CHECK: @llvm.ppc.altivec.lvxl
1615// CHECK-LE: @llvm.ppc.altivec.lvxl
1616
1617  res_vs  = vec_lvxl(0, &param_s);
1618// CHECK: @llvm.ppc.altivec.lvxl
1619// CHECK-LE: @llvm.ppc.altivec.lvxl
1620
1621  res_vus = vec_lvxl(0, &vus);
1622// CHECK: @llvm.ppc.altivec.lvxl
1623// CHECK-LE: @llvm.ppc.altivec.lvxl
1624
1625  res_vus = vec_lvxl(0, &param_us);
1626// CHECK: @llvm.ppc.altivec.lvxl
1627// CHECK-LE: @llvm.ppc.altivec.lvxl
1628
1629  res_vbs = vec_lvxl(0, &vbs);
1630// CHECK: @llvm.ppc.altivec.lvxl
1631// CHECK-LE: @llvm.ppc.altivec.lvxl
1632
1633  res_vp  = vec_lvxl(0, &vp);
1634// CHECK: @llvm.ppc.altivec.lvxl
1635// CHECK-LE: @llvm.ppc.altivec.lvxl
1636
1637  res_vi  = vec_lvxl(0, &vi);
1638// CHECK: @llvm.ppc.altivec.lvxl
1639// CHECK-LE: @llvm.ppc.altivec.lvxl
1640
1641  res_vi  = vec_lvxl(0, &param_i);
1642// CHECK: @llvm.ppc.altivec.lvxl
1643// CHECK-LE: @llvm.ppc.altivec.lvxl
1644
1645  res_vui = vec_lvxl(0, &vui);
1646// CHECK: @llvm.ppc.altivec.lvxl
1647// CHECK-LE: @llvm.ppc.altivec.lvxl
1648
1649  res_vui = vec_lvxl(0, &param_ui);
1650// CHECK: @llvm.ppc.altivec.lvxl
1651// CHECK-LE: @llvm.ppc.altivec.lvxl
1652
1653  res_vbi = vec_lvxl(0, &vbi);
1654// CHECK: @llvm.ppc.altivec.lvxl
1655// CHECK-LE: @llvm.ppc.altivec.lvxl
1656
1657  res_vf  = vec_lvxl(0, &vf);
1658// CHECK: @llvm.ppc.altivec.lvxl
1659// CHECK-LE: @llvm.ppc.altivec.lvxl
1660
1661  res_vf  = vec_lvxl(0, &param_f);
1662// CHECK: @llvm.ppc.altivec.lvxl
1663// CHECK-LE: @llvm.ppc.altivec.lvxl
1664
1665  /* vec_loge */
1666  res_vf = vec_loge(vf);
1667// CHECK: @llvm.ppc.altivec.vlogefp
1668// CHECK-LE: @llvm.ppc.altivec.vlogefp
1669
1670  res_vf = vec_vlogefp(vf);
1671// CHECK: @llvm.ppc.altivec.vlogefp
1672// CHECK-LE: @llvm.ppc.altivec.vlogefp
1673
1674  /* vec_lvsl */
1675  res_vuc = vec_lvsl(0, &param_i);
1676// CHECK: @llvm.ppc.altivec.lvsl
1677// CHECK-LE: @llvm.ppc.altivec.lvsl
1678
1679  /* vec_lvsr */
1680  res_vuc = vec_lvsr(0, &param_i);
1681// CHECK: @llvm.ppc.altivec.lvsr
1682// CHECK-LE: @llvm.ppc.altivec.lvsr
1683
1684  /* vec_madd */
1685  res_vf =vec_madd(vf, vf, vf);
1686// CHECK: @llvm.ppc.altivec.vmaddfp
1687// CHECK-LE: @llvm.ppc.altivec.vmaddfp
1688
1689  res_vf = vec_vmaddfp(vf, vf, vf);
1690// CHECK: @llvm.ppc.altivec.vmaddfp
1691// CHECK-LE: @llvm.ppc.altivec.vmaddfp
1692
1693  /* vec_madds */
1694  res_vs = vec_madds(vs, vs, vs);
1695// CHECK: @llvm.ppc.altivec.vmhaddshs
1696// CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1697
1698  res_vs = vec_vmhaddshs(vs, vs, vs);
1699// CHECK: @llvm.ppc.altivec.vmhaddshs
1700// CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1701
1702  /* vec_max */
1703  res_vsc = vec_max(vsc, vsc);
1704// CHECK: @llvm.ppc.altivec.vmaxsb
1705// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1706
1707  res_vsc = vec_max(vbc, vsc);
1708// CHECK: @llvm.ppc.altivec.vmaxsb
1709// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1710
1711  res_vsc = vec_max(vsc, vbc);
1712// CHECK: @llvm.ppc.altivec.vmaxsb
1713// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1714
1715  res_vuc = vec_max(vuc, vuc);
1716// CHECK: @llvm.ppc.altivec.vmaxub
1717// CHECK-LE: @llvm.ppc.altivec.vmaxub
1718
1719  res_vuc = vec_max(vbc, vuc);
1720// CHECK: @llvm.ppc.altivec.vmaxub
1721// CHECK-LE: @llvm.ppc.altivec.vmaxub
1722
1723  res_vuc = vec_max(vuc, vbc);
1724// CHECK: @llvm.ppc.altivec.vmaxub
1725// CHECK-LE: @llvm.ppc.altivec.vmaxub
1726
1727  res_vs  = vec_max(vs, vs);
1728// CHECK: @llvm.ppc.altivec.vmaxsh
1729// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1730
1731  res_vs  = vec_max(vbs, vs);
1732// CHECK: @llvm.ppc.altivec.vmaxsh
1733// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1734
1735  res_vs  = vec_max(vs, vbs);
1736// CHECK: @llvm.ppc.altivec.vmaxsh
1737// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1738
1739  res_vus = vec_max(vus, vus);
1740// CHECK: @llvm.ppc.altivec.vmaxuh
1741// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1742
1743  res_vus = vec_max(vbs, vus);
1744// CHECK: @llvm.ppc.altivec.vmaxuh
1745// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1746
1747  res_vus = vec_max(vus, vbs);
1748// CHECK: @llvm.ppc.altivec.vmaxuh
1749// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1750
1751  res_vi  = vec_max(vi, vi);
1752// CHECK: @llvm.ppc.altivec.vmaxsw
1753// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1754
1755  res_vi  = vec_max(vbi, vi);
1756// CHECK: @llvm.ppc.altivec.vmaxsw
1757// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1758
1759  res_vi  = vec_max(vi, vbi);
1760// CHECK: @llvm.ppc.altivec.vmaxsw
1761// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1762
1763  res_vui = vec_max(vui, vui);
1764// CHECK: @llvm.ppc.altivec.vmaxuw
1765// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1766
1767  res_vui = vec_max(vbi, vui);
1768// CHECK: @llvm.ppc.altivec.vmaxuw
1769// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1770
1771  res_vui = vec_max(vui, vbi);
1772// CHECK: @llvm.ppc.altivec.vmaxuw
1773// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1774
1775  res_vf  = vec_max(vf, vf);
1776// CHECK: @llvm.ppc.altivec.vmaxfp
1777// CHECK-LE: @llvm.ppc.altivec.vmaxfp
1778
1779  res_vsc = vec_vmaxsb(vsc, vsc);
1780// CHECK: @llvm.ppc.altivec.vmaxsb
1781// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1782
1783  res_vsc = vec_vmaxsb(vbc, vsc);
1784// CHECK: @llvm.ppc.altivec.vmaxsb
1785// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1786
1787  res_vsc = vec_vmaxsb(vsc, vbc);
1788// CHECK: @llvm.ppc.altivec.vmaxsb
1789// CHECK-LE: @llvm.ppc.altivec.vmaxsb
1790
1791  res_vuc = vec_vmaxub(vuc, vuc);
1792// CHECK: @llvm.ppc.altivec.vmaxub
1793// CHECK-LE: @llvm.ppc.altivec.vmaxub
1794
1795  res_vuc = vec_vmaxub(vbc, vuc);
1796// CHECK: @llvm.ppc.altivec.vmaxub
1797// CHECK-LE: @llvm.ppc.altivec.vmaxub
1798
1799  res_vuc = vec_vmaxub(vuc, vbc);
1800// CHECK: @llvm.ppc.altivec.vmaxub
1801// CHECK-LE: @llvm.ppc.altivec.vmaxub
1802
1803  res_vs  = vec_vmaxsh(vs, vs);
1804// CHECK: @llvm.ppc.altivec.vmaxsh
1805// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1806
1807  res_vs  = vec_vmaxsh(vbs, vs);
1808// CHECK: @llvm.ppc.altivec.vmaxsh
1809// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1810
1811  res_vs  = vec_vmaxsh(vs, vbs);
1812// CHECK: @llvm.ppc.altivec.vmaxsh
1813// CHECK-LE: @llvm.ppc.altivec.vmaxsh
1814
1815  res_vus = vec_vmaxuh(vus, vus);
1816// CHECK: @llvm.ppc.altivec.vmaxuh
1817// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1818
1819  res_vus = vec_vmaxuh(vbs, vus);
1820// CHECK: @llvm.ppc.altivec.vmaxuh
1821// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1822
1823  res_vus = vec_vmaxuh(vus, vbs);
1824// CHECK: @llvm.ppc.altivec.vmaxuh
1825// CHECK-LE: @llvm.ppc.altivec.vmaxuh
1826
1827  res_vi  = vec_vmaxsw(vi, vi);
1828// CHECK: @llvm.ppc.altivec.vmaxsw
1829// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1830
1831  res_vi  = vec_vmaxsw(vbi, vi);
1832// CHECK: @llvm.ppc.altivec.vmaxsw
1833// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1834
1835  res_vi  = vec_vmaxsw(vi, vbi);
1836// CHECK: @llvm.ppc.altivec.vmaxsw
1837// CHECK-LE: @llvm.ppc.altivec.vmaxsw
1838
1839  res_vui = vec_vmaxuw(vui, vui);
1840// CHECK: @llvm.ppc.altivec.vmaxuw
1841// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1842
1843  res_vui = vec_vmaxuw(vbi, vui);
1844// CHECK: @llvm.ppc.altivec.vmaxuw
1845// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1846
1847  res_vui = vec_vmaxuw(vui, vbi);
1848// CHECK: @llvm.ppc.altivec.vmaxuw
1849// CHECK-LE: @llvm.ppc.altivec.vmaxuw
1850
1851  res_vf  = vec_vmaxfp(vf, vf);
1852// CHECK: @llvm.ppc.altivec.vmaxfp
1853// CHECK-LE: @llvm.ppc.altivec.vmaxfp
1854
1855  /* vec_mergeh */
1856  res_vsc = vec_mergeh(vsc, vsc);
1857// CHECK: @llvm.ppc.altivec.vperm
1858// CHECK-LE: @llvm.ppc.altivec.vperm
1859
1860  res_vuc = vec_mergeh(vuc, vuc);
1861// CHECK: @llvm.ppc.altivec.vperm
1862// CHECK-LE: @llvm.ppc.altivec.vperm
1863
1864  res_vbc = vec_mergeh(vbc, vbc);
1865// CHECK: @llvm.ppc.altivec.vperm
1866// CHECK-LE: @llvm.ppc.altivec.vperm
1867
1868  res_vs  = vec_mergeh(vs, vs);
1869// CHECK: @llvm.ppc.altivec.vperm
1870// CHECK-LE: @llvm.ppc.altivec.vperm
1871
1872  res_vp  = vec_mergeh(vp, vp);
1873// CHECK: @llvm.ppc.altivec.vperm
1874// CHECK-LE: @llvm.ppc.altivec.vperm
1875
1876  res_vus = vec_mergeh(vus, vus);
1877// CHECK: @llvm.ppc.altivec.vperm
1878// CHECK-LE: @llvm.ppc.altivec.vperm
1879
1880  res_vbs = vec_mergeh(vbs, vbs);
1881// CHECK: @llvm.ppc.altivec.vperm
1882// CHECK-LE: @llvm.ppc.altivec.vperm
1883
1884  res_vi  = vec_mergeh(vi, vi);
1885// CHECK: @llvm.ppc.altivec.vperm
1886// CHECK-LE: @llvm.ppc.altivec.vperm
1887
1888  res_vui = vec_mergeh(vui, vui);
1889// CHECK: @llvm.ppc.altivec.vperm
1890// CHECK-LE: @llvm.ppc.altivec.vperm
1891
1892  res_vbi = vec_mergeh(vbi, vbi);
1893// CHECK: @llvm.ppc.altivec.vperm
1894// CHECK-LE: @llvm.ppc.altivec.vperm
1895
1896  res_vf  = vec_mergeh(vf, vf);
1897// CHECK: @llvm.ppc.altivec.vperm
1898// CHECK-LE: @llvm.ppc.altivec.vperm
1899
1900  res_vsc = vec_vmrghb(vsc, vsc);
1901// CHECK: @llvm.ppc.altivec.vperm
1902// CHECK-LE: @llvm.ppc.altivec.vperm
1903
1904  res_vuc = vec_vmrghb(vuc, vuc);
1905// CHECK: @llvm.ppc.altivec.vperm
1906// CHECK-LE: @llvm.ppc.altivec.vperm
1907
1908  res_vbc = vec_vmrghb(vbc, vbc);
1909// CHECK: @llvm.ppc.altivec.vperm
1910// CHECK-LE: @llvm.ppc.altivec.vperm
1911
1912  res_vs  = vec_vmrghh(vs, vs);
1913// CHECK: @llvm.ppc.altivec.vperm
1914// CHECK-LE: @llvm.ppc.altivec.vperm
1915
1916  res_vp  = vec_vmrghh(vp, vp);
1917// CHECK: @llvm.ppc.altivec.vperm
1918// CHECK-LE: @llvm.ppc.altivec.vperm
1919
1920  res_vus = vec_vmrghh(vus, vus);
1921// CHECK: @llvm.ppc.altivec.vperm
1922// CHECK-LE: @llvm.ppc.altivec.vperm
1923
1924  res_vbs = vec_vmrghh(vbs, vbs);
1925// CHECK: @llvm.ppc.altivec.vperm
1926// CHECK-LE: @llvm.ppc.altivec.vperm
1927
1928  res_vi  = vec_vmrghw(vi, vi);
1929// CHECK: @llvm.ppc.altivec.vperm
1930// CHECK-LE: @llvm.ppc.altivec.vperm
1931
1932  res_vui = vec_vmrghw(vui, vui);
1933// CHECK: @llvm.ppc.altivec.vperm
1934// CHECK-LE: @llvm.ppc.altivec.vperm
1935
1936  res_vbi = vec_vmrghw(vbi, vbi);
1937// CHECK: @llvm.ppc.altivec.vperm
1938// CHECK-LE: @llvm.ppc.altivec.vperm
1939
1940  res_vf  = vec_vmrghw(vf, vf);
1941// CHECK: @llvm.ppc.altivec.vperm
1942// CHECK-LE: @llvm.ppc.altivec.vperm
1943
1944  /* vec_mergel */
1945  res_vsc = vec_mergel(vsc, vsc);
1946// CHECK: @llvm.ppc.altivec.vperm
1947// CHECK-LE: @llvm.ppc.altivec.vperm
1948
1949  res_vuc = vec_mergel(vuc, vuc);
1950// CHECK: @llvm.ppc.altivec.vperm
1951// CHECK-LE: @llvm.ppc.altivec.vperm
1952
1953  res_vbc = vec_mergel(vbc, vbc);
1954// CHECK: @llvm.ppc.altivec.vperm
1955// CHECK-LE: @llvm.ppc.altivec.vperm
1956
1957  res_vs  = vec_mergel(vs, vs);
1958// CHECK: @llvm.ppc.altivec.vperm
1959// CHECK-LE: @llvm.ppc.altivec.vperm
1960
1961  res_vp  = vec_mergeh(vp, vp);
1962// CHECK: @llvm.ppc.altivec.vperm
1963// CHECK-LE: @llvm.ppc.altivec.vperm
1964
1965  res_vus = vec_mergel(vus, vus);
1966// CHECK: @llvm.ppc.altivec.vperm
1967// CHECK-LE: @llvm.ppc.altivec.vperm
1968
1969  res_vbs = vec_mergel(vbs, vbs);
1970// CHECK: @llvm.ppc.altivec.vperm
1971// CHECK-LE: @llvm.ppc.altivec.vperm
1972
1973  res_vi  = vec_mergel(vi, vi);
1974// CHECK: @llvm.ppc.altivec.vperm
1975// CHECK-LE: @llvm.ppc.altivec.vperm
1976
1977  res_vui = vec_mergel(vui, vui);
1978// CHECK: @llvm.ppc.altivec.vperm
1979// CHECK-LE: @llvm.ppc.altivec.vperm
1980
1981  res_vbi = vec_mergel(vbi, vbi);
1982// CHECK: @llvm.ppc.altivec.vperm
1983// CHECK-LE: @llvm.ppc.altivec.vperm
1984
1985  res_vf  = vec_mergel(vf, vf);
1986// CHECK: @llvm.ppc.altivec.vperm
1987// CHECK-LE: @llvm.ppc.altivec.vperm
1988
1989  res_vsc = vec_vmrglb(vsc, vsc);
1990// CHECK: @llvm.ppc.altivec.vperm
1991// CHECK-LE: @llvm.ppc.altivec.vperm
1992
1993  res_vuc = vec_vmrglb(vuc, vuc);
1994// CHECK: @llvm.ppc.altivec.vperm
1995// CHECK-LE: @llvm.ppc.altivec.vperm
1996
1997  res_vbc = vec_vmrglb(vbc, vbc);
1998// CHECK: @llvm.ppc.altivec.vperm
1999// CHECK-LE: @llvm.ppc.altivec.vperm
2000
2001  res_vs  = vec_vmrglh(vs, vs);
2002// CHECK: @llvm.ppc.altivec.vperm
2003// CHECK-LE: @llvm.ppc.altivec.vperm
2004
2005  res_vp  = vec_vmrglh(vp, vp);
2006// CHECK: @llvm.ppc.altivec.vperm
2007// CHECK-LE: @llvm.ppc.altivec.vperm
2008
2009  res_vus = vec_vmrglh(vus, vus);
2010// CHECK: @llvm.ppc.altivec.vperm
2011// CHECK-LE: @llvm.ppc.altivec.vperm
2012
2013  res_vbs = vec_vmrglh(vbs, vbs);
2014// CHECK: @llvm.ppc.altivec.vperm
2015// CHECK-LE: @llvm.ppc.altivec.vperm
2016
2017  res_vi  = vec_vmrglw(vi, vi);
2018// CHECK: @llvm.ppc.altivec.vperm
2019// CHECK-LE: @llvm.ppc.altivec.vperm
2020
2021  res_vui = vec_vmrglw(vui, vui);
2022// CHECK: @llvm.ppc.altivec.vperm
2023// CHECK-LE: @llvm.ppc.altivec.vperm
2024
2025  res_vbi = vec_vmrglw(vbi, vbi);
2026// CHECK: @llvm.ppc.altivec.vperm
2027// CHECK-LE: @llvm.ppc.altivec.vperm
2028
2029  res_vf  = vec_vmrglw(vf, vf);
2030// CHECK: @llvm.ppc.altivec.vperm
2031// CHECK-LE: @llvm.ppc.altivec.vperm
2032
2033  /* vec_mfvscr */
2034  vus = vec_mfvscr();
2035// CHECK: @llvm.ppc.altivec.mfvscr
2036// CHECK-LE: @llvm.ppc.altivec.mfvscr
2037
2038  /* vec_min */
2039  res_vsc = vec_min(vsc, vsc);
2040// CHECK: @llvm.ppc.altivec.vminsb
2041// CHECK-LE: @llvm.ppc.altivec.vminsb
2042
2043  res_vsc = vec_min(vbc, vsc);
2044// CHECK: @llvm.ppc.altivec.vminsb
2045// CHECK-LE: @llvm.ppc.altivec.vminsb
2046
2047  res_vsc = vec_min(vsc, vbc);
2048// CHECK: @llvm.ppc.altivec.vminsb
2049// CHECK-LE: @llvm.ppc.altivec.vminsb
2050
2051  res_vuc = vec_min(vuc, vuc);
2052// CHECK: @llvm.ppc.altivec.vminub
2053// CHECK-LE: @llvm.ppc.altivec.vminub
2054
2055  res_vuc = vec_min(vbc, vuc);
2056// CHECK: @llvm.ppc.altivec.vminub
2057// CHECK-LE: @llvm.ppc.altivec.vminub
2058
2059  res_vuc = vec_min(vuc, vbc);
2060// CHECK: @llvm.ppc.altivec.vminub
2061// CHECK-LE: @llvm.ppc.altivec.vminub
2062
2063  res_vs  = vec_min(vs, vs);
2064// CHECK: @llvm.ppc.altivec.vminsh
2065// CHECK-LE: @llvm.ppc.altivec.vminsh
2066
2067  res_vs  = vec_min(vbs, vs);
2068// CHECK: @llvm.ppc.altivec.vminsh
2069// CHECK-LE: @llvm.ppc.altivec.vminsh
2070
2071  res_vs  = vec_min(vs, vbs);
2072// CHECK: @llvm.ppc.altivec.vminsh
2073// CHECK-LE: @llvm.ppc.altivec.vminsh
2074
2075  res_vus = vec_min(vus, vus);
2076// CHECK: @llvm.ppc.altivec.vminuh
2077// CHECK-LE: @llvm.ppc.altivec.vminuh
2078
2079  res_vus = vec_min(vbs, vus);
2080// CHECK: @llvm.ppc.altivec.vminuh
2081// CHECK-LE: @llvm.ppc.altivec.vminuh
2082
2083  res_vus = vec_min(vus, vbs);
2084// CHECK: @llvm.ppc.altivec.vminuh
2085// CHECK-LE: @llvm.ppc.altivec.vminuh
2086
2087  res_vi  = vec_min(vi, vi);
2088// CHECK: @llvm.ppc.altivec.vminsw
2089// CHECK-LE: @llvm.ppc.altivec.vminsw
2090
2091  res_vi  = vec_min(vbi, vi);
2092// CHECK: @llvm.ppc.altivec.vminsw
2093// CHECK-LE: @llvm.ppc.altivec.vminsw
2094
2095  res_vi  = vec_min(vi, vbi);
2096// CHECK: @llvm.ppc.altivec.vminsw
2097// CHECK-LE: @llvm.ppc.altivec.vminsw
2098
2099  res_vui = vec_min(vui, vui);
2100// CHECK: @llvm.ppc.altivec.vminuw
2101// CHECK-LE: @llvm.ppc.altivec.vminuw
2102
2103  res_vui = vec_min(vbi, vui);
2104// CHECK: @llvm.ppc.altivec.vminuw
2105// CHECK-LE: @llvm.ppc.altivec.vminuw
2106
2107  res_vui = vec_min(vui, vbi);
2108// CHECK: @llvm.ppc.altivec.vminuw
2109// CHECK-LE: @llvm.ppc.altivec.vminuw
2110
2111  res_vf  = vec_min(vf, vf);
2112// CHECK: @llvm.ppc.altivec.vminfp
2113// CHECK-LE: @llvm.ppc.altivec.vminfp
2114
2115  res_vsc = vec_vminsb(vsc, vsc);
2116// CHECK: @llvm.ppc.altivec.vminsb
2117// CHECK-LE: @llvm.ppc.altivec.vminsb
2118
2119  res_vsc = vec_vminsb(vbc, vsc);
2120// CHECK: @llvm.ppc.altivec.vminsb
2121// CHECK-LE: @llvm.ppc.altivec.vminsb
2122
2123  res_vsc = vec_vminsb(vsc, vbc);
2124// CHECK: @llvm.ppc.altivec.vminsb
2125// CHECK-LE: @llvm.ppc.altivec.vminsb
2126
2127  res_vuc = vec_vminub(vuc, vuc);
2128// CHECK: @llvm.ppc.altivec.vminub
2129// CHECK-LE: @llvm.ppc.altivec.vminub
2130
2131  res_vuc = vec_vminub(vbc, vuc);
2132// CHECK: @llvm.ppc.altivec.vminub
2133// CHECK-LE: @llvm.ppc.altivec.vminub
2134
2135  res_vuc = vec_vminub(vuc, vbc);
2136// CHECK: @llvm.ppc.altivec.vminub
2137// CHECK-LE: @llvm.ppc.altivec.vminub
2138
2139  res_vs  = vec_vminsh(vs, vs);
2140// CHECK: @llvm.ppc.altivec.vminsh
2141// CHECK-LE: @llvm.ppc.altivec.vminsh
2142
2143  res_vs  = vec_vminsh(vbs, vs);
2144// CHECK: @llvm.ppc.altivec.vminsh
2145// CHECK-LE: @llvm.ppc.altivec.vminsh
2146
2147  res_vs  = vec_vminsh(vs, vbs);
2148// CHECK: @llvm.ppc.altivec.vminsh
2149// CHECK-LE: @llvm.ppc.altivec.vminsh
2150
2151  res_vus = vec_vminuh(vus, vus);
2152// CHECK: @llvm.ppc.altivec.vminuh
2153// CHECK-LE: @llvm.ppc.altivec.vminuh
2154
2155  res_vus = vec_vminuh(vbs, vus);
2156// CHECK: @llvm.ppc.altivec.vminuh
2157// CHECK-LE: @llvm.ppc.altivec.vminuh
2158
2159  res_vus = vec_vminuh(vus, vbs);
2160// CHECK: @llvm.ppc.altivec.vminuh
2161// CHECK-LE: @llvm.ppc.altivec.vminuh
2162
2163  res_vi  = vec_vminsw(vi, vi);
2164// CHECK: @llvm.ppc.altivec.vminsw
2165// CHECK-LE: @llvm.ppc.altivec.vminsw
2166
2167  res_vi  = vec_vminsw(vbi, vi);
2168// CHECK: @llvm.ppc.altivec.vminsw
2169// CHECK-LE: @llvm.ppc.altivec.vminsw
2170
2171  res_vi  = vec_vminsw(vi, vbi);
2172// CHECK: @llvm.ppc.altivec.vminsw
2173// CHECK-LE: @llvm.ppc.altivec.vminsw
2174
2175  res_vui = vec_vminuw(vui, vui);
2176// CHECK: @llvm.ppc.altivec.vminuw
2177// CHECK-LE: @llvm.ppc.altivec.vminuw
2178
2179  res_vui = vec_vminuw(vbi, vui);
2180// CHECK: @llvm.ppc.altivec.vminuw
2181// CHECK-LE: @llvm.ppc.altivec.vminuw
2182
2183  res_vui = vec_vminuw(vui, vbi);
2184// CHECK: @llvm.ppc.altivec.vminuw
2185// CHECK-LE: @llvm.ppc.altivec.vminuw
2186
2187  res_vf  = vec_vminfp(vf, vf);
2188// CHECK: @llvm.ppc.altivec.vminfp
2189// CHECK-LE: @llvm.ppc.altivec.vminfp
2190
2191  /* vec_mladd */
2192  res_vus = vec_mladd(vus, vus, vus);
2193// CHECK: mul <8 x i16>
2194// CHECK: add <8 x i16>
2195// CHECK-LE: mul <8 x i16>
2196// CHECK-LE: add <8 x i16>
2197
2198  res_vs = vec_mladd(vus, vs, vs);
2199// CHECK: mul <8 x i16>
2200// CHECK: add <8 x i16>
2201// CHECK-LE: mul <8 x i16>
2202// CHECK-LE: add <8 x i16>
2203
2204  res_vs = vec_mladd(vs, vus, vus);
2205// CHECK: mul <8 x i16>
2206// CHECK: add <8 x i16>
2207// CHECK-LE: mul <8 x i16>
2208// CHECK-LE: add <8 x i16>
2209
2210  res_vs = vec_mladd(vs, vs, vs);
2211// CHECK: mul <8 x i16>
2212// CHECK: add <8 x i16>
2213// CHECK-LE: mul <8 x i16>
2214// CHECK-LE: add <8 x i16>
2215
2216  /* vec_mradds */
2217  res_vs = vec_mradds(vs, vs, vs);
2218// CHECK: @llvm.ppc.altivec.vmhraddshs
2219// CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2220
2221  res_vs = vec_vmhraddshs(vs, vs, vs);
2222// CHECK: @llvm.ppc.altivec.vmhraddshs
2223// CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2224
2225  /* vec_msum */
2226  res_vi  = vec_msum(vsc, vuc, vi);
2227// CHECK: @llvm.ppc.altivec.vmsummbm
2228// CHECK-LE: @llvm.ppc.altivec.vmsummbm
2229
2230  res_vui = vec_msum(vuc, vuc, vui);
2231// CHECK: @llvm.ppc.altivec.vmsumubm
2232// CHECK-LE: @llvm.ppc.altivec.vmsumubm
2233
2234  res_vi  = vec_msum(vs, vs, vi);
2235// CHECK: @llvm.ppc.altivec.vmsumshm
2236// CHECK-LE: @llvm.ppc.altivec.vmsumshm
2237
2238  res_vui = vec_msum(vus, vus, vui);
2239// CHECK: @llvm.ppc.altivec.vmsumuhm
2240// CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2241
2242  res_vi  = vec_vmsummbm(vsc, vuc, vi);
2243// CHECK: @llvm.ppc.altivec.vmsummbm
2244// CHECK-LE: @llvm.ppc.altivec.vmsummbm
2245
2246  res_vui = vec_vmsumubm(vuc, vuc, vui);
2247// CHECK: @llvm.ppc.altivec.vmsumubm
2248// CHECK-LE: @llvm.ppc.altivec.vmsumubm
2249
2250  res_vi  = vec_vmsumshm(vs, vs, vi);
2251// CHECK: @llvm.ppc.altivec.vmsumshm
2252// CHECK-LE: @llvm.ppc.altivec.vmsumshm
2253
2254  res_vui = vec_vmsumuhm(vus, vus, vui);
2255// CHECK: @llvm.ppc.altivec.vmsumuhm
2256// CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2257
2258  /* vec_msums */
2259  res_vi  = vec_msums(vs, vs, vi);
2260// CHECK: @llvm.ppc.altivec.vmsumshs
2261// CHECK-LE: @llvm.ppc.altivec.vmsumshs
2262
2263  res_vui = vec_msums(vus, vus, vui);
2264// CHECK: @llvm.ppc.altivec.vmsumuhs
2265// CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2266
2267  res_vi  = vec_vmsumshs(vs, vs, vi);
2268// CHECK: @llvm.ppc.altivec.vmsumshs
2269// CHECK-LE: @llvm.ppc.altivec.vmsumshs
2270
2271  res_vui = vec_vmsumuhs(vus, vus, vui);
2272// CHECK: @llvm.ppc.altivec.vmsumuhs
2273// CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2274
2275  /* vec_mtvscr */
2276  vec_mtvscr(vsc);
2277// CHECK: @llvm.ppc.altivec.mtvscr
2278// CHECK-LE: @llvm.ppc.altivec.mtvscr
2279
2280  vec_mtvscr(vuc);
2281// CHECK: @llvm.ppc.altivec.mtvscr
2282// CHECK-LE: @llvm.ppc.altivec.mtvscr
2283
2284  vec_mtvscr(vbc);
2285// CHECK: @llvm.ppc.altivec.mtvscr
2286// CHECK-LE: @llvm.ppc.altivec.mtvscr
2287
2288  vec_mtvscr(vs);
2289// CHECK: @llvm.ppc.altivec.mtvscr
2290// CHECK-LE: @llvm.ppc.altivec.mtvscr
2291
2292  vec_mtvscr(vus);
2293// CHECK: @llvm.ppc.altivec.mtvscr
2294// CHECK-LE: @llvm.ppc.altivec.mtvscr
2295
2296  vec_mtvscr(vbs);
2297// CHECK: @llvm.ppc.altivec.mtvscr
2298// CHECK-LE: @llvm.ppc.altivec.mtvscr
2299
2300  vec_mtvscr(vp);
2301// CHECK: @llvm.ppc.altivec.mtvscr
2302// CHECK-LE: @llvm.ppc.altivec.mtvscr
2303
2304  vec_mtvscr(vi);
2305// CHECK: @llvm.ppc.altivec.mtvscr
2306// CHECK-LE: @llvm.ppc.altivec.mtvscr
2307
2308  vec_mtvscr(vui);
2309// CHECK: @llvm.ppc.altivec.mtvscr
2310// CHECK-LE: @llvm.ppc.altivec.mtvscr
2311
2312  vec_mtvscr(vbi);
2313// CHECK: @llvm.ppc.altivec.mtvscr
2314// CHECK-LE: @llvm.ppc.altivec.mtvscr
2315
2316  /* vec_mul */
2317  res_vsc = vec_mul(vsc, vsc);
2318// CHECK: mul <16 x i8>
2319// CHECK-LE: mul <16 x i8>
2320
2321  res_vuc = vec_mul(vuc, vuc);
2322// CHECK: mul <16 x i8>
2323// CHECK-LE: mul <16 x i8>
2324
2325  res_vs = vec_mul(vs, vs);
2326// CHECK: mul <8 x i16>
2327// CHECK-LE: mul <8 x i16>
2328
2329  res_vus = vec_mul(vus, vus);
2330// CHECK: mul <8 x i16>
2331// CHECK-LE: mul <8 x i16>
2332
2333  res_vi = vec_mul(vi, vi);
2334// CHECK: mul <4 x i32>
2335// CHECK-LE: mul <4 x i32>
2336
2337  res_vui = vec_mul(vui, vui);
2338// CHECK: mul <4 x i32>
2339// CHECK-LE: mul <4 x i32>
2340
2341  /* vec_mule */
2342  res_vs  = vec_mule(vsc, vsc);
2343// CHECK: @llvm.ppc.altivec.vmulesb
2344// CHECK-LE: @llvm.ppc.altivec.vmulosb
2345
2346  res_vus = vec_mule(vuc, vuc);
2347// CHECK: @llvm.ppc.altivec.vmuleub
2348// CHECK-LE: @llvm.ppc.altivec.vmuloub
2349
2350  res_vi  = vec_mule(vs, vs);
2351// CHECK: @llvm.ppc.altivec.vmulesh
2352// CHECK-LE: @llvm.ppc.altivec.vmulosh
2353
2354  res_vui = vec_mule(vus, vus);
2355// CHECK: @llvm.ppc.altivec.vmuleuh
2356// CHECK-LE: @llvm.ppc.altivec.vmulouh
2357
2358  res_vs  = vec_vmulesb(vsc, vsc);
2359// CHECK: @llvm.ppc.altivec.vmulesb
2360// CHECK-LE: @llvm.ppc.altivec.vmulosb
2361
2362  res_vus = vec_vmuleub(vuc, vuc);
2363// CHECK: @llvm.ppc.altivec.vmuleub
2364// CHECK-LE: @llvm.ppc.altivec.vmuloub
2365
2366  res_vi  = vec_vmulesh(vs, vs);
2367// CHECK: @llvm.ppc.altivec.vmulesh
2368// CHECK-LE: @llvm.ppc.altivec.vmulosh
2369
2370  res_vui = vec_vmuleuh(vus, vus);
2371// CHECK: @llvm.ppc.altivec.vmuleuh
2372// CHECK-LE: @llvm.ppc.altivec.vmulouh
2373
2374  /* vec_mulo */
2375  res_vs  = vec_mulo(vsc, vsc);
2376// CHECK: @llvm.ppc.altivec.vmulosb
2377// CHECK-LE: @llvm.ppc.altivec.vmulesb
2378
2379  res_vus = vec_mulo(vuc, vuc);
2380// CHECK: @llvm.ppc.altivec.vmuloub
2381// CHECK-LE: @llvm.ppc.altivec.vmuleub
2382
2383  res_vi  = vec_mulo(vs, vs);
2384// CHECK: @llvm.ppc.altivec.vmulosh
2385// CHECK-LE: @llvm.ppc.altivec.vmulesh
2386
2387  res_vui = vec_mulo(vus, vus);
2388// CHECK: @llvm.ppc.altivec.vmulouh
2389// CHECK-LE: @llvm.ppc.altivec.vmuleuh
2390
2391  res_vs  = vec_vmulosb(vsc, vsc);
2392// CHECK: @llvm.ppc.altivec.vmulosb
2393// CHECK-LE: @llvm.ppc.altivec.vmulesb
2394
2395  res_vus = vec_vmuloub(vuc, vuc);
2396// CHECK: @llvm.ppc.altivec.vmuloub
2397// CHECK-LE: @llvm.ppc.altivec.vmuleub
2398
2399  res_vi  = vec_vmulosh(vs, vs);
2400// CHECK: @llvm.ppc.altivec.vmulosh
2401// CHECK-LE: @llvm.ppc.altivec.vmulesh
2402
2403  res_vui = vec_vmulouh(vus, vus);
2404// CHECK: @llvm.ppc.altivec.vmulouh
2405// CHECK-LE: @llvm.ppc.altivec.vmuleuh
2406
2407  /* vec_nmsub */
2408  res_vf = vec_nmsub(vf, vf, vf);
2409// CHECK: @llvm.ppc.altivec.vnmsubfp
2410// CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2411
2412  res_vf = vec_vnmsubfp(vf, vf, vf);
2413// CHECK: @llvm.ppc.altivec.vnmsubfp
2414// CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2415
2416  /* vec_nor */
2417  res_vsc = vec_nor(vsc, vsc);
2418// CHECK: or <16 x i8>
2419// CHECK: xor <16 x i8>
2420// CHECK-LE: or <16 x i8>
2421// CHECK-LE: xor <16 x i8>
2422
2423  res_vuc = vec_nor(vuc, vuc);
2424// CHECK: or <16 x i8>
2425// CHECK: xor <16 x i8>
2426// CHECK-LE: or <16 x i8>
2427// CHECK-LE: xor <16 x i8>
2428
2429  res_vuc = vec_nor(vbc, vbc);
2430// CHECK: or <16 x i8>
2431// CHECK: xor <16 x i8>
2432// CHECK-LE: or <16 x i8>
2433// CHECK-LE: xor <16 x i8>
2434
2435  res_vs  = vec_nor(vs, vs);
2436// CHECK: or <8 x i16>
2437// CHECK: xor <8 x i16>
2438// CHECK-LE: or <8 x i16>
2439// CHECK-LE: xor <8 x i16>
2440
2441  res_vus = vec_nor(vus, vus);
2442// CHECK: or <8 x i16>
2443// CHECK: xor <8 x i16>
2444// CHECK-LE: or <8 x i16>
2445// CHECK-LE: xor <8 x i16>
2446
2447  res_vus = vec_nor(vbs, vbs);
2448// CHECK: or <8 x i16>
2449// CHECK: xor <8 x i16>
2450// CHECK-LE: or <8 x i16>
2451// CHECK-LE: xor <8 x i16>
2452
2453  res_vi  = vec_nor(vi, vi);
2454// CHECK: or <4 x i32>
2455// CHECK: xor <4 x i32>
2456// CHECK-LE: or <4 x i32>
2457// CHECK-LE: xor <4 x i32>
2458
2459  res_vui = vec_nor(vui, vui);
2460// CHECK: or <4 x i32>
2461// CHECK: xor <4 x i32>
2462// CHECK-LE: or <4 x i32>
2463// CHECK-LE: xor <4 x i32>
2464
2465  res_vui = vec_nor(vbi, vbi);
2466// CHECK: or <4 x i32>
2467// CHECK: xor <4 x i32>
2468// CHECK-LE: or <4 x i32>
2469// CHECK-LE: xor <4 x i32>
2470
2471  res_vf  = vec_nor(vf, vf);
2472// CHECK: or <4 x i32>
2473// CHECK: xor <4 x i32>
2474// CHECK-LE: or <4 x i32>
2475// CHECK-LE: xor <4 x i32>
2476
2477  res_vsc = vec_vnor(vsc, vsc);
2478// CHECK: or <16 x i8>
2479// CHECK: xor <16 x i8>
2480// CHECK-LE: or <16 x i8>
2481// CHECK-LE: xor <16 x i8>
2482
2483  res_vuc = vec_vnor(vuc, vuc);
2484// CHECK: or <16 x i8>
2485// CHECK: xor <16 x i8>
2486// CHECK-LE: or <16 x i8>
2487// CHECK-LE: xor <16 x i8>
2488
2489  res_vuc = vec_vnor(vbc, vbc);
2490// CHECK: or <16 x i8>
2491// CHECK: xor <16 x i8>
2492// CHECK-LE: or <16 x i8>
2493// CHECK-LE: xor <16 x i8>
2494
2495  res_vs  = vec_vnor(vs, vs);
2496// CHECK: or <8 x i16>
2497// CHECK: xor <8 x i16>
2498// CHECK-LE: or <8 x i16>
2499// CHECK-LE: xor <8 x i16>
2500
2501  res_vus = vec_vnor(vus, vus);
2502// CHECK: or <8 x i16>
2503// CHECK: xor <8 x i16>
2504// CHECK-LE: or <8 x i16>
2505// CHECK-LE: xor <8 x i16>
2506
2507  res_vus = vec_vnor(vbs, vbs);
2508// CHECK: or <8 x i16>
2509// CHECK: xor <8 x i16>
2510// CHECK-LE: or <8 x i16>
2511// CHECK-LE: xor <8 x i16>
2512
2513  res_vi  = vec_vnor(vi, vi);
2514// CHECK: or <4 x i32>
2515// CHECK: xor <4 x i32>
2516// CHECK-LE: or <4 x i32>
2517// CHECK-LE: xor <4 x i32>
2518
2519  res_vui = vec_vnor(vui, vui);
2520// CHECK: or <4 x i32>
2521// CHECK: xor <4 x i32>
2522// CHECK-LE: or <4 x i32>
2523// CHECK-LE: xor <4 x i32>
2524
2525  res_vui = vec_vnor(vbi, vbi);
2526// CHECK: or <4 x i32>
2527// CHECK: xor <4 x i32>
2528// CHECK-LE: or <4 x i32>
2529// CHECK-LE: xor <4 x i32>
2530
2531  res_vf  = vec_vnor(vf, vf);
2532// CHECK: or <4 x i32>
2533// CHECK: xor <4 x i32>
2534// CHECK-LE: or <4 x i32>
2535// CHECK-LE: xor <4 x i32>
2536
2537  /* vec_or */
2538  res_vsc = vec_or(vsc, vsc);
2539// CHECK: or <16 x i8>
2540// CHECK-LE: or <16 x i8>
2541
2542  res_vsc = vec_or(vbc, vsc);
2543// CHECK: or <16 x i8>
2544// CHECK-LE: or <16 x i8>
2545
2546  res_vsc = vec_or(vsc, vbc);
2547// CHECK: or <16 x i8>
2548// CHECK-LE: or <16 x i8>
2549
2550  res_vuc = vec_or(vuc, vuc);
2551// CHECK: or <16 x i8>
2552// CHECK-LE: or <16 x i8>
2553
2554  res_vuc = vec_or(vbc, vuc);
2555// CHECK: or <16 x i8>
2556// CHECK-LE: or <16 x i8>
2557
2558  res_vuc = vec_or(vuc, vbc);
2559// CHECK: or <16 x i8>
2560// CHECK-LE: or <16 x i8>
2561
2562  res_vbc = vec_or(vbc, vbc);
2563// CHECK: or <16 x i8>
2564// CHECK-LE: or <16 x i8>
2565
2566  res_vs  = vec_or(vs, vs);
2567// CHECK: or <8 x i16>
2568// CHECK-LE: or <8 x i16>
2569
2570  res_vs  = vec_or(vbs, vs);
2571// CHECK: or <8 x i16>
2572// CHECK-LE: or <8 x i16>
2573
2574  res_vs  = vec_or(vs, vbs);
2575// CHECK: or <8 x i16>
2576// CHECK-LE: or <8 x i16>
2577
2578  res_vus = vec_or(vus, vus);
2579// CHECK: or <8 x i16>
2580// CHECK-LE: or <8 x i16>
2581
2582  res_vus = vec_or(vbs, vus);
2583// CHECK: or <8 x i16>
2584// CHECK-LE: or <8 x i16>
2585
2586  res_vus = vec_or(vus, vbs);
2587// CHECK: or <8 x i16>
2588// CHECK-LE: or <8 x i16>
2589
2590  res_vbs = vec_or(vbs, vbs);
2591// CHECK: or <8 x i16>
2592// CHECK-LE: or <8 x i16>
2593
2594  res_vi  = vec_or(vi, vi);
2595// CHECK: or <4 x i32>
2596// CHECK-LE: or <4 x i32>
2597
2598  res_vi  = vec_or(vbi, vi);
2599// CHECK: or <4 x i32>
2600// CHECK-LE: or <4 x i32>
2601
2602  res_vi  = vec_or(vi, vbi);
2603// CHECK: or <4 x i32>
2604// CHECK-LE: or <4 x i32>
2605
2606  res_vui = vec_or(vui, vui);
2607// CHECK: or <4 x i32>
2608// CHECK-LE: or <4 x i32>
2609
2610  res_vui = vec_or(vbi, vui);
2611// CHECK: or <4 x i32>
2612// CHECK-LE: or <4 x i32>
2613
2614  res_vui = vec_or(vui, vbi);
2615// CHECK: or <4 x i32>
2616// CHECK-LE: or <4 x i32>
2617
2618  res_vbi = vec_or(vbi, vbi);
2619// CHECK: or <4 x i32>
2620// CHECK-LE: or <4 x i32>
2621
2622  res_vf  = vec_or(vf, vf);
2623// CHECK: or <4 x i32>
2624// CHECK-LE: or <4 x i32>
2625
2626  res_vf  = vec_or(vbi, vf);
2627// CHECK: or <4 x i32>
2628// CHECK-LE: or <4 x i32>
2629
2630  res_vf  = vec_or(vf, vbi);
2631// CHECK: or <4 x i32>
2632// CHECK-LE: or <4 x i32>
2633
2634  res_vsc = vec_vor(vsc, vsc);
2635// CHECK: or <16 x i8>
2636// CHECK-LE: or <16 x i8>
2637
2638  res_vsc = vec_vor(vbc, vsc);
2639// CHECK: or <16 x i8>
2640// CHECK-LE: or <16 x i8>
2641
2642  res_vsc = vec_vor(vsc, vbc);
2643// CHECK: or <16 x i8>
2644// CHECK-LE: or <16 x i8>
2645
2646  res_vuc = vec_vor(vuc, vuc);
2647// CHECK: or <16 x i8>
2648// CHECK-LE: or <16 x i8>
2649
2650  res_vuc = vec_vor(vbc, vuc);
2651// CHECK: or <16 x i8>
2652// CHECK-LE: or <16 x i8>
2653
2654  res_vuc = vec_vor(vuc, vbc);
2655// CHECK: or <16 x i8>
2656// CHECK-LE: or <16 x i8>
2657
2658  res_vbc = vec_vor(vbc, vbc);
2659// CHECK: or <16 x i8>
2660// CHECK-LE: or <16 x i8>
2661
2662  res_vs  = vec_vor(vs, vs);
2663// CHECK: or <8 x i16>
2664// CHECK-LE: or <8 x i16>
2665
2666  res_vs  = vec_vor(vbs, vs);
2667// CHECK: or <8 x i16>
2668// CHECK-LE: or <8 x i16>
2669
2670  res_vs  = vec_vor(vs, vbs);
2671// CHECK: or <8 x i16>
2672// CHECK-LE: or <8 x i16>
2673
2674  res_vus = vec_vor(vus, vus);
2675// CHECK: or <8 x i16>
2676// CHECK-LE: or <8 x i16>
2677
2678  res_vus = vec_vor(vbs, vus);
2679// CHECK: or <8 x i16>
2680// CHECK-LE: or <8 x i16>
2681
2682  res_vus = vec_vor(vus, vbs);
2683// CHECK: or <8 x i16>
2684// CHECK-LE: or <8 x i16>
2685
2686  res_vbs = vec_vor(vbs, vbs);
2687// CHECK: or <8 x i16>
2688// CHECK-LE: or <8 x i16>
2689
2690  res_vi  = vec_vor(vi, vi);
2691// CHECK: or <4 x i32>
2692// CHECK-LE: or <4 x i32>
2693
2694  res_vi  = vec_vor(vbi, vi);
2695// CHECK: or <4 x i32>
2696// CHECK-LE: or <4 x i32>
2697
2698  res_vi  = vec_vor(vi, vbi);
2699// CHECK: or <4 x i32>
2700// CHECK-LE: or <4 x i32>
2701
2702  res_vui = vec_vor(vui, vui);
2703// CHECK: or <4 x i32>
2704// CHECK-LE: or <4 x i32>
2705
2706  res_vui = vec_vor(vbi, vui);
2707// CHECK: or <4 x i32>
2708// CHECK-LE: or <4 x i32>
2709
2710  res_vui = vec_vor(vui, vbi);
2711// CHECK: or <4 x i32>
2712// CHECK-LE: or <4 x i32>
2713
2714  res_vbi = vec_vor(vbi, vbi);
2715// CHECK: or <4 x i32>
2716// CHECK-LE: or <4 x i32>
2717
2718  res_vf  = vec_vor(vf, vf);
2719// CHECK: or <4 x i32>
2720// CHECK-LE: or <4 x i32>
2721
2722  res_vf  = vec_vor(vbi, vf);
2723// CHECK: or <4 x i32>
2724// CHECK-LE: or <4 x i32>
2725
2726  res_vf  = vec_vor(vf, vbi);
2727// CHECK: or <4 x i32>
2728// CHECK-LE: or <4 x i32>
2729
2730  /* vec_pack */
2731  res_vsc = vec_pack(vs, vs);
2732// CHECK: @llvm.ppc.altivec.vperm
2733// CHECK-LE: @llvm.ppc.altivec.vperm
2734
2735  res_vuc = vec_pack(vus, vus);
2736// CHECK: @llvm.ppc.altivec.vperm
2737// CHECK-LE: @llvm.ppc.altivec.vperm
2738
2739  res_vbc = vec_pack(vbs, vbs);
2740// CHECK: @llvm.ppc.altivec.vperm
2741// CHECK-LE: @llvm.ppc.altivec.vperm
2742
2743  res_vs  = vec_pack(vi, vi);
2744// CHECK: @llvm.ppc.altivec.vperm
2745// CHECK-LE: @llvm.ppc.altivec.vperm
2746
2747  res_vus = vec_pack(vui, vui);
2748// CHECK: @llvm.ppc.altivec.vperm
2749// CHECK-LE: @llvm.ppc.altivec.vperm
2750
2751  res_vbs = vec_pack(vbi, vbi);
2752// CHECK: @llvm.ppc.altivec.vperm
2753// CHECK-LE: @llvm.ppc.altivec.vperm
2754
2755  res_vsc = vec_vpkuhum(vs, vs);
2756// CHECK: @llvm.ppc.altivec.vperm
2757// CHECK-LE: @llvm.ppc.altivec.vperm
2758
2759  res_vuc = vec_vpkuhum(vus, vus);
2760// CHECK: @llvm.ppc.altivec.vperm
2761// CHECK-LE: @llvm.ppc.altivec.vperm
2762
2763  res_vbc = vec_vpkuhum(vbs, vbs);
2764// CHECK: @llvm.ppc.altivec.vperm
2765// CHECK-LE: @llvm.ppc.altivec.vperm
2766
2767  res_vs  = vec_vpkuwum(vi, vi);
2768// CHECK: @llvm.ppc.altivec.vperm
2769// CHECK-LE: @llvm.ppc.altivec.vperm
2770
2771  res_vus = vec_vpkuwum(vui, vui);
2772// CHECK: @llvm.ppc.altivec.vperm
2773// CHECK-LE: @llvm.ppc.altivec.vperm
2774
2775  res_vbs = vec_vpkuwum(vbi, vbi);
2776// CHECK: @llvm.ppc.altivec.vperm
2777// CHECK-LE: @llvm.ppc.altivec.vperm
2778
2779  /* vec_packpx */
2780  res_vp = vec_packpx(vui, vui);
2781// CHECK: @llvm.ppc.altivec.vpkpx
2782// CHECK-LE: @llvm.ppc.altivec.vpkpx
2783
2784  res_vp = vec_vpkpx(vui, vui);
2785// CHECK: @llvm.ppc.altivec.vpkpx
2786// CHECK-LE: @llvm.ppc.altivec.vpkpx
2787
2788  /* vec_packs */
2789  res_vsc = vec_packs(vs, vs);
2790// CHECK: @llvm.ppc.altivec.vpkshss
2791// CHECK-LE: @llvm.ppc.altivec.vpkshss
2792
2793  res_vuc = vec_packs(vus, vus);
2794// CHECK: @llvm.ppc.altivec.vpkuhus
2795// CHECK-LE: @llvm.ppc.altivec.vpkuhus
2796
2797  res_vs  = vec_packs(vi, vi);
2798// CHECK: @llvm.ppc.altivec.vpkswss
2799// CHECK-LE: @llvm.ppc.altivec.vpkswss
2800
2801  res_vus = vec_packs(vui, vui);
2802// CHECK: @llvm.ppc.altivec.vpkuwus
2803// CHECK-LE: @llvm.ppc.altivec.vpkuwus
2804
2805  res_vsc = vec_vpkshss(vs, vs);
2806// CHECK: @llvm.ppc.altivec.vpkshss
2807// CHECK-LE: @llvm.ppc.altivec.vpkshss
2808
2809  res_vuc = vec_vpkuhus(vus, vus);
2810// CHECK: @llvm.ppc.altivec.vpkuhus
2811// CHECK-LE: @llvm.ppc.altivec.vpkuhus
2812
2813  res_vs  = vec_vpkswss(vi, vi);
2814// CHECK: @llvm.ppc.altivec.vpkswss
2815// CHECK-LE: @llvm.ppc.altivec.vpkswss
2816
2817  res_vus = vec_vpkuwus(vui, vui);
2818// CHECK: @llvm.ppc.altivec.vpkuwus
2819// CHECK-LE: @llvm.ppc.altivec.vpkuwus
2820
2821  /* vec_packsu */
2822  res_vuc = vec_packsu(vs, vs);
2823// CHECK: @llvm.ppc.altivec.vpkshus
2824// CHECK-LE: @llvm.ppc.altivec.vpkshus
2825
2826  res_vuc = vec_packsu(vus, vus);
2827// CHECK: @llvm.ppc.altivec.vpkuhus
2828// CHECK-LE: @llvm.ppc.altivec.vpkuhus
2829
2830  res_vus = vec_packsu(vi, vi);
2831// CHECK: @llvm.ppc.altivec.vpkswus
2832// CHECK-LE: @llvm.ppc.altivec.vpkswus
2833
2834  res_vus = vec_packsu(vui, vui);
2835// CHECK: @llvm.ppc.altivec.vpkuwus
2836// CHECK-LE: @llvm.ppc.altivec.vpkuwus
2837
2838  res_vuc = vec_vpkshus(vs, vs);
2839// CHECK: @llvm.ppc.altivec.vpkshus
2840// CHECK-LE: @llvm.ppc.altivec.vpkshus
2841
2842  res_vuc = vec_vpkshus(vus, vus);
2843// CHECK: @llvm.ppc.altivec.vpkuhus
2844// CHECK-LE: @llvm.ppc.altivec.vpkuhus
2845
2846  res_vus = vec_vpkswus(vi, vi);
2847// CHECK: @llvm.ppc.altivec.vpkswus
2848// CHECK-LE: @llvm.ppc.altivec.vpkswus
2849
2850  res_vus = vec_vpkswus(vui, vui);
2851// CHECK: @llvm.ppc.altivec.vpkuwus
2852// CHECK-LE: @llvm.ppc.altivec.vpkuwus
2853
2854  /* vec_perm */
2855  res_vsc = vec_perm(vsc, vsc, vuc);
2856// CHECK: @llvm.ppc.altivec.vperm
2857// CHECK-LE: @llvm.ppc.altivec.vperm
2858
2859  res_vuc = vec_perm(vuc, vuc, vuc);
2860// CHECK: @llvm.ppc.altivec.vperm
2861// CHECK-LE: @llvm.ppc.altivec.vperm
2862
2863  res_vbc = vec_perm(vbc, vbc, vuc);
2864// CHECK: @llvm.ppc.altivec.vperm
2865// CHECK-LE: @llvm.ppc.altivec.vperm
2866
2867  res_vs  = vec_perm(vs, vs, vuc);
2868// CHECK: @llvm.ppc.altivec.vperm
2869// CHECK-LE: @llvm.ppc.altivec.vperm
2870
2871  res_vus = vec_perm(vus, vus, vuc);
2872// CHECK: @llvm.ppc.altivec.vperm
2873// CHECK-LE: @llvm.ppc.altivec.vperm
2874
2875  res_vbs = vec_perm(vbs, vbs, vuc);
2876// CHECK: @llvm.ppc.altivec.vperm
2877// CHECK-LE: @llvm.ppc.altivec.vperm
2878
2879  res_vp  = vec_perm(vp, vp, vuc);
2880// CHECK: @llvm.ppc.altivec.vperm
2881// CHECK-LE: @llvm.ppc.altivec.vperm
2882
2883  res_vi  = vec_perm(vi, vi, vuc);
2884// CHECK: @llvm.ppc.altivec.vperm
2885// CHECK-LE: @llvm.ppc.altivec.vperm
2886
2887  res_vui = vec_perm(vui, vui, vuc);
2888// CHECK: @llvm.ppc.altivec.vperm
2889// CHECK-LE: @llvm.ppc.altivec.vperm
2890
2891  res_vbi = vec_perm(vbi, vbi, vuc);
2892// CHECK: @llvm.ppc.altivec.vperm
2893// CHECK-LE: @llvm.ppc.altivec.vperm
2894
2895  res_vf  = vec_perm(vf, vf, vuc);
2896// CHECK: @llvm.ppc.altivec.vperm
2897// CHECK-LE: @llvm.ppc.altivec.vperm
2898
2899  res_vsc = vec_vperm(vsc, vsc, vuc);
2900// CHECK: @llvm.ppc.altivec.vperm
2901// CHECK-LE: @llvm.ppc.altivec.vperm
2902
2903  res_vuc = vec_vperm(vuc, vuc, vuc);
2904// CHECK: @llvm.ppc.altivec.vperm
2905// CHECK-LE: @llvm.ppc.altivec.vperm
2906
2907  res_vbc = vec_vperm(vbc, vbc, vuc);
2908// CHECK: @llvm.ppc.altivec.vperm
2909// CHECK-LE: @llvm.ppc.altivec.vperm
2910
2911  res_vs  = vec_vperm(vs, vs, vuc);
2912// CHECK: @llvm.ppc.altivec.vperm
2913// CHECK-LE: @llvm.ppc.altivec.vperm
2914
2915  res_vus = vec_vperm(vus, vus, vuc);
2916// CHECK: @llvm.ppc.altivec.vperm
2917// CHECK-LE: @llvm.ppc.altivec.vperm
2918
2919  res_vbs = vec_vperm(vbs, vbs, vuc);
2920// CHECK: @llvm.ppc.altivec.vperm
2921// CHECK-LE: @llvm.ppc.altivec.vperm
2922
2923  res_vp  = vec_vperm(vp, vp, vuc);
2924// CHECK: @llvm.ppc.altivec.vperm
2925// CHECK-LE: @llvm.ppc.altivec.vperm
2926
2927  res_vi  = vec_vperm(vi, vi, vuc);
2928// CHECK: @llvm.ppc.altivec.vperm
2929// CHECK-LE: @llvm.ppc.altivec.vperm
2930
2931  res_vui = vec_vperm(vui, vui, vuc);
2932// CHECK: @llvm.ppc.altivec.vperm
2933// CHECK-LE: @llvm.ppc.altivec.vperm
2934
2935  res_vbi = vec_vperm(vbi, vbi, vuc);
2936// CHECK: @llvm.ppc.altivec.vperm
2937// CHECK-LE: @llvm.ppc.altivec.vperm
2938
2939  res_vf  = vec_vperm(vf, vf, vuc);
2940// CHECK: @llvm.ppc.altivec.vperm
2941// CHECK-LE: @llvm.ppc.altivec.vperm
2942
2943  /* vec_re */
2944  res_vf = vec_re(vf);
2945// CHECK: @llvm.ppc.altivec.vrefp
2946// CHECK-LE: @llvm.ppc.altivec.vrefp
2947
2948  res_vf = vec_vrefp(vf);
2949// CHECK: @llvm.ppc.altivec.vrefp
2950// CHECK-LE: @llvm.ppc.altivec.vrefp
2951
2952  /* vec_rl */
2953  res_vsc = vec_rl(vsc, vuc);
2954// CHECK: @llvm.ppc.altivec.vrlb
2955// CHECK-LE: @llvm.ppc.altivec.vrlb
2956
2957  res_vuc = vec_rl(vuc, vuc);
2958// CHECK: @llvm.ppc.altivec.vrlb
2959// CHECK-LE: @llvm.ppc.altivec.vrlb
2960
2961  res_vs  = vec_rl(vs, vus);
2962// CHECK: @llvm.ppc.altivec.vrlh
2963// CHECK-LE: @llvm.ppc.altivec.vrlh
2964
2965  res_vus = vec_rl(vus, vus);
2966// CHECK: @llvm.ppc.altivec.vrlh
2967// CHECK-LE: @llvm.ppc.altivec.vrlh
2968
2969  res_vi  = vec_rl(vi, vui);
2970// CHECK: @llvm.ppc.altivec.vrlw
2971// CHECK-LE: @llvm.ppc.altivec.vrlw
2972
2973  res_vui = vec_rl(vui, vui);
2974// CHECK: @llvm.ppc.altivec.vrlw
2975// CHECK-LE: @llvm.ppc.altivec.vrlw
2976
2977  res_vsc = vec_vrlb(vsc, vuc);
2978// CHECK: @llvm.ppc.altivec.vrlb
2979// CHECK-LE: @llvm.ppc.altivec.vrlb
2980
2981  res_vuc = vec_vrlb(vuc, vuc);
2982// CHECK: @llvm.ppc.altivec.vrlb
2983// CHECK-LE: @llvm.ppc.altivec.vrlb
2984
2985  res_vs  = vec_vrlh(vs, vus);
2986// CHECK: @llvm.ppc.altivec.vrlh
2987// CHECK-LE: @llvm.ppc.altivec.vrlh
2988
2989  res_vus = vec_vrlh(vus, vus);
2990// CHECK: @llvm.ppc.altivec.vrlh
2991// CHECK-LE: @llvm.ppc.altivec.vrlh
2992
2993  res_vi  = vec_vrlw(vi, vui);
2994// CHECK: @llvm.ppc.altivec.vrlw
2995// CHECK-LE: @llvm.ppc.altivec.vrlw
2996
2997  res_vui = vec_vrlw(vui, vui);
2998// CHECK: @llvm.ppc.altivec.vrlw
2999// CHECK-LE: @llvm.ppc.altivec.vrlw
3000
3001  /* vec_round */
3002  res_vf = vec_round(vf);
3003// CHECK: @llvm.ppc.altivec.vrfin
3004// CHECK-LE: @llvm.ppc.altivec.vrfin
3005
3006  res_vf = vec_vrfin(vf);
3007// CHECK: @llvm.ppc.altivec.vrfin
3008// CHECK-LE: @llvm.ppc.altivec.vrfin
3009
3010  /* vec_rsqrte */
3011  res_vf = vec_rsqrte(vf);
3012// CHECK: @llvm.ppc.altivec.vrsqrtefp
3013// CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3014
3015  res_vf = vec_vrsqrtefp(vf);
3016// CHECK: @llvm.ppc.altivec.vrsqrtefp
3017// CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3018
3019  /* vec_sel */
3020  res_vsc = vec_sel(vsc, vsc, vuc);
3021// CHECK: xor <16 x i8>
3022// CHECK: and <16 x i8>
3023// CHECK: and <16 x i8>
3024// CHECK: or <16 x i8>
3025// CHECK-LE: xor <16 x i8>
3026// CHECK-LE: and <16 x i8>
3027// CHECK-LE: and <16 x i8>
3028// CHECK-LE: or <16 x i8>
3029
3030  res_vsc = vec_sel(vsc, vsc, vbc);
3031// CHECK: xor <16 x i8>
3032// CHECK: and <16 x i8>
3033// CHECK: and <16 x i8>
3034// CHECK: or <16 x i8>
3035// CHECK-LE: xor <16 x i8>
3036// CHECK-LE: and <16 x i8>
3037// CHECK-LE: and <16 x i8>
3038// CHECK-LE: or <16 x i8>
3039
3040  res_vuc = vec_sel(vuc, vuc, vuc);
3041// CHECK: xor <16 x i8>
3042// CHECK: and <16 x i8>
3043// CHECK: and <16 x i8>
3044// CHECK: or <16 x i8>
3045// CHECK-LE: xor <16 x i8>
3046// CHECK-LE: and <16 x i8>
3047// CHECK-LE: and <16 x i8>
3048// CHECK-LE: or <16 x i8>
3049
3050  res_vuc = vec_sel(vuc, vuc, vbc);
3051// CHECK: xor <16 x i8>
3052// CHECK: and <16 x i8>
3053// CHECK: and <16 x i8>
3054// CHECK: or <16 x i8>
3055// CHECK-LE: xor <16 x i8>
3056// CHECK-LE: and <16 x i8>
3057// CHECK-LE: and <16 x i8>
3058// CHECK-LE: or <16 x i8>
3059
3060  res_vbc = vec_sel(vbc, vbc, vuc);
3061// CHECK: xor <16 x i8>
3062// CHECK: and <16 x i8>
3063// CHECK: and <16 x i8>
3064// CHECK: or <16 x i8>
3065// CHECK-LE: xor <16 x i8>
3066// CHECK-LE: and <16 x i8>
3067// CHECK-LE: and <16 x i8>
3068// CHECK-LE: or <16 x i8>
3069
3070  res_vbc = vec_sel(vbc, vbc, vbc);
3071// CHECK: xor <16 x i8>
3072// CHECK: and <16 x i8>
3073// CHECK: and <16 x i8>
3074// CHECK: or <16 x i8>
3075// CHECK-LE: xor <16 x i8>
3076// CHECK-LE: and <16 x i8>
3077// CHECK-LE: and <16 x i8>
3078// CHECK-LE: or <16 x i8>
3079
3080  res_vs  = vec_sel(vs, vs, vus);
3081// CHECK: xor <8 x i16>
3082// CHECK: and <8 x i16>
3083// CHECK: and <8 x i16>
3084// CHECK: or <8 x i16>
3085// CHECK-LE: xor <8 x i16>
3086// CHECK-LE: and <8 x i16>
3087// CHECK-LE: and <8 x i16>
3088// CHECK-LE: or <8 x i16>
3089
3090  res_vs  = vec_sel(vs, vs, vbs);
3091// CHECK: xor <8 x i16>
3092// CHECK: and <8 x i16>
3093// CHECK: and <8 x i16>
3094// CHECK: or <8 x i16>
3095// CHECK-LE: xor <8 x i16>
3096// CHECK-LE: and <8 x i16>
3097// CHECK-LE: and <8 x i16>
3098// CHECK-LE: or <8 x i16>
3099
3100  res_vus = vec_sel(vus, vus, vus);
3101// CHECK: xor <8 x i16>
3102// CHECK: and <8 x i16>
3103// CHECK: and <8 x i16>
3104// CHECK: or <8 x i16>
3105// CHECK-LE: xor <8 x i16>
3106// CHECK-LE: and <8 x i16>
3107// CHECK-LE: and <8 x i16>
3108// CHECK-LE: or <8 x i16>
3109
3110  res_vus = vec_sel(vus, vus, vbs);
3111// CHECK: xor <8 x i16>
3112// CHECK: and <8 x i16>
3113// CHECK: and <8 x i16>
3114// CHECK: or <8 x i16>
3115// CHECK-LE: xor <8 x i16>
3116// CHECK-LE: and <8 x i16>
3117// CHECK-LE: and <8 x i16>
3118// CHECK-LE: or <8 x i16>
3119
3120  res_vbs = vec_sel(vbs, vbs, vus);
3121// CHECK: xor <8 x i16>
3122// CHECK: and <8 x i16>
3123// CHECK: and <8 x i16>
3124// CHECK: or <8 x i16>
3125// CHECK-LE: xor <8 x i16>
3126// CHECK-LE: and <8 x i16>
3127// CHECK-LE: and <8 x i16>
3128// CHECK-LE: or <8 x i16>
3129
3130  res_vbs = vec_sel(vbs, vbs, vbs);
3131// CHECK: xor <8 x i16>
3132// CHECK: and <8 x i16>
3133// CHECK: and <8 x i16>
3134// CHECK: or <8 x i16>
3135// CHECK-LE: xor <8 x i16>
3136// CHECK-LE: and <8 x i16>
3137// CHECK-LE: and <8 x i16>
3138// CHECK-LE: or <8 x i16>
3139
3140  res_vi  = vec_sel(vi, vi, vui);
3141// CHECK: xor <4 x i32>
3142// CHECK: and <4 x i32>
3143// CHECK: and <4 x i32>
3144// CHECK: or <4 x i32>
3145// CHECK-LE: xor <4 x i32>
3146// CHECK-LE: and <4 x i32>
3147// CHECK-LE: and <4 x i32>
3148// CHECK-LE: or <4 x i32>
3149
3150  res_vi  = vec_sel(vi, vi, vbi);
3151// CHECK: xor <4 x i32>
3152// CHECK: and <4 x i32>
3153// CHECK: and <4 x i32>
3154// CHECK: or <4 x i32>
3155// CHECK-LE: xor <4 x i32>
3156// CHECK-LE: and <4 x i32>
3157// CHECK-LE: and <4 x i32>
3158// CHECK-LE: or <4 x i32>
3159
3160  res_vui = vec_sel(vui, vui, vui);
3161// CHECK: xor <4 x i32>
3162// CHECK: and <4 x i32>
3163// CHECK: and <4 x i32>
3164// CHECK: or <4 x i32>
3165// CHECK-LE: xor <4 x i32>
3166// CHECK-LE: and <4 x i32>
3167// CHECK-LE: and <4 x i32>
3168// CHECK-LE: or <4 x i32>
3169
3170  res_vui = vec_sel(vui, vui, vbi);
3171// CHECK: xor <4 x i32>
3172// CHECK: and <4 x i32>
3173// CHECK: and <4 x i32>
3174// CHECK: or <4 x i32>
3175// CHECK-LE: xor <4 x i32>
3176// CHECK-LE: and <4 x i32>
3177// CHECK-LE: and <4 x i32>
3178// CHECK-LE: or <4 x i32>
3179
3180  res_vbi = vec_sel(vbi, vbi, vui);
3181// CHECK: xor <4 x i32>
3182// CHECK: and <4 x i32>
3183// CHECK: and <4 x i32>
3184// CHECK: or <4 x i32>
3185// CHECK-LE: xor <4 x i32>
3186// CHECK-LE: and <4 x i32>
3187// CHECK-LE: and <4 x i32>
3188// CHECK-LE: or <4 x i32>
3189
3190  res_vbi = vec_sel(vbi, vbi, vbi);
3191// CHECK: xor <4 x i32>
3192// CHECK: and <4 x i32>
3193// CHECK: and <4 x i32>
3194// CHECK: or <4 x i32>
3195// CHECK-LE: xor <4 x i32>
3196// CHECK-LE: and <4 x i32>
3197// CHECK-LE: and <4 x i32>
3198// CHECK-LE: or <4 x i32>
3199
3200  res_vf  = vec_sel(vf, vf, vui);
3201// CHECK: xor <4 x i32>
3202// CHECK: and <4 x i32>
3203// CHECK: and <4 x i32>
3204// CHECK: or <4 x i32>
3205// CHECK-LE: xor <4 x i32>
3206// CHECK-LE: and <4 x i32>
3207// CHECK-LE: and <4 x i32>
3208// CHECK-LE: or <4 x i32>
3209
3210  res_vf  = vec_sel(vf, vf, vbi);
3211// CHECK: xor <4 x i32>
3212// CHECK: and <4 x i32>
3213// CHECK: and <4 x i32>
3214// CHECK: or <4 x i32>
3215// CHECK-LE: xor <4 x i32>
3216// CHECK-LE: and <4 x i32>
3217// CHECK-LE: and <4 x i32>
3218// CHECK-LE: or <4 x i32>
3219
3220  res_vsc = vec_vsel(vsc, vsc, vuc);
3221// CHECK: xor <16 x i8>
3222// CHECK: and <16 x i8>
3223// CHECK: and <16 x i8>
3224// CHECK: or <16 x i8>
3225// CHECK-LE: xor <16 x i8>
3226// CHECK-LE: and <16 x i8>
3227// CHECK-LE: and <16 x i8>
3228// CHECK-LE: or <16 x i8>
3229
3230  res_vsc = vec_vsel(vsc, vsc, vbc);
3231// CHECK: xor <16 x i8>
3232// CHECK: and <16 x i8>
3233// CHECK: and <16 x i8>
3234// CHECK: or <16 x i8>
3235// CHECK-LE: xor <16 x i8>
3236// CHECK-LE: and <16 x i8>
3237// CHECK-LE: and <16 x i8>
3238// CHECK-LE: or <16 x i8>
3239
3240  res_vuc = vec_vsel(vuc, vuc, vuc);
3241// CHECK: xor <16 x i8>
3242// CHECK: and <16 x i8>
3243// CHECK: and <16 x i8>
3244// CHECK: or <16 x i8>
3245// CHECK-LE: xor <16 x i8>
3246// CHECK-LE: and <16 x i8>
3247// CHECK-LE: and <16 x i8>
3248// CHECK-LE: or <16 x i8>
3249
3250  res_vuc = vec_vsel(vuc, vuc, vbc);
3251// CHECK: xor <16 x i8>
3252// CHECK: and <16 x i8>
3253// CHECK: and <16 x i8>
3254// CHECK: or <16 x i8>
3255// CHECK-LE: xor <16 x i8>
3256// CHECK-LE: and <16 x i8>
3257// CHECK-LE: and <16 x i8>
3258// CHECK-LE: or <16 x i8>
3259
3260  res_vbc = vec_vsel(vbc, vbc, vuc);
3261// CHECK: xor <16 x i8>
3262// CHECK: and <16 x i8>
3263// CHECK: and <16 x i8>
3264// CHECK: or <16 x i8>
3265// CHECK-LE: xor <16 x i8>
3266// CHECK-LE: and <16 x i8>
3267// CHECK-LE: and <16 x i8>
3268// CHECK-LE: or <16 x i8>
3269
3270  res_vbc = vec_vsel(vbc, vbc, vbc);
3271// CHECK: xor <16 x i8>
3272// CHECK: and <16 x i8>
3273// CHECK: and <16 x i8>
3274// CHECK: or <16 x i8>
3275// CHECK-LE: xor <16 x i8>
3276// CHECK-LE: and <16 x i8>
3277// CHECK-LE: and <16 x i8>
3278// CHECK-LE: or <16 x i8>
3279
3280  res_vs  = vec_vsel(vs, vs, vus);
3281// CHECK: xor <8 x i16>
3282// CHECK: and <8 x i16>
3283// CHECK: and <8 x i16>
3284// CHECK: or <8 x i16>
3285// CHECK-LE: xor <8 x i16>
3286// CHECK-LE: and <8 x i16>
3287// CHECK-LE: and <8 x i16>
3288// CHECK-LE: or <8 x i16>
3289
3290  res_vs  = vec_vsel(vs, vs, vbs);
3291// CHECK: xor <8 x i16>
3292// CHECK: and <8 x i16>
3293// CHECK: and <8 x i16>
3294// CHECK: or <8 x i16>
3295// CHECK-LE: xor <8 x i16>
3296// CHECK-LE: and <8 x i16>
3297// CHECK-LE: and <8 x i16>
3298// CHECK-LE: or <8 x i16>
3299
3300  res_vus = vec_vsel(vus, vus, vus);
3301// CHECK: xor <8 x i16>
3302// CHECK: and <8 x i16>
3303// CHECK: and <8 x i16>
3304// CHECK: or <8 x i16>
3305// CHECK-LE: xor <8 x i16>
3306// CHECK-LE: and <8 x i16>
3307// CHECK-LE: and <8 x i16>
3308// CHECK-LE: or <8 x i16>
3309
3310  res_vus = vec_vsel(vus, vus, vbs);
3311// CHECK: xor <8 x i16>
3312// CHECK: and <8 x i16>
3313// CHECK: and <8 x i16>
3314// CHECK: or <8 x i16>
3315// CHECK-LE: xor <8 x i16>
3316// CHECK-LE: and <8 x i16>
3317// CHECK-LE: and <8 x i16>
3318// CHECK-LE: or <8 x i16>
3319
3320  res_vbs = vec_vsel(vbs, vbs, vus);
3321// CHECK: xor <8 x i16>
3322// CHECK: and <8 x i16>
3323// CHECK: and <8 x i16>
3324// CHECK: or <8 x i16>
3325// CHECK-LE: xor <8 x i16>
3326// CHECK-LE: and <8 x i16>
3327// CHECK-LE: and <8 x i16>
3328// CHECK-LE: or <8 x i16>
3329
3330  res_vbs = vec_vsel(vbs, vbs, vbs);
3331// CHECK: xor <8 x i16>
3332// CHECK: and <8 x i16>
3333// CHECK: and <8 x i16>
3334// CHECK: or <8 x i16>
3335// CHECK-LE: xor <8 x i16>
3336// CHECK-LE: and <8 x i16>
3337// CHECK-LE: and <8 x i16>
3338// CHECK-LE: or <8 x i16>
3339
3340  res_vi  = vec_vsel(vi, vi, vui);
3341// CHECK: xor <4 x i32>
3342// CHECK: and <4 x i32>
3343// CHECK: and <4 x i32>
3344// CHECK: or <4 x i32>
3345// CHECK-LE: xor <4 x i32>
3346// CHECK-LE: and <4 x i32>
3347// CHECK-LE: and <4 x i32>
3348// CHECK-LE: or <4 x i32>
3349
3350  res_vi  = vec_vsel(vi, vi, vbi);
3351// CHECK: xor <4 x i32>
3352// CHECK: and <4 x i32>
3353// CHECK: and <4 x i32>
3354// CHECK: or <4 x i32>
3355// CHECK-LE: xor <4 x i32>
3356// CHECK-LE: and <4 x i32>
3357// CHECK-LE: and <4 x i32>
3358// CHECK-LE: or <4 x i32>
3359
3360  res_vui = vec_vsel(vui, vui, vui);
3361// CHECK: xor <4 x i32>
3362// CHECK: and <4 x i32>
3363// CHECK: and <4 x i32>
3364// CHECK: or <4 x i32>
3365// CHECK-LE: xor <4 x i32>
3366// CHECK-LE: and <4 x i32>
3367// CHECK-LE: and <4 x i32>
3368// CHECK-LE: or <4 x i32>
3369
3370  res_vui = vec_vsel(vui, vui, vbi);
3371// CHECK: xor <4 x i32>
3372// CHECK: and <4 x i32>
3373// CHECK: and <4 x i32>
3374// CHECK: or <4 x i32>
3375// CHECK-LE: xor <4 x i32>
3376// CHECK-LE: and <4 x i32>
3377// CHECK-LE: and <4 x i32>
3378// CHECK-LE: or <4 x i32>
3379
3380  res_vbi = vec_vsel(vbi, vbi, vui);
3381// CHECK: xor <4 x i32>
3382// CHECK: and <4 x i32>
3383// CHECK: and <4 x i32>
3384// CHECK: or <4 x i32>
3385// CHECK-LE: xor <4 x i32>
3386// CHECK-LE: and <4 x i32>
3387// CHECK-LE: and <4 x i32>
3388// CHECK-LE: or <4 x i32>
3389
3390  res_vbi = vec_vsel(vbi, vbi, vbi);
3391// CHECK: xor <4 x i32>
3392// CHECK: and <4 x i32>
3393// CHECK: and <4 x i32>
3394// CHECK: or <4 x i32>
3395// CHECK-LE: xor <4 x i32>
3396// CHECK-LE: and <4 x i32>
3397// CHECK-LE: and <4 x i32>
3398// CHECK-LE: or <4 x i32>
3399
3400  res_vf  = vec_vsel(vf, vf, vui);
3401// CHECK: xor <4 x i32>
3402// CHECK: and <4 x i32>
3403// CHECK: and <4 x i32>
3404// CHECK: or <4 x i32>
3405// CHECK-LE: xor <4 x i32>
3406// CHECK-LE: and <4 x i32>
3407// CHECK-LE: and <4 x i32>
3408// CHECK-LE: or <4 x i32>
3409
3410  res_vf  = vec_vsel(vf, vf, vbi);
3411// CHECK: xor <4 x i32>
3412// CHECK: and <4 x i32>
3413// CHECK: and <4 x i32>
3414// CHECK: or <4 x i32>
3415// CHECK-LE: xor <4 x i32>
3416// CHECK-LE: and <4 x i32>
3417// CHECK-LE: and <4 x i32>
3418// CHECK-LE: or <4 x i32>
3419
3420  /* vec_sl */
3421  res_vsc = vec_sl(vsc, vuc);
3422// 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>
3423// CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3424// 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>
3425// CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3426
3427  res_vuc = vec_sl(vuc, vuc);
3428// 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>
3429// CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3430// 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>
3431// CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3432
3433  res_vs  = vec_sl(vs, vus);
3434// 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>
3435// CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3436// 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>
3437// CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3438
3439  res_vus = vec_sl(vus, vus);
3440// 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>
3441// CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3442// 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>
3443// CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3444
3445  res_vi  = vec_sl(vi, vui);
3446// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3447// CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3448// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3449// CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3450
3451  res_vui = vec_sl(vui, vui);
3452// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3453// CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3454// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3455// CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3456
3457  res_vsc = vec_vslb(vsc, vuc);
3458// CHECK: shl <16 x i8>
3459// CHECK-LE: shl <16 x i8>
3460
3461  res_vuc = vec_vslb(vuc, vuc);
3462// CHECK: shl <16 x i8>
3463// CHECK-LE: shl <16 x i8>
3464
3465  res_vs  = vec_vslh(vs, vus);
3466// CHECK: shl <8 x i16>
3467// CHECK-LE: shl <8 x i16>
3468
3469  res_vus = vec_vslh(vus, vus);
3470// CHECK: shl <8 x i16>
3471// CHECK-LE: shl <8 x i16>
3472
3473  res_vi  = vec_vslw(vi, vui);
3474// CHECK: shl <4 x i32>
3475// CHECK-LE: shl <4 x i32>
3476
3477  res_vui = vec_vslw(vui, vui);
3478// CHECK: shl <4 x i32>
3479// CHECK-LE: shl <4 x i32>
3480
3481  /* vec_sld */
3482  res_vsc = vec_sld(vsc, vsc, 0);
3483// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3484// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3485// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3486// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3487// CHECK: @llvm.ppc.altivec.vperm
3488// CHECK-LE: sub nsw i32 16
3489// CHECK-LE: sub nsw i32 17
3490// CHECK-LE: sub nsw i32 18
3491// CHECK-LE: sub nsw i32 31
3492// CHECK-LE: @llvm.ppc.altivec.vperm
3493
3494  res_vuc = vec_sld(vuc, vuc, 0);
3495// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3496// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3497// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3498// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3499// CHECK: @llvm.ppc.altivec.vperm
3500// CHECK-LE: sub nsw i32 16
3501// CHECK-LE: sub nsw i32 17
3502// CHECK-LE: sub nsw i32 18
3503// CHECK-LE: sub nsw i32 31
3504// CHECK-LE: @llvm.ppc.altivec.vperm
3505
3506  res_vs  = vec_sld(vs, vs, 0);
3507// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3508// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3509// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3510// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3511// CHECK: @llvm.ppc.altivec.vperm
3512// CHECK-LE: sub nsw i32 16
3513// CHECK-LE: sub nsw i32 17
3514// CHECK-LE: sub nsw i32 18
3515// CHECK-LE: sub nsw i32 31
3516// CHECK-LE: @llvm.ppc.altivec.vperm
3517
3518  res_vus = vec_sld(vus, vus, 0);
3519// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3520// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3521// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3522// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3523// CHECK: @llvm.ppc.altivec.vperm
3524// CHECK-LE: sub nsw i32 16
3525// CHECK-LE: sub nsw i32 17
3526// CHECK-LE: sub nsw i32 18
3527// CHECK-LE: sub nsw i32 31
3528// CHECK-LE: @llvm.ppc.altivec.vperm
3529
3530  res_vbs = vec_sld(vbs, vbs, 0);
3531// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3532// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3533// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3534// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3535// CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3536// CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3537// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3538// CHECK-LE: sub nsw i32 16
3539// CHECK-LE: sub nsw i32 17
3540// CHECK-LE: sub nsw i32 18
3541// CHECK-LE: sub nsw i32 31
3542// CHECK-LE: xor <16 x i8>
3543// CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3544// CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3545// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3546
3547  res_vp  = vec_sld(vp, vp, 0);
3548// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3549// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3550// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3551// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3552// CHECK: @llvm.ppc.altivec.vperm
3553// CHECK-LE: sub nsw i32 16
3554// CHECK-LE: sub nsw i32 17
3555// CHECK-LE: sub nsw i32 18
3556// CHECK-LE: sub nsw i32 31
3557// CHECK-LE: @llvm.ppc.altivec.vperm
3558
3559  res_vi  = vec_sld(vi, vi, 0);
3560// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3561// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3562// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3563// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3564// CHECK: @llvm.ppc.altivec.vperm
3565// CHECK-LE: sub nsw i32 16
3566// CHECK-LE: sub nsw i32 17
3567// CHECK-LE: sub nsw i32 18
3568// CHECK-LE: sub nsw i32 31
3569// CHECK-LE: @llvm.ppc.altivec.vperm
3570
3571  res_vui = vec_sld(vui, vui, 0);
3572// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3573// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3574// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3575// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3576// CHECK: @llvm.ppc.altivec.vperm
3577// CHECK-LE: sub nsw i32 16
3578// CHECK-LE: sub nsw i32 17
3579// CHECK-LE: sub nsw i32 18
3580// CHECK-LE: sub nsw i32 31
3581// CHECK-LE: @llvm.ppc.altivec.vperm
3582
3583  res_vbi = vec_sld(vbi, vbi, 0);
3584// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3585// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3586// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3587// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3588// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3589// CHECK-LE: sub nsw i32 16
3590// CHECK-LE: sub nsw i32 17
3591// CHECK-LE: sub nsw i32 18
3592// CHECK-LE: sub nsw i32 31
3593// CHECK-LE: xor <16 x i8>
3594// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3595
3596  res_vf  = vec_sld(vf, vf, 0);
3597// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3598// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3599// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3600// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3601// CHECK: @llvm.ppc.altivec.vperm
3602// CHECK-LE: sub nsw i32 16
3603// CHECK-LE: sub nsw i32 17
3604// CHECK-LE: sub nsw i32 18
3605// CHECK-LE: sub nsw i32 31
3606// CHECK-LE: @llvm.ppc.altivec.vperm
3607
3608  /* vec_sldw */
3609  res_vsc = vec_sldw(vsc, vsc, 0);
3610  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3611  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3612  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3613  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3614  // CHECK: @llvm.ppc.altivec.vperm
3615  // CHECK-LE: sub nsw i32 16
3616  // CHECK-LE: sub nsw i32 17
3617  // CHECK-LE: sub nsw i32 18
3618  // CHECK-LE: sub nsw i32 31
3619  // CHECK-LE: @llvm.ppc.altivec.vperm
3620
3621  res_vuc = vec_sldw(vuc, vuc, 0);
3622  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3623  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3624  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3625  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3626  // CHECK: @llvm.ppc.altivec.vperm
3627  // CHECK-LE: sub nsw i32 16
3628  // CHECK-LE: sub nsw i32 17
3629  // CHECK-LE: sub nsw i32 18
3630  // CHECK-LE: sub nsw i32 31
3631  // CHECK-LE: @llvm.ppc.altivec.vperm
3632
3633  res_vi = vec_sldw(vi, vi, 0);
3634  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3635  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3636  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3637  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3638  // CHECK: @llvm.ppc.altivec.vperm
3639  // CHECK-LE: sub nsw i32 16
3640  // CHECK-LE: sub nsw i32 17
3641  // CHECK-LE: sub nsw i32 18
3642  // CHECK-LE: sub nsw i32 31
3643  // CHECK-LE: @llvm.ppc.altivec.vperm
3644
3645  res_vui = vec_sldw(vui, vui, 0);
3646  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3647  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3648  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3649  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3650  // CHECK: @llvm.ppc.altivec.vperm
3651  // CHECK-LE: sub nsw i32 16
3652  // CHECK-LE: sub nsw i32 17
3653  // CHECK-LE: sub nsw i32 18
3654  // CHECK-LE: sub nsw i32 31
3655  // CHECK-LE: @llvm.ppc.altivec.vperm
3656
3657  res_vs = vec_sldw(vs, vs, 0);
3658  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3659  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3660  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3661  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3662  // CHECK: @llvm.ppc.altivec.vperm
3663  // CHECK-LE: sub nsw i32 16
3664  // CHECK-LE: sub nsw i32 17
3665  // CHECK-LE: sub nsw i32 18
3666  // CHECK-LE: sub nsw i32 31
3667  // CHECK-LE: @llvm.ppc.altivec.vperm
3668
3669  res_vus = vec_sldw(vus, vus, 0);
3670  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3671  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3672  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3673  // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3674  // CHECK: @llvm.ppc.altivec.vperm
3675  // CHECK-LE: sub nsw i32 16
3676  // CHECK-LE: sub nsw i32 17
3677  // CHECK-LE: sub nsw i32 18
3678  // CHECK-LE: sub nsw i32 31
3679  // CHECK-LE: @llvm.ppc.altivec.vperm
3680
3681  res_vsc = vec_vsldoi(vsc, vsc, 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  res_vuc = vec_vsldoi(vuc, vuc, 0);
3694// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3695// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3696// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3697// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3698// CHECK: @llvm.ppc.altivec.vperm
3699// CHECK-LE: sub nsw i32 16
3700// CHECK-LE: sub nsw i32 17
3701// CHECK-LE: sub nsw i32 18
3702// CHECK-LE: sub nsw i32 31
3703// CHECK-LE: @llvm.ppc.altivec.vperm
3704
3705  res_vs  = vec_vsldoi(vs, vs, 0);
3706// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3707// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3708// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3709// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3710// CHECK: @llvm.ppc.altivec.vperm
3711// CHECK-LE: sub nsw i32 16
3712// CHECK-LE: sub nsw i32 17
3713// CHECK-LE: sub nsw i32 18
3714// CHECK-LE: sub nsw i32 31
3715// CHECK-LE: @llvm.ppc.altivec.vperm
3716
3717  res_vus = vec_vsldoi(vus, vus, 0);
3718// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3719// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3720// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3721// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3722// CHECK: @llvm.ppc.altivec.vperm
3723// CHECK-LE: sub nsw i32 16
3724// CHECK-LE: sub nsw i32 17
3725// CHECK-LE: sub nsw i32 18
3726// CHECK-LE: sub nsw i32 31
3727// CHECK-LE: @llvm.ppc.altivec.vperm
3728
3729  res_vp  = vec_vsldoi(vp, vp, 0);
3730// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3731// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3732// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3733// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3734// CHECK: @llvm.ppc.altivec.vperm
3735// CHECK-LE: sub nsw i32 16
3736// CHECK-LE: sub nsw i32 17
3737// CHECK-LE: sub nsw i32 18
3738// CHECK-LE: sub nsw i32 31
3739// CHECK-LE: @llvm.ppc.altivec.vperm
3740
3741  res_vi  = vec_vsldoi(vi, vi, 0);
3742// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3743// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3744// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3745// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3746// CHECK: @llvm.ppc.altivec.vperm
3747// CHECK-LE: sub nsw i32 16
3748// CHECK-LE: sub nsw i32 17
3749// CHECK-LE: sub nsw i32 18
3750// CHECK-LE: sub nsw i32 31
3751// CHECK-LE: @llvm.ppc.altivec.vperm
3752
3753  res_vui = vec_vsldoi(vui, vui, 0);
3754// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3755// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3756// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3757// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3758// CHECK: @llvm.ppc.altivec.vperm
3759// CHECK-LE: sub nsw i32 16
3760// CHECK-LE: sub nsw i32 17
3761// CHECK-LE: sub nsw i32 18
3762// CHECK-LE: sub nsw i32 31
3763// CHECK-LE: @llvm.ppc.altivec.vperm
3764
3765  res_vf  = vec_vsldoi(vf, vf, 0);
3766// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3767// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3768// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3769// CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3770// CHECK: @llvm.ppc.altivec.vperm
3771// CHECK-LE: sub nsw i32 16
3772// CHECK-LE: sub nsw i32 17
3773// CHECK-LE: sub nsw i32 18
3774// CHECK-LE: sub nsw i32 31
3775// CHECK-LE: @llvm.ppc.altivec.vperm
3776
3777  /* vec_sll */
3778  res_vsc = vec_sll(vsc, vuc);
3779// CHECK: @llvm.ppc.altivec.vsl
3780// CHECK-LE: @llvm.ppc.altivec.vsl
3781
3782  res_vsc = vec_sll(vsc, vus);
3783// CHECK: @llvm.ppc.altivec.vsl
3784// CHECK-LE: @llvm.ppc.altivec.vsl
3785
3786  res_vsc = vec_sll(vsc, vui);
3787// CHECK: @llvm.ppc.altivec.vsl
3788// CHECK-LE: @llvm.ppc.altivec.vsl
3789
3790  res_vuc = vec_sll(vuc, vuc);
3791// CHECK: @llvm.ppc.altivec.vsl
3792// CHECK-LE: @llvm.ppc.altivec.vsl
3793
3794  res_vuc = vec_sll(vuc, vus);
3795// CHECK: @llvm.ppc.altivec.vsl
3796// CHECK-LE: @llvm.ppc.altivec.vsl
3797
3798  res_vuc = vec_sll(vuc, vui);
3799// CHECK: @llvm.ppc.altivec.vsl
3800// CHECK-LE: @llvm.ppc.altivec.vsl
3801
3802  res_vbc = vec_sll(vbc, vuc);
3803// CHECK: @llvm.ppc.altivec.vsl
3804// CHECK-LE: @llvm.ppc.altivec.vsl
3805
3806  res_vbc = vec_sll(vbc, vus);
3807// CHECK: @llvm.ppc.altivec.vsl
3808// CHECK-LE: @llvm.ppc.altivec.vsl
3809
3810  res_vbc = vec_sll(vbc, vui);
3811// CHECK: @llvm.ppc.altivec.vsl
3812// CHECK-LE: @llvm.ppc.altivec.vsl
3813
3814  res_vs  = vec_sll(vs, vuc);
3815// CHECK: @llvm.ppc.altivec.vsl
3816// CHECK-LE: @llvm.ppc.altivec.vsl
3817
3818  res_vs  = vec_sll(vs, vus);
3819// CHECK: @llvm.ppc.altivec.vsl
3820// CHECK-LE: @llvm.ppc.altivec.vsl
3821
3822  res_vs  = vec_sll(vs, vui);
3823// CHECK: @llvm.ppc.altivec.vsl
3824// CHECK-LE: @llvm.ppc.altivec.vsl
3825
3826  res_vus = vec_sll(vus, vuc);
3827// CHECK: @llvm.ppc.altivec.vsl
3828// CHECK-LE: @llvm.ppc.altivec.vsl
3829
3830  res_vus = vec_sll(vus, vus);
3831// CHECK: @llvm.ppc.altivec.vsl
3832// CHECK-LE: @llvm.ppc.altivec.vsl
3833
3834  res_vus = vec_sll(vus, vui);
3835// CHECK: @llvm.ppc.altivec.vsl
3836// CHECK-LE: @llvm.ppc.altivec.vsl
3837
3838  res_vbs = vec_sll(vbs, vuc);
3839// CHECK: @llvm.ppc.altivec.vsl
3840// CHECK-LE: @llvm.ppc.altivec.vsl
3841
3842  res_vbs = vec_sll(vbs, vus);
3843// CHECK: @llvm.ppc.altivec.vsl
3844// CHECK-LE: @llvm.ppc.altivec.vsl
3845
3846  res_vbs = vec_sll(vbs, vui);
3847// CHECK: @llvm.ppc.altivec.vsl
3848// CHECK-LE: @llvm.ppc.altivec.vsl
3849
3850  res_vp  = vec_sll(vp, vuc);
3851// CHECK: @llvm.ppc.altivec.vsl
3852// CHECK-LE: @llvm.ppc.altivec.vsl
3853
3854  res_vp  = vec_sll(vp, vus);
3855// CHECK: @llvm.ppc.altivec.vsl
3856// CHECK-LE: @llvm.ppc.altivec.vsl
3857
3858  res_vp  = vec_sll(vp, vui);
3859// CHECK: @llvm.ppc.altivec.vsl
3860// CHECK-LE: @llvm.ppc.altivec.vsl
3861
3862  res_vi  = vec_sll(vi, vuc);
3863// CHECK: @llvm.ppc.altivec.vsl
3864// CHECK-LE: @llvm.ppc.altivec.vsl
3865
3866  res_vi  = vec_sll(vi, vus);
3867// CHECK: @llvm.ppc.altivec.vsl
3868// CHECK-LE: @llvm.ppc.altivec.vsl
3869
3870  res_vi  = vec_sll(vi, vui);
3871// CHECK: @llvm.ppc.altivec.vsl
3872// CHECK-LE: @llvm.ppc.altivec.vsl
3873
3874  res_vui = vec_sll(vui, vuc);
3875// CHECK: @llvm.ppc.altivec.vsl
3876// CHECK-LE: @llvm.ppc.altivec.vsl
3877
3878  res_vui = vec_sll(vui, vus);
3879// CHECK: @llvm.ppc.altivec.vsl
3880// CHECK-LE: @llvm.ppc.altivec.vsl
3881
3882  res_vui = vec_sll(vui, vui);
3883// CHECK: @llvm.ppc.altivec.vsl
3884// CHECK-LE: @llvm.ppc.altivec.vsl
3885
3886  res_vbi = vec_sll(vbi, vuc);
3887// CHECK: @llvm.ppc.altivec.vsl
3888// CHECK-LE: @llvm.ppc.altivec.vsl
3889
3890  res_vbi = vec_sll(vbi, vus);
3891// CHECK: @llvm.ppc.altivec.vsl
3892// CHECK-LE: @llvm.ppc.altivec.vsl
3893
3894  res_vbi = vec_sll(vbi, vui);
3895// CHECK: @llvm.ppc.altivec.vsl
3896// CHECK-LE: @llvm.ppc.altivec.vsl
3897
3898  res_vsc = vec_vsl(vsc, vuc);
3899// CHECK: @llvm.ppc.altivec.vsl
3900// CHECK-LE: @llvm.ppc.altivec.vsl
3901
3902  res_vsc = vec_vsl(vsc, vus);
3903// CHECK: @llvm.ppc.altivec.vsl
3904// CHECK-LE: @llvm.ppc.altivec.vsl
3905
3906  res_vsc = vec_vsl(vsc, vui);
3907// CHECK: @llvm.ppc.altivec.vsl
3908// CHECK-LE: @llvm.ppc.altivec.vsl
3909
3910  res_vuc = vec_vsl(vuc, vuc);
3911// CHECK: @llvm.ppc.altivec.vsl
3912// CHECK-LE: @llvm.ppc.altivec.vsl
3913
3914  res_vuc = vec_vsl(vuc, vus);
3915// CHECK: @llvm.ppc.altivec.vsl
3916// CHECK-LE: @llvm.ppc.altivec.vsl
3917
3918  res_vuc = vec_vsl(vuc, vui);
3919// CHECK: @llvm.ppc.altivec.vsl
3920// CHECK-LE: @llvm.ppc.altivec.vsl
3921
3922  res_vbc = vec_vsl(vbc, vuc);
3923// CHECK: @llvm.ppc.altivec.vsl
3924// CHECK-LE: @llvm.ppc.altivec.vsl
3925
3926  res_vbc = vec_vsl(vbc, vus);
3927// CHECK: @llvm.ppc.altivec.vsl
3928// CHECK-LE: @llvm.ppc.altivec.vsl
3929
3930  res_vbc = vec_vsl(vbc, vui);
3931// CHECK: @llvm.ppc.altivec.vsl
3932// CHECK-LE: @llvm.ppc.altivec.vsl
3933
3934  res_vs  = vec_vsl(vs, vuc);
3935// CHECK: @llvm.ppc.altivec.vsl
3936// CHECK-LE: @llvm.ppc.altivec.vsl
3937
3938  res_vs  = vec_vsl(vs, vus);
3939// CHECK: @llvm.ppc.altivec.vsl
3940// CHECK-LE: @llvm.ppc.altivec.vsl
3941
3942  res_vs  = vec_vsl(vs, vui);
3943// CHECK: @llvm.ppc.altivec.vsl
3944// CHECK-LE: @llvm.ppc.altivec.vsl
3945
3946  res_vus = vec_vsl(vus, vuc);
3947// CHECK: @llvm.ppc.altivec.vsl
3948// CHECK-LE: @llvm.ppc.altivec.vsl
3949
3950  res_vus = vec_vsl(vus, vus);
3951// CHECK: @llvm.ppc.altivec.vsl
3952// CHECK-LE: @llvm.ppc.altivec.vsl
3953
3954  res_vus = vec_vsl(vus, vui);
3955// CHECK: @llvm.ppc.altivec.vsl
3956// CHECK-LE: @llvm.ppc.altivec.vsl
3957
3958  res_vbs = vec_vsl(vbs, vuc);
3959// CHECK: @llvm.ppc.altivec.vsl
3960// CHECK-LE: @llvm.ppc.altivec.vsl
3961
3962  res_vbs = vec_vsl(vbs, vus);
3963// CHECK: @llvm.ppc.altivec.vsl
3964// CHECK-LE: @llvm.ppc.altivec.vsl
3965
3966  res_vbs = vec_vsl(vbs, vui);
3967// CHECK: @llvm.ppc.altivec.vsl
3968// CHECK-LE: @llvm.ppc.altivec.vsl
3969
3970  res_vp  = vec_vsl(vp, vuc);
3971// CHECK: @llvm.ppc.altivec.vsl
3972// CHECK-LE: @llvm.ppc.altivec.vsl
3973
3974  res_vp  = vec_vsl(vp, vus);
3975// CHECK: @llvm.ppc.altivec.vsl
3976// CHECK-LE: @llvm.ppc.altivec.vsl
3977
3978  res_vp  = vec_vsl(vp, vui);
3979// CHECK: @llvm.ppc.altivec.vsl
3980// CHECK-LE: @llvm.ppc.altivec.vsl
3981
3982  res_vi  = vec_vsl(vi, vuc);
3983// CHECK: @llvm.ppc.altivec.vsl
3984// CHECK-LE: @llvm.ppc.altivec.vsl
3985
3986  res_vi  = vec_vsl(vi, vus);
3987// CHECK: @llvm.ppc.altivec.vsl
3988// CHECK-LE: @llvm.ppc.altivec.vsl
3989
3990  res_vi  = vec_vsl(vi, vui);
3991// CHECK: @llvm.ppc.altivec.vsl
3992// CHECK-LE: @llvm.ppc.altivec.vsl
3993
3994  res_vui = vec_vsl(vui, vuc);
3995// CHECK: @llvm.ppc.altivec.vsl
3996// CHECK-LE: @llvm.ppc.altivec.vsl
3997
3998  res_vui = vec_vsl(vui, vus);
3999// CHECK: @llvm.ppc.altivec.vsl
4000// CHECK-LE: @llvm.ppc.altivec.vsl
4001
4002  res_vui = vec_vsl(vui, vui);
4003// CHECK: @llvm.ppc.altivec.vsl
4004// CHECK-LE: @llvm.ppc.altivec.vsl
4005
4006  res_vbi = vec_vsl(vbi, vuc);
4007// CHECK: @llvm.ppc.altivec.vsl
4008// CHECK-LE: @llvm.ppc.altivec.vsl
4009
4010  res_vbi = vec_vsl(vbi, vus);
4011// CHECK: @llvm.ppc.altivec.vsl
4012// CHECK-LE: @llvm.ppc.altivec.vsl
4013
4014  res_vbi = vec_vsl(vbi, vui);
4015// CHECK: @llvm.ppc.altivec.vsl
4016// CHECK-LE: @llvm.ppc.altivec.vsl
4017
4018  /* vec_slo */
4019  res_vsc = vec_slo(vsc, vsc);
4020// CHECK: @llvm.ppc.altivec.vslo
4021// CHECK-LE: @llvm.ppc.altivec.vslo
4022
4023  res_vsc = vec_slo(vsc, vuc);
4024// CHECK: @llvm.ppc.altivec.vslo
4025// CHECK-LE: @llvm.ppc.altivec.vslo
4026
4027  res_vuc = vec_slo(vuc, vsc);
4028// CHECK: @llvm.ppc.altivec.vslo
4029// CHECK-LE: @llvm.ppc.altivec.vslo
4030
4031  res_vuc = vec_slo(vuc, vuc);
4032// CHECK: @llvm.ppc.altivec.vslo
4033// CHECK-LE: @llvm.ppc.altivec.vslo
4034
4035  res_vs  = vec_slo(vs, vsc);
4036// CHECK: @llvm.ppc.altivec.vslo
4037// CHECK-LE: @llvm.ppc.altivec.vslo
4038
4039  res_vs  = vec_slo(vs, vuc);
4040// CHECK: @llvm.ppc.altivec.vslo
4041// CHECK-LE: @llvm.ppc.altivec.vslo
4042
4043  res_vus = vec_slo(vus, vsc);
4044// CHECK: @llvm.ppc.altivec.vslo
4045// CHECK-LE: @llvm.ppc.altivec.vslo
4046
4047  res_vus = vec_slo(vus, vuc);
4048// CHECK: @llvm.ppc.altivec.vslo
4049// CHECK-LE: @llvm.ppc.altivec.vslo
4050
4051  res_vp  = vec_slo(vp, vsc);
4052// CHECK: @llvm.ppc.altivec.vslo
4053// CHECK-LE: @llvm.ppc.altivec.vslo
4054
4055  res_vp  = vec_slo(vp, vuc);
4056// CHECK: @llvm.ppc.altivec.vslo
4057// CHECK-LE: @llvm.ppc.altivec.vslo
4058
4059  res_vi  = vec_slo(vi, vsc);
4060// CHECK: @llvm.ppc.altivec.vslo
4061// CHECK-LE: @llvm.ppc.altivec.vslo
4062
4063  res_vi  = vec_slo(vi, vuc);
4064// CHECK: @llvm.ppc.altivec.vslo
4065// CHECK-LE: @llvm.ppc.altivec.vslo
4066
4067  res_vui = vec_slo(vui, vsc);
4068// CHECK: @llvm.ppc.altivec.vslo
4069// CHECK-LE: @llvm.ppc.altivec.vslo
4070
4071  res_vui = vec_slo(vui, vuc);
4072// CHECK: @llvm.ppc.altivec.vslo
4073// CHECK-LE: @llvm.ppc.altivec.vslo
4074
4075  res_vf  = vec_slo(vf, vsc);
4076// CHECK: @llvm.ppc.altivec.vslo
4077// CHECK-LE: @llvm.ppc.altivec.vslo
4078
4079  res_vf  = vec_slo(vf, vuc);
4080// CHECK: @llvm.ppc.altivec.vslo
4081// CHECK-LE: @llvm.ppc.altivec.vslo
4082
4083  res_vsc = vec_vslo(vsc, vsc);
4084// CHECK: @llvm.ppc.altivec.vslo
4085// CHECK-LE: @llvm.ppc.altivec.vslo
4086
4087  res_vsc = vec_vslo(vsc, vuc);
4088// CHECK: @llvm.ppc.altivec.vslo
4089// CHECK-LE: @llvm.ppc.altivec.vslo
4090
4091  res_vuc = vec_vslo(vuc, vsc);
4092// CHECK: @llvm.ppc.altivec.vslo
4093// CHECK-LE: @llvm.ppc.altivec.vslo
4094
4095  res_vuc = vec_vslo(vuc, vuc);
4096// CHECK: @llvm.ppc.altivec.vslo
4097// CHECK-LE: @llvm.ppc.altivec.vslo
4098
4099  res_vs  = vec_vslo(vs, vsc);
4100// CHECK: @llvm.ppc.altivec.vslo
4101// CHECK-LE: @llvm.ppc.altivec.vslo
4102
4103  res_vs  = vec_vslo(vs, vuc);
4104// CHECK: @llvm.ppc.altivec.vslo
4105// CHECK-LE: @llvm.ppc.altivec.vslo
4106
4107  res_vus = vec_vslo(vus, vsc);
4108// CHECK: @llvm.ppc.altivec.vslo
4109// CHECK-LE: @llvm.ppc.altivec.vslo
4110
4111  res_vus = vec_vslo(vus, vuc);
4112// CHECK: @llvm.ppc.altivec.vslo
4113// CHECK-LE: @llvm.ppc.altivec.vslo
4114
4115  res_vp  = vec_vslo(vp, vsc);
4116// CHECK: @llvm.ppc.altivec.vslo
4117// CHECK-LE: @llvm.ppc.altivec.vslo
4118
4119  res_vp  = vec_vslo(vp, vuc);
4120// CHECK: @llvm.ppc.altivec.vslo
4121// CHECK-LE: @llvm.ppc.altivec.vslo
4122
4123  res_vi  = vec_vslo(vi, vsc);
4124// CHECK: @llvm.ppc.altivec.vslo
4125// CHECK-LE: @llvm.ppc.altivec.vslo
4126
4127  res_vi  = vec_vslo(vi, vuc);
4128// CHECK: @llvm.ppc.altivec.vslo
4129// CHECK-LE: @llvm.ppc.altivec.vslo
4130
4131  res_vui = vec_vslo(vui, vsc);
4132// CHECK: @llvm.ppc.altivec.vslo
4133// CHECK-LE: @llvm.ppc.altivec.vslo
4134
4135  res_vui = vec_vslo(vui, vuc);
4136// CHECK: @llvm.ppc.altivec.vslo
4137// CHECK-LE: @llvm.ppc.altivec.vslo
4138
4139  res_vf  = vec_vslo(vf, vsc);
4140// CHECK: @llvm.ppc.altivec.vslo
4141// CHECK-LE: @llvm.ppc.altivec.vslo
4142
4143  res_vf  = vec_vslo(vf, vuc);
4144// CHECK: @llvm.ppc.altivec.vslo
4145// CHECK-LE: @llvm.ppc.altivec.vslo
4146
4147  /* vec_splat */
4148  res_vsc = vec_splat(vsc, 0);
4149// CHECK: @llvm.ppc.altivec.vperm
4150// CHECK-LE: @llvm.ppc.altivec.vperm
4151
4152  res_vuc = vec_splat(vuc, 0);
4153// CHECK: @llvm.ppc.altivec.vperm
4154// CHECK-LE: @llvm.ppc.altivec.vperm
4155
4156  res_vbc = vec_splat(vbc, 0);
4157// CHECK: @llvm.ppc.altivec.vperm
4158// CHECK-LE: @llvm.ppc.altivec.vperm
4159
4160  res_vs  = vec_splat(vs, 0);
4161// CHECK: @llvm.ppc.altivec.vperm
4162// CHECK-LE: @llvm.ppc.altivec.vperm
4163
4164  res_vus = vec_splat(vus, 0);
4165// CHECK: @llvm.ppc.altivec.vperm
4166// CHECK-LE: @llvm.ppc.altivec.vperm
4167
4168  res_vbs = vec_splat(vbs, 0);
4169// CHECK: @llvm.ppc.altivec.vperm
4170// CHECK-LE: @llvm.ppc.altivec.vperm
4171
4172  res_vp  = vec_splat(vp, 0);
4173// CHECK: @llvm.ppc.altivec.vperm
4174// CHECK-LE: @llvm.ppc.altivec.vperm
4175
4176  res_vi  = vec_splat(vi, 0);
4177// CHECK: @llvm.ppc.altivec.vperm
4178// CHECK-LE: @llvm.ppc.altivec.vperm
4179
4180  res_vui = vec_splat(vui, 0);
4181// CHECK: @llvm.ppc.altivec.vperm
4182// CHECK-LE: @llvm.ppc.altivec.vperm
4183
4184  res_vbi = vec_splat(vbi, 0);
4185// CHECK: @llvm.ppc.altivec.vperm
4186// CHECK-LE: @llvm.ppc.altivec.vperm
4187
4188  res_vf  = vec_splat(vf, 0);
4189// CHECK: @llvm.ppc.altivec.vperm
4190// CHECK-LE: @llvm.ppc.altivec.vperm
4191
4192  res_vsc = vec_vspltb(vsc, 0);
4193// CHECK: @llvm.ppc.altivec.vperm
4194// CHECK-LE: @llvm.ppc.altivec.vperm
4195
4196  res_vuc = vec_vspltb(vuc, 0);
4197// CHECK: @llvm.ppc.altivec.vperm
4198// CHECK-LE: @llvm.ppc.altivec.vperm
4199
4200  res_vbc = vec_vspltb(vbc, 0);
4201// CHECK: @llvm.ppc.altivec.vperm
4202// CHECK-LE: @llvm.ppc.altivec.vperm
4203
4204  res_vs  = vec_vsplth(vs, 0);
4205// CHECK: @llvm.ppc.altivec.vperm
4206// CHECK-LE: @llvm.ppc.altivec.vperm
4207
4208  res_vus = vec_vsplth(vus, 0);
4209// CHECK: @llvm.ppc.altivec.vperm
4210// CHECK-LE: @llvm.ppc.altivec.vperm
4211
4212  res_vbs = vec_vsplth(vbs, 0);
4213// CHECK: @llvm.ppc.altivec.vperm
4214// CHECK-LE: @llvm.ppc.altivec.vperm
4215
4216  res_vp  = vec_vsplth(vp, 0);
4217// CHECK: @llvm.ppc.altivec.vperm
4218// CHECK-LE: @llvm.ppc.altivec.vperm
4219
4220  res_vi  = vec_vspltw(vi, 0);
4221// CHECK: @llvm.ppc.altivec.vperm
4222// CHECK-LE: @llvm.ppc.altivec.vperm
4223
4224  res_vui = vec_vspltw(vui, 0);
4225// CHECK: @llvm.ppc.altivec.vperm
4226// CHECK-LE: @llvm.ppc.altivec.vperm
4227
4228  res_vbi = vec_vspltw(vbi, 0);
4229// CHECK: @llvm.ppc.altivec.vperm
4230// CHECK-LE: @llvm.ppc.altivec.vperm
4231
4232  res_vf  = vec_vspltw(vf, 0);
4233// CHECK: @llvm.ppc.altivec.vperm
4234// CHECK-LE: @llvm.ppc.altivec.vperm
4235
4236  /* vec_splat_s8 */
4237  res_vsc = vec_splat_s8(0x09);                 // TODO: add check
4238  res_vsc = vec_vspltisb(0x09);                 // TODO: add check
4239
4240  /* vec_splat_s16 */
4241  res_vs = vec_splat_s16(0x09);                 // TODO: add check
4242  res_vs = vec_vspltish(0x09);                  // TODO: add check
4243
4244  /* vec_splat_s32 */
4245  res_vi = vec_splat_s32(0x09);                 // TODO: add check
4246  res_vi = vec_vspltisw(0x09);                  // TODO: add check
4247
4248  /* vec_splat_u8 */
4249  res_vuc = vec_splat_u8(0x09);                 // TODO: add check
4250
4251  /* vec_splat_u16 */
4252  res_vus = vec_splat_u16(0x09);                // TODO: add check
4253
4254  /* vec_splat_u32 */
4255  res_vui = vec_splat_u32(0x09);                // TODO: add check
4256
4257  /* vec_sr */
4258  res_vsc = vec_sr(vsc, vuc);
4259// 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>
4260// CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4261// 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>
4262// CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4263
4264  res_vuc = vec_sr(vuc, vuc);
4265// 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>
4266// CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4267// 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>
4268// CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4269
4270  res_vs  = vec_sr(vs, vus);
4271// 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>
4272// CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4273// 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>
4274// CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4275
4276  res_vus = vec_sr(vus, vus);
4277// 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>
4278// CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4279// 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>
4280// CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4281
4282  res_vi  = vec_sr(vi, vui);
4283// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4284// CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4285// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4286// CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4287
4288  res_vui = vec_sr(vui, vui);
4289// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4290// CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4291// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4292// CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4293
4294  res_vsc = vec_vsrb(vsc, vuc);
4295// 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>
4296// CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4297// 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>
4298// CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4299
4300  res_vuc = vec_vsrb(vuc, vuc);
4301// 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>
4302// CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4303// 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>
4304// CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4305
4306  res_vs  = vec_vsrh(vs, vus);
4307// 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>
4308// CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4309// 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>
4310// CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4311
4312  res_vus = vec_vsrh(vus, vus);
4313// 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>
4314// CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4315// 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>
4316// CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4317
4318  res_vi  = vec_vsrw(vi, vui);
4319// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4320// CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4321// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4322// CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4323
4324  res_vui = vec_vsrw(vui, vui);
4325// CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4326// CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4327// CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4328// CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4329
4330  /* vec_sra */
4331  res_vsc = vec_sra(vsc, vuc);
4332// CHECK: @llvm.ppc.altivec.vsrab
4333// CHECK-LE: @llvm.ppc.altivec.vsrab
4334
4335  res_vuc = vec_sra(vuc, vuc);
4336// CHECK: @llvm.ppc.altivec.vsrab
4337// CHECK-LE: @llvm.ppc.altivec.vsrab
4338
4339  res_vs  = vec_sra(vs, vus);
4340// CHECK: @llvm.ppc.altivec.vsrah
4341// CHECK-LE: @llvm.ppc.altivec.vsrah
4342
4343  res_vus = vec_sra(vus, vus);
4344// CHECK: @llvm.ppc.altivec.vsrah
4345// CHECK-LE: @llvm.ppc.altivec.vsrah
4346
4347  res_vi  = vec_sra(vi, vui);
4348// CHECK: @llvm.ppc.altivec.vsraw
4349// CHECK-LE: @llvm.ppc.altivec.vsraw
4350
4351  res_vui = vec_sra(vui, vui);
4352// CHECK: @llvm.ppc.altivec.vsraw
4353// CHECK-LE: @llvm.ppc.altivec.vsraw
4354
4355  res_vsc = vec_vsrab(vsc, vuc);
4356// CHECK: @llvm.ppc.altivec.vsrab
4357// CHECK-LE: @llvm.ppc.altivec.vsrab
4358
4359  res_vuc = vec_vsrab(vuc, vuc);
4360// CHECK: @llvm.ppc.altivec.vsrab
4361// CHECK-LE: @llvm.ppc.altivec.vsrab
4362
4363  res_vs  = vec_vsrah(vs, vus);
4364// CHECK: @llvm.ppc.altivec.vsrah
4365// CHECK-LE: @llvm.ppc.altivec.vsrah
4366
4367  res_vus = vec_vsrah(vus, vus);
4368// CHECK: @llvm.ppc.altivec.vsrah
4369// CHECK-LE: @llvm.ppc.altivec.vsrah
4370
4371  res_vi  = vec_vsraw(vi, vui);
4372// CHECK: @llvm.ppc.altivec.vsraw
4373// CHECK-LE: @llvm.ppc.altivec.vsraw
4374
4375  res_vui = vec_vsraw(vui, vui);
4376// CHECK: @llvm.ppc.altivec.vsraw
4377// CHECK-LE: @llvm.ppc.altivec.vsraw
4378
4379  /* vec_srl */
4380  res_vsc = vec_srl(vsc, vuc);
4381// CHECK: @llvm.ppc.altivec.vsr
4382// CHECK-LE: @llvm.ppc.altivec.vsr
4383
4384  res_vsc = vec_srl(vsc, vus);
4385// CHECK: @llvm.ppc.altivec.vsr
4386// CHECK-LE: @llvm.ppc.altivec.vsr
4387
4388  res_vsc = vec_srl(vsc, vui);
4389// CHECK: @llvm.ppc.altivec.vsr
4390// CHECK-LE: @llvm.ppc.altivec.vsr
4391
4392  res_vuc = vec_srl(vuc, vuc);
4393// CHECK: @llvm.ppc.altivec.vsr
4394// CHECK-LE: @llvm.ppc.altivec.vsr
4395
4396  res_vuc = vec_srl(vuc, vus);
4397// CHECK: @llvm.ppc.altivec.vsr
4398// CHECK-LE: @llvm.ppc.altivec.vsr
4399
4400  res_vuc = vec_srl(vuc, vui);
4401// CHECK: @llvm.ppc.altivec.vsr
4402// CHECK-LE: @llvm.ppc.altivec.vsr
4403
4404  res_vbc = vec_srl(vbc, vuc);
4405// CHECK: @llvm.ppc.altivec.vsr
4406// CHECK-LE: @llvm.ppc.altivec.vsr
4407
4408  res_vbc = vec_srl(vbc, vus);
4409// CHECK: @llvm.ppc.altivec.vsr
4410// CHECK-LE: @llvm.ppc.altivec.vsr
4411
4412  res_vbc = vec_srl(vbc, vui);
4413// CHECK: @llvm.ppc.altivec.vsr
4414// CHECK-LE: @llvm.ppc.altivec.vsr
4415
4416  res_vs  = vec_srl(vs, vuc);
4417// CHECK: @llvm.ppc.altivec.vsr
4418// CHECK-LE: @llvm.ppc.altivec.vsr
4419
4420  res_vs  = vec_srl(vs, vus);
4421// CHECK: @llvm.ppc.altivec.vsr
4422// CHECK-LE: @llvm.ppc.altivec.vsr
4423
4424  res_vs  = vec_srl(vs, vui);
4425// CHECK: @llvm.ppc.altivec.vsr
4426// CHECK-LE: @llvm.ppc.altivec.vsr
4427
4428  res_vus = vec_srl(vus, vuc);
4429// CHECK: @llvm.ppc.altivec.vsr
4430// CHECK-LE: @llvm.ppc.altivec.vsr
4431
4432  res_vus = vec_srl(vus, vus);
4433// CHECK: @llvm.ppc.altivec.vsr
4434// CHECK-LE: @llvm.ppc.altivec.vsr
4435
4436  res_vus = vec_srl(vus, vui);
4437// CHECK: @llvm.ppc.altivec.vsr
4438// CHECK-LE: @llvm.ppc.altivec.vsr
4439
4440  res_vbs = vec_srl(vbs, vuc);
4441// CHECK: @llvm.ppc.altivec.vsr
4442// CHECK-LE: @llvm.ppc.altivec.vsr
4443
4444  res_vbs = vec_srl(vbs, vus);
4445// CHECK: @llvm.ppc.altivec.vsr
4446// CHECK-LE: @llvm.ppc.altivec.vsr
4447
4448  res_vbs = vec_srl(vbs, vui);
4449// CHECK: @llvm.ppc.altivec.vsr
4450// CHECK-LE: @llvm.ppc.altivec.vsr
4451
4452  res_vp  = vec_srl(vp, vuc);
4453// CHECK: @llvm.ppc.altivec.vsr
4454// CHECK-LE: @llvm.ppc.altivec.vsr
4455
4456  res_vp  = vec_srl(vp, vus);
4457// CHECK: @llvm.ppc.altivec.vsr
4458// CHECK-LE: @llvm.ppc.altivec.vsr
4459
4460  res_vp  = vec_srl(vp, vui);
4461// CHECK: @llvm.ppc.altivec.vsr
4462// CHECK-LE: @llvm.ppc.altivec.vsr
4463
4464  res_vi  = vec_srl(vi, vuc);
4465// CHECK: @llvm.ppc.altivec.vsr
4466// CHECK-LE: @llvm.ppc.altivec.vsr
4467
4468  res_vi  = vec_srl(vi, vus);
4469// CHECK: @llvm.ppc.altivec.vsr
4470// CHECK-LE: @llvm.ppc.altivec.vsr
4471
4472  res_vi  = vec_srl(vi, vui);
4473// CHECK: @llvm.ppc.altivec.vsr
4474// CHECK-LE: @llvm.ppc.altivec.vsr
4475
4476  res_vui = vec_srl(vui, vuc);
4477// CHECK: @llvm.ppc.altivec.vsr
4478// CHECK-LE: @llvm.ppc.altivec.vsr
4479
4480  res_vui = vec_srl(vui, vus);
4481// CHECK: @llvm.ppc.altivec.vsr
4482// CHECK-LE: @llvm.ppc.altivec.vsr
4483
4484  res_vui = vec_srl(vui, vui);
4485// CHECK: @llvm.ppc.altivec.vsr
4486// CHECK-LE: @llvm.ppc.altivec.vsr
4487
4488  res_vbi = vec_srl(vbi, vuc);
4489// CHECK: @llvm.ppc.altivec.vsr
4490// CHECK-LE: @llvm.ppc.altivec.vsr
4491
4492  res_vbi = vec_srl(vbi, vus);
4493// CHECK: @llvm.ppc.altivec.vsr
4494// CHECK-LE: @llvm.ppc.altivec.vsr
4495
4496  res_vbi = vec_srl(vbi, vui);
4497// CHECK: @llvm.ppc.altivec.vsr
4498// CHECK-LE: @llvm.ppc.altivec.vsr
4499
4500  res_vsc = vec_vsr(vsc, vuc);
4501// CHECK: @llvm.ppc.altivec.vsr
4502// CHECK-LE: @llvm.ppc.altivec.vsr
4503
4504  res_vsc = vec_vsr(vsc, vus);
4505// CHECK: @llvm.ppc.altivec.vsr
4506// CHECK-LE: @llvm.ppc.altivec.vsr
4507
4508  res_vsc = vec_vsr(vsc, vui);
4509// CHECK: @llvm.ppc.altivec.vsr
4510// CHECK-LE: @llvm.ppc.altivec.vsr
4511
4512  res_vuc = vec_vsr(vuc, vuc);
4513// CHECK: @llvm.ppc.altivec.vsr
4514// CHECK-LE: @llvm.ppc.altivec.vsr
4515
4516  res_vuc = vec_vsr(vuc, vus);
4517// CHECK: @llvm.ppc.altivec.vsr
4518// CHECK-LE: @llvm.ppc.altivec.vsr
4519
4520  res_vuc = vec_vsr(vuc, vui);
4521// CHECK: @llvm.ppc.altivec.vsr
4522// CHECK-LE: @llvm.ppc.altivec.vsr
4523
4524  res_vbc = vec_vsr(vbc, vuc);
4525// CHECK: @llvm.ppc.altivec.vsr
4526// CHECK-LE: @llvm.ppc.altivec.vsr
4527
4528  res_vbc = vec_vsr(vbc, vus);
4529// CHECK: @llvm.ppc.altivec.vsr
4530// CHECK-LE: @llvm.ppc.altivec.vsr
4531
4532  res_vbc = vec_vsr(vbc, vui);
4533// CHECK: @llvm.ppc.altivec.vsr
4534// CHECK-LE: @llvm.ppc.altivec.vsr
4535
4536  res_vs  = vec_vsr(vs, vuc);
4537// CHECK: @llvm.ppc.altivec.vsr
4538// CHECK-LE: @llvm.ppc.altivec.vsr
4539
4540  res_vs  = vec_vsr(vs, vus);
4541// CHECK: @llvm.ppc.altivec.vsr
4542// CHECK-LE: @llvm.ppc.altivec.vsr
4543
4544  res_vs  = vec_vsr(vs, vui);
4545// CHECK: @llvm.ppc.altivec.vsr
4546// CHECK-LE: @llvm.ppc.altivec.vsr
4547
4548  res_vus = vec_vsr(vus, vuc);
4549// CHECK: @llvm.ppc.altivec.vsr
4550// CHECK-LE: @llvm.ppc.altivec.vsr
4551
4552  res_vus = vec_vsr(vus, vus);
4553// CHECK: @llvm.ppc.altivec.vsr
4554// CHECK-LE: @llvm.ppc.altivec.vsr
4555
4556  res_vus = vec_vsr(vus, vui);
4557// CHECK: @llvm.ppc.altivec.vsr
4558// CHECK-LE: @llvm.ppc.altivec.vsr
4559
4560  res_vbs = vec_vsr(vbs, vuc);
4561// CHECK: @llvm.ppc.altivec.vsr
4562// CHECK-LE: @llvm.ppc.altivec.vsr
4563
4564  res_vbs = vec_vsr(vbs, vus);
4565// CHECK: @llvm.ppc.altivec.vsr
4566// CHECK-LE: @llvm.ppc.altivec.vsr
4567
4568  res_vbs = vec_vsr(vbs, vui);
4569// CHECK: @llvm.ppc.altivec.vsr
4570// CHECK-LE: @llvm.ppc.altivec.vsr
4571
4572  res_vp  = vec_vsr(vp, vuc);
4573// CHECK: @llvm.ppc.altivec.vsr
4574// CHECK-LE: @llvm.ppc.altivec.vsr
4575
4576  res_vp  = vec_vsr(vp, vus);
4577// CHECK: @llvm.ppc.altivec.vsr
4578// CHECK-LE: @llvm.ppc.altivec.vsr
4579
4580  res_vp  = vec_vsr(vp, vui);
4581// CHECK: @llvm.ppc.altivec.vsr
4582// CHECK-LE: @llvm.ppc.altivec.vsr
4583
4584  res_vi  = vec_vsr(vi, vuc);
4585// CHECK: @llvm.ppc.altivec.vsr
4586// CHECK-LE: @llvm.ppc.altivec.vsr
4587
4588  res_vi  = vec_vsr(vi, vus);
4589// CHECK: @llvm.ppc.altivec.vsr
4590// CHECK-LE: @llvm.ppc.altivec.vsr
4591
4592  res_vi  = vec_vsr(vi, vui);
4593// CHECK: @llvm.ppc.altivec.vsr
4594// CHECK-LE: @llvm.ppc.altivec.vsr
4595
4596  res_vui = vec_vsr(vui, vuc);
4597// CHECK: @llvm.ppc.altivec.vsr
4598// CHECK-LE: @llvm.ppc.altivec.vsr
4599
4600  res_vui = vec_vsr(vui, vus);
4601// CHECK: @llvm.ppc.altivec.vsr
4602// CHECK-LE: @llvm.ppc.altivec.vsr
4603
4604  res_vui = vec_vsr(vui, vui);
4605// CHECK: @llvm.ppc.altivec.vsr
4606// CHECK-LE: @llvm.ppc.altivec.vsr
4607
4608  res_vbi = vec_vsr(vbi, vuc);
4609// CHECK: @llvm.ppc.altivec.vsr
4610// CHECK-LE: @llvm.ppc.altivec.vsr
4611
4612  res_vbi = vec_vsr(vbi, vus);
4613// CHECK: @llvm.ppc.altivec.vsr
4614// CHECK-LE: @llvm.ppc.altivec.vsr
4615
4616  res_vbi = vec_vsr(vbi, vui);
4617// CHECK: @llvm.ppc.altivec.vsr
4618// CHECK-LE: @llvm.ppc.altivec.vsr
4619
4620  /* vec_sro */
4621  res_vsc = vec_sro(vsc, vsc);
4622// CHECK: @llvm.ppc.altivec.vsro
4623// CHECK-LE: @llvm.ppc.altivec.vsro
4624
4625  res_vsc = vec_sro(vsc, vuc);
4626// CHECK: @llvm.ppc.altivec.vsro
4627// CHECK-LE: @llvm.ppc.altivec.vsro
4628
4629  res_vuc = vec_sro(vuc, vsc);
4630// CHECK: @llvm.ppc.altivec.vsro
4631// CHECK-LE: @llvm.ppc.altivec.vsro
4632
4633  res_vuc = vec_sro(vuc, vuc);
4634// CHECK: @llvm.ppc.altivec.vsro
4635// CHECK-LE: @llvm.ppc.altivec.vsro
4636
4637  res_vs  = vec_sro(vs, vsc);
4638// CHECK: @llvm.ppc.altivec.vsro
4639// CHECK-LE: @llvm.ppc.altivec.vsro
4640
4641  res_vs  = vec_sro(vs, vuc);
4642// CHECK: @llvm.ppc.altivec.vsro
4643// CHECK-LE: @llvm.ppc.altivec.vsro
4644
4645  res_vus = vec_sro(vus, vsc);
4646// CHECK: @llvm.ppc.altivec.vsro
4647// CHECK-LE: @llvm.ppc.altivec.vsro
4648
4649  res_vus = vec_sro(vus, vuc);
4650// CHECK: @llvm.ppc.altivec.vsro
4651// CHECK-LE: @llvm.ppc.altivec.vsro
4652
4653  res_vp  = vec_sro(vp, vsc);
4654// CHECK: @llvm.ppc.altivec.vsro
4655// CHECK-LE: @llvm.ppc.altivec.vsro
4656
4657  res_vp  = vec_sro(vp, vuc);
4658// CHECK: @llvm.ppc.altivec.vsro
4659// CHECK-LE: @llvm.ppc.altivec.vsro
4660
4661  res_vi  = vec_sro(vi, vsc);
4662// CHECK: @llvm.ppc.altivec.vsro
4663// CHECK-LE: @llvm.ppc.altivec.vsro
4664
4665  res_vi  = vec_sro(vi, vuc);
4666// CHECK: @llvm.ppc.altivec.vsro
4667// CHECK-LE: @llvm.ppc.altivec.vsro
4668
4669  res_vui = vec_sro(vui, vsc);
4670// CHECK: @llvm.ppc.altivec.vsro
4671// CHECK-LE: @llvm.ppc.altivec.vsro
4672
4673  res_vui = vec_sro(vui, vuc);
4674// CHECK: @llvm.ppc.altivec.vsro
4675// CHECK-LE: @llvm.ppc.altivec.vsro
4676
4677  res_vf  = vec_sro(vf, vsc);
4678// CHECK: @llvm.ppc.altivec.vsro
4679// CHECK-LE: @llvm.ppc.altivec.vsro
4680
4681  res_vf  = vec_sro(vf, vuc);
4682// CHECK: @llvm.ppc.altivec.vsro
4683// CHECK-LE: @llvm.ppc.altivec.vsro
4684
4685  res_vsc = vec_vsro(vsc, vsc);
4686// CHECK: @llvm.ppc.altivec.vsro
4687// CHECK-LE: @llvm.ppc.altivec.vsro
4688
4689  res_vsc = vec_vsro(vsc, vuc);
4690// CHECK: @llvm.ppc.altivec.vsro
4691// CHECK-LE: @llvm.ppc.altivec.vsro
4692
4693  res_vuc = vec_vsro(vuc, vsc);
4694// CHECK: @llvm.ppc.altivec.vsro
4695// CHECK-LE: @llvm.ppc.altivec.vsro
4696
4697  res_vuc = vec_vsro(vuc, vuc);
4698// CHECK: @llvm.ppc.altivec.vsro
4699// CHECK-LE: @llvm.ppc.altivec.vsro
4700
4701  res_vs  = vec_vsro(vs, vsc);
4702// CHECK: @llvm.ppc.altivec.vsro
4703// CHECK-LE: @llvm.ppc.altivec.vsro
4704
4705  res_vs  = vec_vsro(vs, vuc);
4706// CHECK: @llvm.ppc.altivec.vsro
4707// CHECK-LE: @llvm.ppc.altivec.vsro
4708
4709  res_vus = vec_vsro(vus, vsc);
4710// CHECK: @llvm.ppc.altivec.vsro
4711// CHECK-LE: @llvm.ppc.altivec.vsro
4712
4713  res_vus = vec_vsro(vus, vuc);
4714// CHECK: @llvm.ppc.altivec.vsro
4715// CHECK-LE: @llvm.ppc.altivec.vsro
4716
4717  res_vp  = vec_vsro(vp, vsc);
4718// CHECK: @llvm.ppc.altivec.vsro
4719// CHECK-LE: @llvm.ppc.altivec.vsro
4720
4721  res_vp  = vec_vsro(vp, vuc);
4722// CHECK: @llvm.ppc.altivec.vsro
4723// CHECK-LE: @llvm.ppc.altivec.vsro
4724
4725  res_vi  = vec_vsro(vi, vsc);
4726// CHECK: @llvm.ppc.altivec.vsro
4727// CHECK-LE: @llvm.ppc.altivec.vsro
4728
4729  res_vi  = vec_vsro(vi, vuc);
4730// CHECK: @llvm.ppc.altivec.vsro
4731// CHECK-LE: @llvm.ppc.altivec.vsro
4732
4733  res_vui = vec_vsro(vui, vsc);
4734// CHECK: @llvm.ppc.altivec.vsro
4735// CHECK-LE: @llvm.ppc.altivec.vsro
4736
4737  res_vui = vec_vsro(vui, vuc);
4738// CHECK: @llvm.ppc.altivec.vsro
4739// CHECK-LE: @llvm.ppc.altivec.vsro
4740
4741  res_vf  = vec_vsro(vf, vsc);
4742// CHECK: @llvm.ppc.altivec.vsro
4743// CHECK-LE: @llvm.ppc.altivec.vsro
4744
4745  res_vf  = vec_vsro(vf, vuc);
4746// CHECK: @llvm.ppc.altivec.vsro
4747// CHECK-LE: @llvm.ppc.altivec.vsro
4748
4749  /* vec_st */
4750  vec_st(vsc, 0, &vsc);
4751// CHECK: @llvm.ppc.altivec.stvx
4752// CHECK-LE: @llvm.ppc.altivec.stvx
4753
4754  vec_st(vsc, 0, &param_sc);
4755// CHECK: @llvm.ppc.altivec.stvx
4756// CHECK-LE: @llvm.ppc.altivec.stvx
4757
4758  vec_st(vuc, 0, &vuc);
4759// CHECK: @llvm.ppc.altivec.stvx
4760// CHECK-LE: @llvm.ppc.altivec.stvx
4761
4762  vec_st(vuc, 0, &param_uc);
4763// CHECK: @llvm.ppc.altivec.stvx
4764// CHECK-LE: @llvm.ppc.altivec.stvx
4765
4766  vec_st(vbc, 0, &param_uc);
4767// CHECK: @llvm.ppc.altivec.stvx
4768// CHECK-LE: @llvm.ppc.altivec.stvx
4769
4770  vec_st(vbc, 0, &param_uc);
4771// CHECK: @llvm.ppc.altivec.stvx
4772// CHECK-LE: @llvm.ppc.altivec.stvx
4773
4774  vec_st(vbc, 0, &vbc);
4775// CHECK: @llvm.ppc.altivec.stvx
4776// CHECK-LE: @llvm.ppc.altivec.stvx
4777
4778  vec_st(vs, 0, &vs);
4779// CHECK: @llvm.ppc.altivec.stvx
4780// CHECK-LE: @llvm.ppc.altivec.stvx
4781
4782  vec_st(vs, 0, &param_s);
4783// CHECK: @llvm.ppc.altivec.stvx
4784// CHECK-LE: @llvm.ppc.altivec.stvx
4785
4786  vec_st(vus, 0, &vus);
4787// CHECK: @llvm.ppc.altivec.stvx
4788// CHECK-LE: @llvm.ppc.altivec.stvx
4789
4790  vec_st(vus, 0, &param_us);
4791// CHECK: @llvm.ppc.altivec.stvx
4792// CHECK-LE: @llvm.ppc.altivec.stvx
4793
4794  vec_st(vbs, 0, &param_s);
4795// CHECK: @llvm.ppc.altivec.stvx
4796// CHECK-LE: @llvm.ppc.altivec.stvx
4797
4798  vec_st(vbs, 0, &param_us);
4799// CHECK: @llvm.ppc.altivec.stvx
4800// CHECK-LE: @llvm.ppc.altivec.stvx
4801
4802  vec_st(vbs, 0, &vbs);
4803// CHECK: @llvm.ppc.altivec.stvx
4804// CHECK-LE: @llvm.ppc.altivec.stvx
4805
4806  vec_st(vp, 0, &param_s);
4807// CHECK: @llvm.ppc.altivec.stvx
4808// CHECK-LE: @llvm.ppc.altivec.stvx
4809
4810  vec_st(vp, 0, &param_us);
4811// CHECK: @llvm.ppc.altivec.stvx
4812// CHECK-LE: @llvm.ppc.altivec.stvx
4813
4814  vec_st(vp, 0, &vp);
4815// CHECK: @llvm.ppc.altivec.stvx
4816// CHECK-LE: @llvm.ppc.altivec.stvx
4817
4818  vec_st(vi, 0, &vi);
4819// CHECK: @llvm.ppc.altivec.stvx
4820// CHECK-LE: @llvm.ppc.altivec.stvx
4821
4822  vec_st(vi, 0, &param_i);
4823// CHECK: @llvm.ppc.altivec.stvx
4824// CHECK-LE: @llvm.ppc.altivec.stvx
4825
4826  vec_st(vui, 0, &vui);
4827// CHECK: @llvm.ppc.altivec.stvx
4828// CHECK-LE: @llvm.ppc.altivec.stvx
4829
4830  vec_st(vui, 0, &param_ui);
4831// CHECK: @llvm.ppc.altivec.stvx
4832// CHECK-LE: @llvm.ppc.altivec.stvx
4833
4834  vec_st(vbi, 0, &param_i);
4835// CHECK: @llvm.ppc.altivec.stvx
4836// CHECK-LE: @llvm.ppc.altivec.stvx
4837
4838  vec_st(vbi, 0, &param_ui);
4839// CHECK: @llvm.ppc.altivec.stvx
4840// CHECK-LE: @llvm.ppc.altivec.stvx
4841
4842  vec_st(vbi, 0, &vbi);
4843// CHECK: @llvm.ppc.altivec.stvx
4844// CHECK-LE: @llvm.ppc.altivec.stvx
4845
4846  vec_st(vf, 0, &vf);
4847// CHECK: @llvm.ppc.altivec.stvx
4848// CHECK-LE: @llvm.ppc.altivec.stvx
4849
4850  vec_st(vf, 0, &param_f);
4851// CHECK: @llvm.ppc.altivec.stvx
4852// CHECK-LE: @llvm.ppc.altivec.stvx
4853
4854  vec_stvx(vsc, 0, &vsc);
4855// CHECK: @llvm.ppc.altivec.stvx
4856// CHECK-LE: @llvm.ppc.altivec.stvx
4857
4858  vec_stvx(vsc, 0, &param_sc);
4859// CHECK: @llvm.ppc.altivec.stvx
4860// CHECK-LE: @llvm.ppc.altivec.stvx
4861
4862  vec_stvx(vuc, 0, &vuc);
4863// CHECK: @llvm.ppc.altivec.stvx
4864// CHECK-LE: @llvm.ppc.altivec.stvx
4865
4866  vec_stvx(vuc, 0, &param_uc);
4867// CHECK: @llvm.ppc.altivec.stvx
4868// CHECK-LE: @llvm.ppc.altivec.stvx
4869
4870  vec_stvx(vbc, 0, &param_uc);
4871// CHECK: @llvm.ppc.altivec.stvx
4872// CHECK-LE: @llvm.ppc.altivec.stvx
4873
4874  vec_stvx(vbc, 0, &param_uc);
4875// CHECK: @llvm.ppc.altivec.stvx
4876// CHECK-LE: @llvm.ppc.altivec.stvx
4877
4878  vec_stvx(vbc, 0, &vbc);
4879// CHECK: @llvm.ppc.altivec.stvx
4880// CHECK-LE: @llvm.ppc.altivec.stvx
4881
4882  vec_stvx(vs, 0, &vs);
4883// CHECK: @llvm.ppc.altivec.stvx
4884// CHECK-LE: @llvm.ppc.altivec.stvx
4885
4886  vec_stvx(vs, 0, &param_s);
4887// CHECK: @llvm.ppc.altivec.stvx
4888// CHECK-LE: @llvm.ppc.altivec.stvx
4889
4890  vec_stvx(vus, 0, &vus);
4891// CHECK: @llvm.ppc.altivec.stvx
4892// CHECK-LE: @llvm.ppc.altivec.stvx
4893
4894  vec_stvx(vus, 0, &param_us);
4895// CHECK: @llvm.ppc.altivec.stvx
4896// CHECK-LE: @llvm.ppc.altivec.stvx
4897
4898  vec_stvx(vbs, 0, &param_s);
4899// CHECK: @llvm.ppc.altivec.stvx
4900// CHECK-LE: @llvm.ppc.altivec.stvx
4901
4902  vec_stvx(vbs, 0, &param_us);
4903// CHECK: @llvm.ppc.altivec.stvx
4904// CHECK-LE: @llvm.ppc.altivec.stvx
4905
4906  vec_stvx(vbs, 0, &vbs);
4907// CHECK: @llvm.ppc.altivec.stvx
4908// CHECK-LE: @llvm.ppc.altivec.stvx
4909
4910  vec_stvx(vp, 0, &param_s);
4911// CHECK: @llvm.ppc.altivec.stvx
4912// CHECK-LE: @llvm.ppc.altivec.stvx
4913
4914  vec_stvx(vp, 0, &param_us);
4915// CHECK: @llvm.ppc.altivec.stvx
4916// CHECK-LE: @llvm.ppc.altivec.stvx
4917
4918  vec_stvx(vp, 0, &vp);
4919// CHECK: @llvm.ppc.altivec.stvx
4920// CHECK-LE: @llvm.ppc.altivec.stvx
4921
4922  vec_stvx(vi, 0, &vi);
4923// CHECK: @llvm.ppc.altivec.stvx
4924// CHECK-LE: @llvm.ppc.altivec.stvx
4925
4926  vec_stvx(vi, 0, &param_i);
4927// CHECK: @llvm.ppc.altivec.stvx
4928// CHECK-LE: @llvm.ppc.altivec.stvx
4929
4930  vec_stvx(vui, 0, &vui);
4931// CHECK: @llvm.ppc.altivec.stvx
4932// CHECK-LE: @llvm.ppc.altivec.stvx
4933
4934  vec_stvx(vui, 0, &param_ui);
4935// CHECK: @llvm.ppc.altivec.stvx
4936// CHECK-LE: @llvm.ppc.altivec.stvx
4937
4938  vec_stvx(vbi, 0, &param_i);
4939// CHECK: @llvm.ppc.altivec.stvx
4940// CHECK-LE: @llvm.ppc.altivec.stvx
4941
4942  vec_stvx(vbi, 0, &param_ui);
4943// CHECK: @llvm.ppc.altivec.stvx
4944// CHECK-LE: @llvm.ppc.altivec.stvx
4945
4946  vec_stvx(vbi, 0, &vbi);
4947// CHECK: @llvm.ppc.altivec.stvx
4948// CHECK-LE: @llvm.ppc.altivec.stvx
4949
4950  vec_stvx(vf, 0, &vf);
4951// CHECK: @llvm.ppc.altivec.stvx
4952// CHECK-LE: @llvm.ppc.altivec.stvx
4953
4954  vec_stvx(vf, 0, &param_f);
4955// CHECK: @llvm.ppc.altivec.stvx
4956// CHECK-LE: @llvm.ppc.altivec.stvx
4957
4958  /* vec_ste */
4959  vec_ste(vsc, 0, &param_sc);
4960// CHECK: @llvm.ppc.altivec.stvebx
4961// CHECK-LE: @llvm.ppc.altivec.stvebx
4962
4963  vec_ste(vuc, 0, &param_uc);
4964// CHECK: @llvm.ppc.altivec.stvebx
4965// CHECK-LE: @llvm.ppc.altivec.stvebx
4966
4967  vec_ste(vbc, 0, &param_sc);
4968// CHECK: @llvm.ppc.altivec.stvebx
4969// CHECK-LE: @llvm.ppc.altivec.stvebx
4970
4971  vec_ste(vbc, 0, &param_uc);
4972// CHECK: @llvm.ppc.altivec.stvebx
4973// CHECK-LE: @llvm.ppc.altivec.stvebx
4974
4975  vec_ste(vs, 0, &param_s);
4976// CHECK: @llvm.ppc.altivec.stvehx
4977// CHECK-LE: @llvm.ppc.altivec.stvehx
4978
4979  vec_ste(vus, 0, &param_us);
4980// CHECK: @llvm.ppc.altivec.stvehx
4981// CHECK-LE: @llvm.ppc.altivec.stvehx
4982
4983  vec_ste(vbs, 0, &param_s);
4984// CHECK: @llvm.ppc.altivec.stvehx
4985// CHECK-LE: @llvm.ppc.altivec.stvehx
4986
4987  vec_ste(vbs, 0, &param_us);
4988// CHECK: @llvm.ppc.altivec.stvehx
4989// CHECK-LE: @llvm.ppc.altivec.stvehx
4990
4991  vec_ste(vp, 0, &param_s);
4992// CHECK: @llvm.ppc.altivec.stvehx
4993// CHECK-LE: @llvm.ppc.altivec.stvehx
4994
4995  vec_ste(vp, 0, &param_us);
4996// CHECK: @llvm.ppc.altivec.stvehx
4997// CHECK-LE: @llvm.ppc.altivec.stvehx
4998
4999  vec_ste(vi, 0, &param_i);
5000// CHECK: @llvm.ppc.altivec.stvewx
5001// CHECK-LE: @llvm.ppc.altivec.stvewx
5002
5003  vec_ste(vui, 0, &param_ui);
5004// CHECK: @llvm.ppc.altivec.stvewx
5005// CHECK-LE: @llvm.ppc.altivec.stvewx
5006
5007  vec_ste(vbi, 0, &param_i);
5008// CHECK: @llvm.ppc.altivec.stvewx
5009// CHECK-LE: @llvm.ppc.altivec.stvewx
5010
5011  vec_ste(vbi, 0, &param_ui);
5012// CHECK: @llvm.ppc.altivec.stvewx
5013// CHECK-LE: @llvm.ppc.altivec.stvewx
5014
5015  vec_ste(vf, 0, &param_f);
5016// CHECK: @llvm.ppc.altivec.stvewx
5017// CHECK-LE: @llvm.ppc.altivec.stvewx
5018
5019  vec_stvebx(vsc, 0, &param_sc);
5020// CHECK: @llvm.ppc.altivec.stvebx
5021// CHECK-LE: @llvm.ppc.altivec.stvebx
5022
5023  vec_stvebx(vuc, 0, &param_uc);
5024// CHECK: @llvm.ppc.altivec.stvebx
5025// CHECK-LE: @llvm.ppc.altivec.stvebx
5026
5027  vec_stvebx(vbc, 0, &param_sc);
5028// CHECK: @llvm.ppc.altivec.stvebx
5029// CHECK-LE: @llvm.ppc.altivec.stvebx
5030
5031  vec_stvebx(vbc, 0, &param_uc);
5032// CHECK: @llvm.ppc.altivec.stvebx
5033// CHECK-LE: @llvm.ppc.altivec.stvebx
5034
5035  vec_stvehx(vs, 0, &param_s);
5036// CHECK: @llvm.ppc.altivec.stvehx
5037// CHECK-LE: @llvm.ppc.altivec.stvehx
5038
5039  vec_stvehx(vus, 0, &param_us);
5040// CHECK: @llvm.ppc.altivec.stvehx
5041// CHECK-LE: @llvm.ppc.altivec.stvehx
5042
5043  vec_stvehx(vbs, 0, &param_s);
5044// CHECK: @llvm.ppc.altivec.stvehx
5045// CHECK-LE: @llvm.ppc.altivec.stvehx
5046
5047  vec_stvehx(vbs, 0, &param_us);
5048// CHECK: @llvm.ppc.altivec.stvehx
5049// CHECK-LE: @llvm.ppc.altivec.stvehx
5050
5051  vec_stvehx(vp, 0, &param_s);
5052// CHECK: @llvm.ppc.altivec.stvehx
5053// CHECK-LE: @llvm.ppc.altivec.stvehx
5054
5055  vec_stvehx(vp, 0, &param_us);
5056// CHECK: @llvm.ppc.altivec.stvehx
5057// CHECK-LE: @llvm.ppc.altivec.stvehx
5058
5059  vec_stvewx(vi, 0, &param_i);
5060// CHECK: @llvm.ppc.altivec.stvewx
5061// CHECK-LE: @llvm.ppc.altivec.stvewx
5062
5063  vec_stvewx(vui, 0, &param_ui);
5064// CHECK: @llvm.ppc.altivec.stvewx
5065// CHECK-LE: @llvm.ppc.altivec.stvewx
5066
5067  vec_stvewx(vbi, 0, &param_i);
5068// CHECK: @llvm.ppc.altivec.stvewx
5069// CHECK-LE: @llvm.ppc.altivec.stvewx
5070
5071  vec_stvewx(vbi, 0, &param_ui);
5072// CHECK: @llvm.ppc.altivec.stvewx
5073// CHECK-LE: @llvm.ppc.altivec.stvewx
5074
5075  vec_stvewx(vf, 0, &param_f);
5076// CHECK: @llvm.ppc.altivec.stvewx
5077// CHECK-LE: @llvm.ppc.altivec.stvewx
5078
5079  /* vec_stl */
5080  vec_stl(vsc, 0, &vsc);
5081// CHECK: @llvm.ppc.altivec.stvxl
5082// CHECK-LE: @llvm.ppc.altivec.stvxl
5083
5084  vec_stl(vsc, 0, &param_sc);
5085// CHECK: @llvm.ppc.altivec.stvxl
5086// CHECK-LE: @llvm.ppc.altivec.stvxl
5087
5088  vec_stl(vuc, 0, &vuc);
5089// CHECK: @llvm.ppc.altivec.stvxl
5090// CHECK-LE: @llvm.ppc.altivec.stvxl
5091
5092  vec_stl(vuc, 0, &param_uc);
5093// CHECK: @llvm.ppc.altivec.stvxl
5094// CHECK-LE: @llvm.ppc.altivec.stvxl
5095
5096  vec_stl(vbc, 0, &param_sc);
5097// CHECK: @llvm.ppc.altivec.stvxl
5098// CHECK-LE: @llvm.ppc.altivec.stvxl
5099
5100  vec_stl(vbc, 0, &param_uc);
5101// CHECK: @llvm.ppc.altivec.stvxl
5102// CHECK-LE: @llvm.ppc.altivec.stvxl
5103
5104  vec_stl(vbc, 0, &vbc);
5105// CHECK: @llvm.ppc.altivec.stvxl
5106// CHECK-LE: @llvm.ppc.altivec.stvxl
5107
5108  vec_stl(vs, 0, &vs);
5109// CHECK: @llvm.ppc.altivec.stvxl
5110// CHECK-LE: @llvm.ppc.altivec.stvxl
5111
5112  vec_stl(vs, 0, &param_s);
5113// CHECK: @llvm.ppc.altivec.stvxl
5114// CHECK-LE: @llvm.ppc.altivec.stvxl
5115
5116  vec_stl(vus, 0, &vus);
5117// CHECK: @llvm.ppc.altivec.stvxl
5118// CHECK-LE: @llvm.ppc.altivec.stvxl
5119
5120  vec_stl(vus, 0, &param_us);
5121// CHECK: @llvm.ppc.altivec.stvxl
5122// CHECK-LE: @llvm.ppc.altivec.stvxl
5123
5124  vec_stl(vbs, 0, &param_s);
5125// CHECK: @llvm.ppc.altivec.stvxl
5126// CHECK-LE: @llvm.ppc.altivec.stvxl
5127
5128  vec_stl(vbs, 0, &param_us);
5129// CHECK: @llvm.ppc.altivec.stvxl
5130// CHECK-LE: @llvm.ppc.altivec.stvxl
5131
5132  vec_stl(vbs, 0, &vbs);
5133// CHECK: @llvm.ppc.altivec.stvxl
5134// CHECK-LE: @llvm.ppc.altivec.stvxl
5135
5136  vec_stl(vp, 0, &param_s);
5137// CHECK: @llvm.ppc.altivec.stvxl
5138// CHECK-LE: @llvm.ppc.altivec.stvxl
5139
5140  vec_stl(vp, 0, &param_us);
5141// CHECK: @llvm.ppc.altivec.stvxl
5142// CHECK-LE: @llvm.ppc.altivec.stvxl
5143
5144  vec_stl(vp, 0, &vp);
5145// CHECK: @llvm.ppc.altivec.stvxl
5146// CHECK-LE: @llvm.ppc.altivec.stvxl
5147
5148  vec_stl(vi, 0, &vi);
5149// CHECK: @llvm.ppc.altivec.stvxl
5150// CHECK-LE: @llvm.ppc.altivec.stvxl
5151
5152  vec_stl(vi, 0, &param_i);
5153// CHECK: @llvm.ppc.altivec.stvxl
5154// CHECK-LE: @llvm.ppc.altivec.stvxl
5155
5156  vec_stl(vui, 0, &vui);
5157// CHECK: @llvm.ppc.altivec.stvxl
5158// CHECK-LE: @llvm.ppc.altivec.stvxl
5159
5160  vec_stl(vui, 0, &param_ui);
5161// CHECK: @llvm.ppc.altivec.stvxl
5162// CHECK-LE: @llvm.ppc.altivec.stvxl
5163
5164  vec_stl(vbi, 0, &param_i);
5165// CHECK: @llvm.ppc.altivec.stvxl
5166// CHECK-LE: @llvm.ppc.altivec.stvxl
5167
5168  vec_stl(vbi, 0, &param_ui);
5169// CHECK: @llvm.ppc.altivec.stvxl
5170// CHECK-LE: @llvm.ppc.altivec.stvxl
5171
5172  vec_stl(vbi, 0, &vbi);
5173// CHECK: @llvm.ppc.altivec.stvxl
5174// CHECK-LE: @llvm.ppc.altivec.stvxl
5175
5176  vec_stl(vf, 0, &vf);
5177// CHECK: @llvm.ppc.altivec.stvxl
5178// CHECK-LE: @llvm.ppc.altivec.stvxl
5179
5180  vec_stl(vf, 0, &param_f);
5181// CHECK: @llvm.ppc.altivec.stvxl
5182// CHECK-LE: @llvm.ppc.altivec.stvxl
5183
5184  vec_stvxl(vsc, 0, &vsc);
5185// CHECK: @llvm.ppc.altivec.stvxl
5186// CHECK-LE: @llvm.ppc.altivec.stvxl
5187
5188  vec_stvxl(vsc, 0, &param_sc);
5189// CHECK: @llvm.ppc.altivec.stvxl
5190// CHECK-LE: @llvm.ppc.altivec.stvxl
5191
5192  vec_stvxl(vuc, 0, &vuc);
5193// CHECK: @llvm.ppc.altivec.stvxl
5194// CHECK-LE: @llvm.ppc.altivec.stvxl
5195
5196  vec_stvxl(vuc, 0, &param_uc);
5197// CHECK: @llvm.ppc.altivec.stvxl
5198// CHECK-LE: @llvm.ppc.altivec.stvxl
5199
5200  vec_stvxl(vbc, 0, &param_sc);
5201// CHECK: @llvm.ppc.altivec.stvxl
5202// CHECK-LE: @llvm.ppc.altivec.stvxl
5203
5204  vec_stvxl(vbc, 0, &param_uc);
5205// CHECK: @llvm.ppc.altivec.stvxl
5206// CHECK-LE: @llvm.ppc.altivec.stvxl
5207
5208  vec_stvxl(vbc, 0, &vbc);
5209// CHECK: @llvm.ppc.altivec.stvxl
5210// CHECK-LE: @llvm.ppc.altivec.stvxl
5211
5212  vec_stvxl(vs, 0, &vs);
5213// CHECK: @llvm.ppc.altivec.stvxl
5214// CHECK-LE: @llvm.ppc.altivec.stvxl
5215
5216  vec_stvxl(vs, 0, &param_s);
5217// CHECK: @llvm.ppc.altivec.stvxl
5218// CHECK-LE: @llvm.ppc.altivec.stvxl
5219
5220  vec_stvxl(vus, 0, &vus);
5221// CHECK: @llvm.ppc.altivec.stvxl
5222// CHECK-LE: @llvm.ppc.altivec.stvxl
5223
5224  vec_stvxl(vus, 0, &param_us);
5225// CHECK: @llvm.ppc.altivec.stvxl
5226// CHECK-LE: @llvm.ppc.altivec.stvxl
5227
5228  vec_stvxl(vbs, 0, &param_s);
5229// CHECK: @llvm.ppc.altivec.stvxl
5230// CHECK-LE: @llvm.ppc.altivec.stvxl
5231
5232  vec_stvxl(vbs, 0, &param_us);
5233// CHECK: @llvm.ppc.altivec.stvxl
5234// CHECK-LE: @llvm.ppc.altivec.stvxl
5235
5236  vec_stvxl(vbs, 0, &vbs);
5237// CHECK: @llvm.ppc.altivec.stvxl
5238// CHECK-LE: @llvm.ppc.altivec.stvxl
5239
5240  vec_stvxl(vp, 0, &param_s);
5241// CHECK: @llvm.ppc.altivec.stvxl
5242// CHECK-LE: @llvm.ppc.altivec.stvxl
5243
5244  vec_stvxl(vp, 0, &param_us);
5245// CHECK: @llvm.ppc.altivec.stvxl
5246// CHECK-LE: @llvm.ppc.altivec.stvxl
5247
5248  vec_stvxl(vp, 0, &vp);
5249// CHECK: @llvm.ppc.altivec.stvxl
5250// CHECK-LE: @llvm.ppc.altivec.stvxl
5251
5252  vec_stvxl(vi, 0, &vi);
5253// CHECK: @llvm.ppc.altivec.stvxl
5254// CHECK-LE: @llvm.ppc.altivec.stvxl
5255
5256  vec_stvxl(vi, 0, &param_i);
5257// CHECK: @llvm.ppc.altivec.stvxl
5258// CHECK-LE: @llvm.ppc.altivec.stvxl
5259
5260  vec_stvxl(vui, 0, &vui);
5261// CHECK: @llvm.ppc.altivec.stvxl
5262// CHECK-LE: @llvm.ppc.altivec.stvxl
5263
5264  vec_stvxl(vui, 0, &param_ui);
5265// CHECK: @llvm.ppc.altivec.stvxl
5266// CHECK-LE: @llvm.ppc.altivec.stvxl
5267
5268  vec_stvxl(vbi, 0, &param_i);
5269// CHECK: @llvm.ppc.altivec.stvxl
5270// CHECK-LE: @llvm.ppc.altivec.stvxl
5271
5272  vec_stvxl(vbi, 0, &param_ui);
5273// CHECK: @llvm.ppc.altivec.stvxl
5274// CHECK-LE: @llvm.ppc.altivec.stvxl
5275
5276  vec_stvxl(vbi, 0, &vbi);
5277// CHECK: @llvm.ppc.altivec.stvxl
5278// CHECK-LE: @llvm.ppc.altivec.stvxl
5279
5280  vec_stvxl(vf, 0, &vf);
5281// CHECK: @llvm.ppc.altivec.stvxl
5282// CHECK-LE: @llvm.ppc.altivec.stvxl
5283
5284  vec_stvxl(vf, 0, &param_f);
5285// CHECK: @llvm.ppc.altivec.stvxl
5286// CHECK-LE: @llvm.ppc.altivec.stvxl
5287
5288  /* vec_sub */
5289  res_vsc = vec_sub(vsc, vsc);
5290// CHECK: sub <16 x i8>
5291// CHECK-LE: sub <16 x i8>
5292
5293  res_vsc = vec_sub(vbc, vsc);
5294// CHECK: sub <16 x i8>
5295// CHECK-LE: sub <16 x i8>
5296
5297  res_vsc = vec_sub(vsc, vbc);
5298// CHECK: sub <16 x i8>
5299// CHECK-LE: sub <16 x i8>
5300
5301  res_vuc = vec_sub(vuc, vuc);
5302// CHECK: sub <16 x i8>
5303// CHECK-LE: sub <16 x i8>
5304
5305  res_vuc = vec_sub(vbc, vuc);
5306// CHECK: sub <16 x i8>
5307// CHECK-LE: sub <16 x i8>
5308
5309  res_vuc = vec_sub(vuc, vbc);
5310// CHECK: sub <16 x i8>
5311// CHECK-LE: sub <16 x i8>
5312
5313  res_vs  = vec_sub(vs, vs);
5314// CHECK: sub <8 x i16>
5315// CHECK-LE: sub <8 x i16>
5316
5317  res_vs  = vec_sub(vbs, vs);
5318// CHECK: sub <8 x i16>
5319// CHECK-LE: sub <8 x i16>
5320
5321  res_vs  = vec_sub(vs, vbs);
5322// CHECK: sub <8 x i16>
5323// CHECK-LE: sub <8 x i16>
5324
5325  res_vus = vec_sub(vus, vus);
5326// CHECK: sub <8 x i16>
5327// CHECK-LE: sub <8 x i16>
5328
5329  res_vus = vec_sub(vbs, vus);
5330// CHECK: sub <8 x i16>
5331// CHECK-LE: sub <8 x i16>
5332
5333  res_vus = vec_sub(vus, vbs);
5334// CHECK: sub <8 x i16>
5335// CHECK-LE: sub <8 x i16>
5336
5337  res_vi  = vec_sub(vi, vi);
5338// CHECK: sub <4 x i32>
5339// CHECK-LE: sub <4 x i32>
5340
5341  res_vi  = vec_sub(vbi, vi);
5342// CHECK: sub <4 x i32>
5343// CHECK-LE: sub <4 x i32>
5344
5345  res_vi  = vec_sub(vi, vbi);
5346// CHECK: sub <4 x i32>
5347// CHECK-LE: sub <4 x i32>
5348
5349  res_vui = vec_sub(vui, vui);
5350// CHECK: sub <4 x i32>
5351// CHECK-LE: sub <4 x i32>
5352
5353  res_vui = vec_sub(vbi, vui);
5354// CHECK: sub <4 x i32>
5355// CHECK-LE: sub <4 x i32>
5356
5357  res_vui = vec_sub(vui, vbi);
5358// CHECK: sub <4 x i32>
5359// CHECK-LE: sub <4 x i32>
5360
5361  res_vf  = vec_sub(vf, vf);
5362// CHECK: fsub <4 x float>
5363// CHECK-LE: fsub <4 x float>
5364
5365  
5366
5367  res_vsc = vec_vsububm(vsc, vsc);
5368// CHECK: sub <16 x i8>
5369// CHECK-LE: sub <16 x i8>
5370
5371  res_vsc = vec_vsububm(vbc, vsc);
5372// CHECK: sub <16 x i8>
5373// CHECK-LE: sub <16 x i8>
5374
5375  res_vsc = vec_vsububm(vsc, vbc);
5376// CHECK: sub <16 x i8>
5377// CHECK-LE: sub <16 x i8>
5378
5379  res_vuc = vec_vsububm(vuc, vuc);
5380// CHECK: sub <16 x i8>
5381// CHECK-LE: sub <16 x i8>
5382
5383  res_vuc = vec_vsububm(vbc, vuc);
5384// CHECK: sub <16 x i8>
5385// CHECK-LE: sub <16 x i8>
5386
5387  res_vuc = vec_vsububm(vuc, vbc);
5388// CHECK: sub <16 x i8>
5389// CHECK-LE: sub <16 x i8>
5390
5391  res_vs  = vec_vsubuhm(vs, vs);
5392// CHECK: sub <8 x i16>
5393// CHECK-LE: sub <8 x i16>
5394
5395  res_vs  = vec_vsubuhm(vbs, vus);
5396// CHECK: sub <8 x i16>
5397// CHECK-LE: sub <8 x i16>
5398
5399  res_vs  = vec_vsubuhm(vus, vbs);
5400// CHECK: sub <8 x i16>
5401// CHECK-LE: sub <8 x i16>
5402
5403  res_vus = vec_vsubuhm(vus, vus);
5404// CHECK: sub <8 x i16>
5405// CHECK-LE: sub <8 x i16>
5406
5407  res_vus = vec_vsubuhm(vbs, vus);
5408// CHECK: sub <8 x i16>
5409// CHECK-LE: sub <8 x i16>
5410
5411  res_vus = vec_vsubuhm(vus, vbs);
5412// CHECK: sub <8 x i16>
5413// CHECK-LE: sub <8 x i16>
5414
5415  res_vi  = vec_vsubuwm(vi, vi);
5416// CHECK: sub <4 x i32>
5417// CHECK-LE: sub <4 x i32>
5418
5419  res_vi  = vec_vsubuwm(vbi, vi);
5420// CHECK: sub <4 x i32>
5421// CHECK-LE: sub <4 x i32>
5422
5423  res_vi  = vec_vsubuwm(vi, vbi);
5424// CHECK: sub <4 x i32>
5425// CHECK-LE: sub <4 x i32>
5426
5427  res_vui = vec_vsubuwm(vui, vui);
5428// CHECK: sub <4 x i32>
5429// CHECK-LE: sub <4 x i32>
5430
5431  res_vui = vec_vsubuwm(vbi, vui);
5432// CHECK: sub <4 x i32>
5433// CHECK-LE: sub <4 x i32>
5434
5435  res_vui = vec_vsubuwm(vui, vbi);
5436// CHECK: sub <4 x i32>
5437// CHECK-LE: sub <4 x i32>
5438
5439  res_vf  = vec_vsubfp(vf, vf);
5440// CHECK: fsub <4 x float>
5441// CHECK-LE: fsub <4 x float>
5442
5443  /* vec_subc */
5444  res_vui = vec_subc(vui, vui);
5445// CHECK: @llvm.ppc.altivec.vsubcuw
5446// CHECK-LE: @llvm.ppc.altivec.vsubcuw
5447
5448  res_vi = vec_subc(vi, vi);
5449// CHECK: @llvm.ppc.altivec.vsubcuw
5450// CHECK-LE: @llvm.ppc.altivec.vsubcuw
5451
5452  res_vui = vec_vsubcuw(vui, vui);
5453// CHECK: @llvm.ppc.altivec.vsubcuw
5454// CHECK-LE: @llvm.ppc.altivec.vsubcuw
5455
5456  /* vec_subs */
5457  res_vsc = vec_subs(vsc, vsc);
5458// CHECK: @llvm.ppc.altivec.vsubsbs
5459// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5460
5461  res_vsc = vec_subs(vbc, vsc);
5462// CHECK: @llvm.ppc.altivec.vsubsbs
5463// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5464
5465  res_vsc = vec_subs(vsc, vbc);
5466// CHECK: @llvm.ppc.altivec.vsubsbs
5467// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5468
5469  res_vuc = vec_subs(vuc, vuc);
5470// CHECK: @llvm.ppc.altivec.vsububs
5471// CHECK-LE: @llvm.ppc.altivec.vsububs
5472
5473  res_vuc = vec_subs(vbc, vuc);
5474// CHECK: @llvm.ppc.altivec.vsububs
5475// CHECK-LE: @llvm.ppc.altivec.vsububs
5476
5477  res_vuc = vec_subs(vuc, vbc);
5478// CHECK: @llvm.ppc.altivec.vsububs
5479// CHECK-LE: @llvm.ppc.altivec.vsububs
5480
5481  res_vs  = vec_subs(vs, vs);
5482// CHECK: @llvm.ppc.altivec.vsubshs
5483// CHECK-LE: @llvm.ppc.altivec.vsubshs
5484
5485  res_vs  = vec_subs(vbs, vs);
5486// CHECK: @llvm.ppc.altivec.vsubshs
5487// CHECK-LE: @llvm.ppc.altivec.vsubshs
5488
5489  res_vs  = vec_subs(vs, vbs);
5490// CHECK: @llvm.ppc.altivec.vsubshs
5491// CHECK-LE: @llvm.ppc.altivec.vsubshs
5492
5493  res_vus = vec_subs(vus, vus);
5494// CHECK: @llvm.ppc.altivec.vsubuhs
5495// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5496
5497  res_vus = vec_subs(vbs, vus);
5498// CHECK: @llvm.ppc.altivec.vsubuhs
5499// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5500
5501  res_vus = vec_subs(vus, vbs);
5502// CHECK: @llvm.ppc.altivec.vsubuhs
5503// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5504
5505  res_vi  = vec_subs(vi, vi);
5506// CHECK: @llvm.ppc.altivec.vsubsws
5507// CHECK-LE: @llvm.ppc.altivec.vsubsws
5508
5509  res_vi  = vec_subs(vbi, vi);
5510// CHECK: @llvm.ppc.altivec.vsubsws
5511// CHECK-LE: @llvm.ppc.altivec.vsubsws
5512
5513  res_vi  = vec_subs(vi, vbi);
5514// CHECK: @llvm.ppc.altivec.vsubsws
5515// CHECK-LE: @llvm.ppc.altivec.vsubsws
5516
5517  res_vui = vec_subs(vui, vui);
5518// CHECK: @llvm.ppc.altivec.vsubuws
5519// CHECK-LE: @llvm.ppc.altivec.vsubuws
5520
5521  res_vui = vec_subs(vbi, vui);
5522// CHECK: @llvm.ppc.altivec.vsubuws
5523// CHECK-LE: @llvm.ppc.altivec.vsubuws
5524
5525  res_vui = vec_subs(vui, vbi);
5526// CHECK: @llvm.ppc.altivec.vsubuws
5527// CHECK-LE: @llvm.ppc.altivec.vsubuws
5528
5529  res_vi = vec_sube(vi, vi, vi);
5530// CHECK: and <4 x i32>
5531// CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5532// CHECK: add <4 x i32>
5533// CHECK: add <4 x i32>
5534// CHECK-LE: and <4 x i32>
5535// CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5536// CHECK-LE: add <4 x i32>
5537// CHECK-LE: add <4 x i32>
5538
5539  res_vui = vec_sube(vui, vui, vui);
5540// CHECK: and <4 x i32>
5541// CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5542// CHECK: add <4 x i32>
5543// CHECK: add <4 x i32>
5544// CHECK-LE: and <4 x i32>
5545// CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5546// CHECK-LE: add <4 x i32>
5547// CHECK-LE: add <4 x i32>
5548
5549  res_vsc = vec_vsubsbs(vsc, vsc);
5550// CHECK: @llvm.ppc.altivec.vsubsbs
5551// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5552
5553  res_vsc = vec_vsubsbs(vbc, vsc);
5554// CHECK: @llvm.ppc.altivec.vsubsbs
5555// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5556
5557  res_vsc = vec_vsubsbs(vsc, vbc);
5558// CHECK: @llvm.ppc.altivec.vsubsbs
5559// CHECK-LE: @llvm.ppc.altivec.vsubsbs
5560
5561  res_vuc = vec_vsububs(vuc, vuc);
5562// CHECK: @llvm.ppc.altivec.vsububs
5563// CHECK-LE: @llvm.ppc.altivec.vsububs
5564
5565  res_vuc = vec_vsububs(vbc, vuc);
5566// CHECK: @llvm.ppc.altivec.vsububs
5567// CHECK-LE: @llvm.ppc.altivec.vsububs
5568
5569  res_vuc = vec_vsububs(vuc, vbc);
5570// CHECK: @llvm.ppc.altivec.vsububs
5571// CHECK-LE: @llvm.ppc.altivec.vsububs
5572
5573  res_vs  = vec_vsubshs(vs, vs);
5574// CHECK: @llvm.ppc.altivec.vsubshs
5575// CHECK-LE: @llvm.ppc.altivec.vsubshs
5576
5577  res_vs  = vec_vsubshs(vbs, vs);
5578// CHECK: @llvm.ppc.altivec.vsubshs
5579// CHECK-LE: @llvm.ppc.altivec.vsubshs
5580
5581  res_vs  = vec_vsubshs(vs, vbs);
5582// CHECK: @llvm.ppc.altivec.vsubshs
5583// CHECK-LE: @llvm.ppc.altivec.vsubshs
5584
5585  res_vus = vec_vsubuhs(vus, vus);
5586// CHECK: @llvm.ppc.altivec.vsubuhs
5587// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5588
5589  res_vus = vec_vsubuhs(vbs, vus);
5590// CHECK: @llvm.ppc.altivec.vsubuhs
5591// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5592
5593  res_vus = vec_vsubuhs(vus, vbs);
5594// CHECK: @llvm.ppc.altivec.vsubuhs
5595// CHECK-LE: @llvm.ppc.altivec.vsubuhs
5596
5597  res_vi  = vec_vsubsws(vi, vi);
5598// CHECK: @llvm.ppc.altivec.vsubsws
5599// CHECK-LE: @llvm.ppc.altivec.vsubsws
5600
5601  res_vi  = vec_vsubsws(vbi, vi);
5602// CHECK: @llvm.ppc.altivec.vsubsws
5603// CHECK-LE: @llvm.ppc.altivec.vsubsws
5604
5605  res_vi  = vec_vsubsws(vi, vbi);
5606// CHECK: @llvm.ppc.altivec.vsubsws
5607// CHECK-LE: @llvm.ppc.altivec.vsubsws
5608
5609  res_vui = vec_vsubuws(vui, vui);
5610// CHECK: @llvm.ppc.altivec.vsubuws
5611// CHECK-LE: @llvm.ppc.altivec.vsubuws
5612
5613  res_vui = vec_vsubuws(vbi, vui);
5614// CHECK: @llvm.ppc.altivec.vsubuws
5615// CHECK-LE: @llvm.ppc.altivec.vsubuws
5616
5617  res_vui = vec_vsubuws(vui, vbi);
5618// CHECK: @llvm.ppc.altivec.vsubuws
5619// CHECK-LE: @llvm.ppc.altivec.vsubuws
5620
5621  /* vec_sum4s */
5622  res_vi  = vec_sum4s(vsc, vi);
5623// CHECK: @llvm.ppc.altivec.vsum4sbs
5624// CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5625
5626  res_vui = vec_sum4s(vuc, vui);
5627// CHECK: @llvm.ppc.altivec.vsum4ubs
5628// CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5629
5630  res_vi  = vec_sum4s(vs, vi);
5631// CHECK: @llvm.ppc.altivec.vsum4shs
5632// CHECK-LE: @llvm.ppc.altivec.vsum4shs
5633
5634  res_vi  = vec_vsum4sbs(vsc, vi);
5635// CHECK: @llvm.ppc.altivec.vsum4sbs
5636// CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5637
5638  res_vui = vec_vsum4ubs(vuc, vui);
5639// CHECK: @llvm.ppc.altivec.vsum4ubs
5640// CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5641
5642  res_vi  = vec_vsum4shs(vs, vi);
5643// CHECK: @llvm.ppc.altivec.vsum4shs
5644// CHECK-LE: @llvm.ppc.altivec.vsum4shs
5645
5646  /* vec_sum2s */
5647  res_vi = vec_sum2s(vi, vi);
5648// CHECK: @llvm.ppc.altivec.vsum2sws
5649// CHECK-LE: @llvm.ppc.altivec.vperm
5650// CHECK-LE: @llvm.ppc.altivec.vsum2sws
5651// CHECK-LE: @llvm.ppc.altivec.vperm
5652
5653  res_vi = vec_vsum2sws(vi, vi);
5654// CHECK: @llvm.ppc.altivec.vsum2sws
5655// CHECK-LE: @llvm.ppc.altivec.vperm
5656// CHECK-LE: @llvm.ppc.altivec.vsum2sws
5657// CHECK-LE: @llvm.ppc.altivec.vperm
5658
5659  /* vec_sums */
5660  res_vi = vec_sums(vi, vi);
5661// CHECK: @llvm.ppc.altivec.vsumsws
5662// CHECK-LE: @llvm.ppc.altivec.vperm
5663// CHECK-LE: @llvm.ppc.altivec.vsumsws
5664
5665  res_vi = vec_vsumsws(vi, vi);
5666// CHECK: @llvm.ppc.altivec.vsumsws
5667// CHECK-LE: @llvm.ppc.altivec.vperm
5668// CHECK-LE: @llvm.ppc.altivec.vsumsws
5669
5670  /* vec_trunc */
5671  res_vf = vec_trunc(vf);
5672// CHECK: @llvm.ppc.altivec.vrfiz
5673// CHECK-LE: @llvm.ppc.altivec.vrfiz
5674
5675  res_vf = vec_vrfiz(vf);
5676// CHECK: @llvm.ppc.altivec.vrfiz
5677// CHECK-LE: @llvm.ppc.altivec.vrfiz
5678
5679  /* vec_unpackh */
5680  res_vs  = vec_unpackh(vsc);
5681// CHECK: @llvm.ppc.altivec.vupkhsb
5682// CHECK-LE: @llvm.ppc.altivec.vupklsb
5683
5684  res_vbs = vec_unpackh(vbc);
5685// CHECK: @llvm.ppc.altivec.vupkhsb
5686// CHECK-LE: @llvm.ppc.altivec.vupklsb
5687
5688  res_vi  = vec_unpackh(vs);
5689// CHECK: @llvm.ppc.altivec.vupkhsh
5690// CHECK-LE: @llvm.ppc.altivec.vupklsh
5691
5692  res_vbi = vec_unpackh(vbs);
5693// CHECK: @llvm.ppc.altivec.vupkhsh
5694// CHECK-LE: @llvm.ppc.altivec.vupklsh
5695
5696  res_vui = vec_unpackh(vp);
5697// CHECK: @llvm.ppc.altivec.vupkhpx
5698// CHECK-LE: @llvm.ppc.altivec.vupklpx
5699
5700  res_vs  = vec_vupkhsb(vsc);
5701// CHECK: @llvm.ppc.altivec.vupkhsb
5702// CHECK-LE: @llvm.ppc.altivec.vupklsb
5703
5704  res_vbs = vec_vupkhsb(vbc);
5705// CHECK: @llvm.ppc.altivec.vupkhsb
5706// CHECK-LE: @llvm.ppc.altivec.vupklsb
5707
5708  res_vi  = vec_vupkhsh(vs);
5709// CHECK: @llvm.ppc.altivec.vupkhsh
5710// CHECK-LE: @llvm.ppc.altivec.vupklsh
5711
5712  res_vbi = vec_vupkhsh(vbs);
5713// CHECK: @llvm.ppc.altivec.vupkhsh
5714// CHECK-LE: @llvm.ppc.altivec.vupklsh
5715
5716  res_vui = vec_vupkhsh(vp);
5717// CHECK: @llvm.ppc.altivec.vupkhpx
5718// CHECK-LE: @llvm.ppc.altivec.vupklpx
5719
5720  /* vec_unpackl */
5721  res_vs  = vec_unpackl(vsc);
5722// CHECK: @llvm.ppc.altivec.vupklsb
5723// CHECK-LE: @llvm.ppc.altivec.vupkhsb
5724
5725  res_vbs = vec_unpackl(vbc);
5726// CHECK: @llvm.ppc.altivec.vupklsb
5727// CHECK-LE: @llvm.ppc.altivec.vupkhsb
5728
5729  res_vi  = vec_unpackl(vs);
5730// CHECK: @llvm.ppc.altivec.vupklsh
5731// CHECK-LE: @llvm.ppc.altivec.vupkhsh
5732
5733  res_vbi = vec_unpackl(vbs);
5734// CHECK: @llvm.ppc.altivec.vupklsh
5735// CHECK-LE: @llvm.ppc.altivec.vupkhsh
5736
5737  res_vui = vec_unpackl(vp);
5738// CHECK: @llvm.ppc.altivec.vupklpx
5739// CHECK-LE: @llvm.ppc.altivec.vupkhpx
5740
5741  res_vs  = vec_vupklsb(vsc);
5742// CHECK: @llvm.ppc.altivec.vupklsb
5743// CHECK-LE: @llvm.ppc.altivec.vupkhsb
5744
5745  res_vbs = vec_vupklsb(vbc);
5746// CHECK: @llvm.ppc.altivec.vupklsb
5747// CHECK-LE: @llvm.ppc.altivec.vupkhsb
5748
5749  res_vi  = vec_vupklsh(vs);
5750// CHECK: @llvm.ppc.altivec.vupklsh
5751// CHECK-LE: @llvm.ppc.altivec.vupkhsh
5752
5753  res_vbi = vec_vupklsh(vbs);
5754// CHECK: @llvm.ppc.altivec.vupklsh
5755// CHECK-LE: @llvm.ppc.altivec.vupkhsh
5756
5757  res_vui = vec_vupklsh(vp);
5758// CHECK: @llvm.ppc.altivec.vupklpx
5759// CHECK-LE: @llvm.ppc.altivec.vupkhpx
5760
5761  /* vec_xor */
5762  res_vsc = vec_xor(vsc, vsc);
5763// CHECK: xor <16 x i8>
5764// CHECK-LE: xor <16 x i8>
5765
5766  res_vsc = vec_xor(vbc, vsc);
5767// CHECK: xor <16 x i8>
5768// CHECK-LE: xor <16 x i8>
5769
5770  res_vsc = vec_xor(vsc, vbc);
5771// CHECK: xor <16 x i8>
5772// CHECK-LE: xor <16 x i8>
5773
5774  res_vuc = vec_xor(vuc, vuc);
5775// CHECK: xor <16 x i8>
5776// CHECK-LE: xor <16 x i8>
5777
5778  res_vuc = vec_xor(vbc, vuc);
5779// CHECK: xor <16 x i8>
5780// CHECK-LE: xor <16 x i8>
5781
5782  res_vuc = vec_xor(vuc, vbc);
5783// CHECK: xor <16 x i8>
5784// CHECK-LE: xor <16 x i8>
5785
5786  res_vbc = vec_xor(vbc, vbc);
5787// CHECK: xor <16 x i8>
5788// CHECK-LE: xor <16 x i8>
5789
5790  res_vs  = vec_xor(vs, vs);
5791// CHECK: xor <8 x i16>
5792// CHECK-LE: xor <8 x i16>
5793
5794  res_vs  = vec_xor(vbs, vs);
5795// CHECK: xor <8 x i16>
5796// CHECK-LE: xor <8 x i16>
5797
5798  res_vs  = vec_xor(vs, vbs);
5799// CHECK: xor <8 x i16>
5800// CHECK-LE: xor <8 x i16>
5801
5802  res_vus = vec_xor(vus, vus);
5803// CHECK: xor <8 x i16>
5804// CHECK-LE: xor <8 x i16>
5805
5806  res_vus = vec_xor(vbs, vus);
5807// CHECK: xor <8 x i16>
5808// CHECK-LE: xor <8 x i16>
5809
5810  res_vus = vec_xor(vus, vbs);
5811// CHECK: xor <8 x i16>
5812// CHECK-LE: xor <8 x i16>
5813
5814  res_vbs = vec_xor(vbs, vbs);
5815// CHECK: xor <8 x i16>
5816// CHECK-LE: xor <8 x i16>
5817
5818  res_vi  = vec_xor(vi, vi);
5819// CHECK: xor <4 x i32>
5820// CHECK-LE: xor <4 x i32>
5821
5822  res_vi  = vec_xor(vbi, vi);
5823// CHECK: xor <4 x i32>
5824// CHECK-LE: xor <4 x i32>
5825
5826  res_vi  = vec_xor(vi, vbi);
5827// CHECK: xor <4 x i32>
5828// CHECK-LE: xor <4 x i32>
5829
5830  res_vui = vec_xor(vui, vui);
5831// CHECK: xor <4 x i32>
5832// CHECK-LE: xor <4 x i32>
5833
5834  res_vui = vec_xor(vbi, vui);
5835// CHECK: xor <4 x i32>
5836// CHECK-LE: xor <4 x i32>
5837
5838  res_vui = vec_xor(vui, vbi);
5839// CHECK: xor <4 x i32>
5840// CHECK-LE: xor <4 x i32>
5841
5842  res_vbi = vec_xor(vbi, vbi);
5843// CHECK: xor <4 x i32>
5844// CHECK-LE: xor <4 x i32>
5845
5846  res_vf  = vec_xor(vf, vf);
5847// CHECK: xor <4 x i32>
5848// CHECK-LE: xor <4 x i32>
5849
5850  res_vf  = vec_xor(vbi, vf);
5851// CHECK: xor <4 x i32>
5852// CHECK-LE: xor <4 x i32>
5853
5854  res_vf  = vec_xor(vf, vbi);
5855// CHECK: xor <4 x i32>
5856// CHECK-LE: xor <4 x i32>
5857
5858  res_vsc = vec_vxor(vsc, vsc);
5859// CHECK: xor <16 x i8>
5860// CHECK-LE: xor <16 x i8>
5861
5862  res_vsc = vec_vxor(vbc, vsc);
5863// CHECK: xor <16 x i8>
5864// CHECK-LE: xor <16 x i8>
5865
5866  res_vsc = vec_vxor(vsc, vbc);
5867// CHECK: xor <16 x i8>
5868// CHECK-LE: xor <16 x i8>
5869
5870  res_vuc = vec_vxor(vuc, vuc);
5871// CHECK: xor <16 x i8>
5872// CHECK-LE: xor <16 x i8>
5873
5874  res_vuc = vec_vxor(vbc, vuc);
5875// CHECK: xor <16 x i8>
5876// CHECK-LE: xor <16 x i8>
5877
5878  res_vuc = vec_vxor(vuc, vbc);
5879// CHECK: xor <16 x i8>
5880// CHECK-LE: xor <16 x i8>
5881
5882  res_vbc = vec_vxor(vbc, vbc);
5883// CHECK: xor <16 x i8>
5884// CHECK-LE: xor <16 x i8>
5885
5886  res_vs  = vec_vxor(vs, vs);
5887// CHECK: xor <8 x i16>
5888// CHECK-LE: xor <8 x i16>
5889
5890  res_vs  = vec_vxor(vbs, vs);
5891// CHECK: xor <8 x i16>
5892// CHECK-LE: xor <8 x i16>
5893
5894  res_vs  = vec_vxor(vs, vbs);
5895// CHECK: xor <8 x i16>
5896// CHECK-LE: xor <8 x i16>
5897
5898  res_vus = vec_vxor(vus, vus);
5899// CHECK: xor <8 x i16>
5900// CHECK-LE: xor <8 x i16>
5901
5902  res_vus = vec_vxor(vbs, vus);
5903// CHECK: xor <8 x i16>
5904// CHECK-LE: xor <8 x i16>
5905
5906  res_vus = vec_vxor(vus, vbs);
5907// CHECK: xor <8 x i16>
5908// CHECK-LE: xor <8 x i16>
5909
5910  res_vbs = vec_vxor(vbs, vbs);
5911// CHECK: xor <8 x i16>
5912// CHECK-LE: xor <8 x i16>
5913
5914  res_vi  = vec_vxor(vi, vi);
5915// CHECK: xor <4 x i32>
5916// CHECK-LE: xor <4 x i32>
5917
5918  res_vi  = vec_vxor(vbi, vi);
5919// CHECK: xor <4 x i32>
5920// CHECK-LE: xor <4 x i32>
5921
5922  res_vi  = vec_vxor(vi, vbi);
5923// CHECK: xor <4 x i32>
5924// CHECK-LE: xor <4 x i32>
5925
5926  res_vui = vec_vxor(vui, vui);
5927// CHECK: xor <4 x i32>
5928// CHECK-LE: xor <4 x i32>
5929
5930  res_vui = vec_vxor(vbi, vui);
5931// CHECK: xor <4 x i32>
5932// CHECK-LE: xor <4 x i32>
5933
5934  res_vui = vec_vxor(vui, vbi);
5935// CHECK: xor <4 x i32>
5936// CHECK-LE: xor <4 x i32>
5937
5938  res_vbi = vec_vxor(vbi, vbi);
5939// CHECK: xor <4 x i32>
5940// CHECK-LE: xor <4 x i32>
5941
5942  res_vf  = vec_vxor(vf, vf);
5943// CHECK: xor <4 x i32>
5944// CHECK-LE: xor <4 x i32>
5945
5946  res_vf  = vec_vxor(vbi, vf);
5947// CHECK: xor <4 x i32>
5948// CHECK-LE: xor <4 x i32>
5949
5950  res_vf  = vec_vxor(vf, vbi);
5951// CHECK: xor <4 x i32>
5952// CHECK-LE: xor <4 x i32>
5953
5954  /* ------------------------------ extensions -------------------------------------- */
5955
5956  /* vec_extract */
5957  res_sc = vec_extract(vsc, param_i);
5958// CHECK: extractelement <16 x i8>
5959// CHECK-LE: extractelement <16 x i8>
5960
5961  res_uc = vec_extract(vuc, param_i);
5962// CHECK: extractelement <16 x i8>
5963// CHECK-LE: extractelement <16 x i8>
5964
5965  res_uc = vec_extract(vbc, param_i);
5966// CHECK: extractelement <16 x i8>
5967// CHECK-LE: extractelement <16 x i8>
5968
5969  res_s  = vec_extract(vs, param_i);
5970// CHECK: extractelement <8 x i16>
5971// CHECK-LE: extractelement <8 x i16>
5972
5973  res_us = vec_extract(vus, param_i);
5974// CHECK: extractelement <8 x i16>
5975// CHECK-LE: extractelement <8 x i16>
5976
5977  res_us = vec_extract(vbs, param_i);
5978// CHECK: extractelement <8 x i16>
5979// CHECK-LE: extractelement <8 x i16>
5980
5981  res_i  = vec_extract(vi, param_i);
5982// CHECK: extractelement <4 x i32>
5983// CHECK-LE: extractelement <4 x i32>
5984
5985  res_ui = vec_extract(vui, param_i);
5986// CHECK: extractelement <4 x i32>
5987// CHECK-LE: extractelement <4 x i32>
5988
5989  res_ui = vec_extract(vbi, param_i);
5990// CHECK: extractelement <4 x i32>
5991// CHECK-LE: extractelement <4 x i32>
5992
5993  res_f  = vec_extract(vf, param_i);
5994// CHECK: extractelement <4 x float>
5995// CHECK-LE: extractelement <4 x float>
5996
5997  /* vec_insert */
5998  res_vsc = vec_insert(param_sc, vsc, param_i);
5999// CHECK: insertelement <16 x i8>
6000// CHECK-LE: insertelement <16 x i8>
6001
6002  res_vuc = vec_insert(param_uc, vuc, param_i);
6003// CHECK: insertelement <16 x i8>
6004// CHECK-LE: insertelement <16 x i8>
6005
6006  res_vbc = vec_insert(param_uc, vbc, param_i);
6007// CHECK: insertelement <16 x i8>
6008// CHECK-LE: insertelement <16 x i8>
6009
6010  res_vs  = vec_insert(param_s, vs, param_i);
6011// CHECK: insertelement <8 x i16>
6012// CHECK-LE: insertelement <8 x i16>
6013
6014  res_vus = vec_insert(param_us, vus, param_i);
6015// CHECK: insertelement <8 x i16>
6016// CHECK-LE: insertelement <8 x i16>
6017
6018  res_vbs = vec_insert(param_us, vbs, param_i);
6019// CHECK: insertelement <8 x i16>
6020// CHECK-LE: insertelement <8 x i16>
6021
6022  res_vi  = vec_insert(param_i, vi, param_i);
6023// CHECK: insertelement <4 x i32>
6024// CHECK-LE: insertelement <4 x i32>
6025
6026  res_vui = vec_insert(param_ui, vui, param_i);
6027// CHECK: insertelement <4 x i32>
6028// CHECK-LE: insertelement <4 x i32>
6029
6030  res_vbi = vec_insert(param_ui, vbi, param_i);
6031// CHECK: insertelement <4 x i32>
6032// CHECK-LE: insertelement <4 x i32>
6033
6034  res_vf  = vec_insert(param_f, vf, param_i);
6035// CHECK: insertelement <4 x float>
6036// CHECK-LE: insertelement <4 x float>
6037
6038  /* vec_lvlx */
6039  res_vsc = vec_lvlx(0, &param_sc);
6040// CHECK: @llvm.ppc.altivec.lvx
6041// CHECK: @llvm.ppc.altivec.lvsl
6042// CHECK: store <16 x i8> zeroinitializer
6043// CHECK: @llvm.ppc.altivec.vperm
6044// CHECK-LE: @llvm.ppc.altivec.lvx
6045// CHECK-LE: @llvm.ppc.altivec.lvsl
6046// CHECK-LE: store <16 x i8> zeroinitializer
6047// CHECK-LE: @llvm.ppc.altivec.vperm
6048
6049  res_vsc = vec_lvlx(0, &vsc);
6050// CHECK: @llvm.ppc.altivec.lvx
6051// CHECK: @llvm.ppc.altivec.lvsl
6052// CHECK: store <16 x i8> zeroinitializer
6053// CHECK: @llvm.ppc.altivec.vperm
6054// CHECK-LE: @llvm.ppc.altivec.lvx
6055// CHECK-LE: @llvm.ppc.altivec.lvsl
6056// CHECK-LE: store <16 x i8> zeroinitializer
6057// CHECK-LE: @llvm.ppc.altivec.vperm
6058
6059  res_vuc = vec_lvlx(0, &param_uc);
6060// CHECK: @llvm.ppc.altivec.lvx
6061// CHECK: @llvm.ppc.altivec.lvsl
6062// CHECK: store <16 x i8> zeroinitializer
6063// CHECK: @llvm.ppc.altivec.vperm
6064// CHECK-LE: @llvm.ppc.altivec.lvx
6065// CHECK-LE: @llvm.ppc.altivec.lvsl
6066// CHECK-LE: store <16 x i8> zeroinitializer
6067// CHECK-LE: @llvm.ppc.altivec.vperm
6068
6069  res_vuc = vec_lvlx(0, &vuc);
6070// CHECK: @llvm.ppc.altivec.lvx
6071// CHECK: @llvm.ppc.altivec.lvsl
6072// CHECK: store <16 x i8> zeroinitializer
6073// CHECK: @llvm.ppc.altivec.vperm
6074// CHECK-LE: @llvm.ppc.altivec.lvx
6075// CHECK-LE: @llvm.ppc.altivec.lvsl
6076// CHECK-LE: store <16 x i8> zeroinitializer
6077// CHECK-LE: @llvm.ppc.altivec.vperm
6078
6079  res_vbc = vec_lvlx(0, &vbc);
6080// CHECK: @llvm.ppc.altivec.lvx
6081// CHECK: store <16 x i8> zeroinitializer
6082// CHECK: @llvm.ppc.altivec.lvsl
6083// CHECK: @llvm.ppc.altivec.vperm
6084// CHECK-LE: @llvm.ppc.altivec.lvx
6085// CHECK-LE: store <16 x i8> zeroinitializer
6086// CHECK-LE: @llvm.ppc.altivec.lvsl
6087// CHECK-LE: @llvm.ppc.altivec.vperm
6088
6089  res_vs  = vec_lvlx(0, &param_s);
6090// CHECK: @llvm.ppc.altivec.lvx
6091// CHECK: @llvm.ppc.altivec.lvsl
6092// CHECK: store <8 x i16> zeroinitializer
6093// CHECK: @llvm.ppc.altivec.vperm
6094// CHECK-LE: @llvm.ppc.altivec.lvx
6095// CHECK-LE: @llvm.ppc.altivec.lvsl
6096// CHECK-LE: store <8 x i16> zeroinitializer
6097// CHECK-LE: @llvm.ppc.altivec.vperm
6098
6099  res_vs  = vec_lvlx(0, &vs);
6100// CHECK: @llvm.ppc.altivec.lvx
6101// CHECK: @llvm.ppc.altivec.lvsl
6102// CHECK: store <8 x i16> zeroinitializer
6103// CHECK: @llvm.ppc.altivec.vperm
6104// CHECK-LE: @llvm.ppc.altivec.lvx
6105// CHECK-LE: @llvm.ppc.altivec.lvsl
6106// CHECK-LE: store <8 x i16> zeroinitializer
6107// CHECK-LE: @llvm.ppc.altivec.vperm
6108
6109  res_vus = vec_lvlx(0, &param_us);
6110// CHECK: @llvm.ppc.altivec.lvx
6111// CHECK: @llvm.ppc.altivec.lvsl
6112// CHECK: store <8 x i16> zeroinitializer
6113// CHECK: @llvm.ppc.altivec.vperm
6114// CHECK-LE: @llvm.ppc.altivec.lvx
6115// CHECK-LE: @llvm.ppc.altivec.lvsl
6116// CHECK-LE: store <8 x i16> zeroinitializer
6117// CHECK-LE: @llvm.ppc.altivec.vperm
6118
6119  res_vus = vec_lvlx(0, &vus);
6120// CHECK: @llvm.ppc.altivec.lvx
6121// CHECK: @llvm.ppc.altivec.lvsl
6122// CHECK: store <8 x i16> zeroinitializer
6123// CHECK: @llvm.ppc.altivec.vperm
6124// CHECK-LE: @llvm.ppc.altivec.lvx
6125// CHECK-LE: @llvm.ppc.altivec.lvsl
6126// CHECK-LE: store <8 x i16> zeroinitializer
6127// CHECK-LE: @llvm.ppc.altivec.vperm
6128
6129  res_vbs = vec_lvlx(0, &vbs);
6130// CHECK: @llvm.ppc.altivec.lvx
6131// CHECK: store <8 x i16> zeroinitializer
6132// CHECK: @llvm.ppc.altivec.lvsl
6133// CHECK: @llvm.ppc.altivec.vperm
6134// CHECK-LE: @llvm.ppc.altivec.lvx
6135// CHECK-LE: store <8 x i16> zeroinitializer
6136// CHECK-LE: @llvm.ppc.altivec.lvsl
6137// CHECK-LE: @llvm.ppc.altivec.vperm
6138
6139  res_vp  = vec_lvlx(0, &vp);
6140// CHECK: @llvm.ppc.altivec.lvx
6141// CHECK: store <8 x i16> zeroinitializer
6142// CHECK: @llvm.ppc.altivec.lvsl
6143// CHECK: @llvm.ppc.altivec.vperm
6144// CHECK-LE: @llvm.ppc.altivec.lvx
6145// CHECK-LE: store <8 x i16> zeroinitializer
6146// CHECK-LE: @llvm.ppc.altivec.lvsl
6147// CHECK-LE: @llvm.ppc.altivec.vperm
6148
6149  res_vi  = vec_lvlx(0, &param_i);
6150// CHECK: @llvm.ppc.altivec.lvx
6151// CHECK: @llvm.ppc.altivec.lvsl
6152// CHECK: store <4 x i32> zeroinitializer
6153// CHECK: @llvm.ppc.altivec.vperm
6154// CHECK-LE: @llvm.ppc.altivec.lvx
6155// CHECK-LE: @llvm.ppc.altivec.lvsl
6156// CHECK-LE: store <4 x i32> zeroinitializer
6157// CHECK-LE: @llvm.ppc.altivec.vperm
6158
6159  res_vi  = vec_lvlx(0, &vi);
6160// CHECK: @llvm.ppc.altivec.lvx
6161// CHECK: @llvm.ppc.altivec.lvsl
6162// CHECK: store <4 x i32> zeroinitializer
6163// CHECK: @llvm.ppc.altivec.vperm
6164// CHECK-LE: @llvm.ppc.altivec.lvx
6165// CHECK-LE: @llvm.ppc.altivec.lvsl
6166// CHECK-LE: store <4 x i32> zeroinitializer
6167// CHECK-LE: @llvm.ppc.altivec.vperm
6168
6169  res_vui = vec_lvlx(0, &param_ui);
6170// CHECK: @llvm.ppc.altivec.lvx
6171// CHECK: @llvm.ppc.altivec.lvsl
6172// CHECK: store <4 x i32> zeroinitializer
6173// CHECK: @llvm.ppc.altivec.vperm
6174// CHECK-LE: @llvm.ppc.altivec.lvx
6175// CHECK-LE: @llvm.ppc.altivec.lvsl
6176// CHECK-LE: store <4 x i32> zeroinitializer
6177// CHECK-LE: @llvm.ppc.altivec.vperm
6178
6179  res_vui = vec_lvlx(0, &vui);
6180// CHECK: @llvm.ppc.altivec.lvx
6181// CHECK: @llvm.ppc.altivec.lvsl
6182// CHECK: store <4 x i32> zeroinitializer
6183// CHECK: @llvm.ppc.altivec.vperm
6184// CHECK-LE: @llvm.ppc.altivec.lvx
6185// CHECK-LE: @llvm.ppc.altivec.lvsl
6186// CHECK-LE: store <4 x i32> zeroinitializer
6187// CHECK-LE: @llvm.ppc.altivec.vperm
6188
6189  res_vbi = vec_lvlx(0, &vbi);
6190// CHECK: @llvm.ppc.altivec.lvx
6191// CHECK: store <4 x i32> zeroinitializer
6192// CHECK: @llvm.ppc.altivec.lvsl
6193// CHECK: @llvm.ppc.altivec.vperm
6194// CHECK-LE: @llvm.ppc.altivec.lvx
6195// CHECK-LE: store <4 x i32> zeroinitializer
6196// CHECK-LE: @llvm.ppc.altivec.lvsl
6197// CHECK-LE: @llvm.ppc.altivec.vperm
6198
6199  res_vf  = vec_lvlx(0, &vf);
6200// CHECK: @llvm.ppc.altivec.lvx
6201// CHECK: @llvm.ppc.altivec.lvsl
6202// CHECK: store <4 x float> zeroinitializer
6203// CHECK: @llvm.ppc.altivec.vperm
6204// CHECK-LE: @llvm.ppc.altivec.lvx
6205// CHECK-LE: @llvm.ppc.altivec.lvsl
6206// CHECK-LE: store <4 x float> zeroinitializer
6207// CHECK-LE: @llvm.ppc.altivec.vperm
6208
6209  /* vec_lvlxl */
6210  res_vsc = vec_lvlxl(0, &param_sc);
6211// CHECK: @llvm.ppc.altivec.lvxl
6212// CHECK: @llvm.ppc.altivec.lvsl
6213// CHECK: store <16 x i8> zeroinitializer
6214// CHECK: @llvm.ppc.altivec.vperm
6215// CHECK-LE: @llvm.ppc.altivec.lvxl
6216// CHECK-LE: @llvm.ppc.altivec.lvsl
6217// CHECK-LE: store <16 x i8> zeroinitializer
6218// CHECK-LE: @llvm.ppc.altivec.vperm
6219
6220  res_vsc = vec_lvlxl(0, &vsc);
6221// CHECK: @llvm.ppc.altivec.lvxl
6222// CHECK: @llvm.ppc.altivec.lvsl
6223// CHECK: store <16 x i8> zeroinitializer
6224// CHECK: @llvm.ppc.altivec.vperm
6225// CHECK-LE: @llvm.ppc.altivec.lvxl
6226// CHECK-LE: @llvm.ppc.altivec.lvsl
6227// CHECK-LE: store <16 x i8> zeroinitializer
6228// CHECK-LE: @llvm.ppc.altivec.vperm
6229
6230  res_vuc = vec_lvlxl(0, &param_uc);
6231// CHECK: @llvm.ppc.altivec.lvxl
6232// CHECK: @llvm.ppc.altivec.lvsl
6233// CHECK: store <16 x i8> zeroinitializer
6234// CHECK: @llvm.ppc.altivec.vperm
6235// CHECK-LE: @llvm.ppc.altivec.lvxl
6236// CHECK-LE: @llvm.ppc.altivec.lvsl
6237// CHECK-LE: store <16 x i8> zeroinitializer
6238// CHECK-LE: @llvm.ppc.altivec.vperm
6239
6240  res_vuc = vec_lvlxl(0, &vuc);
6241// CHECK: @llvm.ppc.altivec.lvxl
6242// CHECK: @llvm.ppc.altivec.lvsl
6243// CHECK: store <16 x i8> zeroinitializer
6244// CHECK: @llvm.ppc.altivec.vperm
6245// CHECK-LE: @llvm.ppc.altivec.lvxl
6246// CHECK-LE: @llvm.ppc.altivec.lvsl
6247// CHECK-LE: store <16 x i8> zeroinitializer
6248// CHECK-LE: @llvm.ppc.altivec.vperm
6249
6250  res_vbc = vec_lvlxl(0, &vbc);
6251// CHECK: @llvm.ppc.altivec.lvxl
6252// CHECK: store <16 x i8> zeroinitializer
6253// CHECK: @llvm.ppc.altivec.lvsl
6254// CHECK: @llvm.ppc.altivec.vperm
6255// CHECK-LE: @llvm.ppc.altivec.lvxl
6256// CHECK-LE: store <16 x i8> zeroinitializer
6257// CHECK-LE: @llvm.ppc.altivec.lvsl
6258// CHECK-LE: @llvm.ppc.altivec.vperm
6259
6260  res_vs  = vec_lvlxl(0, &param_s);
6261// CHECK: @llvm.ppc.altivec.lvxl
6262// CHECK: @llvm.ppc.altivec.lvsl
6263// CHECK: store <8 x i16> zeroinitializer
6264// CHECK: @llvm.ppc.altivec.vperm
6265// CHECK-LE: @llvm.ppc.altivec.lvxl
6266// CHECK-LE: @llvm.ppc.altivec.lvsl
6267// CHECK-LE: store <8 x i16> zeroinitializer
6268// CHECK-LE: @llvm.ppc.altivec.vperm
6269
6270  res_vs  = vec_lvlxl(0, &vs);
6271// CHECK: @llvm.ppc.altivec.lvxl
6272// CHECK: @llvm.ppc.altivec.lvsl
6273// CHECK: store <8 x i16> zeroinitializer
6274// CHECK: @llvm.ppc.altivec.vperm
6275// CHECK-LE: @llvm.ppc.altivec.lvxl
6276// CHECK-LE: @llvm.ppc.altivec.lvsl
6277// CHECK-LE: store <8 x i16> zeroinitializer
6278// CHECK-LE: @llvm.ppc.altivec.vperm
6279
6280  res_vus = vec_lvlxl(0, &param_us);
6281// CHECK: @llvm.ppc.altivec.lvxl
6282// CHECK: @llvm.ppc.altivec.lvsl
6283// CHECK: store <8 x i16> zeroinitializer
6284// CHECK: @llvm.ppc.altivec.vperm
6285// CHECK-LE: @llvm.ppc.altivec.lvxl
6286// CHECK-LE: @llvm.ppc.altivec.lvsl
6287// CHECK-LE: store <8 x i16> zeroinitializer
6288// CHECK-LE: @llvm.ppc.altivec.vperm
6289
6290  res_vus = vec_lvlxl(0, &vus);
6291// CHECK: @llvm.ppc.altivec.lvxl
6292// CHECK: @llvm.ppc.altivec.lvsl
6293// CHECK: store <8 x i16> zeroinitializer
6294// CHECK: @llvm.ppc.altivec.vperm
6295// CHECK-LE: @llvm.ppc.altivec.lvxl
6296// CHECK-LE: @llvm.ppc.altivec.lvsl
6297// CHECK-LE: store <8 x i16> zeroinitializer
6298// CHECK-LE: @llvm.ppc.altivec.vperm
6299
6300  res_vbs = vec_lvlxl(0, &vbs);
6301// CHECK: @llvm.ppc.altivec.lvxl
6302// CHECK: store <8 x i16> zeroinitializer
6303// CHECK: @llvm.ppc.altivec.lvsl
6304// CHECK: @llvm.ppc.altivec.vperm
6305// CHECK-LE: @llvm.ppc.altivec.lvxl
6306// CHECK-LE: store <8 x i16> zeroinitializer
6307// CHECK-LE: @llvm.ppc.altivec.lvsl
6308// CHECK-LE: @llvm.ppc.altivec.vperm
6309
6310  res_vp  = vec_lvlxl(0, &vp);
6311// CHECK: @llvm.ppc.altivec.lvxl
6312// CHECK: store <8 x i16> zeroinitializer
6313// CHECK: @llvm.ppc.altivec.lvsl
6314// CHECK: @llvm.ppc.altivec.vperm
6315// CHECK-LE: @llvm.ppc.altivec.lvxl
6316// CHECK-LE: store <8 x i16> zeroinitializer
6317// CHECK-LE: @llvm.ppc.altivec.lvsl
6318// CHECK-LE: @llvm.ppc.altivec.vperm
6319
6320  res_vi  = vec_lvlxl(0, &param_i);
6321// CHECK: @llvm.ppc.altivec.lvxl
6322// CHECK: @llvm.ppc.altivec.lvsl
6323// CHECK: store <4 x i32> zeroinitializer
6324// CHECK: @llvm.ppc.altivec.vperm
6325// CHECK-LE: @llvm.ppc.altivec.lvxl
6326// CHECK-LE: @llvm.ppc.altivec.lvsl
6327// CHECK-LE: store <4 x i32> zeroinitializer
6328// CHECK-LE: @llvm.ppc.altivec.vperm
6329
6330  res_vi  = vec_lvlxl(0, &vi);
6331// CHECK: @llvm.ppc.altivec.lvxl
6332// CHECK: @llvm.ppc.altivec.lvsl
6333// CHECK: store <4 x i32> zeroinitializer
6334// CHECK: @llvm.ppc.altivec.vperm
6335// CHECK-LE: @llvm.ppc.altivec.lvxl
6336// CHECK-LE: @llvm.ppc.altivec.lvsl
6337// CHECK-LE: store <4 x i32> zeroinitializer
6338// CHECK-LE: @llvm.ppc.altivec.vperm
6339
6340  res_vui = vec_lvlxl(0, &param_ui);
6341// CHECK: @llvm.ppc.altivec.lvxl
6342// CHECK: @llvm.ppc.altivec.lvsl
6343// CHECK: store <4 x i32> zeroinitializer
6344// CHECK: @llvm.ppc.altivec.vperm
6345// CHECK-LE: @llvm.ppc.altivec.lvxl
6346// CHECK-LE: @llvm.ppc.altivec.lvsl
6347// CHECK-LE: store <4 x i32> zeroinitializer
6348// CHECK-LE: @llvm.ppc.altivec.vperm
6349
6350  res_vui = vec_lvlxl(0, &vui);
6351// CHECK: @llvm.ppc.altivec.lvxl
6352// CHECK: @llvm.ppc.altivec.lvsl
6353// CHECK: store <4 x i32> zeroinitializer
6354// CHECK: @llvm.ppc.altivec.vperm
6355// CHECK-LE: @llvm.ppc.altivec.lvxl
6356// CHECK-LE: @llvm.ppc.altivec.lvsl
6357// CHECK-LE: store <4 x i32> zeroinitializer
6358// CHECK-LE: @llvm.ppc.altivec.vperm
6359
6360  res_vbi = vec_lvlxl(0, &vbi);
6361// CHECK: @llvm.ppc.altivec.lvxl
6362// CHECK: store <4 x i32> zeroinitializer
6363// CHECK: @llvm.ppc.altivec.lvsl
6364// CHECK: @llvm.ppc.altivec.vperm
6365// CHECK-LE: @llvm.ppc.altivec.lvxl
6366// CHECK-LE: store <4 x i32> zeroinitializer
6367// CHECK-LE: @llvm.ppc.altivec.lvsl
6368// CHECK-LE: @llvm.ppc.altivec.vperm
6369
6370  res_vf  = vec_lvlxl(0, &vf);
6371// CHECK: @llvm.ppc.altivec.lvxl
6372// CHECK: @llvm.ppc.altivec.lvsl
6373// CHECK: store <4 x float> zeroinitializer
6374// CHECK: @llvm.ppc.altivec.vperm
6375// CHECK-LE: @llvm.ppc.altivec.lvxl
6376// CHECK-LE: @llvm.ppc.altivec.lvsl
6377// CHECK-LE: store <4 x float> zeroinitializer
6378// CHECK-LE: @llvm.ppc.altivec.vperm
6379
6380  /* vec_lvrx */
6381  res_vsc = vec_lvrx(0, &param_sc);
6382// CHECK: @llvm.ppc.altivec.lvx
6383// CHECK: @llvm.ppc.altivec.lvsl
6384// CHECK: store <16 x i8> zeroinitializer
6385// CHECK: @llvm.ppc.altivec.vperm
6386// CHECK-LE: @llvm.ppc.altivec.lvx
6387// CHECK-LE: @llvm.ppc.altivec.lvsl
6388// CHECK-LE: store <16 x i8> zeroinitializer
6389// CHECK-LE: @llvm.ppc.altivec.vperm
6390
6391  res_vsc = vec_lvrx(0, &vsc);
6392// CHECK: @llvm.ppc.altivec.lvx
6393// CHECK: @llvm.ppc.altivec.lvsl
6394// CHECK: store <16 x i8> zeroinitializer
6395// CHECK: @llvm.ppc.altivec.vperm
6396// CHECK-LE: @llvm.ppc.altivec.lvx
6397// CHECK-LE: @llvm.ppc.altivec.lvsl
6398// CHECK-LE: store <16 x i8> zeroinitializer
6399// CHECK-LE: @llvm.ppc.altivec.vperm
6400
6401  res_vuc = vec_lvrx(0, &param_uc);
6402// CHECK: @llvm.ppc.altivec.lvx
6403// CHECK: @llvm.ppc.altivec.lvsl
6404// CHECK: store <16 x i8> zeroinitializer
6405// CHECK: @llvm.ppc.altivec.vperm
6406// CHECK-LE: @llvm.ppc.altivec.lvx
6407// CHECK-LE: @llvm.ppc.altivec.lvsl
6408// CHECK-LE: store <16 x i8> zeroinitializer
6409// CHECK-LE: @llvm.ppc.altivec.vperm
6410
6411  res_vuc = vec_lvrx(0, &vuc);
6412// CHECK: @llvm.ppc.altivec.lvx
6413// CHECK: @llvm.ppc.altivec.lvsl
6414// CHECK: store <16 x i8> zeroinitializer
6415// CHECK: @llvm.ppc.altivec.vperm
6416// CHECK-LE: @llvm.ppc.altivec.lvx
6417// CHECK-LE: @llvm.ppc.altivec.lvsl
6418// CHECK-LE: store <16 x i8> zeroinitializer
6419// CHECK-LE: @llvm.ppc.altivec.vperm
6420
6421  res_vbc = vec_lvrx(0, &vbc);
6422// CHECK: store <16 x i8> zeroinitializer
6423// CHECK: @llvm.ppc.altivec.lvx
6424// CHECK: @llvm.ppc.altivec.lvsl
6425// CHECK: @llvm.ppc.altivec.vperm
6426// CHECK-LE: store <16 x i8> zeroinitializer
6427// CHECK-LE: @llvm.ppc.altivec.lvx
6428// CHECK-LE: @llvm.ppc.altivec.lvsl
6429// CHECK-LE: @llvm.ppc.altivec.vperm
6430
6431  res_vs  = vec_lvrx(0, &param_s);
6432// CHECK: @llvm.ppc.altivec.lvx
6433// CHECK: @llvm.ppc.altivec.lvsl
6434// CHECK: store <8 x i16> zeroinitializer
6435// CHECK: @llvm.ppc.altivec.vperm
6436// CHECK-LE: @llvm.ppc.altivec.lvx
6437// CHECK-LE: @llvm.ppc.altivec.lvsl
6438// CHECK-LE: store <8 x i16> zeroinitializer
6439// CHECK-LE: @llvm.ppc.altivec.vperm
6440
6441  res_vs  = vec_lvrx(0, &vs);
6442// CHECK: @llvm.ppc.altivec.lvx
6443// CHECK: @llvm.ppc.altivec.lvsl
6444// CHECK: store <8 x i16> zeroinitializer
6445// CHECK: @llvm.ppc.altivec.vperm
6446// CHECK-LE: @llvm.ppc.altivec.lvx
6447// CHECK-LE: @llvm.ppc.altivec.lvsl
6448// CHECK-LE: store <8 x i16> zeroinitializer
6449// CHECK-LE: @llvm.ppc.altivec.vperm
6450
6451  res_vus = vec_lvrx(0, &param_us);
6452// CHECK: @llvm.ppc.altivec.lvx
6453// CHECK: @llvm.ppc.altivec.lvsl
6454// CHECK: store <8 x i16> zeroinitializer
6455// CHECK: @llvm.ppc.altivec.vperm
6456// CHECK-LE: @llvm.ppc.altivec.lvx
6457// CHECK-LE: @llvm.ppc.altivec.lvsl
6458// CHECK-LE: store <8 x i16> zeroinitializer
6459// CHECK-LE: @llvm.ppc.altivec.vperm
6460
6461  res_vus = vec_lvrx(0, &vus);
6462// CHECK: @llvm.ppc.altivec.lvx
6463// CHECK: @llvm.ppc.altivec.lvsl
6464// CHECK: store <8 x i16> zeroinitializer
6465// CHECK: @llvm.ppc.altivec.vperm
6466// CHECK-LE: @llvm.ppc.altivec.lvx
6467// CHECK-LE: @llvm.ppc.altivec.lvsl
6468// CHECK-LE: store <8 x i16> zeroinitializer
6469// CHECK-LE: @llvm.ppc.altivec.vperm
6470
6471  res_vbs = vec_lvrx(0, &vbs);
6472// CHECK: store <8 x i16> zeroinitializer
6473// CHECK: @llvm.ppc.altivec.lvx
6474// CHECK: @llvm.ppc.altivec.lvsl
6475// CHECK: @llvm.ppc.altivec.vperm
6476// CHECK-LE: store <8 x i16> zeroinitializer
6477// CHECK-LE: @llvm.ppc.altivec.lvx
6478// CHECK-LE: @llvm.ppc.altivec.lvsl
6479// CHECK-LE: @llvm.ppc.altivec.vperm
6480
6481  res_vp  = vec_lvrx(0, &vp);
6482// CHECK: store <8 x i16> zeroinitializer
6483// CHECK: @llvm.ppc.altivec.lvx
6484// CHECK: @llvm.ppc.altivec.lvsl
6485// CHECK: @llvm.ppc.altivec.vperm
6486// CHECK-LE: store <8 x i16> zeroinitializer
6487// CHECK-LE: @llvm.ppc.altivec.lvx
6488// CHECK-LE: @llvm.ppc.altivec.lvsl
6489// CHECK-LE: @llvm.ppc.altivec.vperm
6490
6491  res_vi  = vec_lvrx(0, &param_i);
6492// CHECK: @llvm.ppc.altivec.lvx
6493// CHECK: @llvm.ppc.altivec.lvsl
6494// CHECK: store <4 x i32> zeroinitializer
6495// CHECK: @llvm.ppc.altivec.vperm
6496// CHECK-LE: @llvm.ppc.altivec.lvx
6497// CHECK-LE: @llvm.ppc.altivec.lvsl
6498// CHECK-LE: store <4 x i32> zeroinitializer
6499// CHECK-LE: @llvm.ppc.altivec.vperm
6500
6501  res_vi  = vec_lvrx(0, &vi);
6502// CHECK: @llvm.ppc.altivec.lvx
6503// CHECK: @llvm.ppc.altivec.lvsl
6504// CHECK: store <4 x i32> zeroinitializer
6505// CHECK: @llvm.ppc.altivec.vperm
6506// CHECK-LE: @llvm.ppc.altivec.lvx
6507// CHECK-LE: @llvm.ppc.altivec.lvsl
6508// CHECK-LE: store <4 x i32> zeroinitializer
6509// CHECK-LE: @llvm.ppc.altivec.vperm
6510
6511  res_vui = vec_lvrx(0, &param_ui);
6512// CHECK: @llvm.ppc.altivec.lvx
6513// CHECK: @llvm.ppc.altivec.lvsl
6514// CHECK: store <4 x i32> zeroinitializer
6515// CHECK: @llvm.ppc.altivec.vperm
6516// CHECK-LE: @llvm.ppc.altivec.lvx
6517// CHECK-LE: @llvm.ppc.altivec.lvsl
6518// CHECK-LE: store <4 x i32> zeroinitializer
6519// CHECK-LE: @llvm.ppc.altivec.vperm
6520
6521  res_vui = vec_lvrx(0, &vui);
6522// CHECK: @llvm.ppc.altivec.lvx
6523// CHECK: @llvm.ppc.altivec.lvsl
6524// CHECK: store <4 x i32> zeroinitializer
6525// CHECK: @llvm.ppc.altivec.vperm
6526// CHECK-LE: @llvm.ppc.altivec.lvx
6527// CHECK-LE: @llvm.ppc.altivec.lvsl
6528// CHECK-LE: store <4 x i32> zeroinitializer
6529// CHECK-LE: @llvm.ppc.altivec.vperm
6530
6531  res_vbi = vec_lvrx(0, &vbi);
6532// CHECK: store <4 x i32> zeroinitializer
6533// CHECK: @llvm.ppc.altivec.lvx
6534// CHECK: @llvm.ppc.altivec.lvsl
6535// CHECK: @llvm.ppc.altivec.vperm
6536// CHECK-LE: store <4 x i32> zeroinitializer
6537// CHECK-LE: @llvm.ppc.altivec.lvx
6538// CHECK-LE: @llvm.ppc.altivec.lvsl
6539// CHECK-LE: @llvm.ppc.altivec.vperm
6540
6541  res_vf  = vec_lvrx(0, &vf);
6542// CHECK: @llvm.ppc.altivec.lvx
6543// CHECK: @llvm.ppc.altivec.lvsl
6544// CHECK: store <4 x float> zeroinitializer
6545// CHECK: @llvm.ppc.altivec.vperm
6546// CHECK-LE: @llvm.ppc.altivec.lvx
6547// CHECK-LE: @llvm.ppc.altivec.lvsl
6548// CHECK-LE: store <4 x float> zeroinitializer
6549// CHECK-LE: @llvm.ppc.altivec.vperm
6550
6551  /* vec_lvrxl */
6552  res_vsc = vec_lvrxl(0, &param_sc);
6553// CHECK: @llvm.ppc.altivec.lvxl
6554// CHECK: @llvm.ppc.altivec.lvsl
6555// CHECK: store <16 x i8> zeroinitializer
6556// CHECK: @llvm.ppc.altivec.vperm
6557// CHECK-LE: @llvm.ppc.altivec.lvxl
6558// CHECK-LE: @llvm.ppc.altivec.lvsl
6559// CHECK-LE: store <16 x i8> zeroinitializer
6560// CHECK-LE: @llvm.ppc.altivec.vperm
6561
6562  res_vsc = vec_lvrxl(0, &vsc);
6563// CHECK: @llvm.ppc.altivec.lvxl
6564// CHECK: @llvm.ppc.altivec.lvsl
6565// CHECK: store <16 x i8> zeroinitializer
6566// CHECK: @llvm.ppc.altivec.vperm
6567// CHECK-LE: @llvm.ppc.altivec.lvxl
6568// CHECK-LE: @llvm.ppc.altivec.lvsl
6569// CHECK-LE: store <16 x i8> zeroinitializer
6570// CHECK-LE: @llvm.ppc.altivec.vperm
6571
6572  res_vuc = vec_lvrxl(0, &param_uc);
6573// CHECK: @llvm.ppc.altivec.lvxl
6574// CHECK: @llvm.ppc.altivec.lvsl
6575// CHECK: store <16 x i8> zeroinitializer
6576// CHECK: @llvm.ppc.altivec.vperm
6577// CHECK-LE: @llvm.ppc.altivec.lvxl
6578// CHECK-LE: @llvm.ppc.altivec.lvsl
6579// CHECK-LE: store <16 x i8> zeroinitializer
6580// CHECK-LE: @llvm.ppc.altivec.vperm
6581
6582  res_vuc = vec_lvrxl(0, &vuc);
6583// CHECK: @llvm.ppc.altivec.lvxl
6584// CHECK: @llvm.ppc.altivec.lvsl
6585// CHECK: store <16 x i8> zeroinitializer
6586// CHECK: @llvm.ppc.altivec.vperm
6587// CHECK-LE: @llvm.ppc.altivec.lvxl
6588// CHECK-LE: @llvm.ppc.altivec.lvsl
6589// CHECK-LE: store <16 x i8> zeroinitializer
6590// CHECK-LE: @llvm.ppc.altivec.vperm
6591
6592  res_vbc = vec_lvrxl(0, &vbc);
6593// CHECK: store <16 x i8> zeroinitializer
6594// CHECK: @llvm.ppc.altivec.lvxl
6595// CHECK: @llvm.ppc.altivec.lvsl
6596// CHECK: @llvm.ppc.altivec.vperm
6597// CHECK-LE: store <16 x i8> zeroinitializer
6598// CHECK-LE: @llvm.ppc.altivec.lvxl
6599// CHECK-LE: @llvm.ppc.altivec.lvsl
6600// CHECK-LE: @llvm.ppc.altivec.vperm
6601
6602  res_vs  = vec_lvrxl(0, &param_s);
6603// CHECK: @llvm.ppc.altivec.lvxl
6604// CHECK: @llvm.ppc.altivec.lvsl
6605// CHECK: store <8 x i16> zeroinitializer
6606// CHECK: @llvm.ppc.altivec.vperm
6607// CHECK-LE: @llvm.ppc.altivec.lvxl
6608// CHECK-LE: @llvm.ppc.altivec.lvsl
6609// CHECK-LE: store <8 x i16> zeroinitializer
6610// CHECK-LE: @llvm.ppc.altivec.vperm
6611
6612  res_vs  = vec_lvrxl(0, &vs);
6613// CHECK: @llvm.ppc.altivec.lvxl
6614// CHECK: @llvm.ppc.altivec.lvsl
6615// CHECK: store <8 x i16> zeroinitializer
6616// CHECK: @llvm.ppc.altivec.vperm
6617// CHECK-LE: @llvm.ppc.altivec.lvxl
6618// CHECK-LE: @llvm.ppc.altivec.lvsl
6619// CHECK-LE: store <8 x i16> zeroinitializer
6620// CHECK-LE: @llvm.ppc.altivec.vperm
6621
6622  res_vus = vec_lvrxl(0, &param_us);
6623// CHECK: @llvm.ppc.altivec.lvxl
6624// CHECK: @llvm.ppc.altivec.lvsl
6625// CHECK: store <8 x i16> zeroinitializer
6626// CHECK: @llvm.ppc.altivec.vperm
6627// CHECK-LE: @llvm.ppc.altivec.lvxl
6628// CHECK-LE: @llvm.ppc.altivec.lvsl
6629// CHECK-LE: store <8 x i16> zeroinitializer
6630// CHECK-LE: @llvm.ppc.altivec.vperm
6631
6632  res_vus = vec_lvrxl(0, &vus);
6633// CHECK: @llvm.ppc.altivec.lvxl
6634// CHECK: @llvm.ppc.altivec.lvsl
6635// CHECK: store <8 x i16> zeroinitializer
6636// CHECK: @llvm.ppc.altivec.vperm
6637// CHECK-LE: @llvm.ppc.altivec.lvxl
6638// CHECK-LE: @llvm.ppc.altivec.lvsl
6639// CHECK-LE: store <8 x i16> zeroinitializer
6640// CHECK-LE: @llvm.ppc.altivec.vperm
6641
6642  res_vbs = vec_lvrxl(0, &vbs);
6643// CHECK: store <8 x i16> zeroinitializer
6644// CHECK: @llvm.ppc.altivec.lvxl
6645// CHECK: @llvm.ppc.altivec.lvsl
6646// CHECK: @llvm.ppc.altivec.vperm
6647// CHECK-LE: store <8 x i16> zeroinitializer
6648// CHECK-LE: @llvm.ppc.altivec.lvxl
6649// CHECK-LE: @llvm.ppc.altivec.lvsl
6650// CHECK-LE: @llvm.ppc.altivec.vperm
6651
6652  res_vp  = vec_lvrxl(0, &vp);
6653// CHECK: store <8 x i16> zeroinitializer
6654// CHECK: @llvm.ppc.altivec.lvxl
6655// CHECK: @llvm.ppc.altivec.lvsl
6656// CHECK: @llvm.ppc.altivec.vperm
6657// CHECK-LE: store <8 x i16> zeroinitializer
6658// CHECK-LE: @llvm.ppc.altivec.lvxl
6659// CHECK-LE: @llvm.ppc.altivec.lvsl
6660// CHECK-LE: @llvm.ppc.altivec.vperm
6661
6662  res_vi  = vec_lvrxl(0, &param_i);
6663// CHECK: @llvm.ppc.altivec.lvxl
6664// CHECK: @llvm.ppc.altivec.lvsl
6665// CHECK: store <4 x i32> zeroinitializer
6666// CHECK: @llvm.ppc.altivec.vperm
6667// CHECK-LE: @llvm.ppc.altivec.lvxl
6668// CHECK-LE: @llvm.ppc.altivec.lvsl
6669// CHECK-LE: store <4 x i32> zeroinitializer
6670// CHECK-LE: @llvm.ppc.altivec.vperm
6671
6672  res_vi  = vec_lvrxl(0, &vi);
6673// CHECK: @llvm.ppc.altivec.lvxl
6674// CHECK: @llvm.ppc.altivec.lvsl
6675// CHECK: store <4 x i32> zeroinitializer
6676// CHECK: @llvm.ppc.altivec.vperm
6677// CHECK-LE: @llvm.ppc.altivec.lvxl
6678// CHECK-LE: @llvm.ppc.altivec.lvsl
6679// CHECK-LE: store <4 x i32> zeroinitializer
6680// CHECK-LE: @llvm.ppc.altivec.vperm
6681
6682  res_vui = vec_lvrxl(0, &param_ui);
6683// CHECK: @llvm.ppc.altivec.lvxl
6684// CHECK: @llvm.ppc.altivec.lvsl
6685// CHECK: store <4 x i32> zeroinitializer
6686// CHECK: @llvm.ppc.altivec.vperm
6687// CHECK-LE: @llvm.ppc.altivec.lvxl
6688// CHECK-LE: @llvm.ppc.altivec.lvsl
6689// CHECK-LE: store <4 x i32> zeroinitializer
6690// CHECK-LE: @llvm.ppc.altivec.vperm
6691
6692  res_vui = vec_lvrxl(0, &vui);
6693// CHECK: @llvm.ppc.altivec.lvxl
6694// CHECK: @llvm.ppc.altivec.lvsl
6695// CHECK: store <4 x i32> zeroinitializer
6696// CHECK: @llvm.ppc.altivec.vperm
6697// CHECK-LE: @llvm.ppc.altivec.lvxl
6698// CHECK-LE: @llvm.ppc.altivec.lvsl
6699// CHECK-LE: store <4 x i32> zeroinitializer
6700// CHECK-LE: @llvm.ppc.altivec.vperm
6701
6702  res_vbi = vec_lvrxl(0, &vbi);
6703// CHECK: store <4 x i32> zeroinitializer
6704// CHECK: @llvm.ppc.altivec.lvxl
6705// CHECK: @llvm.ppc.altivec.lvsl
6706// CHECK: @llvm.ppc.altivec.vperm
6707// CHECK-LE: store <4 x i32> zeroinitializer
6708// CHECK-LE: @llvm.ppc.altivec.lvxl
6709// CHECK-LE: @llvm.ppc.altivec.lvsl
6710// CHECK-LE: @llvm.ppc.altivec.vperm
6711
6712  res_vf  = vec_lvrxl(0, &vf);
6713// CHECK: @llvm.ppc.altivec.lvxl
6714// CHECK: @llvm.ppc.altivec.lvsl
6715// CHECK: store <4 x float> zeroinitializer
6716// CHECK: @llvm.ppc.altivec.vperm
6717// CHECK-LE: @llvm.ppc.altivec.lvxl
6718// CHECK-LE: @llvm.ppc.altivec.lvsl
6719// CHECK-LE: store <4 x float> zeroinitializer
6720// CHECK-LE: @llvm.ppc.altivec.vperm
6721
6722  /* vec_stvlx */
6723  vec_stvlx(vsc, 0, &param_sc);
6724// CHECK: @llvm.ppc.altivec.lvx
6725// CHECK: @llvm.ppc.altivec.lvsl
6726// CHECK: store <16 x i8> zeroinitializer
6727// CHECK: @llvm.ppc.altivec.vperm
6728// CHECK: @llvm.ppc.altivec.lvsr
6729// CHECK: @llvm.ppc.altivec.vperm
6730// CHECK: @llvm.ppc.altivec.stvx
6731// CHECK-LE: @llvm.ppc.altivec.lvx
6732// CHECK-LE: @llvm.ppc.altivec.lvsl
6733// CHECK-LE: store <16 x i8> zeroinitializer
6734// CHECK-LE: @llvm.ppc.altivec.vperm
6735// CHECK-LE: @llvm.ppc.altivec.lvsr
6736// CHECK-LE: @llvm.ppc.altivec.vperm
6737// CHECK-LE: @llvm.ppc.altivec.stvx
6738
6739  vec_stvlx(vsc, 0, &vsc);
6740// CHECK: @llvm.ppc.altivec.lvx
6741// CHECK: @llvm.ppc.altivec.lvsl
6742// CHECK: store <16 x i8> zeroinitializer
6743// CHECK: @llvm.ppc.altivec.vperm
6744// CHECK: @llvm.ppc.altivec.lvsr
6745// CHECK: @llvm.ppc.altivec.vperm
6746// CHECK: @llvm.ppc.altivec.stvx
6747// CHECK-LE: @llvm.ppc.altivec.lvx
6748// CHECK-LE: @llvm.ppc.altivec.lvsl
6749// CHECK-LE: store <16 x i8> zeroinitializer
6750// CHECK-LE: @llvm.ppc.altivec.vperm
6751// CHECK-LE: @llvm.ppc.altivec.lvsr
6752// CHECK-LE: @llvm.ppc.altivec.vperm
6753// CHECK-LE: @llvm.ppc.altivec.stvx
6754
6755  vec_stvlx(vuc, 0, &param_uc);
6756// CHECK: @llvm.ppc.altivec.lvx
6757// CHECK: @llvm.ppc.altivec.lvsl
6758// CHECK: store <16 x i8> zeroinitializer
6759// CHECK: @llvm.ppc.altivec.vperm
6760// CHECK: @llvm.ppc.altivec.lvsr
6761// CHECK: @llvm.ppc.altivec.vperm
6762// CHECK: @llvm.ppc.altivec.stvx
6763// CHECK-LE: @llvm.ppc.altivec.lvx
6764// CHECK-LE: @llvm.ppc.altivec.lvsl
6765// CHECK-LE: store <16 x i8> zeroinitializer
6766// CHECK-LE: @llvm.ppc.altivec.vperm
6767// CHECK-LE: @llvm.ppc.altivec.lvsr
6768// CHECK-LE: @llvm.ppc.altivec.vperm
6769// CHECK-LE: @llvm.ppc.altivec.stvx
6770
6771  vec_stvlx(vuc, 0, &vuc);
6772// CHECK: @llvm.ppc.altivec.lvx
6773// CHECK: @llvm.ppc.altivec.lvsl
6774// CHECK: store <16 x i8> zeroinitializer
6775// CHECK: @llvm.ppc.altivec.vperm
6776// CHECK: @llvm.ppc.altivec.lvsr
6777// CHECK: @llvm.ppc.altivec.vperm
6778// CHECK: @llvm.ppc.altivec.stvx
6779// CHECK-LE: @llvm.ppc.altivec.lvx
6780// CHECK-LE: @llvm.ppc.altivec.lvsl
6781// CHECK-LE: store <16 x i8> zeroinitializer
6782// CHECK-LE: @llvm.ppc.altivec.vperm
6783// CHECK-LE: @llvm.ppc.altivec.lvsr
6784// CHECK-LE: @llvm.ppc.altivec.vperm
6785// CHECK-LE: @llvm.ppc.altivec.stvx
6786
6787  vec_stvlx(vbc, 0, &vbc);
6788// CHECK: store <16 x i8> zeroinitializer
6789// CHECK: @llvm.ppc.altivec.lvx
6790// CHECK: @llvm.ppc.altivec.lvsl
6791// CHECK: @llvm.ppc.altivec.vperm
6792// CHECK: @llvm.ppc.altivec.lvsr
6793// CHECK: @llvm.ppc.altivec.vperm
6794// CHECK: @llvm.ppc.altivec.stvx
6795// CHECK-LE: store <16 x i8> zeroinitializer
6796// CHECK-LE: @llvm.ppc.altivec.lvx
6797// CHECK-LE: @llvm.ppc.altivec.lvsl
6798// CHECK-LE: @llvm.ppc.altivec.vperm
6799// CHECK-LE: @llvm.ppc.altivec.lvsr
6800// CHECK-LE: @llvm.ppc.altivec.vperm
6801// CHECK-LE: @llvm.ppc.altivec.stvx
6802
6803  vec_stvlx(vs, 0, &param_s);
6804// CHECK: @llvm.ppc.altivec.lvx
6805// CHECK: @llvm.ppc.altivec.lvsl
6806// CHECK: store <8 x i16> zeroinitializer
6807// CHECK: @llvm.ppc.altivec.vperm
6808// CHECK: @llvm.ppc.altivec.lvsr
6809// CHECK: @llvm.ppc.altivec.vperm
6810// CHECK: @llvm.ppc.altivec.stvx
6811// CHECK-LE: @llvm.ppc.altivec.lvx
6812// CHECK-LE: @llvm.ppc.altivec.lvsl
6813// CHECK-LE: store <8 x i16> zeroinitializer
6814// CHECK-LE: @llvm.ppc.altivec.vperm
6815// CHECK-LE: @llvm.ppc.altivec.lvsr
6816// CHECK-LE: @llvm.ppc.altivec.vperm
6817// CHECK-LE: @llvm.ppc.altivec.stvx
6818
6819  vec_stvlx(vs, 0, &vs);
6820// CHECK: @llvm.ppc.altivec.lvx
6821// CHECK: @llvm.ppc.altivec.lvsl
6822// CHECK: store <8 x i16> zeroinitializer
6823// CHECK: @llvm.ppc.altivec.vperm
6824// CHECK: @llvm.ppc.altivec.lvsr
6825// CHECK: @llvm.ppc.altivec.vperm
6826// CHECK: @llvm.ppc.altivec.stvx
6827// CHECK-LE: @llvm.ppc.altivec.lvx
6828// CHECK-LE: @llvm.ppc.altivec.lvsl
6829// CHECK-LE: store <8 x i16> zeroinitializer
6830// CHECK-LE: @llvm.ppc.altivec.vperm
6831// CHECK-LE: @llvm.ppc.altivec.lvsr
6832// CHECK-LE: @llvm.ppc.altivec.vperm
6833// CHECK-LE: @llvm.ppc.altivec.stvx
6834
6835  vec_stvlx(vus, 0, &param_us);
6836// CHECK: @llvm.ppc.altivec.lvx
6837// CHECK: @llvm.ppc.altivec.lvsl
6838// CHECK: store <8 x i16> zeroinitializer
6839// CHECK: @llvm.ppc.altivec.vperm
6840// CHECK: @llvm.ppc.altivec.lvsr
6841// CHECK: @llvm.ppc.altivec.vperm
6842// CHECK: @llvm.ppc.altivec.stvx
6843// CHECK-LE: @llvm.ppc.altivec.lvx
6844// CHECK-LE: @llvm.ppc.altivec.lvsl
6845// CHECK-LE: store <8 x i16> zeroinitializer
6846// CHECK-LE: @llvm.ppc.altivec.vperm
6847// CHECK-LE: @llvm.ppc.altivec.lvsr
6848// CHECK-LE: @llvm.ppc.altivec.vperm
6849// CHECK-LE: @llvm.ppc.altivec.stvx
6850
6851  vec_stvlx(vus, 0, &vus);
6852// CHECK: @llvm.ppc.altivec.lvx
6853// CHECK: @llvm.ppc.altivec.lvsl
6854// CHECK: store <8 x i16> zeroinitializer
6855// CHECK: @llvm.ppc.altivec.vperm
6856// CHECK: @llvm.ppc.altivec.lvsr
6857// CHECK: @llvm.ppc.altivec.vperm
6858// CHECK: @llvm.ppc.altivec.stvx
6859// CHECK-LE: @llvm.ppc.altivec.lvx
6860// CHECK-LE: @llvm.ppc.altivec.lvsl
6861// CHECK-LE: store <8 x i16> zeroinitializer
6862// CHECK-LE: @llvm.ppc.altivec.vperm
6863// CHECK-LE: @llvm.ppc.altivec.lvsr
6864// CHECK-LE: @llvm.ppc.altivec.vperm
6865// CHECK-LE: @llvm.ppc.altivec.stvx
6866
6867  vec_stvlx(vbs, 0, &vbs);
6868// CHECK: store <8 x i16> zeroinitializer
6869// CHECK: @llvm.ppc.altivec.lvx
6870// CHECK: @llvm.ppc.altivec.lvsl
6871// CHECK: @llvm.ppc.altivec.vperm
6872// CHECK: @llvm.ppc.altivec.lvsr
6873// CHECK: @llvm.ppc.altivec.vperm
6874// CHECK: @llvm.ppc.altivec.stvx
6875// CHECK-LE: store <8 x i16> zeroinitializer
6876// CHECK-LE: @llvm.ppc.altivec.lvx
6877// CHECK-LE: @llvm.ppc.altivec.lvsl
6878// CHECK-LE: @llvm.ppc.altivec.vperm
6879// CHECK-LE: @llvm.ppc.altivec.lvsr
6880// CHECK-LE: @llvm.ppc.altivec.vperm
6881// CHECK-LE: @llvm.ppc.altivec.stvx
6882
6883  vec_stvlx(vp, 0, &vp);
6884// CHECK: store <8 x i16> zeroinitializer
6885// CHECK: @llvm.ppc.altivec.lvx
6886// CHECK: @llvm.ppc.altivec.lvsl
6887// CHECK: @llvm.ppc.altivec.vperm
6888// CHECK: @llvm.ppc.altivec.lvsr
6889// CHECK: @llvm.ppc.altivec.vperm
6890// CHECK: @llvm.ppc.altivec.stvx
6891// CHECK-LE: store <8 x i16> zeroinitializer
6892// CHECK-LE: @llvm.ppc.altivec.lvx
6893// CHECK-LE: @llvm.ppc.altivec.lvsl
6894// CHECK-LE: @llvm.ppc.altivec.vperm
6895// CHECK-LE: @llvm.ppc.altivec.lvsr
6896// CHECK-LE: @llvm.ppc.altivec.vperm
6897// CHECK-LE: @llvm.ppc.altivec.stvx
6898
6899  vec_stvlx(vi, 0, &param_i);
6900// CHECK: @llvm.ppc.altivec.lvx
6901// CHECK: @llvm.ppc.altivec.lvsl
6902// CHECK: store <4 x i32> zeroinitializer
6903// CHECK: @llvm.ppc.altivec.vperm
6904// CHECK: @llvm.ppc.altivec.lvsr
6905// CHECK: @llvm.ppc.altivec.vperm
6906// CHECK: @llvm.ppc.altivec.stvx
6907// CHECK-LE: @llvm.ppc.altivec.lvx
6908// CHECK-LE: @llvm.ppc.altivec.lvsl
6909// CHECK-LE: store <4 x i32> zeroinitializer
6910// CHECK-LE: @llvm.ppc.altivec.vperm
6911// CHECK-LE: @llvm.ppc.altivec.lvsr
6912// CHECK-LE: @llvm.ppc.altivec.vperm
6913// CHECK-LE: @llvm.ppc.altivec.stvx
6914
6915  vec_stvlx(vi, 0, &vi);
6916// CHECK: @llvm.ppc.altivec.lvx
6917// CHECK: @llvm.ppc.altivec.lvsl
6918// CHECK: store <4 x i32> zeroinitializer
6919// CHECK: @llvm.ppc.altivec.vperm
6920// CHECK: @llvm.ppc.altivec.lvsr
6921// CHECK: @llvm.ppc.altivec.vperm
6922// CHECK: @llvm.ppc.altivec.stvx
6923// CHECK-LE: @llvm.ppc.altivec.lvx
6924// CHECK-LE: @llvm.ppc.altivec.lvsl
6925// CHECK-LE: store <4 x i32> zeroinitializer
6926// CHECK-LE: @llvm.ppc.altivec.vperm
6927// CHECK-LE: @llvm.ppc.altivec.lvsr
6928// CHECK-LE: @llvm.ppc.altivec.vperm
6929// CHECK-LE: @llvm.ppc.altivec.stvx
6930
6931  vec_stvlx(vui, 0, &param_ui);
6932// CHECK: @llvm.ppc.altivec.lvx
6933// CHECK: @llvm.ppc.altivec.lvsl
6934// CHECK: store <4 x i32> zeroinitializer
6935// CHECK: @llvm.ppc.altivec.vperm
6936// CHECK: @llvm.ppc.altivec.lvsr
6937// CHECK: @llvm.ppc.altivec.vperm
6938// CHECK: @llvm.ppc.altivec.stvx
6939// CHECK-LE: @llvm.ppc.altivec.lvx
6940// CHECK-LE: @llvm.ppc.altivec.lvsl
6941// CHECK-LE: store <4 x i32> zeroinitializer
6942// CHECK-LE: @llvm.ppc.altivec.vperm
6943// CHECK-LE: @llvm.ppc.altivec.lvsr
6944// CHECK-LE: @llvm.ppc.altivec.vperm
6945// CHECK-LE: @llvm.ppc.altivec.stvx
6946
6947  vec_stvlx(vui, 0, &vui);
6948// CHECK: @llvm.ppc.altivec.lvx
6949// CHECK: @llvm.ppc.altivec.lvsl
6950// CHECK: store <4 x i32> zeroinitializer
6951// CHECK: @llvm.ppc.altivec.vperm
6952// CHECK: @llvm.ppc.altivec.lvsr
6953// CHECK: @llvm.ppc.altivec.vperm
6954// CHECK: @llvm.ppc.altivec.stvx
6955// CHECK-LE: @llvm.ppc.altivec.lvx
6956// CHECK-LE: @llvm.ppc.altivec.lvsl
6957// CHECK-LE: store <4 x i32> zeroinitializer
6958// CHECK-LE: @llvm.ppc.altivec.vperm
6959// CHECK-LE: @llvm.ppc.altivec.lvsr
6960// CHECK-LE: @llvm.ppc.altivec.vperm
6961// CHECK-LE: @llvm.ppc.altivec.stvx
6962
6963  vec_stvlx(vbi, 0, &vbi);
6964// CHECK: store <4 x i32> zeroinitializer
6965// CHECK: @llvm.ppc.altivec.lvx
6966// CHECK: @llvm.ppc.altivec.lvsl
6967// CHECK: @llvm.ppc.altivec.vperm
6968// CHECK: @llvm.ppc.altivec.lvsr
6969// CHECK: @llvm.ppc.altivec.vperm
6970// CHECK: @llvm.ppc.altivec.stvx
6971// CHECK-LE: store <4 x i32> zeroinitializer
6972// CHECK-LE: @llvm.ppc.altivec.lvx
6973// CHECK-LE: @llvm.ppc.altivec.lvsl
6974// CHECK-LE: @llvm.ppc.altivec.vperm
6975// CHECK-LE: @llvm.ppc.altivec.lvsr
6976// CHECK-LE: @llvm.ppc.altivec.vperm
6977// CHECK-LE: @llvm.ppc.altivec.stvx
6978
6979  vec_stvlx(vf, 0, &vf);
6980// CHECK: @llvm.ppc.altivec.lvx
6981// CHECK: @llvm.ppc.altivec.lvsl
6982// CHECK: store <4 x float> zeroinitializer
6983// CHECK: @llvm.ppc.altivec.vperm
6984// CHECK: @llvm.ppc.altivec.lvsr
6985// CHECK: @llvm.ppc.altivec.vperm
6986// CHECK: @llvm.ppc.altivec.stvx
6987// CHECK-LE: @llvm.ppc.altivec.lvx
6988// CHECK-LE: @llvm.ppc.altivec.lvsl
6989// CHECK-LE: store <4 x float> zeroinitializer
6990// CHECK-LE: @llvm.ppc.altivec.vperm
6991// CHECK-LE: @llvm.ppc.altivec.lvsr
6992// CHECK-LE: @llvm.ppc.altivec.vperm
6993// CHECK-LE: @llvm.ppc.altivec.stvx
6994
6995  /* vec_stvlxl */
6996  vec_stvlxl(vsc, 0, &param_sc);
6997// CHECK: @llvm.ppc.altivec.lvx
6998// CHECK: @llvm.ppc.altivec.lvsl
6999// CHECK: store <16 x i8> zeroinitializer
7000// CHECK: @llvm.ppc.altivec.vperm
7001// CHECK: @llvm.ppc.altivec.lvsr
7002// CHECK: @llvm.ppc.altivec.vperm
7003// CHECK: @llvm.ppc.altivec.stvxl
7004// CHECK-LE: @llvm.ppc.altivec.lvx
7005// CHECK-LE: @llvm.ppc.altivec.lvsl
7006// CHECK-LE: store <16 x i8> zeroinitializer
7007// CHECK-LE: @llvm.ppc.altivec.vperm
7008// CHECK-LE: @llvm.ppc.altivec.lvsr
7009// CHECK-LE: @llvm.ppc.altivec.vperm
7010// CHECK-LE: @llvm.ppc.altivec.stvxl
7011
7012  vec_stvlxl(vsc, 0, &vsc);
7013// CHECK: @llvm.ppc.altivec.lvx
7014// CHECK: @llvm.ppc.altivec.lvsl
7015// CHECK: store <16 x i8> zeroinitializer
7016// CHECK: @llvm.ppc.altivec.vperm
7017// CHECK: @llvm.ppc.altivec.lvsr
7018// CHECK: @llvm.ppc.altivec.vperm
7019// CHECK: @llvm.ppc.altivec.stvxl
7020// CHECK-LE: @llvm.ppc.altivec.lvx
7021// CHECK-LE: @llvm.ppc.altivec.lvsl
7022// CHECK-LE: store <16 x i8> zeroinitializer
7023// CHECK-LE: @llvm.ppc.altivec.vperm
7024// CHECK-LE: @llvm.ppc.altivec.lvsr
7025// CHECK-LE: @llvm.ppc.altivec.vperm
7026// CHECK-LE: @llvm.ppc.altivec.stvxl
7027
7028  vec_stvlxl(vuc, 0, &param_uc);
7029// CHECK: @llvm.ppc.altivec.lvx
7030// CHECK: @llvm.ppc.altivec.lvsl
7031// CHECK: store <16 x i8> zeroinitializer
7032// CHECK: @llvm.ppc.altivec.vperm
7033// CHECK: @llvm.ppc.altivec.lvsr
7034// CHECK: @llvm.ppc.altivec.vperm
7035// CHECK: @llvm.ppc.altivec.stvxl
7036// CHECK-LE: @llvm.ppc.altivec.lvx
7037// CHECK-LE: @llvm.ppc.altivec.lvsl
7038// CHECK-LE: store <16 x i8> zeroinitializer
7039// CHECK-LE: @llvm.ppc.altivec.vperm
7040// CHECK-LE: @llvm.ppc.altivec.lvsr
7041// CHECK-LE: @llvm.ppc.altivec.vperm
7042// CHECK-LE: @llvm.ppc.altivec.stvxl
7043
7044  vec_stvlxl(vuc, 0, &vuc);
7045// CHECK: @llvm.ppc.altivec.lvx
7046// CHECK: @llvm.ppc.altivec.lvsl
7047// CHECK: store <16 x i8> zeroinitializer
7048// CHECK: @llvm.ppc.altivec.vperm
7049// CHECK: @llvm.ppc.altivec.lvsr
7050// CHECK: @llvm.ppc.altivec.vperm
7051// CHECK: @llvm.ppc.altivec.stvxl
7052// CHECK-LE: @llvm.ppc.altivec.lvx
7053// CHECK-LE: @llvm.ppc.altivec.lvsl
7054// CHECK-LE: store <16 x i8> zeroinitializer
7055// CHECK-LE: @llvm.ppc.altivec.vperm
7056// CHECK-LE: @llvm.ppc.altivec.lvsr
7057// CHECK-LE: @llvm.ppc.altivec.vperm
7058// CHECK-LE: @llvm.ppc.altivec.stvxl
7059
7060  vec_stvlxl(vbc, 0, &vbc);
7061// CHECK: store <16 x i8> zeroinitializer
7062// CHECK: @llvm.ppc.altivec.lvx
7063// CHECK: @llvm.ppc.altivec.lvsl
7064// CHECK: @llvm.ppc.altivec.vperm
7065// CHECK: @llvm.ppc.altivec.lvsr
7066// CHECK: @llvm.ppc.altivec.vperm
7067// CHECK: @llvm.ppc.altivec.stvxl
7068// CHECK-LE: store <16 x i8> zeroinitializer
7069// CHECK-LE: @llvm.ppc.altivec.lvx
7070// CHECK-LE: @llvm.ppc.altivec.lvsl
7071// CHECK-LE: @llvm.ppc.altivec.vperm
7072// CHECK-LE: @llvm.ppc.altivec.lvsr
7073// CHECK-LE: @llvm.ppc.altivec.vperm
7074// CHECK-LE: @llvm.ppc.altivec.stvxl
7075
7076  vec_stvlxl(vs, 0, &param_s);
7077// CHECK: @llvm.ppc.altivec.lvx
7078// CHECK: @llvm.ppc.altivec.lvsl
7079// CHECK: store <8 x i16> zeroinitializer
7080// CHECK: @llvm.ppc.altivec.vperm
7081// CHECK: @llvm.ppc.altivec.lvsr
7082// CHECK: @llvm.ppc.altivec.vperm
7083// CHECK: @llvm.ppc.altivec.stvxl
7084// CHECK-LE: @llvm.ppc.altivec.lvx
7085// CHECK-LE: @llvm.ppc.altivec.lvsl
7086// CHECK-LE: store <8 x i16> zeroinitializer
7087// CHECK-LE: @llvm.ppc.altivec.vperm
7088// CHECK-LE: @llvm.ppc.altivec.lvsr
7089// CHECK-LE: @llvm.ppc.altivec.vperm
7090// CHECK-LE: @llvm.ppc.altivec.stvxl
7091
7092  vec_stvlxl(vs, 0, &vs);
7093// CHECK: @llvm.ppc.altivec.lvx
7094// CHECK: @llvm.ppc.altivec.lvsl
7095// CHECK: store <8 x i16> zeroinitializer
7096// CHECK: @llvm.ppc.altivec.vperm
7097// CHECK: @llvm.ppc.altivec.lvsr
7098// CHECK: @llvm.ppc.altivec.vperm
7099// CHECK: @llvm.ppc.altivec.stvxl
7100// CHECK-LE: @llvm.ppc.altivec.lvx
7101// CHECK-LE: @llvm.ppc.altivec.lvsl
7102// CHECK-LE: store <8 x i16> zeroinitializer
7103// CHECK-LE: @llvm.ppc.altivec.vperm
7104// CHECK-LE: @llvm.ppc.altivec.lvsr
7105// CHECK-LE: @llvm.ppc.altivec.vperm
7106// CHECK-LE: @llvm.ppc.altivec.stvxl
7107
7108  vec_stvlxl(vus, 0, &param_us);
7109// CHECK: @llvm.ppc.altivec.lvx
7110// CHECK: @llvm.ppc.altivec.lvsl
7111// CHECK: store <8 x i16> zeroinitializer
7112// CHECK: @llvm.ppc.altivec.vperm
7113// CHECK: @llvm.ppc.altivec.lvsr
7114// CHECK: @llvm.ppc.altivec.vperm
7115// CHECK: @llvm.ppc.altivec.stvxl
7116// CHECK-LE: @llvm.ppc.altivec.lvx
7117// CHECK-LE: @llvm.ppc.altivec.lvsl
7118// CHECK-LE: store <8 x i16> zeroinitializer
7119// CHECK-LE: @llvm.ppc.altivec.vperm
7120// CHECK-LE: @llvm.ppc.altivec.lvsr
7121// CHECK-LE: @llvm.ppc.altivec.vperm
7122// CHECK-LE: @llvm.ppc.altivec.stvxl
7123
7124  vec_stvlxl(vus, 0, &vus);
7125// CHECK: @llvm.ppc.altivec.lvx
7126// CHECK: @llvm.ppc.altivec.lvsl
7127// CHECK: store <8 x i16> zeroinitializer
7128// CHECK: @llvm.ppc.altivec.vperm
7129// CHECK: @llvm.ppc.altivec.lvsr
7130// CHECK: @llvm.ppc.altivec.vperm
7131// CHECK: @llvm.ppc.altivec.stvxl
7132// CHECK-LE: @llvm.ppc.altivec.lvx
7133// CHECK-LE: @llvm.ppc.altivec.lvsl
7134// CHECK-LE: store <8 x i16> zeroinitializer
7135// CHECK-LE: @llvm.ppc.altivec.vperm
7136// CHECK-LE: @llvm.ppc.altivec.lvsr
7137// CHECK-LE: @llvm.ppc.altivec.vperm
7138// CHECK-LE: @llvm.ppc.altivec.stvxl
7139
7140  vec_stvlxl(vbs, 0, &vbs);
7141// CHECK: store <8 x i16> zeroinitializer
7142// CHECK: @llvm.ppc.altivec.lvx
7143// CHECK: @llvm.ppc.altivec.lvsl
7144// CHECK: @llvm.ppc.altivec.vperm
7145// CHECK: @llvm.ppc.altivec.lvsr
7146// CHECK: @llvm.ppc.altivec.vperm
7147// CHECK: @llvm.ppc.altivec.stvxl
7148// CHECK-LE: store <8 x i16> zeroinitializer
7149// CHECK-LE: @llvm.ppc.altivec.lvx
7150// CHECK-LE: @llvm.ppc.altivec.lvsl
7151// CHECK-LE: @llvm.ppc.altivec.vperm
7152// CHECK-LE: @llvm.ppc.altivec.lvsr
7153// CHECK-LE: @llvm.ppc.altivec.vperm
7154// CHECK-LE: @llvm.ppc.altivec.stvxl
7155
7156  vec_stvlxl(vp, 0, &vp);
7157// CHECK: store <8 x i16> zeroinitializer
7158// CHECK: @llvm.ppc.altivec.lvx
7159// CHECK: @llvm.ppc.altivec.lvsl
7160// CHECK: @llvm.ppc.altivec.vperm
7161// CHECK: @llvm.ppc.altivec.lvsr
7162// CHECK: @llvm.ppc.altivec.vperm
7163// CHECK: @llvm.ppc.altivec.stvxl
7164// CHECK-LE: store <8 x i16> zeroinitializer
7165// CHECK-LE: @llvm.ppc.altivec.lvx
7166// CHECK-LE: @llvm.ppc.altivec.lvsl
7167// CHECK-LE: @llvm.ppc.altivec.vperm
7168// CHECK-LE: @llvm.ppc.altivec.lvsr
7169// CHECK-LE: @llvm.ppc.altivec.vperm
7170// CHECK-LE: @llvm.ppc.altivec.stvxl
7171
7172  vec_stvlxl(vi, 0, &param_i);
7173// CHECK: @llvm.ppc.altivec.lvx
7174// CHECK: @llvm.ppc.altivec.lvsl
7175// CHECK: store <4 x i32> zeroinitializer
7176// CHECK: @llvm.ppc.altivec.vperm
7177// CHECK: @llvm.ppc.altivec.lvsr
7178// CHECK: @llvm.ppc.altivec.vperm
7179// CHECK: @llvm.ppc.altivec.stvxl
7180// CHECK-LE: @llvm.ppc.altivec.lvx
7181// CHECK-LE: @llvm.ppc.altivec.lvsl
7182// CHECK-LE: store <4 x i32> zeroinitializer
7183// CHECK-LE: @llvm.ppc.altivec.vperm
7184// CHECK-LE: @llvm.ppc.altivec.lvsr
7185// CHECK-LE: @llvm.ppc.altivec.vperm
7186// CHECK-LE: @llvm.ppc.altivec.stvxl
7187
7188  vec_stvlxl(vi, 0, &vi);
7189// CHECK: @llvm.ppc.altivec.lvx
7190// CHECK: @llvm.ppc.altivec.lvsl
7191// CHECK: store <4 x i32> zeroinitializer
7192// CHECK: @llvm.ppc.altivec.vperm
7193// CHECK: @llvm.ppc.altivec.lvsr
7194// CHECK: @llvm.ppc.altivec.vperm
7195// CHECK: @llvm.ppc.altivec.stvxl
7196// CHECK-LE: @llvm.ppc.altivec.lvx
7197// CHECK-LE: @llvm.ppc.altivec.lvsl
7198// CHECK-LE: store <4 x i32> zeroinitializer
7199// CHECK-LE: @llvm.ppc.altivec.vperm
7200// CHECK-LE: @llvm.ppc.altivec.lvsr
7201// CHECK-LE: @llvm.ppc.altivec.vperm
7202// CHECK-LE: @llvm.ppc.altivec.stvxl
7203
7204  vec_stvlxl(vui, 0, &param_ui);
7205// CHECK: @llvm.ppc.altivec.lvx
7206// CHECK: @llvm.ppc.altivec.lvsl
7207// CHECK: store <4 x i32> zeroinitializer
7208// CHECK: @llvm.ppc.altivec.vperm
7209// CHECK: @llvm.ppc.altivec.lvsr
7210// CHECK: @llvm.ppc.altivec.vperm
7211// CHECK: @llvm.ppc.altivec.stvxl
7212// CHECK-LE: @llvm.ppc.altivec.lvx
7213// CHECK-LE: @llvm.ppc.altivec.lvsl
7214// CHECK-LE: store <4 x i32> zeroinitializer
7215// CHECK-LE: @llvm.ppc.altivec.vperm
7216// CHECK-LE: @llvm.ppc.altivec.lvsr
7217// CHECK-LE: @llvm.ppc.altivec.vperm
7218// CHECK-LE: @llvm.ppc.altivec.stvxl
7219
7220  vec_stvlxl(vui, 0, &vui);
7221// CHECK: @llvm.ppc.altivec.lvx
7222// CHECK: @llvm.ppc.altivec.lvsl
7223// CHECK: store <4 x i32> zeroinitializer
7224// CHECK: @llvm.ppc.altivec.vperm
7225// CHECK: @llvm.ppc.altivec.lvsr
7226// CHECK: @llvm.ppc.altivec.vperm
7227// CHECK: @llvm.ppc.altivec.stvxl
7228// CHECK-LE: @llvm.ppc.altivec.lvx
7229// CHECK-LE: @llvm.ppc.altivec.lvsl
7230// CHECK-LE: store <4 x i32> zeroinitializer
7231// CHECK-LE: @llvm.ppc.altivec.vperm
7232// CHECK-LE: @llvm.ppc.altivec.lvsr
7233// CHECK-LE: @llvm.ppc.altivec.vperm
7234// CHECK-LE: @llvm.ppc.altivec.stvxl
7235
7236  vec_stvlxl(vbi, 0, &vbi);
7237// CHECK: store <4 x i32> zeroinitializer
7238// CHECK: @llvm.ppc.altivec.lvx
7239// CHECK: @llvm.ppc.altivec.lvsl
7240// CHECK: @llvm.ppc.altivec.vperm
7241// CHECK: @llvm.ppc.altivec.lvsr
7242// CHECK: @llvm.ppc.altivec.vperm
7243// CHECK: @llvm.ppc.altivec.stvxl
7244// CHECK-LE: store <4 x i32> zeroinitializer
7245// CHECK-LE: @llvm.ppc.altivec.lvx
7246// CHECK-LE: @llvm.ppc.altivec.lvsl
7247// CHECK-LE: @llvm.ppc.altivec.vperm
7248// CHECK-LE: @llvm.ppc.altivec.lvsr
7249// CHECK-LE: @llvm.ppc.altivec.vperm
7250// CHECK-LE: @llvm.ppc.altivec.stvxl
7251
7252  vec_stvlxl(vf, 0, &vf);
7253// CHECK: @llvm.ppc.altivec.lvx
7254// CHECK: @llvm.ppc.altivec.lvsl
7255// CHECK: store <4 x float> zeroinitializer
7256// CHECK: @llvm.ppc.altivec.vperm
7257// CHECK: @llvm.ppc.altivec.lvsr
7258// CHECK: @llvm.ppc.altivec.vperm
7259// CHECK: @llvm.ppc.altivec.stvxl
7260// CHECK-LE: @llvm.ppc.altivec.lvx
7261// CHECK-LE: @llvm.ppc.altivec.lvsl
7262// CHECK-LE: store <4 x float> zeroinitializer
7263// CHECK-LE: @llvm.ppc.altivec.vperm
7264// CHECK-LE: @llvm.ppc.altivec.lvsr
7265// CHECK-LE: @llvm.ppc.altivec.vperm
7266// CHECK-LE: @llvm.ppc.altivec.stvxl
7267
7268  /* vec_stvrx */
7269  vec_stvrx(vsc, 0, &param_sc);
7270// CHECK: @llvm.ppc.altivec.lvx
7271// CHECK: @llvm.ppc.altivec.lvsl
7272// CHECK: store <16 x i8> zeroinitializer
7273// CHECK: @llvm.ppc.altivec.vperm
7274// CHECK: @llvm.ppc.altivec.lvsr
7275// CHECK: @llvm.ppc.altivec.vperm
7276// CHECK: @llvm.ppc.altivec.stvx
7277// CHECK-LE: @llvm.ppc.altivec.lvx
7278// CHECK-LE: @llvm.ppc.altivec.lvsl
7279// CHECK-LE: store <16 x i8> zeroinitializer
7280// CHECK-LE: @llvm.ppc.altivec.vperm
7281// CHECK-LE: @llvm.ppc.altivec.lvsr
7282// CHECK-LE: @llvm.ppc.altivec.vperm
7283// CHECK-LE: @llvm.ppc.altivec.stvx
7284
7285  vec_stvrx(vsc, 0, &vsc);
7286// CHECK: @llvm.ppc.altivec.lvx
7287// CHECK: @llvm.ppc.altivec.lvsl
7288// CHECK: store <16 x i8> zeroinitializer
7289// CHECK: @llvm.ppc.altivec.vperm
7290// CHECK: @llvm.ppc.altivec.lvsr
7291// CHECK: @llvm.ppc.altivec.vperm
7292// CHECK: @llvm.ppc.altivec.stvx
7293// CHECK-LE: @llvm.ppc.altivec.lvx
7294// CHECK-LE: @llvm.ppc.altivec.lvsl
7295// CHECK-LE: store <16 x i8> zeroinitializer
7296// CHECK-LE: @llvm.ppc.altivec.vperm
7297// CHECK-LE: @llvm.ppc.altivec.lvsr
7298// CHECK-LE: @llvm.ppc.altivec.vperm
7299// CHECK-LE: @llvm.ppc.altivec.stvx
7300
7301  vec_stvrx(vuc, 0, &param_uc);
7302// CHECK: @llvm.ppc.altivec.lvx
7303// CHECK: @llvm.ppc.altivec.lvsl
7304// CHECK: store <16 x i8> zeroinitializer
7305// CHECK: @llvm.ppc.altivec.vperm
7306// CHECK: @llvm.ppc.altivec.lvsr
7307// CHECK: @llvm.ppc.altivec.vperm
7308// CHECK: @llvm.ppc.altivec.stvx
7309// CHECK-LE: @llvm.ppc.altivec.lvx
7310// CHECK-LE: @llvm.ppc.altivec.lvsl
7311// CHECK-LE: store <16 x i8> zeroinitializer
7312// CHECK-LE: @llvm.ppc.altivec.vperm
7313// CHECK-LE: @llvm.ppc.altivec.lvsr
7314// CHECK-LE: @llvm.ppc.altivec.vperm
7315// CHECK-LE: @llvm.ppc.altivec.stvx
7316
7317  vec_stvrx(vuc, 0, &vuc);
7318// CHECK: @llvm.ppc.altivec.lvx
7319// CHECK: @llvm.ppc.altivec.lvsl
7320// CHECK: store <16 x i8> zeroinitializer
7321// CHECK: @llvm.ppc.altivec.vperm
7322// CHECK: @llvm.ppc.altivec.lvsr
7323// CHECK: @llvm.ppc.altivec.vperm
7324// CHECK: @llvm.ppc.altivec.stvx
7325// CHECK-LE: @llvm.ppc.altivec.lvx
7326// CHECK-LE: @llvm.ppc.altivec.lvsl
7327// CHECK-LE: store <16 x i8> zeroinitializer
7328// CHECK-LE: @llvm.ppc.altivec.vperm
7329// CHECK-LE: @llvm.ppc.altivec.lvsr
7330// CHECK-LE: @llvm.ppc.altivec.vperm
7331// CHECK-LE: @llvm.ppc.altivec.stvx
7332
7333  vec_stvrx(vbc, 0, &vbc);
7334// CHECK: @llvm.ppc.altivec.lvx
7335// CHECK: store <16 x i8> zeroinitializer
7336// CHECK: @llvm.ppc.altivec.lvsl
7337// CHECK: @llvm.ppc.altivec.vperm
7338// CHECK: @llvm.ppc.altivec.lvsr
7339// CHECK: @llvm.ppc.altivec.vperm
7340// CHECK: @llvm.ppc.altivec.stvx
7341// CHECK-LE: @llvm.ppc.altivec.lvx
7342// CHECK-LE: store <16 x i8> zeroinitializer
7343// CHECK-LE: @llvm.ppc.altivec.lvsl
7344// CHECK-LE: @llvm.ppc.altivec.vperm
7345// CHECK-LE: @llvm.ppc.altivec.lvsr
7346// CHECK-LE: @llvm.ppc.altivec.vperm
7347// CHECK-LE: @llvm.ppc.altivec.stvx
7348
7349  vec_stvrx(vs, 0, &param_s);
7350// CHECK: @llvm.ppc.altivec.lvx
7351// CHECK: @llvm.ppc.altivec.lvsl
7352// CHECK: store <8 x i16> zeroinitializer
7353// CHECK: @llvm.ppc.altivec.vperm
7354// CHECK: @llvm.ppc.altivec.lvsr
7355// CHECK: @llvm.ppc.altivec.vperm
7356// CHECK: @llvm.ppc.altivec.stvx
7357// CHECK-LE: @llvm.ppc.altivec.lvx
7358// CHECK-LE: @llvm.ppc.altivec.lvsl
7359// CHECK-LE: store <8 x i16> zeroinitializer
7360// CHECK-LE: @llvm.ppc.altivec.vperm
7361// CHECK-LE: @llvm.ppc.altivec.lvsr
7362// CHECK-LE: @llvm.ppc.altivec.vperm
7363// CHECK-LE: @llvm.ppc.altivec.stvx
7364
7365  vec_stvrx(vs, 0, &vs);
7366// CHECK: @llvm.ppc.altivec.lvx
7367// CHECK: @llvm.ppc.altivec.lvsl
7368// CHECK: store <8 x i16> zeroinitializer
7369// CHECK: @llvm.ppc.altivec.vperm
7370// CHECK: @llvm.ppc.altivec.lvsr
7371// CHECK: @llvm.ppc.altivec.vperm
7372// CHECK: @llvm.ppc.altivec.stvx
7373// CHECK-LE: @llvm.ppc.altivec.lvx
7374// CHECK-LE: @llvm.ppc.altivec.lvsl
7375// CHECK-LE: store <8 x i16> zeroinitializer
7376// CHECK-LE: @llvm.ppc.altivec.vperm
7377// CHECK-LE: @llvm.ppc.altivec.lvsr
7378// CHECK-LE: @llvm.ppc.altivec.vperm
7379// CHECK-LE: @llvm.ppc.altivec.stvx
7380
7381  vec_stvrx(vus, 0, &param_us);
7382// CHECK: @llvm.ppc.altivec.lvx
7383// CHECK: @llvm.ppc.altivec.lvsl
7384// CHECK: store <8 x i16> zeroinitializer
7385// CHECK: @llvm.ppc.altivec.vperm
7386// CHECK: @llvm.ppc.altivec.lvsr
7387// CHECK: @llvm.ppc.altivec.vperm
7388// CHECK: @llvm.ppc.altivec.stvx
7389// CHECK-LE: @llvm.ppc.altivec.lvx
7390// CHECK-LE: @llvm.ppc.altivec.lvsl
7391// CHECK-LE: store <8 x i16> zeroinitializer
7392// CHECK-LE: @llvm.ppc.altivec.vperm
7393// CHECK-LE: @llvm.ppc.altivec.lvsr
7394// CHECK-LE: @llvm.ppc.altivec.vperm
7395// CHECK-LE: @llvm.ppc.altivec.stvx
7396
7397  vec_stvrx(vus, 0, &vus);
7398// CHECK: @llvm.ppc.altivec.lvx
7399// CHECK: @llvm.ppc.altivec.lvsl
7400// CHECK: store <8 x i16> zeroinitializer
7401// CHECK: @llvm.ppc.altivec.vperm
7402// CHECK: @llvm.ppc.altivec.lvsr
7403// CHECK: @llvm.ppc.altivec.vperm
7404// CHECK: @llvm.ppc.altivec.stvx
7405// CHECK-LE: @llvm.ppc.altivec.lvx
7406// CHECK-LE: @llvm.ppc.altivec.lvsl
7407// CHECK-LE: store <8 x i16> zeroinitializer
7408// CHECK-LE: @llvm.ppc.altivec.vperm
7409// CHECK-LE: @llvm.ppc.altivec.lvsr
7410// CHECK-LE: @llvm.ppc.altivec.vperm
7411// CHECK-LE: @llvm.ppc.altivec.stvx
7412
7413  vec_stvrx(vbs, 0, &vbs);
7414// CHECK: @llvm.ppc.altivec.lvx
7415// CHECK: store <8 x i16> zeroinitializer
7416// CHECK: @llvm.ppc.altivec.lvsl
7417// CHECK: @llvm.ppc.altivec.vperm
7418// CHECK: @llvm.ppc.altivec.lvsr
7419// CHECK: @llvm.ppc.altivec.vperm
7420// CHECK: @llvm.ppc.altivec.stvx
7421// CHECK-LE: @llvm.ppc.altivec.lvx
7422// CHECK-LE: store <8 x i16> zeroinitializer
7423// CHECK-LE: @llvm.ppc.altivec.lvsl
7424// CHECK-LE: @llvm.ppc.altivec.vperm
7425// CHECK-LE: @llvm.ppc.altivec.lvsr
7426// CHECK-LE: @llvm.ppc.altivec.vperm
7427// CHECK-LE: @llvm.ppc.altivec.stvx
7428
7429  vec_stvrx(vp, 0, &vp);
7430// CHECK: @llvm.ppc.altivec.lvx
7431// CHECK: store <8 x i16> zeroinitializer
7432// CHECK: @llvm.ppc.altivec.lvsl
7433// CHECK: @llvm.ppc.altivec.vperm
7434// CHECK: @llvm.ppc.altivec.lvsr
7435// CHECK: @llvm.ppc.altivec.vperm
7436// CHECK: @llvm.ppc.altivec.stvx
7437// CHECK-LE: @llvm.ppc.altivec.lvx
7438// CHECK-LE: store <8 x i16> zeroinitializer
7439// CHECK-LE: @llvm.ppc.altivec.lvsl
7440// CHECK-LE: @llvm.ppc.altivec.vperm
7441// CHECK-LE: @llvm.ppc.altivec.lvsr
7442// CHECK-LE: @llvm.ppc.altivec.vperm
7443// CHECK-LE: @llvm.ppc.altivec.stvx
7444
7445  vec_stvrx(vi, 0, &param_i);
7446// CHECK: @llvm.ppc.altivec.lvx
7447// CHECK: @llvm.ppc.altivec.lvsl
7448// CHECK: store <4 x i32> zeroinitializer
7449// CHECK: @llvm.ppc.altivec.vperm
7450// CHECK: @llvm.ppc.altivec.lvsr
7451// CHECK: @llvm.ppc.altivec.vperm
7452// CHECK: @llvm.ppc.altivec.stvx
7453// CHECK-LE: @llvm.ppc.altivec.lvx
7454// CHECK-LE: @llvm.ppc.altivec.lvsl
7455// CHECK-LE: store <4 x i32> zeroinitializer
7456// CHECK-LE: @llvm.ppc.altivec.vperm
7457// CHECK-LE: @llvm.ppc.altivec.lvsr
7458// CHECK-LE: @llvm.ppc.altivec.vperm
7459// CHECK-LE: @llvm.ppc.altivec.stvx
7460
7461  vec_stvrx(vi, 0, &vi);
7462// CHECK: @llvm.ppc.altivec.lvx
7463// CHECK: @llvm.ppc.altivec.lvsl
7464// CHECK: store <4 x i32> zeroinitializer
7465// CHECK: @llvm.ppc.altivec.vperm
7466// CHECK: @llvm.ppc.altivec.lvsr
7467// CHECK: @llvm.ppc.altivec.vperm
7468// CHECK: @llvm.ppc.altivec.stvx
7469// CHECK-LE: @llvm.ppc.altivec.lvx
7470// CHECK-LE: @llvm.ppc.altivec.lvsl
7471// CHECK-LE: store <4 x i32> zeroinitializer
7472// CHECK-LE: @llvm.ppc.altivec.vperm
7473// CHECK-LE: @llvm.ppc.altivec.lvsr
7474// CHECK-LE: @llvm.ppc.altivec.vperm
7475// CHECK-LE: @llvm.ppc.altivec.stvx
7476
7477  vec_stvrx(vui, 0, &param_ui);
7478// CHECK: @llvm.ppc.altivec.lvx
7479// CHECK: @llvm.ppc.altivec.lvsl
7480// CHECK: store <4 x i32> zeroinitializer
7481// CHECK: @llvm.ppc.altivec.vperm
7482// CHECK: @llvm.ppc.altivec.lvsr
7483// CHECK: @llvm.ppc.altivec.vperm
7484// CHECK: @llvm.ppc.altivec.stvx
7485// CHECK-LE: @llvm.ppc.altivec.lvx
7486// CHECK-LE: @llvm.ppc.altivec.lvsl
7487// CHECK-LE: store <4 x i32> zeroinitializer
7488// CHECK-LE: @llvm.ppc.altivec.vperm
7489// CHECK-LE: @llvm.ppc.altivec.lvsr
7490// CHECK-LE: @llvm.ppc.altivec.vperm
7491// CHECK-LE: @llvm.ppc.altivec.stvx
7492
7493  vec_stvrx(vui, 0, &vui);
7494// CHECK: @llvm.ppc.altivec.lvx
7495// CHECK: @llvm.ppc.altivec.lvsl
7496// CHECK: store <4 x i32> zeroinitializer
7497// CHECK: @llvm.ppc.altivec.vperm
7498// CHECK: @llvm.ppc.altivec.lvsr
7499// CHECK: @llvm.ppc.altivec.vperm
7500// CHECK: @llvm.ppc.altivec.stvx
7501// CHECK-LE: @llvm.ppc.altivec.lvx
7502// CHECK-LE: @llvm.ppc.altivec.lvsl
7503// CHECK-LE: store <4 x i32> zeroinitializer
7504// CHECK-LE: @llvm.ppc.altivec.vperm
7505// CHECK-LE: @llvm.ppc.altivec.lvsr
7506// CHECK-LE: @llvm.ppc.altivec.vperm
7507// CHECK-LE: @llvm.ppc.altivec.stvx
7508
7509  vec_stvrx(vbi, 0, &vbi);
7510// CHECK: @llvm.ppc.altivec.lvx
7511// CHECK: store <4 x i32> zeroinitializer
7512// CHECK: @llvm.ppc.altivec.lvsl
7513// CHECK: @llvm.ppc.altivec.vperm
7514// CHECK: @llvm.ppc.altivec.lvsr
7515// CHECK: @llvm.ppc.altivec.vperm
7516// CHECK: @llvm.ppc.altivec.stvx
7517// CHECK-LE: @llvm.ppc.altivec.lvx
7518// CHECK-LE: store <4 x i32> zeroinitializer
7519// CHECK-LE: @llvm.ppc.altivec.lvsl
7520// CHECK-LE: @llvm.ppc.altivec.vperm
7521// CHECK-LE: @llvm.ppc.altivec.lvsr
7522// CHECK-LE: @llvm.ppc.altivec.vperm
7523// CHECK-LE: @llvm.ppc.altivec.stvx
7524
7525  vec_stvrx(vf, 0, &vf);
7526// CHECK: @llvm.ppc.altivec.lvx
7527// CHECK: @llvm.ppc.altivec.lvsl
7528// CHECK: store <4 x float> zeroinitializer
7529// CHECK: @llvm.ppc.altivec.vperm
7530// CHECK: @llvm.ppc.altivec.lvsr
7531// CHECK: @llvm.ppc.altivec.vperm
7532// CHECK: @llvm.ppc.altivec.stvx
7533// CHECK-LE: @llvm.ppc.altivec.lvx
7534// CHECK-LE: @llvm.ppc.altivec.lvsl
7535// CHECK-LE: store <4 x float> zeroinitializer
7536// CHECK-LE: @llvm.ppc.altivec.vperm
7537// CHECK-LE: @llvm.ppc.altivec.lvsr
7538// CHECK-LE: @llvm.ppc.altivec.vperm
7539// CHECK-LE: @llvm.ppc.altivec.stvx
7540
7541  /* vec_stvrxl */
7542  vec_stvrxl(vsc, 0, &param_sc);
7543// CHECK: @llvm.ppc.altivec.lvx
7544// CHECK: @llvm.ppc.altivec.lvsl
7545// CHECK: store <16 x i8> zeroinitializer
7546// CHECK: @llvm.ppc.altivec.vperm
7547// CHECK: @llvm.ppc.altivec.lvsr
7548// CHECK: @llvm.ppc.altivec.vperm
7549// CHECK: @llvm.ppc.altivec.stvxl
7550// CHECK-LE: @llvm.ppc.altivec.lvx
7551// CHECK-LE: @llvm.ppc.altivec.lvsl
7552// CHECK-LE: store <16 x i8> zeroinitializer
7553// CHECK-LE: @llvm.ppc.altivec.vperm
7554// CHECK-LE: @llvm.ppc.altivec.lvsr
7555// CHECK-LE: @llvm.ppc.altivec.vperm
7556// CHECK-LE: @llvm.ppc.altivec.stvxl
7557
7558  vec_stvrxl(vsc, 0, &vsc);
7559// CHECK: @llvm.ppc.altivec.lvx
7560// CHECK: @llvm.ppc.altivec.lvsl
7561// CHECK: store <16 x i8> zeroinitializer
7562// CHECK: @llvm.ppc.altivec.vperm
7563// CHECK: @llvm.ppc.altivec.lvsr
7564// CHECK: @llvm.ppc.altivec.vperm
7565// CHECK: @llvm.ppc.altivec.stvxl
7566// CHECK-LE: @llvm.ppc.altivec.lvx
7567// CHECK-LE: @llvm.ppc.altivec.lvsl
7568// CHECK-LE: store <16 x i8> zeroinitializer
7569// CHECK-LE: @llvm.ppc.altivec.vperm
7570// CHECK-LE: @llvm.ppc.altivec.lvsr
7571// CHECK-LE: @llvm.ppc.altivec.vperm
7572// CHECK-LE: @llvm.ppc.altivec.stvxl
7573
7574  vec_stvrxl(vuc, 0, &param_uc);
7575// CHECK: @llvm.ppc.altivec.lvx
7576// CHECK: @llvm.ppc.altivec.lvsl
7577// CHECK: store <16 x i8> zeroinitializer
7578// CHECK: @llvm.ppc.altivec.vperm
7579// CHECK: @llvm.ppc.altivec.lvsr
7580// CHECK: @llvm.ppc.altivec.vperm
7581// CHECK: @llvm.ppc.altivec.stvxl
7582// CHECK-LE: @llvm.ppc.altivec.lvx
7583// CHECK-LE: @llvm.ppc.altivec.lvsl
7584// CHECK-LE: store <16 x i8> zeroinitializer
7585// CHECK-LE: @llvm.ppc.altivec.vperm
7586// CHECK-LE: @llvm.ppc.altivec.lvsr
7587// CHECK-LE: @llvm.ppc.altivec.vperm
7588// CHECK-LE: @llvm.ppc.altivec.stvxl
7589
7590  vec_stvrxl(vuc, 0, &vuc);
7591// CHECK: @llvm.ppc.altivec.lvx
7592// CHECK: @llvm.ppc.altivec.lvsl
7593// CHECK: store <16 x i8> zeroinitializer
7594// CHECK: @llvm.ppc.altivec.vperm
7595// CHECK: @llvm.ppc.altivec.lvsr
7596// CHECK: @llvm.ppc.altivec.vperm
7597// CHECK: @llvm.ppc.altivec.stvxl
7598// CHECK-LE: @llvm.ppc.altivec.lvx
7599// CHECK-LE: @llvm.ppc.altivec.lvsl
7600// CHECK-LE: store <16 x i8> zeroinitializer
7601// CHECK-LE: @llvm.ppc.altivec.vperm
7602// CHECK-LE: @llvm.ppc.altivec.lvsr
7603// CHECK-LE: @llvm.ppc.altivec.vperm
7604// CHECK-LE: @llvm.ppc.altivec.stvxl
7605
7606  vec_stvrxl(vbc, 0, &vbc);
7607// CHECK: @llvm.ppc.altivec.lvx
7608// CHECK: store <16 x i8> zeroinitializer
7609// CHECK: @llvm.ppc.altivec.lvsl
7610// CHECK: @llvm.ppc.altivec.vperm
7611// CHECK: @llvm.ppc.altivec.lvsr
7612// CHECK: @llvm.ppc.altivec.vperm
7613// CHECK: @llvm.ppc.altivec.stvxl
7614// CHECK-LE: @llvm.ppc.altivec.lvx
7615// CHECK-LE: store <16 x i8> zeroinitializer
7616// CHECK-LE: @llvm.ppc.altivec.lvsl
7617// CHECK-LE: @llvm.ppc.altivec.vperm
7618// CHECK-LE: @llvm.ppc.altivec.lvsr
7619// CHECK-LE: @llvm.ppc.altivec.vperm
7620// CHECK-LE: @llvm.ppc.altivec.stvxl
7621
7622  vec_stvrxl(vs, 0, &param_s);
7623// CHECK: @llvm.ppc.altivec.lvx
7624// CHECK: @llvm.ppc.altivec.lvsl
7625// CHECK: store <8 x i16> zeroinitializer
7626// CHECK: @llvm.ppc.altivec.vperm
7627// CHECK: @llvm.ppc.altivec.lvsr
7628// CHECK: @llvm.ppc.altivec.vperm
7629// CHECK: @llvm.ppc.altivec.stvxl
7630// CHECK-LE: @llvm.ppc.altivec.lvx
7631// CHECK-LE: @llvm.ppc.altivec.lvsl
7632// CHECK-LE: store <8 x i16> zeroinitializer
7633// CHECK-LE: @llvm.ppc.altivec.vperm
7634// CHECK-LE: @llvm.ppc.altivec.lvsr
7635// CHECK-LE: @llvm.ppc.altivec.vperm
7636// CHECK-LE: @llvm.ppc.altivec.stvxl
7637
7638  vec_stvrxl(vs, 0, &vs);
7639// CHECK: @llvm.ppc.altivec.lvx
7640// CHECK: @llvm.ppc.altivec.lvsl
7641// CHECK: store <8 x i16> zeroinitializer
7642// CHECK: @llvm.ppc.altivec.vperm
7643// CHECK: @llvm.ppc.altivec.lvsr
7644// CHECK: @llvm.ppc.altivec.vperm
7645// CHECK: @llvm.ppc.altivec.stvxl
7646// CHECK-LE: @llvm.ppc.altivec.lvx
7647// CHECK-LE: @llvm.ppc.altivec.lvsl
7648// CHECK-LE: store <8 x i16> zeroinitializer
7649// CHECK-LE: @llvm.ppc.altivec.vperm
7650// CHECK-LE: @llvm.ppc.altivec.lvsr
7651// CHECK-LE: @llvm.ppc.altivec.vperm
7652// CHECK-LE: @llvm.ppc.altivec.stvxl
7653
7654  vec_stvrxl(vus, 0, &param_us);
7655// CHECK: @llvm.ppc.altivec.lvx
7656// CHECK: @llvm.ppc.altivec.lvsl
7657// CHECK: store <8 x i16> zeroinitializer
7658// CHECK: @llvm.ppc.altivec.vperm
7659// CHECK: @llvm.ppc.altivec.lvsr
7660// CHECK: @llvm.ppc.altivec.vperm
7661// CHECK: @llvm.ppc.altivec.stvxl
7662// CHECK-LE: @llvm.ppc.altivec.lvx
7663// CHECK-LE: @llvm.ppc.altivec.lvsl
7664// CHECK-LE: store <8 x i16> zeroinitializer
7665// CHECK-LE: @llvm.ppc.altivec.vperm
7666// CHECK-LE: @llvm.ppc.altivec.lvsr
7667// CHECK-LE: @llvm.ppc.altivec.vperm
7668// CHECK-LE: @llvm.ppc.altivec.stvxl
7669
7670  vec_stvrxl(vus, 0, &vus);
7671// CHECK: @llvm.ppc.altivec.lvx
7672// CHECK: @llvm.ppc.altivec.lvsl
7673// CHECK: store <8 x i16> zeroinitializer
7674// CHECK: @llvm.ppc.altivec.vperm
7675// CHECK: @llvm.ppc.altivec.lvsr
7676// CHECK: @llvm.ppc.altivec.vperm
7677// CHECK: @llvm.ppc.altivec.stvxl
7678// CHECK-LE: @llvm.ppc.altivec.lvx
7679// CHECK-LE: @llvm.ppc.altivec.lvsl
7680// CHECK-LE: store <8 x i16> zeroinitializer
7681// CHECK-LE: @llvm.ppc.altivec.vperm
7682// CHECK-LE: @llvm.ppc.altivec.lvsr
7683// CHECK-LE: @llvm.ppc.altivec.vperm
7684// CHECK-LE: @llvm.ppc.altivec.stvxl
7685
7686  vec_stvrxl(vbs, 0, &vbs);
7687// CHECK: @llvm.ppc.altivec.lvx
7688// CHECK: store <8 x i16> zeroinitializer
7689// CHECK: @llvm.ppc.altivec.lvsl
7690// CHECK: @llvm.ppc.altivec.vperm
7691// CHECK: @llvm.ppc.altivec.lvsr
7692// CHECK: @llvm.ppc.altivec.vperm
7693// CHECK: @llvm.ppc.altivec.stvxl
7694// CHECK-LE: @llvm.ppc.altivec.lvx
7695// CHECK-LE: store <8 x i16> zeroinitializer
7696// CHECK-LE: @llvm.ppc.altivec.lvsl
7697// CHECK-LE: @llvm.ppc.altivec.vperm
7698// CHECK-LE: @llvm.ppc.altivec.lvsr
7699// CHECK-LE: @llvm.ppc.altivec.vperm
7700// CHECK-LE: @llvm.ppc.altivec.stvxl
7701
7702  vec_stvrxl(vp, 0, &vp);
7703// CHECK: @llvm.ppc.altivec.lvx
7704// CHECK: store <8 x i16> zeroinitializer
7705// CHECK: @llvm.ppc.altivec.lvsl
7706// CHECK: @llvm.ppc.altivec.vperm
7707// CHECK: @llvm.ppc.altivec.lvsr
7708// CHECK: @llvm.ppc.altivec.vperm
7709// CHECK: @llvm.ppc.altivec.stvxl
7710// CHECK-LE: @llvm.ppc.altivec.lvx
7711// CHECK-LE: store <8 x i16> zeroinitializer
7712// CHECK-LE: @llvm.ppc.altivec.lvsl
7713// CHECK-LE: @llvm.ppc.altivec.vperm
7714// CHECK-LE: @llvm.ppc.altivec.lvsr
7715// CHECK-LE: @llvm.ppc.altivec.vperm
7716// CHECK-LE: @llvm.ppc.altivec.stvxl
7717
7718  vec_stvrxl(vi, 0, &param_i);
7719// CHECK: @llvm.ppc.altivec.lvx
7720// CHECK: @llvm.ppc.altivec.lvsl
7721// CHECK: store <4 x i32> zeroinitializer
7722// CHECK: @llvm.ppc.altivec.vperm
7723// CHECK: @llvm.ppc.altivec.lvsr
7724// CHECK: @llvm.ppc.altivec.vperm
7725// CHECK: @llvm.ppc.altivec.stvxl
7726// CHECK-LE: @llvm.ppc.altivec.lvx
7727// CHECK-LE: @llvm.ppc.altivec.lvsl
7728// CHECK-LE: store <4 x i32> zeroinitializer
7729// CHECK-LE: @llvm.ppc.altivec.vperm
7730// CHECK-LE: @llvm.ppc.altivec.lvsr
7731// CHECK-LE: @llvm.ppc.altivec.vperm
7732// CHECK-LE: @llvm.ppc.altivec.stvxl
7733
7734  vec_stvrxl(vi, 0, &vi);
7735// CHECK: @llvm.ppc.altivec.lvx
7736// CHECK: @llvm.ppc.altivec.lvsl
7737// CHECK: store <4 x i32> zeroinitializer
7738// CHECK: @llvm.ppc.altivec.vperm
7739// CHECK: @llvm.ppc.altivec.lvsr
7740// CHECK: @llvm.ppc.altivec.vperm
7741// CHECK: @llvm.ppc.altivec.stvxl
7742// CHECK-LE: @llvm.ppc.altivec.lvx
7743// CHECK-LE: @llvm.ppc.altivec.lvsl
7744// CHECK-LE: store <4 x i32> zeroinitializer
7745// CHECK-LE: @llvm.ppc.altivec.vperm
7746// CHECK-LE: @llvm.ppc.altivec.lvsr
7747// CHECK-LE: @llvm.ppc.altivec.vperm
7748// CHECK-LE: @llvm.ppc.altivec.stvxl
7749
7750  vec_stvrxl(vui, 0, &param_ui);
7751// CHECK: @llvm.ppc.altivec.lvx
7752// CHECK: @llvm.ppc.altivec.lvsl
7753// CHECK: store <4 x i32> zeroinitializer
7754// CHECK: @llvm.ppc.altivec.vperm
7755// CHECK: @llvm.ppc.altivec.lvsr
7756// CHECK: @llvm.ppc.altivec.vperm
7757// CHECK: @llvm.ppc.altivec.stvxl
7758// CHECK-LE: @llvm.ppc.altivec.lvx
7759// CHECK-LE: @llvm.ppc.altivec.lvsl
7760// CHECK-LE: store <4 x i32> zeroinitializer
7761// CHECK-LE: @llvm.ppc.altivec.vperm
7762// CHECK-LE: @llvm.ppc.altivec.lvsr
7763// CHECK-LE: @llvm.ppc.altivec.vperm
7764// CHECK-LE: @llvm.ppc.altivec.stvxl
7765
7766  vec_stvrxl(vui, 0, &vui);
7767// CHECK: @llvm.ppc.altivec.lvx
7768// CHECK: @llvm.ppc.altivec.lvsl
7769// CHECK: store <4 x i32> zeroinitializer
7770// CHECK: @llvm.ppc.altivec.vperm
7771// CHECK: @llvm.ppc.altivec.lvsr
7772// CHECK: @llvm.ppc.altivec.vperm
7773// CHECK: @llvm.ppc.altivec.stvxl
7774// CHECK-LE: @llvm.ppc.altivec.lvx
7775// CHECK-LE: @llvm.ppc.altivec.lvsl
7776// CHECK-LE: store <4 x i32> zeroinitializer
7777// CHECK-LE: @llvm.ppc.altivec.vperm
7778// CHECK-LE: @llvm.ppc.altivec.lvsr
7779// CHECK-LE: @llvm.ppc.altivec.vperm
7780// CHECK-LE: @llvm.ppc.altivec.stvxl
7781
7782  vec_stvrxl(vbi, 0, &vbi);
7783// CHECK: @llvm.ppc.altivec.lvx
7784// CHECK: store <4 x i32> zeroinitializer
7785// CHECK: @llvm.ppc.altivec.lvsl
7786// CHECK: @llvm.ppc.altivec.vperm
7787// CHECK: @llvm.ppc.altivec.lvsr
7788// CHECK: @llvm.ppc.altivec.vperm
7789// CHECK: @llvm.ppc.altivec.stvxl
7790// CHECK-LE: @llvm.ppc.altivec.lvx
7791// CHECK-LE: store <4 x i32> zeroinitializer
7792// CHECK-LE: @llvm.ppc.altivec.lvsl
7793// CHECK-LE: @llvm.ppc.altivec.vperm
7794// CHECK-LE: @llvm.ppc.altivec.lvsr
7795// CHECK-LE: @llvm.ppc.altivec.vperm
7796// CHECK-LE: @llvm.ppc.altivec.stvxl
7797
7798  vec_stvrxl(vf, 0, &vf);
7799// CHECK: @llvm.ppc.altivec.lvx
7800// CHECK: @llvm.ppc.altivec.lvsl
7801// CHECK: store <4 x float> zeroinitializer
7802// CHECK: @llvm.ppc.altivec.vperm
7803// CHECK: @llvm.ppc.altivec.lvsr
7804// CHECK: @llvm.ppc.altivec.vperm
7805// CHECK: @llvm.ppc.altivec.stvxl
7806// CHECK-LE: @llvm.ppc.altivec.lvx
7807// CHECK-LE: @llvm.ppc.altivec.lvsl
7808// CHECK-LE: store <4 x float> zeroinitializer
7809// CHECK-LE: @llvm.ppc.altivec.vperm
7810// CHECK-LE: @llvm.ppc.altivec.lvsr
7811// CHECK-LE: @llvm.ppc.altivec.vperm
7812// CHECK-LE: @llvm.ppc.altivec.stvxl
7813
7814  /* vec_promote */
7815  res_vsc = vec_promote(param_sc, 0);
7816// CHECK: store <16 x i8> zeroinitializer
7817// CHECK: insertelement <16 x i8>
7818// CHECK-LE: store <16 x i8> zeroinitializer
7819// CHECK-LE: insertelement <16 x i8>
7820
7821  res_vuc = vec_promote(param_uc, 0);
7822// CHECK: store <16 x i8> zeroinitializer
7823// CHECK: insertelement <16 x i8>
7824// CHECK-LE: store <16 x i8> zeroinitializer
7825// CHECK-LE: insertelement <16 x i8>
7826
7827  res_vs  = vec_promote(param_s, 0);
7828// CHECK: store <8 x i16> zeroinitializer
7829// CHECK: insertelement <8 x i16>
7830// CHECK-LE: store <8 x i16> zeroinitializer
7831// CHECK-LE: insertelement <8 x i16>
7832
7833  res_vus = vec_promote(param_us, 0);
7834// CHECK: store <8 x i16> zeroinitializer
7835// CHECK: insertelement <8 x i16>
7836// CHECK-LE: store <8 x i16> zeroinitializer
7837// CHECK-LE: insertelement <8 x i16>
7838
7839  res_vi  = vec_promote(param_i, 0);
7840// CHECK: store <4 x i32> zeroinitializer
7841// CHECK: insertelement <4 x i32>
7842// CHECK-LE: store <4 x i32> zeroinitializer
7843// CHECK-LE: insertelement <4 x i32>
7844
7845  res_vui = vec_promote(param_ui, 0);
7846// CHECK: store <4 x i32> zeroinitializer
7847// CHECK: insertelement <4 x i32>
7848// CHECK-LE: store <4 x i32> zeroinitializer
7849// CHECK-LE: insertelement <4 x i32>
7850
7851  res_vf  = vec_promote(param_f, 0);
7852// CHECK: store <4 x float> zeroinitializer
7853// CHECK: insertelement <4 x float>
7854// CHECK-LE: store <4 x float> zeroinitializer
7855// CHECK-LE: insertelement <4 x float>
7856
7857  /* vec_splats */
7858  res_vsc = vec_splats(param_sc);
7859// CHECK: insertelement <16 x i8>
7860// CHECK-LE: insertelement <16 x i8>
7861
7862  res_vuc = vec_splats(param_uc);
7863// CHECK: insertelement <16 x i8>
7864// CHECK-LE: insertelement <16 x i8>
7865
7866  res_vs  = vec_splats(param_s);
7867// CHECK: insertelement <8 x i16>
7868// CHECK-LE: insertelement <8 x i16>
7869
7870  res_vus = vec_splats(param_us);
7871// CHECK: insertelement <8 x i16>
7872// CHECK-LE: insertelement <8 x i16>
7873
7874  res_vi  = vec_splats(param_i);
7875// CHECK: insertelement <4 x i32>
7876// CHECK-LE: insertelement <4 x i32>
7877
7878  res_vui = vec_splats(param_ui);
7879// CHECK: insertelement <4 x i32>
7880// CHECK-LE: insertelement <4 x i32>
7881
7882  res_vf  = vec_splats(param_f);
7883// CHECK: insertelement <4 x float>
7884// CHECK-LE: insertelement <4 x float>
7885
7886  /* ------------------------------ predicates -------------------------------------- */
7887
7888  /* vec_all_eq */
7889  res_i = vec_all_eq(vsc, vsc);
7890// CHECK: @llvm.ppc.altivec.vcmpequb.p
7891// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7892
7893  res_i = vec_all_eq(vsc, vbc);
7894// CHECK: @llvm.ppc.altivec.vcmpequb.p
7895// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7896
7897  res_i = vec_all_eq(vuc, vuc);
7898// CHECK: @llvm.ppc.altivec.vcmpequb.p
7899// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7900
7901  res_i = vec_all_eq(vuc, vbc);
7902// CHECK: @llvm.ppc.altivec.vcmpequb.p
7903// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7904
7905  res_i = vec_all_eq(vbc, vsc);
7906// CHECK: @llvm.ppc.altivec.vcmpequb.p
7907// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7908
7909  res_i = vec_all_eq(vbc, vuc);
7910// CHECK: @llvm.ppc.altivec.vcmpequb.p
7911// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7912
7913  res_i = vec_all_eq(vbc, vbc);
7914// CHECK: @llvm.ppc.altivec.vcmpequb.p
7915// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7916
7917  res_i = vec_all_eq(vs, vs);
7918// CHECK: @llvm.ppc.altivec.vcmpequh.p
7919// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7920
7921  res_i = vec_all_eq(vs, vbs);
7922// CHECK: @llvm.ppc.altivec.vcmpequh.p
7923// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7924
7925  res_i = vec_all_eq(vus, vus);
7926// CHECK: @llvm.ppc.altivec.vcmpequh.p
7927// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7928
7929  res_i = vec_all_eq(vus, vbs);
7930// CHECK: @llvm.ppc.altivec.vcmpequh.p
7931// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7932
7933  res_i = vec_all_eq(vbs, vs);
7934// CHECK: @llvm.ppc.altivec.vcmpequh.p
7935// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7936
7937  res_i = vec_all_eq(vbs, vus);
7938// CHECK: @llvm.ppc.altivec.vcmpequh.p
7939// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7940
7941  res_i = vec_all_eq(vbs, vbs);
7942// CHECK: @llvm.ppc.altivec.vcmpequh.p
7943// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7944
7945  res_i = vec_all_eq(vp, vp);
7946// CHECK: @llvm.ppc.altivec.vcmpequh.p
7947// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7948
7949  res_i = vec_all_eq(vi, vi);
7950// CHECK: @llvm.ppc.altivec.vcmpequw.p
7951// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7952
7953  res_i = vec_all_eq(vi, vbi);
7954// CHECK: @llvm.ppc.altivec.vcmpequw.p
7955// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7956
7957  res_i = vec_all_eq(vui, vui);
7958// CHECK: @llvm.ppc.altivec.vcmpequw.p
7959// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7960
7961  res_i = vec_all_eq(vui, vbi);
7962// CHECK: @llvm.ppc.altivec.vcmpequw.p
7963// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7964
7965  res_i = vec_all_eq(vbi, vi);
7966// CHECK: @llvm.ppc.altivec.vcmpequw.p
7967// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7968
7969  res_i = vec_all_eq(vbi, vui);
7970// CHECK: @llvm.ppc.altivec.vcmpequw.p
7971// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7972
7973  res_i = vec_all_eq(vbi, vbi);
7974// CHECK: @llvm.ppc.altivec.vcmpequw.p
7975// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7976
7977  res_i = vec_all_eq(vf, vf);
7978// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
7979// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
7980
7981  /* vec_all_ge */
7982  res_i = vec_all_ge(vsc, vsc);
7983// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7984// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7985
7986  res_i = vec_all_ge(vsc, vbc);
7987// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7988// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7989
7990  res_i = vec_all_ge(vuc, vuc);
7991// CHECK: @llvm.ppc.altivec.vcmpgtub.p
7992// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7993
7994  res_i = vec_all_ge(vuc, vbc);
7995// CHECK: @llvm.ppc.altivec.vcmpgtub.p
7996// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7997
7998  res_i = vec_all_ge(vbc, vsc);
7999// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8000// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8001
8002  res_i = vec_all_ge(vbc, vuc);
8003// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8004// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8005
8006  res_i = vec_all_ge(vbc, vbc);
8007// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8008// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8009
8010  res_i = vec_all_ge(vs, vs);
8011// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8012// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8013
8014  res_i = vec_all_ge(vs, vbs);
8015// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8016// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8017
8018  res_i = vec_all_ge(vus, vus);
8019// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8020// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8021
8022  res_i = vec_all_ge(vus, vbs);
8023// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8024// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8025
8026  res_i = vec_all_ge(vbs, vs);
8027// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8028// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8029
8030  res_i = vec_all_ge(vbs, vus);
8031// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8032// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8033
8034  res_i = vec_all_ge(vbs, vbs);
8035// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8036// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8037
8038  res_i = vec_all_ge(vi, vi);
8039// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8040// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8041
8042  res_i = vec_all_ge(vi, vbi);
8043// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8044// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8045
8046  res_i = vec_all_ge(vui, vui);
8047// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8048// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8049
8050  res_i = vec_all_ge(vui, vbi);
8051// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8052// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8053
8054  res_i = vec_all_ge(vbi, vi);
8055// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8056// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8057
8058  res_i = vec_all_ge(vbi, vui);
8059// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8060// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8061
8062  res_i = vec_all_ge(vbi, vbi);
8063// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8064// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8065
8066  res_i = vec_all_ge(vf, vf);
8067// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8068// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8069
8070  /* vec_all_gt */
8071  res_i = vec_all_gt(vsc, vsc);
8072// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8073// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8074
8075  res_i = vec_all_gt(vsc, vbc);
8076// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8077// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8078
8079  res_i = vec_all_gt(vuc, vuc);
8080// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8081// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8082
8083  res_i = vec_all_gt(vuc, vbc);
8084// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8085// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8086
8087  res_i = vec_all_gt(vbc, vsc);
8088// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8089// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8090
8091  res_i = vec_all_gt(vbc, vuc);
8092// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8093// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8094
8095  res_i = vec_all_gt(vbc, vbc);
8096// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8097// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8098
8099  res_i = vec_all_gt(vs, vs);
8100// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8101// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8102
8103  res_i = vec_all_gt(vs, vbs);
8104// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8105// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8106
8107  res_i = vec_all_gt(vus, vus);
8108// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8109// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8110
8111  res_i = vec_all_gt(vus, vbs);
8112// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8113// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8114
8115  res_i = vec_all_gt(vbs, vs);
8116// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8117// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8118
8119  res_i = vec_all_gt(vbs, vus);
8120// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8121// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8122
8123  res_i = vec_all_gt(vbs, vbs);
8124// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8125// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8126
8127  res_i = vec_all_gt(vi, vi);
8128// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8129// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8130
8131  res_i = vec_all_gt(vi, vbi);
8132// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8133// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8134
8135  res_i = vec_all_gt(vui, vui);
8136// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8137// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8138
8139  res_i = vec_all_gt(vui, vbi);
8140// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8141// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8142
8143  res_i = vec_all_gt(vbi, vi);
8144// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8145// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8146
8147  res_i = vec_all_gt(vbi, vui);
8148// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8149// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8150
8151  res_i = vec_all_gt(vbi, vbi);
8152// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8153// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8154
8155  res_i = vec_all_gt(vf, vf);
8156// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8157// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8158
8159  /* vec_all_in */
8160  res_i = vec_all_in(vf, vf);
8161// CHECK: @llvm.ppc.altivec.vcmpbfp.p
8162// CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8163
8164  /* vec_all_le */
8165  res_i = vec_all_le(vsc, vsc);
8166// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8167// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8168
8169  res_i = vec_all_le(vsc, vbc);
8170// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8171// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8172
8173  res_i = vec_all_le(vuc, vuc);
8174// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8175// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8176
8177  res_i = vec_all_le(vuc, vbc);
8178// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8179// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8180
8181  res_i = vec_all_le(vbc, vsc);
8182// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8183// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8184
8185  res_i = vec_all_le(vbc, vuc);
8186// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8187// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8188
8189  res_i = vec_all_le(vbc, vbc);
8190// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8191// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8192
8193  res_i = vec_all_le(vs, vs);
8194// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8195// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8196
8197  res_i = vec_all_le(vs, vbs);
8198// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8199// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8200
8201  res_i = vec_all_le(vus, vus);
8202// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8203// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8204
8205  res_i = vec_all_le(vus, vbs);
8206// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8207// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8208
8209  res_i = vec_all_le(vbs, vs);
8210// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8211// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8212
8213  res_i = vec_all_le(vbs, vus);
8214// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8215// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8216
8217  res_i = vec_all_le(vbs, vbs);
8218// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8219// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8220
8221  res_i = vec_all_le(vi, vi);
8222// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8223// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8224
8225  res_i = vec_all_le(vi, vbi);
8226// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8227// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8228
8229  res_i = vec_all_le(vui, vui);
8230// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8231// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8232
8233  res_i = vec_all_le(vui, vbi);
8234// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8235// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8236
8237  res_i = vec_all_le(vbi, vi);
8238// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8239// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8240
8241  res_i = vec_all_le(vbi, vui);
8242// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8243// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8244
8245  res_i = vec_all_le(vbi, vbi);
8246// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8247// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8248
8249  res_i = vec_all_le(vf, vf);
8250// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8251// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8252
8253  /* vec_all_lt */
8254  res_i = vec_all_lt(vsc, vsc);
8255// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8256// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8257
8258  res_i = vec_all_lt(vsc, vbc);
8259// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8260// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8261
8262  res_i = vec_all_lt(vuc, vuc);
8263// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8264// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8265
8266  res_i = vec_all_lt(vuc, vbc);
8267// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8268// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8269
8270  res_i = vec_all_lt(vbc, vsc);
8271// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8272// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8273
8274  res_i = vec_all_lt(vbc, vuc);
8275// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8276// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8277
8278  res_i = vec_all_lt(vbc, vbc);
8279// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8280// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8281
8282  res_i = vec_all_lt(vs, vs);
8283// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8284// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8285
8286  res_i = vec_all_lt(vs, vbs);
8287// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8288// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8289
8290  res_i = vec_all_lt(vus, vus);
8291// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8292// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8293
8294  res_i = vec_all_lt(vus, vbs);
8295// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8296// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8297
8298  res_i = vec_all_lt(vbs, vs);
8299// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8300// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8301
8302  res_i = vec_all_lt(vbs, vus);
8303// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8304// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8305
8306  res_i = vec_all_lt(vbs, vbs);
8307// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8308// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8309
8310  res_i = vec_all_lt(vi, vi);
8311// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8312// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8313
8314  res_i = vec_all_lt(vi, vbi);
8315// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8316// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8317
8318  res_i = vec_all_lt(vui, vui);
8319// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8320// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8321
8322  res_i = vec_all_lt(vui, vbi);
8323// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8324// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8325
8326  res_i = vec_all_lt(vbi, vi);
8327// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8328// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8329
8330  res_i = vec_all_lt(vbi, vui);
8331// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8332// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8333
8334  res_i = vec_all_lt(vbi, vbi);
8335// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8336// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8337
8338  res_i = vec_all_lt(vf, vf);
8339// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8340// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8341
8342  /* vec_all_nan */
8343  res_i = vec_all_nan(vf);
8344// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8345// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8346
8347  /*  vec_all_ne */
8348  res_i = vec_all_ne(vsc, vsc);
8349// CHECK: @llvm.ppc.altivec.vcmpequb.p
8350// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8351
8352  res_i = vec_all_ne(vsc, vbc);
8353// CHECK: @llvm.ppc.altivec.vcmpequb.p
8354// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8355
8356  res_i = vec_all_ne(vuc, vuc);
8357// CHECK: @llvm.ppc.altivec.vcmpequb.p
8358// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8359
8360  res_i = vec_all_ne(vuc, vbc);
8361// CHECK: @llvm.ppc.altivec.vcmpequb.p
8362// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8363
8364  res_i = vec_all_ne(vbc, vsc);
8365// CHECK: @llvm.ppc.altivec.vcmpequb.p
8366// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8367
8368  res_i = vec_all_ne(vbc, vuc);
8369// CHECK: @llvm.ppc.altivec.vcmpequb.p
8370// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8371
8372  res_i = vec_all_ne(vbc, vbc);
8373// CHECK: @llvm.ppc.altivec.vcmpequb.p
8374// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8375
8376  res_i = vec_all_ne(vs, vs);
8377// CHECK: @llvm.ppc.altivec.vcmpequh.p
8378// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8379
8380  res_i = vec_all_ne(vs, vbs);
8381// CHECK: @llvm.ppc.altivec.vcmpequh.p
8382// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8383
8384  res_i = vec_all_ne(vus, vus);
8385// CHECK: @llvm.ppc.altivec.vcmpequh.p
8386// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8387
8388  res_i = vec_all_ne(vus, vbs);
8389// CHECK: @llvm.ppc.altivec.vcmpequh.p
8390// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8391
8392  res_i = vec_all_ne(vbs, vs);
8393// CHECK: @llvm.ppc.altivec.vcmpequh.p
8394// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8395
8396  res_i = vec_all_ne(vbs, vus);
8397// CHECK: @llvm.ppc.altivec.vcmpequh.p
8398// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8399
8400  res_i = vec_all_ne(vbs, vbs);
8401// CHECK: @llvm.ppc.altivec.vcmpequh.p
8402// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8403
8404  res_i = vec_all_ne(vp, vp);
8405// CHECK: @llvm.ppc.altivec.vcmpequh.p
8406// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8407
8408  res_i = vec_all_ne(vi, vi);
8409// CHECK: @llvm.ppc.altivec.vcmpequw.p
8410// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8411
8412  res_i = vec_all_ne(vi, vbi);
8413// CHECK: @llvm.ppc.altivec.vcmpequw.p
8414// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8415
8416  res_i = vec_all_ne(vui, vui);
8417// CHECK: @llvm.ppc.altivec.vcmpequw.p
8418// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8419
8420  res_i = vec_all_ne(vui, vbi);
8421// CHECK: @llvm.ppc.altivec.vcmpequw.p
8422// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8423
8424  res_i = vec_all_ne(vbi, vi);
8425// CHECK: @llvm.ppc.altivec.vcmpequw.p
8426// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8427
8428  res_i = vec_all_ne(vbi, vui);
8429// CHECK: @llvm.ppc.altivec.vcmpequw.p
8430// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8431
8432  res_i = vec_all_ne(vbi, vbi);
8433// CHECK: @llvm.ppc.altivec.vcmpequw.p
8434// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8435
8436  res_i = vec_all_ne(vf, vf);
8437// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8438// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8439
8440  /* vec_all_nge */
8441  res_i = vec_all_nge(vf, vf);
8442// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8443// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8444
8445  /* vec_all_ngt */
8446  res_i = vec_all_ngt(vf, vf);
8447// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8448// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8449
8450  /* vec_all_nle */
8451  res_i = vec_all_nle(vf, vf);
8452// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8453// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8454
8455  /* vec_all_nlt */
8456  res_i = vec_all_nlt(vf, vf);
8457// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8458// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8459
8460  /* vec_all_numeric */
8461  res_i = vec_all_numeric(vf);
8462// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8463// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8464
8465  /*  vec_any_eq */
8466  res_i = vec_any_eq(vsc, vsc);
8467// CHECK: @llvm.ppc.altivec.vcmpequb.p
8468// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8469
8470  res_i = vec_any_eq(vsc, vbc);
8471// CHECK: @llvm.ppc.altivec.vcmpequb.p
8472// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8473
8474  res_i = vec_any_eq(vuc, vuc);
8475// CHECK: @llvm.ppc.altivec.vcmpequb.p
8476// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8477
8478  res_i = vec_any_eq(vuc, vbc);
8479// CHECK: @llvm.ppc.altivec.vcmpequb.p
8480// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8481
8482  res_i = vec_any_eq(vbc, vsc);
8483// CHECK: @llvm.ppc.altivec.vcmpequb.p
8484// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8485
8486  res_i = vec_any_eq(vbc, vuc);
8487// CHECK: @llvm.ppc.altivec.vcmpequb.p
8488// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8489
8490  res_i = vec_any_eq(vbc, vbc);
8491// CHECK: @llvm.ppc.altivec.vcmpequb.p
8492// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8493
8494  res_i = vec_any_eq(vs, vs);
8495// CHECK: @llvm.ppc.altivec.vcmpequh.p
8496// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8497
8498  res_i = vec_any_eq(vs, vbs);
8499// CHECK: @llvm.ppc.altivec.vcmpequh.p
8500// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8501
8502  res_i = vec_any_eq(vus, vus);
8503// CHECK: @llvm.ppc.altivec.vcmpequh.p
8504// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8505
8506  res_i = vec_any_eq(vus, vbs);
8507// CHECK: @llvm.ppc.altivec.vcmpequh.p
8508// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8509
8510  res_i = vec_any_eq(vbs, vs);
8511// CHECK: @llvm.ppc.altivec.vcmpequh.p
8512// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8513
8514  res_i = vec_any_eq(vbs, vus);
8515// CHECK: @llvm.ppc.altivec.vcmpequh.p
8516// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8517
8518  res_i = vec_any_eq(vbs, vbs);
8519// CHECK: @llvm.ppc.altivec.vcmpequh.p
8520// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8521
8522  res_i = vec_any_eq(vp, vp);
8523// CHECK: @llvm.ppc.altivec.vcmpequh.p
8524// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8525
8526  res_i = vec_any_eq(vi, vi);
8527// CHECK: @llvm.ppc.altivec.vcmpequw.p
8528// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8529
8530  res_i = vec_any_eq(vi, vbi);
8531// CHECK: @llvm.ppc.altivec.vcmpequw.p
8532// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8533
8534  res_i = vec_any_eq(vui, vui);
8535// CHECK: @llvm.ppc.altivec.vcmpequw.p
8536// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8537
8538  res_i = vec_any_eq(vui, vbi);
8539// CHECK: @llvm.ppc.altivec.vcmpequw.p
8540// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8541
8542  res_i = vec_any_eq(vbi, vi);
8543// CHECK: @llvm.ppc.altivec.vcmpequw.p
8544// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8545
8546  res_i = vec_any_eq(vbi, vui);
8547// CHECK: @llvm.ppc.altivec.vcmpequw.p
8548// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8549
8550  res_i = vec_any_eq(vbi, vbi);
8551// CHECK: @llvm.ppc.altivec.vcmpequw.p
8552// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8553
8554  res_i = vec_any_eq(vf, vf);
8555// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8556// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8557
8558  /* vec_any_ge */
8559  res_i = vec_any_ge(vsc, vsc);
8560// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8561// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8562
8563  res_i = vec_any_ge(vsc, vbc);
8564// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8565// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8566
8567  res_i = vec_any_ge(vuc, vuc);
8568// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8569// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8570
8571  res_i = vec_any_ge(vuc, vbc);
8572// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8573// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8574
8575  res_i = vec_any_ge(vbc, vsc);
8576// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8577// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8578
8579  res_i = vec_any_ge(vbc, vuc);
8580// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8581// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8582
8583  res_i = vec_any_ge(vbc, vbc);
8584// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8585// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8586
8587  res_i = vec_any_ge(vs, vs);
8588// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8589// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8590
8591  res_i = vec_any_ge(vs, vbs);
8592// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8593// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8594
8595  res_i = vec_any_ge(vus, vus);
8596// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8597// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8598
8599  res_i = vec_any_ge(vus, vbs);
8600// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8601// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8602
8603  res_i = vec_any_ge(vbs, vs);
8604// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8605// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8606
8607  res_i = vec_any_ge(vbs, vus);
8608// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8609// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8610
8611  res_i = vec_any_ge(vbs, vbs);
8612// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8613// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8614
8615  res_i = vec_any_ge(vi, vi);
8616// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8617// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8618
8619  res_i = vec_any_ge(vi, vbi);
8620// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8621// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8622
8623  res_i = vec_any_ge(vui, vui);
8624// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8625// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8626
8627  res_i = vec_any_ge(vui, vbi);
8628// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8629// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8630
8631  res_i = vec_any_ge(vbi, vi);
8632// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8633// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8634
8635  res_i = vec_any_ge(vbi, vui);
8636// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8637// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8638
8639  res_i = vec_any_ge(vbi, vbi);
8640// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8641// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8642
8643  res_i = vec_any_ge(vf, vf);
8644// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8645// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8646
8647  /* vec_any_gt */
8648  res_i = vec_any_gt(vsc, vsc);
8649// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8650// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8651
8652  res_i = vec_any_gt(vsc, vbc);
8653// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8654// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8655
8656  res_i = vec_any_gt(vuc, vuc);
8657// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8658// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8659
8660  res_i = vec_any_gt(vuc, vbc);
8661// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8662// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8663
8664  res_i = vec_any_gt(vbc, vsc);
8665// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8666// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8667
8668  res_i = vec_any_gt(vbc, vuc);
8669// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8670// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8671
8672  res_i = vec_any_gt(vbc, vbc);
8673// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8674// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8675
8676  res_i = vec_any_gt(vs, vs);
8677// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8678// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8679
8680  res_i = vec_any_gt(vs, vbs);
8681// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8682// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8683
8684  res_i = vec_any_gt(vus, vus);
8685// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8686// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8687
8688  res_i = vec_any_gt(vus, vbs);
8689// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8690// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8691
8692  res_i = vec_any_gt(vbs, vs);
8693// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8694// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8695
8696  res_i = vec_any_gt(vbs, vus);
8697// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8698// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8699
8700  res_i = vec_any_gt(vbs, vbs);
8701// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8702// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8703
8704  res_i = vec_any_gt(vi, vi);
8705// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8706// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8707
8708  res_i = vec_any_gt(vi, vbi);
8709// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8710// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8711
8712  res_i = vec_any_gt(vui, vui);
8713// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8714// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8715
8716  res_i = vec_any_gt(vui, vbi);
8717// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8718// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8719
8720  res_i = vec_any_gt(vbi, vi);
8721// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8722// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8723
8724  res_i = vec_any_gt(vbi, vui);
8725// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8726// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8727
8728  res_i = vec_any_gt(vbi, vbi);
8729// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8730// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8731
8732  res_i = vec_any_gt(vf, vf);
8733// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8734// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8735
8736  /* vec_any_le */
8737  res_i = vec_any_le(vsc, vsc);
8738// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8739// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8740
8741  res_i = vec_any_le(vsc, vbc);
8742// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8743// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8744
8745  res_i = vec_any_le(vuc, vuc);
8746// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8747// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8748
8749  res_i = vec_any_le(vuc, vbc);
8750// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8751// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8752
8753  res_i = vec_any_le(vbc, vsc);
8754// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8755// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8756
8757  res_i = vec_any_le(vbc, vuc);
8758// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8759// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8760
8761  res_i = vec_any_le(vbc, vbc);
8762// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8763// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8764
8765  res_i = vec_any_le(vs, vs);
8766// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8767// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8768
8769  res_i = vec_any_le(vs, vbs);
8770// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8771// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8772
8773  res_i = vec_any_le(vus, vus);
8774// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8775// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8776
8777  res_i = vec_any_le(vus, vbs);
8778// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8779// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8780
8781  res_i = vec_any_le(vbs, vs);
8782// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8783// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8784
8785  res_i = vec_any_le(vbs, vus);
8786// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8787// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8788
8789  res_i = vec_any_le(vbs, vbs);
8790// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8791// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8792
8793  res_i = vec_any_le(vi, vi);
8794// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8795// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8796
8797  res_i = vec_any_le(vi, vbi);
8798// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8799// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8800
8801  res_i = vec_any_le(vui, vui);
8802// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8803// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8804
8805  res_i = vec_any_le(vui, vbi);
8806// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8807// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8808
8809  res_i = vec_any_le(vbi, vi);
8810// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8811// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8812
8813  res_i = vec_any_le(vbi, vui);
8814// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8815// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8816
8817  res_i = vec_any_le(vbi, vbi);
8818// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8819// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8820
8821  res_i = vec_any_le(vf, vf);
8822// CHECK: @llvm.ppc.altivec.vcmpgefp.p
8823// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8824
8825  /* vec_any_lt */
8826  res_i = vec_any_lt(vsc, vsc);
8827// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8828// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8829
8830  res_i = vec_any_lt(vsc, vbc);
8831// CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8832// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8833
8834  res_i = vec_any_lt(vuc, vuc);
8835// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8836// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8837
8838  res_i = vec_any_lt(vuc, vbc);
8839// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8840// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8841
8842  res_i = vec_any_lt(vbc, vsc);
8843// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8844// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8845
8846  res_i = vec_any_lt(vbc, vuc);
8847// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8848// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8849
8850  res_i = vec_any_lt(vbc, vbc);
8851// CHECK: @llvm.ppc.altivec.vcmpgtub.p
8852// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8853
8854  res_i = vec_any_lt(vs, vs);
8855// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8856// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8857
8858  res_i = vec_any_lt(vs, vbs);
8859// CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8860// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8861
8862  res_i = vec_any_lt(vus, vus);
8863// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8864// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8865
8866  res_i = vec_any_lt(vus, vbs);
8867// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8868// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8869
8870  res_i = vec_any_lt(vbs, vs);
8871// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8872// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8873
8874  res_i = vec_any_lt(vbs, vus);
8875// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8876// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8877
8878  res_i = vec_any_lt(vbs, vbs);
8879// CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8880// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8881
8882  res_i = vec_any_lt(vi, vi);
8883// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8884// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8885
8886  res_i = vec_any_lt(vi, vbi);
8887// CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8888// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8889
8890  res_i = vec_any_lt(vui, vui);
8891// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8892// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8893
8894  res_i = vec_any_lt(vui, vbi);
8895// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8896// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8897
8898  res_i = vec_any_lt(vbi, vi);
8899// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8900// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8901
8902  res_i = vec_any_lt(vbi, vui);
8903// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8904// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8905
8906  res_i = vec_any_lt(vbi, vbi);
8907// CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8908// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8909
8910  res_i = vec_any_lt(vf, vf);
8911// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8912// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8913
8914  /* vec_any_nan */
8915  res_i = vec_any_nan(vf);
8916// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8917// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8918
8919  /* vec_any_ne */
8920  res_i = vec_any_ne(vsc, vsc);
8921// CHECK: @llvm.ppc.altivec.vcmpequb.p
8922// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8923
8924  res_i = vec_any_ne(vsc, vbc);
8925// CHECK: @llvm.ppc.altivec.vcmpequb.p
8926// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8927
8928  res_i = vec_any_ne(vuc, vuc);
8929// CHECK: @llvm.ppc.altivec.vcmpequb.p
8930// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8931
8932  res_i = vec_any_ne(vuc, vbc);
8933// CHECK: @llvm.ppc.altivec.vcmpequb.p
8934// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8935
8936  res_i = vec_any_ne(vbc, vsc);
8937// CHECK: @llvm.ppc.altivec.vcmpequb.p
8938// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8939
8940  res_i = vec_any_ne(vbc, vuc);
8941// CHECK: @llvm.ppc.altivec.vcmpequb.p
8942// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8943
8944  res_i = vec_any_ne(vbc, vbc);
8945// CHECK: @llvm.ppc.altivec.vcmpequb.p
8946// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8947
8948  res_i = vec_any_ne(vs, vs);
8949// CHECK: @llvm.ppc.altivec.vcmpequh.p
8950// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8951
8952  res_i = vec_any_ne(vs, vbs);
8953// CHECK: @llvm.ppc.altivec.vcmpequh.p
8954// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8955
8956  res_i = vec_any_ne(vus, vus);
8957// CHECK: @llvm.ppc.altivec.vcmpequh.p
8958// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8959
8960  res_i = vec_any_ne(vus, vbs);
8961// CHECK: @llvm.ppc.altivec.vcmpequh.p
8962// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8963
8964  res_i = vec_any_ne(vbs, vs);
8965// CHECK: @llvm.ppc.altivec.vcmpequh.p
8966// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8967
8968  res_i = vec_any_ne(vbs, vus);
8969// CHECK: @llvm.ppc.altivec.vcmpequh.p
8970// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8971
8972  res_i = vec_any_ne(vbs, vbs);
8973// CHECK: @llvm.ppc.altivec.vcmpequh.p
8974// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8975
8976  res_i = vec_any_ne(vp, vp);
8977// CHECK: @llvm.ppc.altivec.vcmpequh.p
8978// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8979
8980  res_i = vec_any_ne(vi, vi);
8981// CHECK: @llvm.ppc.altivec.vcmpequw.p
8982// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8983
8984  res_i = vec_any_ne(vi, vbi);
8985// CHECK: @llvm.ppc.altivec.vcmpequw.p
8986// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8987
8988  res_i = vec_any_ne(vui, vui);
8989// CHECK: @llvm.ppc.altivec.vcmpequw.p
8990// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8991
8992  res_i = vec_any_ne(vui, vbi);
8993// CHECK: @llvm.ppc.altivec.vcmpequw.p
8994// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8995
8996  res_i = vec_any_ne(vbi, vi);
8997// CHECK: @llvm.ppc.altivec.vcmpequw.p
8998// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8999
9000  res_i = vec_any_ne(vbi, vui);
9001// CHECK: @llvm.ppc.altivec.vcmpequw.p
9002// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9003
9004  res_i = vec_any_ne(vbi, vbi);
9005// CHECK: @llvm.ppc.altivec.vcmpequw.p
9006// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9007
9008  res_i = vec_any_ne(vf, vf);
9009// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9010// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9011
9012  /* vec_any_nge */
9013  res_i = vec_any_nge(vf, vf);
9014// CHECK: @llvm.ppc.altivec.vcmpgefp.p
9015// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9016
9017  /* vec_any_ngt */
9018  res_i = vec_any_ngt(vf, vf);
9019// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9020// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9021
9022  /* vec_any_nle */
9023  res_i = vec_any_nle(vf, vf);
9024// CHECK: @llvm.ppc.altivec.vcmpgefp.p
9025// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9026
9027  /* vec_any_nlt */
9028  res_i = vec_any_nlt(vf, vf);
9029// CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9030// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9031
9032  /* vec_any_numeric */
9033  res_i = vec_any_numeric(vf);
9034// CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9035// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9036
9037  /* vec_any_out */
9038  res_i = vec_any_out(vf, vf);
9039// CHECK: @llvm.ppc.altivec.vcmpbfp.p
9040// CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9041}
9042
9043/* ------------------------------ Relational Operators ------------------------------ */
9044// CHECK-LABEL: define void @test7
9045void test7() {
9046  vector signed char vsc1 = (vector signed char)(-1);
9047  vector signed char vsc2 = (vector signed char)(-2);
9048  res_i = (vsc1 == vsc2);
9049// CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9050// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9051
9052  res_i = (vsc1 != vsc2);
9053// CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9054// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9055
9056  res_i = (vsc1 <  vsc2);
9057// CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9058// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9059
9060  res_i = (vsc1 >  vsc2);
9061// CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9062// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9063
9064  res_i = (vsc1 <= vsc2);
9065// CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9066// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9067
9068  res_i = (vsc1 >= vsc2);
9069// CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9070// CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9071
9072  vector unsigned char vuc1 = (vector unsigned char)(1);
9073  vector unsigned char vuc2 = (vector unsigned char)(2);
9074  res_i = (vuc1 == vuc2);
9075// CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9076// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9077
9078  res_i = (vuc1 != vuc2);
9079// CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9080// CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9081
9082  res_i = (vuc1 <  vuc2);
9083// CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9084// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9085
9086  res_i = (vuc1 >  vuc2);
9087// CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9088// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9089
9090  res_i = (vuc1 <= vuc2);
9091// CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9092// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9093
9094  res_i = (vuc1 >= vuc2);
9095// CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9096// CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9097
9098  vector short vs1 = (vector short)(-1);
9099  vector short vs2 = (vector short)(-2);
9100  res_i = (vs1 == vs2);
9101// CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9102// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9103
9104  res_i = (vs1 != vs2);
9105// CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9106// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9107
9108  res_i = (vs1 <  vs2);
9109// CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9110// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9111
9112  res_i = (vs1 >  vs2);
9113// CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9114// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9115
9116  res_i = (vs1 <= vs2);
9117// CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9118// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9119
9120  res_i = (vs1 >= vs2);
9121// CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9122// CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9123
9124  vector unsigned short vus1 = (vector unsigned short)(1);
9125  vector unsigned short vus2 = (vector unsigned short)(2);
9126  res_i = (vus1 == vus2);
9127// CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9128// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9129
9130  res_i = (vus1 != vus2);
9131// CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9132// CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9133
9134  res_i = (vus1 <  vus2);
9135// CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9136// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9137
9138  res_i = (vus1 >  vus2);
9139// CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9140// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9141
9142  res_i = (vus1 <= vus2);
9143// CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9144// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9145
9146  res_i = (vus1 >= vus2);
9147// CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9148// CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9149
9150  vector int vi1 = (vector int)(-1);
9151  vector int vi2 = (vector int)(-2);
9152  res_i = (vi1 == vi2);
9153// CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9154// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9155
9156  res_i = (vi1 != vi2);
9157// CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9158// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9159
9160  res_i = (vi1 <  vi2);
9161// CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9162// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9163
9164  res_i = (vi1 >  vi2);
9165// CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9166// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9167
9168  res_i = (vi1 <= vi2);
9169// CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9170// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9171
9172  res_i = (vi1 >= vi2);
9173// CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9174// CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9175
9176  vector unsigned int vui1 = (vector unsigned int)(1);
9177  vector unsigned int vui2 = (vector unsigned int)(2);
9178  res_i = (vui1 == vui2);
9179// CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9180// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9181
9182  res_i = (vui1 != vui2);
9183// CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9184// CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9185
9186  res_i = (vui1 <  vui2);
9187// CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9188// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9189
9190  res_i = (vui1 >  vui2);
9191// CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9192// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9193
9194  res_i = (vui1 <= vui2);
9195// CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9196// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9197
9198  res_i = (vui1 >= vui2);
9199// CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9200// CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9201
9202  vector float vf1 = (vector float)(1.0);
9203  vector float vf2 = (vector float)(2.0);
9204  res_i = (vf1 == vf2);
9205// CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9206// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9207
9208  res_i = (vf1 != vf2);
9209// CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9210// CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9211
9212  res_i = (vf1 <  vf2);
9213// CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9214// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9215
9216  res_i = (vf1 >  vf2);
9217// CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9218// CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9219
9220  res_i = (vf1 <= vf2);
9221// CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9222// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9223
9224  res_i = (vf1 >= vf2);
9225// CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9226// CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9227}
9228
9229/* ------------------------------ optional ---------------------------------- */
9230void test8() {
9231// CHECK-LABEL: define void @test8
9232// CHECK-LE-LABEL: define void @test8
9233  res_vbc = vec_reve(vbc);
9234  // 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>
9235  // 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>
9236
9237  res_vsc = vec_reve(vsc);
9238  // 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>
9239  // 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>
9240
9241  res_vuc = vec_reve(vuc);
9242  // 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>
9243  // 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>
9244
9245  res_vbi = vec_reve(vbi);
9246  // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9247  // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9248
9249  res_vi = vec_reve(vi);
9250  // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9251  // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9252
9253  res_vui = vec_reve(vui);
9254  // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9255  // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9256
9257  res_vbs = vec_reve(vbs);
9258  // 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>
9259  // 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>
9260
9261  res_vbs = vec_reve(vs);
9262  // 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>
9263  // 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>
9264
9265  res_vbs = vec_reve(vus);
9266  // 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>
9267  // 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>
9268
9269  res_vf = vec_reve(vf);
9270  // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9271  // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9272
9273  res_vbc = vec_revb(vbc);
9274// CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9275// CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9276// CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9277// CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9278// CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9279// CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9280// CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9281// CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9282
9283  res_vsc = vec_revb(vsc);
9284// CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9285// CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9286// CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9287// CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9288// CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9289// CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9290// CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9291// CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9292
9293  res_vuc = vec_revb(vuc);
9294// CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9295// CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9296// CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9297// CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9298// CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9299// CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9300// CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9301// CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9302
9303  res_vbs = vec_revb(vbs);
9304// 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
9305// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9306// 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
9307// 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
9308// CHECK-LE: xor <16 x i8>
9309// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9310
9311  res_vs = vec_revb(vs);
9312// 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
9313// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9314// 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
9315// 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
9316// CHECK-LE: xor <16 x i8>
9317// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9318
9319  res_vus = vec_revb(vus);
9320// 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
9321// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9322// 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
9323// 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
9324// CHECK-LE: xor <16 x i8>
9325// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9326
9327  res_vbi = vec_revb(vbi);
9328// 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
9329// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9330// 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
9331// 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
9332// CHECK-LE: xor <16 x i8>
9333// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9334
9335  res_vi = vec_revb(vi);
9336// 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
9337// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9338// 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
9339// 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
9340// CHECK-LE: xor <16 x i8>
9341// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9342
9343  res_vui = vec_revb(vui);
9344// 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
9345// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9346// 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
9347// 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
9348// CHECK-LE: xor <16 x i8>
9349// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9350
9351  res_vf = vec_revb(vf);
9352// 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
9353// CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9354// 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
9355// 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
9356// CHECK-LE: xor <16 x i8>
9357// CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9358}
9359
9360/* ------------------------------ vec_xl ------------------------------------ */
9361void test9() {
9362  // CHECK-LABEL: define void @test9
9363  // CHECK-LE-LABEL: define void @test9
9364  res_vsc = vec_xl(param_sll, &param_sc);
9365  // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9366  // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9367
9368  res_vuc = vec_xl(param_sll, &param_uc);
9369  // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9370  // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9371
9372  res_vs = vec_xl(param_sll, &param_s);
9373  // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9374  // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9375
9376  res_vus = vec_xl(param_sll, &param_us);
9377  // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9378  // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9379
9380  res_vi = vec_xl(param_sll, &param_i);
9381  // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9382  // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9383
9384  res_vui = vec_xl(param_sll, &param_ui);
9385  // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9386  // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9387
9388  res_vf = vec_xl(param_sll, &param_f);
9389  // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9390  // CHECK-LE: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9391}
9392
9393/* ------------------------------ vec_xst ----------------------------------- */
9394void test10() {
9395  // CHECK-LABEL: define void @test10
9396  // CHECK-LE-LABEL: define void @test10
9397  vec_xst(vsc, param_sll, &param_sc);
9398  // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9399  // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9400
9401  vec_xst(vuc, param_sll, &param_uc);
9402  // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9403  // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9404
9405  vec_xst(vs, param_sll, &param_s);
9406  // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9407  // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9408
9409  vec_xst(vus, param_sll, &param_us);
9410  // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9411  // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9412
9413  vec_xst(vi, param_sll, &param_i);
9414  // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9415  // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9416
9417  vec_xst(vui, param_sll, &param_ui);
9418  // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9419  // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9420
9421  vec_xst(vf, param_sll, &param_f);
9422  // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9423  // CHECK-LE: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9424}
9425
9426/* ----------------------------- vec_xl_be ---------------------------------- */
9427void test11() {
9428  // CHECK-LABEL: define void @test11
9429  // CHECK-LE-LABEL: define void @test11
9430  res_vsc = vec_xl_be(param_sll, &param_sc);
9431  // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9432  // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9433  // 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>
9434
9435  res_vuc = vec_xl_be(param_sll, &param_uc);
9436  // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9437  // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9438  // 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>
9439
9440  res_vs = vec_xl_be(param_sll, &param_s);
9441  // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9442  // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9443  // 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>
9444
9445  res_vus = vec_xl_be(param_sll, &param_us);
9446  // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9447  // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9448  // 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>
9449
9450  res_vi = vec_xl_be(param_sll, &param_i);
9451  // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9452  // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9453
9454  res_vui = vec_xl_be(param_sll, &param_ui);
9455  // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9456  // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9457
9458  res_vf = vec_xl_be(param_sll, &param_f);
9459  // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9460  // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9461}
9462
9463/* ----------------------------- vec_xst_be --------------------------------- */
9464void test12() {
9465  // CHECK-LABEL: define void @test12
9466  // CHECK-LE-LABEL: define void @test12
9467  vec_xst_be(vsc, param_sll, &param_sc);
9468  // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9469  // 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>
9470  // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9471
9472  vec_xst_be(vuc, param_sll, &param_uc);
9473  // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9474  // 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>
9475  // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9476
9477  vec_xst_be(vs, param_sll, &param_s);
9478  // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9479  // 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>
9480  // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9481
9482  vec_xst_be(vus, param_sll, &param_us);
9483  // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9484  // 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>
9485  // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9486
9487  vec_xst_be(vi, param_sll, &param_i);
9488  // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9489  // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9490
9491  vec_xst_be(vui, param_sll, &param_ui);
9492  // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9493  // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9494
9495  vec_xst_be(vf, param_sll, &param_f);
9496  // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9497  // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9498}
9499