xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/builtins-ppc-altivec.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // REQUIRES: ppc32-registered-target
2*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -faltivec -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
3*f4a2713aSLionel Sambuc 
4*f4a2713aSLionel Sambuc vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
5*f4a2713aSLionel Sambuc vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
6*f4a2713aSLionel Sambuc vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
7*f4a2713aSLionel Sambuc vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
8*f4a2713aSLionel Sambuc vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
9*f4a2713aSLionel Sambuc vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
10*f4a2713aSLionel Sambuc vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
11*f4a2713aSLionel Sambuc vector bool int vbi = { 1, 0, 1, 0 };
12*f4a2713aSLionel Sambuc vector int vi = { -1, 2, -3, 4 };
13*f4a2713aSLionel Sambuc vector unsigned int vui = { 1, 2, 3, 4 };
14*f4a2713aSLionel Sambuc vector float vf = { -1.5, 2.5, -3.5, 4.5 };
15*f4a2713aSLionel Sambuc 
16*f4a2713aSLionel Sambuc vector bool char res_vbc;
17*f4a2713aSLionel Sambuc vector signed char res_vsc;
18*f4a2713aSLionel Sambuc vector unsigned char res_vuc;
19*f4a2713aSLionel Sambuc vector bool short res_vbs;
20*f4a2713aSLionel Sambuc vector short res_vs;
21*f4a2713aSLionel Sambuc vector unsigned short res_vus;
22*f4a2713aSLionel Sambuc vector pixel res_vp;
23*f4a2713aSLionel Sambuc vector bool int res_vbi;
24*f4a2713aSLionel Sambuc vector int res_vi;
25*f4a2713aSLionel Sambuc vector unsigned int res_vui;
26*f4a2713aSLionel Sambuc vector float res_vf;
27*f4a2713aSLionel Sambuc 
28*f4a2713aSLionel Sambuc signed char param_sc;
29*f4a2713aSLionel Sambuc unsigned char param_uc;
30*f4a2713aSLionel Sambuc short param_s;
31*f4a2713aSLionel Sambuc unsigned short param_us;
32*f4a2713aSLionel Sambuc int param_i;
33*f4a2713aSLionel Sambuc unsigned int param_ui;
34*f4a2713aSLionel Sambuc float param_f;
35*f4a2713aSLionel Sambuc 
36*f4a2713aSLionel Sambuc int res_sc;
37*f4a2713aSLionel Sambuc int res_uc;
38*f4a2713aSLionel Sambuc int res_s;
39*f4a2713aSLionel Sambuc int res_us;
40*f4a2713aSLionel Sambuc int res_i;
41*f4a2713aSLionel Sambuc int res_ui;
42*f4a2713aSLionel Sambuc int res_f;
43*f4a2713aSLionel Sambuc 
44*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @test1
45*f4a2713aSLionel Sambuc void test1() {
46*f4a2713aSLionel Sambuc 
47*f4a2713aSLionel Sambuc   /* vec_abs */
48*f4a2713aSLionel Sambuc   vsc = vec_abs(vsc);                           // CHECK: sub <16 x i8> zeroinitializer
49*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsb
50*f4a2713aSLionel Sambuc 
51*f4a2713aSLionel Sambuc   vs = vec_abs(vs);                             // CHECK: sub <8 x i16> zeroinitializer
52*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsh
53*f4a2713aSLionel Sambuc 
54*f4a2713aSLionel Sambuc   vi = vec_abs(vi);                             // CHECK: sub <4 x i32> zeroinitializer
55*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsw
56*f4a2713aSLionel Sambuc 
57*f4a2713aSLionel Sambuc   vf = vec_abs(vf);                             // CHECK: and <4 x i32>
58*f4a2713aSLionel Sambuc 
59*f4a2713aSLionel Sambuc   /* vec_abs */
60*f4a2713aSLionel Sambuc   vsc = vec_abss(vsc);                          // CHECK: @llvm.ppc.altivec.vsubsbs
61*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsb
62*f4a2713aSLionel Sambuc 
63*f4a2713aSLionel Sambuc   vs = vec_abss(vs);                            // CHECK: @llvm.ppc.altivec.vsubshs
64*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsh
65*f4a2713aSLionel Sambuc 
66*f4a2713aSLionel Sambuc   vi = vec_abss(vi);                            // CHECK: @llvm.ppc.altivec.vsubsws
67*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vmaxsw
68*f4a2713aSLionel Sambuc 
69*f4a2713aSLionel Sambuc   /*  vec_add */
70*f4a2713aSLionel Sambuc   res_vsc = vec_add(vsc, vsc);                  // CHECK: add <16 x i8>
71*f4a2713aSLionel Sambuc   res_vsc = vec_add(vbc, vsc);                  // CHECK: add <16 x i8>
72*f4a2713aSLionel Sambuc   res_vsc = vec_add(vsc, vbc);                  // CHECK: add <16 x i8>
73*f4a2713aSLionel Sambuc   res_vuc = vec_add(vuc, vuc);                  // CHECK: add <16 x i8>
74*f4a2713aSLionel Sambuc   res_vuc = vec_add(vbc, vuc);                  // CHECK: add <16 x i8>
75*f4a2713aSLionel Sambuc   res_vuc = vec_add(vuc, vbc);                  // CHECK: add <16 x i8>
76*f4a2713aSLionel Sambuc   res_vs  = vec_add(vs, vs);                    // CHECK: add <8 x i16>
77*f4a2713aSLionel Sambuc   res_vs  = vec_add(vbs, vs);                   // CHECK: add <8 x i16>
78*f4a2713aSLionel Sambuc   res_vs  = vec_add(vs, vbs);                   // CHECK: add <8 x i16>
79*f4a2713aSLionel Sambuc   res_vus = vec_add(vus, vus);                  // CHECK: add <8 x i16>
80*f4a2713aSLionel Sambuc   res_vus = vec_add(vbs, vus);                  // CHECK: add <8 x i16>
81*f4a2713aSLionel Sambuc   res_vus = vec_add(vus, vbs);                  // CHECK: add <8 x i16>
82*f4a2713aSLionel Sambuc   res_vi  = vec_add(vi, vi);                    // CHECK: add <4 x i32>
83*f4a2713aSLionel Sambuc   res_vi  = vec_add(vbi, vi);                   // CHECK: add <4 x i32>
84*f4a2713aSLionel Sambuc   res_vi  = vec_add(vi, vbi);                   // CHECK: add <4 x i32>
85*f4a2713aSLionel Sambuc   res_vui = vec_add(vui, vui);                  // CHECK: add <4 x i32>
86*f4a2713aSLionel Sambuc   res_vui = vec_add(vbi, vui);                  // CHECK: add <4 x i32>
87*f4a2713aSLionel Sambuc   res_vui = vec_add(vui, vbi);                  // CHECK: add <4 x i32>
88*f4a2713aSLionel Sambuc   res_vf  = vec_add(vf, vf);                    // CHECK: fadd <4 x float>
89*f4a2713aSLionel Sambuc   res_vsc = vec_vaddubm(vsc, vsc);              // CHECK: add <16 x i8>
90*f4a2713aSLionel Sambuc   res_vsc = vec_vaddubm(vbc, vsc);              // CHECK: add <16 x i8>
91*f4a2713aSLionel Sambuc   res_vsc = vec_vaddubm(vsc, vbc);              // CHECK: add <16 x i8>
92*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubm(vuc, vuc);              // CHECK: add <16 x i8>
93*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubm(vbc, vuc);              // CHECK: add <16 x i8>
94*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubm(vuc, vbc);              // CHECK: add <16 x i8>
95*f4a2713aSLionel Sambuc   res_vs  = vec_vadduhm(vs, vs);                // CHECK: add <8 x i16>
96*f4a2713aSLionel Sambuc   res_vs  = vec_vadduhm(vbs, vs);               // CHECK: add <8 x i16>
97*f4a2713aSLionel Sambuc   res_vs  = vec_vadduhm(vs, vbs);               // CHECK: add <8 x i16>
98*f4a2713aSLionel Sambuc   res_vus = vec_vadduhm(vus, vus);              // CHECK: add <8 x i16>
99*f4a2713aSLionel Sambuc   res_vus = vec_vadduhm(vbs, vus);              // CHECK: add <8 x i16>
100*f4a2713aSLionel Sambuc   res_vus = vec_vadduhm(vus, vbs);              // CHECK: add <8 x i16>
101*f4a2713aSLionel Sambuc   res_vi  = vec_vadduwm(vi, vi);                // CHECK: add <4 x i32>
102*f4a2713aSLionel Sambuc   res_vi  = vec_vadduwm(vbi, vi);               // CHECK: add <4 x i32>
103*f4a2713aSLionel Sambuc   res_vi  = vec_vadduwm(vi, vbi);               // CHECK: add <4 x i32>
104*f4a2713aSLionel Sambuc   res_vui = vec_vadduwm(vui, vui);              // CHECK: add <4 x i32>
105*f4a2713aSLionel Sambuc   res_vui = vec_vadduwm(vbi, vui);              // CHECK: add <4 x i32>
106*f4a2713aSLionel Sambuc   res_vui = vec_vadduwm(vui, vbi);              // CHECK: add <4 x i32>
107*f4a2713aSLionel Sambuc   res_vf  = vec_vaddfp(vf, vf);                 // CHECK: fadd <4 x float>
108*f4a2713aSLionel Sambuc 
109*f4a2713aSLionel Sambuc   /* vec_addc */
110*f4a2713aSLionel Sambuc   res_vui = vec_addc(vui, vui);                 // HECK: @llvm.ppc.altivec.vaddcuw
111*f4a2713aSLionel Sambuc   res_vui = vec_vaddcuw(vui, vui);              // HECK: @llvm.ppc.altivec.vaddcuw
112*f4a2713aSLionel Sambuc 
113*f4a2713aSLionel Sambuc   /* vec_adds */
114*f4a2713aSLionel Sambuc   res_vsc = vec_adds(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
115*f4a2713aSLionel Sambuc   res_vsc = vec_adds(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
116*f4a2713aSLionel Sambuc   res_vsc = vec_adds(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
117*f4a2713aSLionel Sambuc   res_vuc = vec_adds(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
118*f4a2713aSLionel Sambuc   res_vuc = vec_adds(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
119*f4a2713aSLionel Sambuc   res_vuc = vec_adds(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddubs
120*f4a2713aSLionel Sambuc   res_vs  = vec_adds(vs, vs);                   // CHECK: @llvm.ppc.altivec.vaddshs
121*f4a2713aSLionel Sambuc   res_vs  = vec_adds(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vaddshs
122*f4a2713aSLionel Sambuc   res_vs  = vec_adds(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vaddshs
123*f4a2713aSLionel Sambuc   res_vus = vec_adds(vus, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
124*f4a2713aSLionel Sambuc   res_vus = vec_adds(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
125*f4a2713aSLionel Sambuc   res_vus = vec_adds(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vadduhs
126*f4a2713aSLionel Sambuc   res_vi  = vec_adds(vi, vi);                   // CHECK: @llvm.ppc.altivec.vaddsws
127*f4a2713aSLionel Sambuc   res_vi  = vec_adds(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vaddsws
128*f4a2713aSLionel Sambuc   res_vi  = vec_adds(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vaddsws
129*f4a2713aSLionel Sambuc   res_vui = vec_adds(vui, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
130*f4a2713aSLionel Sambuc   res_vui = vec_adds(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
131*f4a2713aSLionel Sambuc   res_vui = vec_adds(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vadduws
132*f4a2713aSLionel Sambuc   res_vsc = vec_vaddsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
133*f4a2713aSLionel Sambuc   res_vsc = vec_vaddsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
134*f4a2713aSLionel Sambuc   res_vsc = vec_vaddsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vaddsbs
135*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
136*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
137*f4a2713aSLionel Sambuc   res_vuc = vec_vaddubs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vaddubs
138*f4a2713aSLionel Sambuc   res_vs  = vec_vaddshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vaddshs
139*f4a2713aSLionel Sambuc   res_vs  = vec_vaddshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vaddshs
140*f4a2713aSLionel Sambuc   res_vs  = vec_vaddshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vaddshs
141*f4a2713aSLionel Sambuc   res_vus = vec_vadduhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
142*f4a2713aSLionel Sambuc   res_vus = vec_vadduhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
143*f4a2713aSLionel Sambuc   res_vus = vec_vadduhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vadduhs
144*f4a2713aSLionel Sambuc   res_vi  = vec_vaddsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vaddsws
145*f4a2713aSLionel Sambuc   res_vi  = vec_vaddsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vaddsws
146*f4a2713aSLionel Sambuc   res_vi  = vec_vaddsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vaddsws
147*f4a2713aSLionel Sambuc   res_vui = vec_vadduws(vui, vui);              // CHECK: @llvm.ppc.altivec.vadduws
148*f4a2713aSLionel Sambuc   res_vui = vec_vadduws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vadduws
149*f4a2713aSLionel Sambuc   res_vui = vec_vadduws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vadduws
150*f4a2713aSLionel Sambuc 
151*f4a2713aSLionel Sambuc   /* vec_and */
152*f4a2713aSLionel Sambuc   res_vsc = vec_and(vsc, vsc);                  // CHECK: and <16 x i8>
153*f4a2713aSLionel Sambuc   res_vsc = vec_and(vbc, vsc);                  // CHECK: and <16 x i8>
154*f4a2713aSLionel Sambuc   res_vsc = vec_and(vsc, vbc);                  // CHECK: and <16 x i8>
155*f4a2713aSLionel Sambuc   res_vuc = vec_and(vuc, vuc);                  // CHECK: and <16 x i8>
156*f4a2713aSLionel Sambuc   res_vuc = vec_and(vbc, vuc);                  // CHECK: and <16 x i8>
157*f4a2713aSLionel Sambuc   res_vuc = vec_and(vuc, vbc);                  // CHECK: and <16 x i8>
158*f4a2713aSLionel Sambuc   res_vbc = vec_and(vbc, vbc);                  // CHECK: and <16 x i8>
159*f4a2713aSLionel Sambuc   res_vs  = vec_and(vs, vs);                    // CHECK: and <8 x i16>
160*f4a2713aSLionel Sambuc   res_vs  = vec_and(vbs, vs);                   // CHECK: and <8 x i16>
161*f4a2713aSLionel Sambuc   res_vs  = vec_and(vs, vbs);                   // CHECK: and <8 x i16>
162*f4a2713aSLionel Sambuc   res_vus = vec_and(vus, vus);                  // CHECK: and <8 x i16>
163*f4a2713aSLionel Sambuc   res_vus = vec_and(vbs, vus);                  // CHECK: and <8 x i16>
164*f4a2713aSLionel Sambuc   res_vus = vec_and(vus, vbs);                  // CHECK: and <8 x i16>
165*f4a2713aSLionel Sambuc   res_vbs = vec_and(vbs, vbs);                  // CHECK: and <8 x i16>
166*f4a2713aSLionel Sambuc   res_vi  = vec_and(vi, vi);                    // CHECK: and <4 x i32>
167*f4a2713aSLionel Sambuc   res_vi  = vec_and(vbi, vi);                   // CHECK: and <4 x i32>
168*f4a2713aSLionel Sambuc   res_vi  = vec_and(vi, vbi);                   // CHECK: and <4 x i32>
169*f4a2713aSLionel Sambuc   res_vui = vec_and(vui, vui);                  // CHECK: and <4 x i32>
170*f4a2713aSLionel Sambuc   res_vui = vec_and(vbi, vui);                  // CHECK: and <4 x i32>
171*f4a2713aSLionel Sambuc   res_vui = vec_and(vui, vbi);                  // CHECK: and <4 x i32>
172*f4a2713aSLionel Sambuc   res_vbi = vec_and(vbi, vbi);                  // CHECK: and <4 x i32>
173*f4a2713aSLionel Sambuc   res_vsc = vec_vand(vsc, vsc);                 // CHECK: and <16 x i8>
174*f4a2713aSLionel Sambuc   res_vsc = vec_vand(vbc, vsc);                 // CHECK: and <16 x i8>
175*f4a2713aSLionel Sambuc   res_vsc = vec_vand(vsc, vbc);                 // CHECK: and <16 x i8>
176*f4a2713aSLionel Sambuc   res_vuc = vec_vand(vuc, vuc);                 // CHECK: and <16 x i8>
177*f4a2713aSLionel Sambuc   res_vuc = vec_vand(vbc, vuc);                 // CHECK: and <16 x i8>
178*f4a2713aSLionel Sambuc   res_vuc = vec_vand(vuc, vbc);                 // CHECK: and <16 x i8>
179*f4a2713aSLionel Sambuc   res_vbc = vec_vand(vbc, vbc);                 // CHECK: and <16 x i8>
180*f4a2713aSLionel Sambuc   res_vs  = vec_vand(vs, vs);                   // CHECK: and <8 x i16>
181*f4a2713aSLionel Sambuc   res_vs  = vec_vand(vbs, vs);                  // CHECK: and <8 x i16>
182*f4a2713aSLionel Sambuc   res_vs  = vec_vand(vs, vbs);                  // CHECK: and <8 x i16>
183*f4a2713aSLionel Sambuc   res_vus = vec_vand(vus, vus);                 // CHECK: and <8 x i16>
184*f4a2713aSLionel Sambuc   res_vus = vec_vand(vbs, vus);                 // CHECK: and <8 x i16>
185*f4a2713aSLionel Sambuc   res_vus = vec_vand(vus, vbs);                 // CHECK: and <8 x i16>
186*f4a2713aSLionel Sambuc   res_vbs = vec_vand(vbs, vbs);                 // CHECK: and <8 x i16>
187*f4a2713aSLionel Sambuc   res_vi  = vec_vand(vi, vi);                   // CHECK: and <4 x i32>
188*f4a2713aSLionel Sambuc   res_vi  = vec_vand(vbi, vi);                  // CHECK: and <4 x i32>
189*f4a2713aSLionel Sambuc   res_vi  = vec_vand(vi, vbi);                  // CHECK: and <4 x i32>
190*f4a2713aSLionel Sambuc   res_vui = vec_vand(vui, vui);                 // CHECK: and <4 x i32>
191*f4a2713aSLionel Sambuc   res_vui = vec_vand(vbi, vui);                 // CHECK: and <4 x i32>
192*f4a2713aSLionel Sambuc   res_vui = vec_vand(vui, vbi);                 // CHECK: and <4 x i32>
193*f4a2713aSLionel Sambuc   res_vbi = vec_vand(vbi, vbi);                 // CHECK: and <4 x i32>
194*f4a2713aSLionel Sambuc 
195*f4a2713aSLionel Sambuc   /* vec_andc */
196*f4a2713aSLionel Sambuc   res_vsc = vec_andc(vsc, vsc);                 // CHECK: xor <16 x i8>
197*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
198*f4a2713aSLionel Sambuc 
199*f4a2713aSLionel Sambuc   res_vsc = vec_andc(vbc, vsc);                 // CHECK: xor <16 x i8>
200*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
201*f4a2713aSLionel Sambuc 
202*f4a2713aSLionel Sambuc   res_vsc = vec_andc(vsc, vbc);                 // CHECK: xor <16 x i8>
203*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
204*f4a2713aSLionel Sambuc 
205*f4a2713aSLionel Sambuc   res_vuc = vec_andc(vuc, vuc);                 // CHECK: xor <16 x i8>
206*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
207*f4a2713aSLionel Sambuc 
208*f4a2713aSLionel Sambuc   res_vuc = vec_andc(vbc, vuc);                 // CHECK: xor <16 x i8>
209*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
210*f4a2713aSLionel Sambuc 
211*f4a2713aSLionel Sambuc   res_vuc = vec_andc(vuc, vbc);                 // CHECK: xor <16 x i8>
212*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
213*f4a2713aSLionel Sambuc 
214*f4a2713aSLionel Sambuc   res_vbc = vec_andc(vbc, vbc);                 // CHECK: xor <16 x i8>
215*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
216*f4a2713aSLionel Sambuc 
217*f4a2713aSLionel Sambuc   res_vs  = vec_andc(vs, vs);                   // CHECK: xor <8 x i16>
218*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
219*f4a2713aSLionel Sambuc 
220*f4a2713aSLionel Sambuc   res_vs  = vec_andc(vbs, vs);                  // CHECK: xor <8 x i16>
221*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
222*f4a2713aSLionel Sambuc 
223*f4a2713aSLionel Sambuc   res_vs  = vec_andc(vs, vbs);                  // CHECK: xor <8 x i16>
224*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
225*f4a2713aSLionel Sambuc 
226*f4a2713aSLionel Sambuc   res_vus = vec_andc(vus, vus);                 // CHECK: xor <8 x i16>
227*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
228*f4a2713aSLionel Sambuc 
229*f4a2713aSLionel Sambuc   res_vus = vec_andc(vbs, vus);                 // CHECK: xor <8 x i16>
230*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
231*f4a2713aSLionel Sambuc 
232*f4a2713aSLionel Sambuc   res_vus = vec_andc(vus, vbs);                 // CHECK: xor <8 x i16>
233*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
234*f4a2713aSLionel Sambuc 
235*f4a2713aSLionel Sambuc   res_vbs = vec_andc(vbs, vbs);                 // CHECK: xor <8 x i16>
236*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
237*f4a2713aSLionel Sambuc 
238*f4a2713aSLionel Sambuc   res_vi  = vec_andc(vi, vi);                   // CHECK: xor <4 x i32>
239*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
240*f4a2713aSLionel Sambuc 
241*f4a2713aSLionel Sambuc   res_vi  = vec_andc(vbi, vi);                  // CHECK: xor <4 x i32>
242*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
243*f4a2713aSLionel Sambuc 
244*f4a2713aSLionel Sambuc   res_vi  = vec_andc(vi, vbi);                  // CHECK: xor <4 x i32>
245*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
246*f4a2713aSLionel Sambuc 
247*f4a2713aSLionel Sambuc   res_vui = vec_andc(vui, vui);                 // CHECK: xor <4 x i32>
248*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
249*f4a2713aSLionel Sambuc 
250*f4a2713aSLionel Sambuc   res_vui = vec_andc(vbi, vui);                 // CHECK: xor <4 x i32>
251*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
252*f4a2713aSLionel Sambuc 
253*f4a2713aSLionel Sambuc   res_vui = vec_andc(vui, vbi);                 // CHECK: xor <4 x i32>
254*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
255*f4a2713aSLionel Sambuc 
256*f4a2713aSLionel Sambuc   res_vf = vec_andc(vf, vf);                    // CHECK: xor <4 x i32>
257*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
258*f4a2713aSLionel Sambuc 
259*f4a2713aSLionel Sambuc   res_vf = vec_andc(vbi, vf);                   // CHECK: xor <4 x i32>
260*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
261*f4a2713aSLionel Sambuc 
262*f4a2713aSLionel Sambuc   res_vf = vec_andc(vf, vbi);                   // CHECK: xor <4 x i32>
263*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
264*f4a2713aSLionel Sambuc 
265*f4a2713aSLionel Sambuc   res_vsc = vec_vandc(vsc, vsc);                // CHECK: xor <16 x i8>
266*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
267*f4a2713aSLionel Sambuc 
268*f4a2713aSLionel Sambuc   res_vsc = vec_vandc(vbc, vsc);                // CHECK: xor <16 x i8>
269*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
270*f4a2713aSLionel Sambuc 
271*f4a2713aSLionel Sambuc   res_vsc = vec_vandc(vsc, vbc);                // CHECK: xor <16 x i8>
272*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
273*f4a2713aSLionel Sambuc 
274*f4a2713aSLionel Sambuc   res_vuc = vec_vandc(vuc, vuc);                // CHECK: xor <16 x i8>
275*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
276*f4a2713aSLionel Sambuc 
277*f4a2713aSLionel Sambuc   res_vuc = vec_vandc(vbc, vuc);                // CHECK: xor <16 x i8>
278*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
279*f4a2713aSLionel Sambuc 
280*f4a2713aSLionel Sambuc   res_vuc = vec_vandc(vuc, vbc);                // CHECK: xor <16 x i8>
281*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
282*f4a2713aSLionel Sambuc 
283*f4a2713aSLionel Sambuc   res_vbc = vec_vandc(vbc, vbc);                // CHECK: xor <16 x i8>
284*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
285*f4a2713aSLionel Sambuc 
286*f4a2713aSLionel Sambuc   res_vs  = vec_vandc(vs, vs);                  // CHECK: xor <8 x i16>
287*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
288*f4a2713aSLionel Sambuc 
289*f4a2713aSLionel Sambuc   res_vs  = vec_vandc(vbs, vs);                 // CHECK: xor <8 x i16>
290*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
291*f4a2713aSLionel Sambuc 
292*f4a2713aSLionel Sambuc   res_vs  = vec_vandc(vs, vbs);                 // CHECK: xor <8 x i16>
293*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
294*f4a2713aSLionel Sambuc 
295*f4a2713aSLionel Sambuc   res_vus = vec_vandc(vus, vus);                // CHECK: xor <8 x i16>
296*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
297*f4a2713aSLionel Sambuc 
298*f4a2713aSLionel Sambuc   res_vus = vec_vandc(vbs, vus);                // CHECK: xor <8 x i16>
299*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
300*f4a2713aSLionel Sambuc 
301*f4a2713aSLionel Sambuc   res_vus = vec_vandc(vus, vbs);                // CHECK: xor <8 x i16>
302*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
303*f4a2713aSLionel Sambuc 
304*f4a2713aSLionel Sambuc   res_vbs = vec_vandc(vbs, vbs);                // CHECK: xor <8 x i16>
305*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
306*f4a2713aSLionel Sambuc 
307*f4a2713aSLionel Sambuc   res_vi  = vec_vandc(vi, vi);                  // CHECK: xor <4 x i32>
308*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
309*f4a2713aSLionel Sambuc 
310*f4a2713aSLionel Sambuc   res_vi  = vec_vandc(vbi, vi);                 // CHECK: xor <4 x i32>
311*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
312*f4a2713aSLionel Sambuc 
313*f4a2713aSLionel Sambuc   res_vi  = vec_vandc(vi, vbi);                 // CHECK: xor <4 x i32>
314*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
315*f4a2713aSLionel Sambuc 
316*f4a2713aSLionel Sambuc   res_vui = vec_vandc(vui, vui);                // CHECK: xor <4 x i32>
317*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
318*f4a2713aSLionel Sambuc 
319*f4a2713aSLionel Sambuc   res_vui = vec_vandc(vbi, vui);                // CHECK: xor <4 x i32>
320*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
321*f4a2713aSLionel Sambuc 
322*f4a2713aSLionel Sambuc   res_vui = vec_vandc(vui, vbi);                // CHECK: xor <4 x i32>
323*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
324*f4a2713aSLionel Sambuc 
325*f4a2713aSLionel Sambuc   res_vf = vec_vandc(vf, vf);                   // CHECK: xor <4 x i32>
326*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
327*f4a2713aSLionel Sambuc 
328*f4a2713aSLionel Sambuc   res_vf = vec_vandc(vbi, vf);                  // CHECK: xor <4 x i32>
329*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
330*f4a2713aSLionel Sambuc 
331*f4a2713aSLionel Sambuc   res_vf = vec_vandc(vf, vbi);                  // CHECK: xor <4 x i32>
332*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
333*f4a2713aSLionel Sambuc 
334*f4a2713aSLionel Sambuc }
335*f4a2713aSLionel Sambuc 
336*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @test2
337*f4a2713aSLionel Sambuc void test2() {
338*f4a2713aSLionel Sambuc   /* vec_avg */
339*f4a2713aSLionel Sambuc   res_vsc = vec_avg(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vavgsb
340*f4a2713aSLionel Sambuc   res_vuc = vec_avg(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vavgub
341*f4a2713aSLionel Sambuc   res_vs  = vec_avg(vs, vs);                    // CHECK: @llvm.ppc.altivec.vavgsh
342*f4a2713aSLionel Sambuc   res_vus = vec_avg(vus, vus);                  // CHECK: @llvm.ppc.altivec.vavguh
343*f4a2713aSLionel Sambuc   res_vi  = vec_avg(vi, vi);                    // CHECK: @llvm.ppc.altivec.vavgsw
344*f4a2713aSLionel Sambuc   res_vui = vec_avg(vui, vui);                  // CHECK: @llvm.ppc.altivec.vavguw
345*f4a2713aSLionel Sambuc   res_vsc = vec_vavgsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vavgsb
346*f4a2713aSLionel Sambuc   res_vuc = vec_vavgub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vavgub
347*f4a2713aSLionel Sambuc   res_vs  = vec_vavgsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vavgsh
348*f4a2713aSLionel Sambuc   res_vus = vec_vavguh(vus, vus);               // CHECK: @llvm.ppc.altivec.vavguh
349*f4a2713aSLionel Sambuc   res_vi  = vec_vavgsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vavgsw
350*f4a2713aSLionel Sambuc   res_vui = vec_vavguw(vui, vui);               // CHECK: @llvm.ppc.altivec.vavguw
351*f4a2713aSLionel Sambuc 
352*f4a2713aSLionel Sambuc   /* vec_ceil */
353*f4a2713aSLionel Sambuc   res_vf = vec_ceil(vf);                        // CHECK: @llvm.ppc.altivec.vrfip
354*f4a2713aSLionel Sambuc   res_vf = vec_vrfip(vf);                       // CHECK: @llvm.ppc.altivec.vrfip
355*f4a2713aSLionel Sambuc 
356*f4a2713aSLionel Sambuc   /* vec_cmpb */
357*f4a2713aSLionel Sambuc   res_vi = vec_cmpb(vf, vf);                    // CHECK: @llvm.ppc.altivec.vcmpbfp
358*f4a2713aSLionel Sambuc   res_vi = vec_vcmpbfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vcmpbfp
359*f4a2713aSLionel Sambuc 
360*f4a2713aSLionel Sambuc   /* vec_cmpeq */
361*f4a2713aSLionel Sambuc   res_vbc = vec_cmpeq(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpequb
362*f4a2713aSLionel Sambuc   res_vbc = vec_cmpeq(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpequb
363*f4a2713aSLionel Sambuc   res_vbs = vec_cmpeq(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh
364*f4a2713aSLionel Sambuc   res_vbs = vec_cmpeq(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpequh
365*f4a2713aSLionel Sambuc   res_vbi = vec_cmpeq(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw
366*f4a2713aSLionel Sambuc   res_vbi = vec_cmpeq(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpequw
367*f4a2713aSLionel Sambuc   res_vbi = vec_cmpeq(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp
368*f4a2713aSLionel Sambuc 
369*f4a2713aSLionel Sambuc   /* vec_cmpge */
370*f4a2713aSLionel Sambuc   res_vbi = vec_cmpge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
371*f4a2713aSLionel Sambuc   res_vbi = vec_vcmpgefp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgefp
372*f4a2713aSLionel Sambuc }
373*f4a2713aSLionel Sambuc 
374*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @test5
375*f4a2713aSLionel Sambuc void test5() {
376*f4a2713aSLionel Sambuc 
377*f4a2713aSLionel Sambuc   /* vec_cmpgt */
378*f4a2713aSLionel Sambuc   res_vbc = vec_cmpgt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
379*f4a2713aSLionel Sambuc   res_vbc = vec_cmpgt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
380*f4a2713aSLionel Sambuc   res_vbs = vec_cmpgt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
381*f4a2713aSLionel Sambuc   res_vbs = vec_cmpgt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
382*f4a2713aSLionel Sambuc   res_vbi = vec_cmpgt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
383*f4a2713aSLionel Sambuc   res_vbi = vec_cmpgt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
384*f4a2713aSLionel Sambuc   res_vbi = vec_cmpgt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
385*f4a2713aSLionel Sambuc   res_vbc = vec_vcmpgtsb(vsc, vsc);             // CHECK: @llvm.ppc.altivec.vcmpgtsb
386*f4a2713aSLionel Sambuc   res_vbc = vec_vcmpgtub(vuc, vuc);             // CHECK: @llvm.ppc.altivec.vcmpgtub
387*f4a2713aSLionel Sambuc   res_vbs = vec_vcmpgtsh(vs, vs);               // CHECK: @llvm.ppc.altivec.vcmpgtsh
388*f4a2713aSLionel Sambuc   res_vbs = vec_vcmpgtuh(vus, vus);             // CHECK: @llvm.ppc.altivec.vcmpgtuh
389*f4a2713aSLionel Sambuc   res_vbi = vec_vcmpgtsw(vi, vi);               // CHECK: @llvm.ppc.altivec.vcmpgtsw
390*f4a2713aSLionel Sambuc   res_vbi = vec_vcmpgtuw(vui, vui);             // CHECK: @llvm.ppc.altivec.vcmpgtuw
391*f4a2713aSLionel Sambuc   res_vbi = vec_vcmpgtfp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgtfp
392*f4a2713aSLionel Sambuc 
393*f4a2713aSLionel Sambuc   /* vec_cmple */
394*f4a2713aSLionel Sambuc   res_vbi = vec_cmple(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
395*f4a2713aSLionel Sambuc }
396*f4a2713aSLionel Sambuc 
397*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @test6
398*f4a2713aSLionel Sambuc void test6() {
399*f4a2713aSLionel Sambuc   /* vec_cmplt */
400*f4a2713aSLionel Sambuc   res_vbc = vec_cmplt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
401*f4a2713aSLionel Sambuc   res_vbc = vec_cmplt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
402*f4a2713aSLionel Sambuc   res_vbs = vec_cmplt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
403*f4a2713aSLionel Sambuc   res_vbs = vec_cmplt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
404*f4a2713aSLionel Sambuc   res_vbi = vec_cmplt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
405*f4a2713aSLionel Sambuc   res_vbi = vec_cmplt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
406*f4a2713aSLionel Sambuc   res_vbi = vec_cmplt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
407*f4a2713aSLionel Sambuc 
408*f4a2713aSLionel Sambuc   /* vec_ctf */
409*f4a2713aSLionel Sambuc   res_vf  = vec_ctf(vi, param_i);               // CHECK: @llvm.ppc.altivec.vcfsx
410*f4a2713aSLionel Sambuc   res_vf  = vec_ctf(vui, 0);                    // CHECK: @llvm.ppc.altivec.vcfux
411*f4a2713aSLionel Sambuc   res_vf  = vec_vcfsx(vi, 0);                   // CHECK: @llvm.ppc.altivec.vcfsx
412*f4a2713aSLionel Sambuc   res_vf  = vec_vcfux(vui, 0);                  // CHECK: @llvm.ppc.altivec.vcfux
413*f4a2713aSLionel Sambuc 
414*f4a2713aSLionel Sambuc   /* vec_cts */
415*f4a2713aSLionel Sambuc   res_vi = vec_cts(vf, 0);                      // CHECK: @llvm.ppc.altivec.vctsxs
416*f4a2713aSLionel Sambuc   res_vi = vec_vctsxs(vf, 0);                   // CHECK: @llvm.ppc.altivec.vctsxs
417*f4a2713aSLionel Sambuc 
418*f4a2713aSLionel Sambuc   /* vec_ctu */
419*f4a2713aSLionel Sambuc   res_vui = vec_ctu(vf, 0);                     // CHECK: @llvm.ppc.altivec.vctuxs
420*f4a2713aSLionel Sambuc   res_vui = vec_vctuxs(vf, 0);                  // CHECK: @llvm.ppc.altivec.vctuxs
421*f4a2713aSLionel Sambuc 
422*f4a2713aSLionel Sambuc   /* vec_dss */
423*f4a2713aSLionel Sambuc   vec_dss(param_i);                             // CHECK: @llvm.ppc.altivec.dss
424*f4a2713aSLionel Sambuc 
425*f4a2713aSLionel Sambuc   /* vec_dssall */
426*f4a2713aSLionel Sambuc   vec_dssall();                                 // CHECK: @llvm.ppc.altivec.dssall
427*f4a2713aSLionel Sambuc 
428*f4a2713aSLionel Sambuc   /* vec_dst */
429*f4a2713aSLionel Sambuc   vec_dst(&vsc, 0, 0);                          // CHECK: @llvm.ppc.altivec.dst
430*f4a2713aSLionel Sambuc 
431*f4a2713aSLionel Sambuc   /* vec_dstst */
432*f4a2713aSLionel Sambuc   vec_dstst(&vs, 0, 0);                         // CHECK: @llvm.ppc.altivec.dstst
433*f4a2713aSLionel Sambuc 
434*f4a2713aSLionel Sambuc   /* vec_dststt */
435*f4a2713aSLionel Sambuc   vec_dststt(&param_i, 0, 0);                   // CHECK: @llvm.ppc.altivec.dststt
436*f4a2713aSLionel Sambuc 
437*f4a2713aSLionel Sambuc   /* vec_dstt */
438*f4a2713aSLionel Sambuc   vec_dstt(&vf, 0, 0);                          // CHECK: @llvm.ppc.altivec.dstt
439*f4a2713aSLionel Sambuc 
440*f4a2713aSLionel Sambuc   /* vec_expte */
441*f4a2713aSLionel Sambuc   res_vf = vec_expte(vf);                       // CHECK: @llvm.ppc.altivec.vexptefp
442*f4a2713aSLionel Sambuc   res_vf = vec_vexptefp(vf);                    // CHECK: @llvm.ppc.altivec.vexptefp
443*f4a2713aSLionel Sambuc 
444*f4a2713aSLionel Sambuc   /* vec_floor */
445*f4a2713aSLionel Sambuc   res_vf = vec_floor(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
446*f4a2713aSLionel Sambuc   res_vf = vec_vrfim(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
447*f4a2713aSLionel Sambuc 
448*f4a2713aSLionel Sambuc   /* vec_ld */
449*f4a2713aSLionel Sambuc   res_vsc = vec_ld(0, &vsc);                    // CHECK: @llvm.ppc.altivec.lvx
450*f4a2713aSLionel Sambuc   res_vsc = vec_ld(0, &param_sc);               // CHECK: @llvm.ppc.altivec.lvx
451*f4a2713aSLionel Sambuc   res_vuc = vec_ld(0, &vuc);                    // CHECK: @llvm.ppc.altivec.lvx
452*f4a2713aSLionel Sambuc   res_vuc = vec_ld(0, &param_uc);               // CHECK: @llvm.ppc.altivec.lvx
453*f4a2713aSLionel Sambuc   res_vbc = vec_ld(0, &vbc);                    // CHECK: @llvm.ppc.altivec.lvx
454*f4a2713aSLionel Sambuc   res_vs  = vec_ld(0, &vs);                     // CHECK: @llvm.ppc.altivec.lvx
455*f4a2713aSLionel Sambuc   res_vs  = vec_ld(0, &param_s);                // CHECK: @llvm.ppc.altivec.lvx
456*f4a2713aSLionel Sambuc   res_vus = vec_ld(0, &vus);                    // CHECK: @llvm.ppc.altivec.lvx
457*f4a2713aSLionel Sambuc   res_vus = vec_ld(0, &param_us);               // CHECK: @llvm.ppc.altivec.lvx
458*f4a2713aSLionel Sambuc   res_vbs = vec_ld(0, &vbs);                    // CHECK: @llvm.ppc.altivec.lvx
459*f4a2713aSLionel Sambuc   res_vp  = vec_ld(0, &vp);                     // CHECK: @llvm.ppc.altivec.lvx
460*f4a2713aSLionel Sambuc   res_vi  = vec_ld(0, &vi);                     // CHECK: @llvm.ppc.altivec.lvx
461*f4a2713aSLionel Sambuc   res_vi  = vec_ld(0, &param_i);                // CHECK: @llvm.ppc.altivec.lvx
462*f4a2713aSLionel Sambuc   res_vui = vec_ld(0, &vui);                    // CHECK: @llvm.ppc.altivec.lvx
463*f4a2713aSLionel Sambuc   res_vui = vec_ld(0, &param_ui);               // CHECK: @llvm.ppc.altivec.lvx
464*f4a2713aSLionel Sambuc   res_vbi = vec_ld(0, &vbi);                    // CHECK: @llvm.ppc.altivec.lvx
465*f4a2713aSLionel Sambuc   res_vf  = vec_ld(0, &vf);                     // CHECK: @llvm.ppc.altivec.lvx
466*f4a2713aSLionel Sambuc   res_vf  = vec_ld(0, &param_f);                // CHECK: @llvm.ppc.altivec.lvx
467*f4a2713aSLionel Sambuc   res_vsc = vec_lvx(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvx
468*f4a2713aSLionel Sambuc   res_vsc = vec_lvx(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvx
469*f4a2713aSLionel Sambuc   res_vuc = vec_lvx(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvx
470*f4a2713aSLionel Sambuc   res_vuc = vec_lvx(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvx
471*f4a2713aSLionel Sambuc   res_vbc = vec_lvx(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvx
472*f4a2713aSLionel Sambuc   res_vs  = vec_lvx(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvx
473*f4a2713aSLionel Sambuc   res_vs  = vec_lvx(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvx
474*f4a2713aSLionel Sambuc   res_vus = vec_lvx(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvx
475*f4a2713aSLionel Sambuc   res_vus = vec_lvx(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvx
476*f4a2713aSLionel Sambuc   res_vbs = vec_lvx(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvx
477*f4a2713aSLionel Sambuc   res_vp  = vec_lvx(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvx
478*f4a2713aSLionel Sambuc   res_vi  = vec_lvx(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvx
479*f4a2713aSLionel Sambuc   res_vi  = vec_lvx(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvx
480*f4a2713aSLionel Sambuc   res_vui = vec_lvx(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvx
481*f4a2713aSLionel Sambuc   res_vui = vec_lvx(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvx
482*f4a2713aSLionel Sambuc   res_vbi = vec_lvx(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvx
483*f4a2713aSLionel Sambuc   res_vf  = vec_lvx(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvx
484*f4a2713aSLionel Sambuc   res_vf  = vec_lvx(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvx
485*f4a2713aSLionel Sambuc 
486*f4a2713aSLionel Sambuc   /* vec_lde */
487*f4a2713aSLionel Sambuc   res_vsc = vec_lde(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvebx
488*f4a2713aSLionel Sambuc   res_vuc = vec_lde(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvebx
489*f4a2713aSLionel Sambuc   res_vs  = vec_lde(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvehx
490*f4a2713aSLionel Sambuc   res_vus = vec_lde(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvehx
491*f4a2713aSLionel Sambuc   res_vi  = vec_lde(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvewx
492*f4a2713aSLionel Sambuc   res_vui = vec_lde(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvewx
493*f4a2713aSLionel Sambuc   res_vf  = vec_lde(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvewx
494*f4a2713aSLionel Sambuc   res_vsc = vec_lvebx(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvebx
495*f4a2713aSLionel Sambuc   res_vuc = vec_lvebx(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvebx
496*f4a2713aSLionel Sambuc   res_vs  = vec_lvehx(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvehx
497*f4a2713aSLionel Sambuc   res_vus = vec_lvehx(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvehx
498*f4a2713aSLionel Sambuc   res_vi  = vec_lvewx(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvewx
499*f4a2713aSLionel Sambuc   res_vui = vec_lvewx(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvewx
500*f4a2713aSLionel Sambuc   res_vf  = vec_lvewx(0, &param_f);             // CHECK: @llvm.ppc.altivec.lvewx
501*f4a2713aSLionel Sambuc 
502*f4a2713aSLionel Sambuc   /* vec_ldl */
503*f4a2713aSLionel Sambuc   res_vsc = vec_ldl(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvxl
504*f4a2713aSLionel Sambuc   res_vsc = vec_ldl(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvxl
505*f4a2713aSLionel Sambuc   res_vuc = vec_ldl(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvxl
506*f4a2713aSLionel Sambuc   res_vuc = vec_ldl(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvxl
507*f4a2713aSLionel Sambuc   res_vbc = vec_ldl(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvxl
508*f4a2713aSLionel Sambuc   res_vs  = vec_ldl(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvxl
509*f4a2713aSLionel Sambuc   res_vs  = vec_ldl(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvxl
510*f4a2713aSLionel Sambuc   res_vus = vec_ldl(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvxl
511*f4a2713aSLionel Sambuc   res_vus = vec_ldl(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvxl
512*f4a2713aSLionel Sambuc   res_vbs = vec_ldl(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvxl
513*f4a2713aSLionel Sambuc   res_vp  = vec_ldl(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvxl
514*f4a2713aSLionel Sambuc   res_vi  = vec_ldl(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvxl
515*f4a2713aSLionel Sambuc   res_vi  = vec_ldl(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvxl
516*f4a2713aSLionel Sambuc   res_vui = vec_ldl(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvxl
517*f4a2713aSLionel Sambuc   res_vui = vec_ldl(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvxl
518*f4a2713aSLionel Sambuc   res_vbi = vec_ldl(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvxl
519*f4a2713aSLionel Sambuc   res_vf  = vec_ldl(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvxl
520*f4a2713aSLionel Sambuc   res_vf  = vec_ldl(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvxl
521*f4a2713aSLionel Sambuc   res_vsc = vec_lvxl(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvxl
522*f4a2713aSLionel Sambuc   res_vsc = vec_lvxl(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvxl
523*f4a2713aSLionel Sambuc   res_vuc = vec_lvxl(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvxl
524*f4a2713aSLionel Sambuc   res_vbc = vec_lvxl(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvxl
525*f4a2713aSLionel Sambuc   res_vuc = vec_lvxl(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvxl
526*f4a2713aSLionel Sambuc   res_vs  = vec_lvxl(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvxl
527*f4a2713aSLionel Sambuc   res_vs  = vec_lvxl(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvxl
528*f4a2713aSLionel Sambuc   res_vus = vec_lvxl(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvxl
529*f4a2713aSLionel Sambuc   res_vus = vec_lvxl(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvxl
530*f4a2713aSLionel Sambuc   res_vbs = vec_lvxl(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvxl
531*f4a2713aSLionel Sambuc   res_vp  = vec_lvxl(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvxl
532*f4a2713aSLionel Sambuc   res_vi  = vec_lvxl(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvxl
533*f4a2713aSLionel Sambuc   res_vi  = vec_lvxl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvxl
534*f4a2713aSLionel Sambuc   res_vui = vec_lvxl(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvxl
535*f4a2713aSLionel Sambuc   res_vui = vec_lvxl(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvxl
536*f4a2713aSLionel Sambuc   res_vbi = vec_lvxl(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvxl
537*f4a2713aSLionel Sambuc   res_vf  = vec_lvxl(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvxl
538*f4a2713aSLionel Sambuc   res_vf  = vec_lvxl(0, &param_f);              // CHECK: @llvm.ppc.altivec.lvxl
539*f4a2713aSLionel Sambuc 
540*f4a2713aSLionel Sambuc   /* vec_loge */
541*f4a2713aSLionel Sambuc   res_vf = vec_loge(vf);                        // CHECK: @llvm.ppc.altivec.vlogefp
542*f4a2713aSLionel Sambuc   res_vf = vec_vlogefp(vf);                     // CHECK: @llvm.ppc.altivec.vlogefp
543*f4a2713aSLionel Sambuc 
544*f4a2713aSLionel Sambuc   /* vec_lvsl */
545*f4a2713aSLionel Sambuc   res_vuc = vec_lvsl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsl
546*f4a2713aSLionel Sambuc 
547*f4a2713aSLionel Sambuc   /* vec_lvsr */
548*f4a2713aSLionel Sambuc   res_vuc = vec_lvsr(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsr
549*f4a2713aSLionel Sambuc 
550*f4a2713aSLionel Sambuc   /* vec_madd */
551*f4a2713aSLionel Sambuc   res_vf =vec_madd(vf, vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaddfp
552*f4a2713aSLionel Sambuc   res_vf = vec_vmaddfp(vf, vf, vf);             // CHECK: @llvm.ppc.altivec.vmaddfp
553*f4a2713aSLionel Sambuc 
554*f4a2713aSLionel Sambuc   /* vec_madds */
555*f4a2713aSLionel Sambuc   res_vs = vec_madds(vs, vs, vs);               // CHECK: @llvm.ppc.altivec.vmhaddshs
556*f4a2713aSLionel Sambuc   res_vs = vec_vmhaddshs(vs, vs, vs);           // CHECK: @llvm.ppc.altivec.vmhaddshs
557*f4a2713aSLionel Sambuc 
558*f4a2713aSLionel Sambuc   /* vec_max */
559*f4a2713aSLionel Sambuc   res_vsc = vec_max(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
560*f4a2713aSLionel Sambuc   res_vsc = vec_max(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
561*f4a2713aSLionel Sambuc   res_vsc = vec_max(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
562*f4a2713aSLionel Sambuc   res_vuc = vec_max(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
563*f4a2713aSLionel Sambuc   res_vuc = vec_max(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
564*f4a2713aSLionel Sambuc   res_vuc = vec_max(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxub
565*f4a2713aSLionel Sambuc   res_vs  = vec_max(vs, vs);                    // CHECK: @llvm.ppc.altivec.vmaxsh
566*f4a2713aSLionel Sambuc   res_vs  = vec_max(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
567*f4a2713aSLionel Sambuc   res_vs  = vec_max(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
568*f4a2713aSLionel Sambuc   res_vus = vec_max(vus, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
569*f4a2713aSLionel Sambuc   res_vus = vec_max(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
570*f4a2713aSLionel Sambuc   res_vus = vec_max(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vmaxuh
571*f4a2713aSLionel Sambuc   res_vi  = vec_max(vi, vi);                    // CHECK: @llvm.ppc.altivec.vmaxsw
572*f4a2713aSLionel Sambuc   res_vi  = vec_max(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
573*f4a2713aSLionel Sambuc   res_vi  = vec_max(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
574*f4a2713aSLionel Sambuc   res_vui = vec_max(vui, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
575*f4a2713aSLionel Sambuc   res_vui = vec_max(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
576*f4a2713aSLionel Sambuc   res_vui = vec_max(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vmaxuw
577*f4a2713aSLionel Sambuc   res_vf  = vec_max(vf, vf);                    // CHECK: @llvm.ppc.altivec.vmaxfp
578*f4a2713aSLionel Sambuc   res_vsc = vec_vmaxsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
579*f4a2713aSLionel Sambuc   res_vsc = vec_vmaxsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
580*f4a2713aSLionel Sambuc   res_vsc = vec_vmaxsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxsb
581*f4a2713aSLionel Sambuc   res_vuc = vec_vmaxub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
582*f4a2713aSLionel Sambuc   res_vuc = vec_vmaxub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
583*f4a2713aSLionel Sambuc   res_vuc = vec_vmaxub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxub
584*f4a2713aSLionel Sambuc   res_vs  = vec_vmaxsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vmaxsh
585*f4a2713aSLionel Sambuc   res_vs  = vec_vmaxsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vmaxsh
586*f4a2713aSLionel Sambuc   res_vs  = vec_vmaxsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vmaxsh
587*f4a2713aSLionel Sambuc   res_vus = vec_vmaxuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
588*f4a2713aSLionel Sambuc   res_vus = vec_vmaxuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
589*f4a2713aSLionel Sambuc   res_vus = vec_vmaxuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vmaxuh
590*f4a2713aSLionel Sambuc   res_vi  = vec_vmaxsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vmaxsw
591*f4a2713aSLionel Sambuc   res_vi  = vec_vmaxsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vmaxsw
592*f4a2713aSLionel Sambuc   res_vi  = vec_vmaxsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vmaxsw
593*f4a2713aSLionel Sambuc   res_vui = vec_vmaxuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
594*f4a2713aSLionel Sambuc   res_vui = vec_vmaxuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
595*f4a2713aSLionel Sambuc   res_vui = vec_vmaxuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vmaxuw
596*f4a2713aSLionel Sambuc   res_vf  = vec_vmaxfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaxfp
597*f4a2713aSLionel Sambuc 
598*f4a2713aSLionel Sambuc   /* vec_mergeh */
599*f4a2713aSLionel Sambuc   res_vsc = vec_mergeh(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
600*f4a2713aSLionel Sambuc   res_vuc = vec_mergeh(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
601*f4a2713aSLionel Sambuc   res_vbc = vec_mergeh(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
602*f4a2713aSLionel Sambuc   res_vs  = vec_mergeh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
603*f4a2713aSLionel Sambuc   res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
604*f4a2713aSLionel Sambuc   res_vus = vec_mergeh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
605*f4a2713aSLionel Sambuc   res_vbs = vec_mergeh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
606*f4a2713aSLionel Sambuc   res_vi  = vec_mergeh(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
607*f4a2713aSLionel Sambuc   res_vui = vec_mergeh(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
608*f4a2713aSLionel Sambuc   res_vbi = vec_mergeh(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
609*f4a2713aSLionel Sambuc   res_vf  = vec_mergeh(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
610*f4a2713aSLionel Sambuc   res_vsc = vec_vmrghb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
611*f4a2713aSLionel Sambuc   res_vuc = vec_vmrghb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
612*f4a2713aSLionel Sambuc   res_vbc = vec_vmrghb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
613*f4a2713aSLionel Sambuc   res_vs  = vec_vmrghh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
614*f4a2713aSLionel Sambuc   res_vp  = vec_vmrghh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
615*f4a2713aSLionel Sambuc   res_vus = vec_vmrghh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
616*f4a2713aSLionel Sambuc   res_vbs = vec_vmrghh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
617*f4a2713aSLionel Sambuc   res_vi  = vec_vmrghw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
618*f4a2713aSLionel Sambuc   res_vui = vec_vmrghw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
619*f4a2713aSLionel Sambuc   res_vbi = vec_vmrghw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
620*f4a2713aSLionel Sambuc   res_vf  = vec_vmrghw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
621*f4a2713aSLionel Sambuc 
622*f4a2713aSLionel Sambuc   /* vec_mergel */
623*f4a2713aSLionel Sambuc   res_vsc = vec_mergel(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
624*f4a2713aSLionel Sambuc   res_vuc = vec_mergel(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
625*f4a2713aSLionel Sambuc   res_vbc = vec_mergel(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
626*f4a2713aSLionel Sambuc   res_vs  = vec_mergel(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
627*f4a2713aSLionel Sambuc   res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
628*f4a2713aSLionel Sambuc   res_vus = vec_mergel(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
629*f4a2713aSLionel Sambuc   res_vbs = vec_mergel(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
630*f4a2713aSLionel Sambuc   res_vi  = vec_mergel(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
631*f4a2713aSLionel Sambuc   res_vui = vec_mergel(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
632*f4a2713aSLionel Sambuc   res_vbi = vec_mergel(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
633*f4a2713aSLionel Sambuc   res_vf  = vec_mergel(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
634*f4a2713aSLionel Sambuc   res_vsc = vec_vmrglb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
635*f4a2713aSLionel Sambuc   res_vuc = vec_vmrglb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
636*f4a2713aSLionel Sambuc   res_vbc = vec_vmrglb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
637*f4a2713aSLionel Sambuc   res_vs  = vec_vmrglh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
638*f4a2713aSLionel Sambuc   res_vp  = vec_vmrglh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
639*f4a2713aSLionel Sambuc   res_vus = vec_vmrglh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
640*f4a2713aSLionel Sambuc   res_vbs = vec_vmrglh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
641*f4a2713aSLionel Sambuc   res_vi  = vec_vmrglw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
642*f4a2713aSLionel Sambuc   res_vui = vec_vmrglw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
643*f4a2713aSLionel Sambuc   res_vbi = vec_vmrglw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
644*f4a2713aSLionel Sambuc   res_vf  = vec_vmrglw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
645*f4a2713aSLionel Sambuc 
646*f4a2713aSLionel Sambuc   /* vec_mfvscr */
647*f4a2713aSLionel Sambuc   vus = vec_mfvscr();                           // CHECK: @llvm.ppc.altivec.mfvscr
648*f4a2713aSLionel Sambuc 
649*f4a2713aSLionel Sambuc   /* vec_min */
650*f4a2713aSLionel Sambuc   res_vsc = vec_min(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
651*f4a2713aSLionel Sambuc   res_vsc = vec_min(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
652*f4a2713aSLionel Sambuc   res_vsc = vec_min(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vminsb
653*f4a2713aSLionel Sambuc   res_vuc = vec_min(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
654*f4a2713aSLionel Sambuc   res_vuc = vec_min(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
655*f4a2713aSLionel Sambuc   res_vuc = vec_min(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vminub
656*f4a2713aSLionel Sambuc   res_vs  = vec_min(vs, vs);                    // CHECK: @llvm.ppc.altivec.vminsh
657*f4a2713aSLionel Sambuc   res_vs  = vec_min(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vminsh
658*f4a2713aSLionel Sambuc   res_vs  = vec_min(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vminsh
659*f4a2713aSLionel Sambuc   res_vus = vec_min(vus, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
660*f4a2713aSLionel Sambuc   res_vus = vec_min(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
661*f4a2713aSLionel Sambuc   res_vus = vec_min(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vminuh
662*f4a2713aSLionel Sambuc   res_vi  = vec_min(vi, vi);                    // CHECK: @llvm.ppc.altivec.vminsw
663*f4a2713aSLionel Sambuc   res_vi  = vec_min(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vminsw
664*f4a2713aSLionel Sambuc   res_vi  = vec_min(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vminsw
665*f4a2713aSLionel Sambuc   res_vui = vec_min(vui, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
666*f4a2713aSLionel Sambuc   res_vui = vec_min(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
667*f4a2713aSLionel Sambuc   res_vui = vec_min(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vminuw
668*f4a2713aSLionel Sambuc   res_vf  = vec_min(vf, vf);                    // CHECK: @llvm.ppc.altivec.vminfp
669*f4a2713aSLionel Sambuc   res_vsc = vec_vminsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
670*f4a2713aSLionel Sambuc   res_vsc = vec_vminsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
671*f4a2713aSLionel Sambuc   res_vsc = vec_vminsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vminsb
672*f4a2713aSLionel Sambuc   res_vuc = vec_vminub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
673*f4a2713aSLionel Sambuc   res_vuc = vec_vminub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
674*f4a2713aSLionel Sambuc   res_vuc = vec_vminub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vminub
675*f4a2713aSLionel Sambuc   res_vs  = vec_vminsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vminsh
676*f4a2713aSLionel Sambuc   res_vs  = vec_vminsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vminsh
677*f4a2713aSLionel Sambuc   res_vs  = vec_vminsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vminsh
678*f4a2713aSLionel Sambuc   res_vus = vec_vminuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vminuh
679*f4a2713aSLionel Sambuc   res_vus = vec_vminuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vminuh
680*f4a2713aSLionel Sambuc   res_vus = vec_vminuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vminuh
681*f4a2713aSLionel Sambuc   res_vi  = vec_vminsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vminsw
682*f4a2713aSLionel Sambuc   res_vi  = vec_vminsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vminsw
683*f4a2713aSLionel Sambuc   res_vi  = vec_vminsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vminsw
684*f4a2713aSLionel Sambuc   res_vui = vec_vminuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vminuw
685*f4a2713aSLionel Sambuc   res_vui = vec_vminuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vminuw
686*f4a2713aSLionel Sambuc   res_vui = vec_vminuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vminuw
687*f4a2713aSLionel Sambuc   res_vf  = vec_vminfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vminfp
688*f4a2713aSLionel Sambuc 
689*f4a2713aSLionel Sambuc   /* vec_mladd */
690*f4a2713aSLionel Sambuc   res_vus = vec_mladd(vus, vus, vus);           // CHECK: mul <8 x i16>
691*f4a2713aSLionel Sambuc                                                 // CHECK: add <8 x i16>
692*f4a2713aSLionel Sambuc 
693*f4a2713aSLionel Sambuc   res_vs = vec_mladd(vus, vs, vs);              // CHECK: mul <8 x i16>
694*f4a2713aSLionel Sambuc                                                 // CHECK: add <8 x i16>
695*f4a2713aSLionel Sambuc 
696*f4a2713aSLionel Sambuc   res_vs = vec_mladd(vs, vus, vus);             // CHECK: mul <8 x i16>
697*f4a2713aSLionel Sambuc                                                 // CHECK: add <8 x i16>
698*f4a2713aSLionel Sambuc 
699*f4a2713aSLionel Sambuc   res_vs = vec_mladd(vs, vs, vs);               // CHECK: mul <8 x i16>
700*f4a2713aSLionel Sambuc                                                 // CHECK: add <8 x i16>
701*f4a2713aSLionel Sambuc 
702*f4a2713aSLionel Sambuc   /* vec_mradds */
703*f4a2713aSLionel Sambuc   res_vs = vec_mradds(vs, vs, vs);              // CHECK: @llvm.ppc.altivec.vmhraddshs
704*f4a2713aSLionel Sambuc   res_vs = vec_vmhraddshs(vs, vs, vs);          // CHECK: @llvm.ppc.altivec.vmhraddshs
705*f4a2713aSLionel Sambuc 
706*f4a2713aSLionel Sambuc   /* vec_msum */
707*f4a2713aSLionel Sambuc   res_vi  = vec_msum(vsc, vuc, vi);             // CHECK: @llvm.ppc.altivec.vmsummbm
708*f4a2713aSLionel Sambuc   res_vui = vec_msum(vuc, vuc, vui);            // CHECK: @llvm.ppc.altivec.vmsumubm
709*f4a2713aSLionel Sambuc   res_vi  = vec_msum(vs, vs, vi);               // CHECK: @llvm.ppc.altivec.vmsumshm
710*f4a2713aSLionel Sambuc   res_vui = vec_msum(vus, vus, vui);            // CHECK: @llvm.ppc.altivec.vmsumuhm
711*f4a2713aSLionel Sambuc   res_vi  = vec_vmsummbm(vsc, vuc, vi);         // CHECK: @llvm.ppc.altivec.vmsummbm
712*f4a2713aSLionel Sambuc   res_vui = vec_vmsumubm(vuc, vuc, vui);        // CHECK: @llvm.ppc.altivec.vmsumubm
713*f4a2713aSLionel Sambuc   res_vi  = vec_vmsumshm(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshm
714*f4a2713aSLionel Sambuc   res_vui = vec_vmsumuhm(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhm
715*f4a2713aSLionel Sambuc 
716*f4a2713aSLionel Sambuc   /* vec_msums */
717*f4a2713aSLionel Sambuc   res_vi  = vec_msums(vs, vs, vi);              // CHECK: @llvm.ppc.altivec.vmsumshs
718*f4a2713aSLionel Sambuc   res_vui = vec_msums(vus, vus, vui);           // CHECK: @llvm.ppc.altivec.vmsumuhs
719*f4a2713aSLionel Sambuc   res_vi  = vec_vmsumshs(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshs
720*f4a2713aSLionel Sambuc   res_vui = vec_vmsumuhs(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhs
721*f4a2713aSLionel Sambuc 
722*f4a2713aSLionel Sambuc   /* vec_mtvscr */
723*f4a2713aSLionel Sambuc   vec_mtvscr(vsc);                              // CHECK: @llvm.ppc.altivec.mtvscr
724*f4a2713aSLionel Sambuc   vec_mtvscr(vuc);                              // CHECK: @llvm.ppc.altivec.mtvscr
725*f4a2713aSLionel Sambuc   vec_mtvscr(vbc);                              // CHECK: @llvm.ppc.altivec.mtvscr
726*f4a2713aSLionel Sambuc   vec_mtvscr(vs);                               // CHECK: @llvm.ppc.altivec.mtvscr
727*f4a2713aSLionel Sambuc   vec_mtvscr(vus);                              // CHECK: @llvm.ppc.altivec.mtvscr
728*f4a2713aSLionel Sambuc   vec_mtvscr(vbs);                              // CHECK: @llvm.ppc.altivec.mtvscr
729*f4a2713aSLionel Sambuc   vec_mtvscr(vp);                               // CHECK: @llvm.ppc.altivec.mtvscr
730*f4a2713aSLionel Sambuc   vec_mtvscr(vi);                               // CHECK: @llvm.ppc.altivec.mtvscr
731*f4a2713aSLionel Sambuc   vec_mtvscr(vui);                              // CHECK: @llvm.ppc.altivec.mtvscr
732*f4a2713aSLionel Sambuc   vec_mtvscr(vbi);                              // CHECK: @llvm.ppc.altivec.mtvscr
733*f4a2713aSLionel Sambuc 
734*f4a2713aSLionel Sambuc   /* vec_mule */
735*f4a2713aSLionel Sambuc   res_vs  = vec_mule(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulesb
736*f4a2713aSLionel Sambuc   res_vus = vec_mule(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuleub
737*f4a2713aSLionel Sambuc   res_vi  = vec_mule(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulesh
738*f4a2713aSLionel Sambuc   res_vui = vec_mule(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmuleuh
739*f4a2713aSLionel Sambuc   res_vs  = vec_vmulesb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulesb
740*f4a2713aSLionel Sambuc   res_vus = vec_vmuleub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuleub
741*f4a2713aSLionel Sambuc   res_vi  = vec_vmulesh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulesh
742*f4a2713aSLionel Sambuc   res_vui = vec_vmuleuh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmuleuh
743*f4a2713aSLionel Sambuc 
744*f4a2713aSLionel Sambuc   /* vec_mulo */
745*f4a2713aSLionel Sambuc   res_vs  = vec_mulo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulosb
746*f4a2713aSLionel Sambuc   res_vus = vec_mulo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuloub
747*f4a2713aSLionel Sambuc   res_vi  = vec_mulo(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulosh
748*f4a2713aSLionel Sambuc   res_vui = vec_mulo(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmulouh
749*f4a2713aSLionel Sambuc   res_vs  = vec_vmulosb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulosb
750*f4a2713aSLionel Sambuc   res_vus = vec_vmuloub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuloub
751*f4a2713aSLionel Sambuc   res_vi  = vec_vmulosh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulosh
752*f4a2713aSLionel Sambuc   res_vui = vec_vmulouh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmulouh
753*f4a2713aSLionel Sambuc 
754*f4a2713aSLionel Sambuc   /* vec_nmsub */
755*f4a2713aSLionel Sambuc   res_vf = vec_nmsub(vf, vf, vf);               // CHECK: @llvm.ppc.altivec.vnmsubfp
756*f4a2713aSLionel Sambuc   res_vf = vec_vnmsubfp(vf, vf, vf);            // CHECK: @llvm.ppc.altivec.vnmsubfp
757*f4a2713aSLionel Sambuc 
758*f4a2713aSLionel Sambuc   /* vec_nor */
759*f4a2713aSLionel Sambuc   res_vsc = vec_nor(vsc, vsc);                  // CHECK: or <16 x i8>
760*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
761*f4a2713aSLionel Sambuc 
762*f4a2713aSLionel Sambuc   res_vuc = vec_nor(vuc, vuc);                  // CHECK: or <16 x i8>
763*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
764*f4a2713aSLionel Sambuc 
765*f4a2713aSLionel Sambuc   res_vuc = vec_nor(vbc, vbc);                  // CHECK: or <16 x i8>
766*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
767*f4a2713aSLionel Sambuc 
768*f4a2713aSLionel Sambuc   res_vs  = vec_nor(vs, vs);                    // CHECK: or <8 x i16>
769*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
770*f4a2713aSLionel Sambuc 
771*f4a2713aSLionel Sambuc   res_vus = vec_nor(vus, vus);                  // CHECK: or <8 x i16>
772*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
773*f4a2713aSLionel Sambuc 
774*f4a2713aSLionel Sambuc   res_vus = vec_nor(vbs, vbs);                  // CHECK: or <8 x i16>
775*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
776*f4a2713aSLionel Sambuc 
777*f4a2713aSLionel Sambuc   res_vi  = vec_nor(vi, vi);                    // CHECK: or <4 x i32>
778*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
779*f4a2713aSLionel Sambuc 
780*f4a2713aSLionel Sambuc   res_vui = vec_nor(vui, vui);                  // CHECK: or <4 x i32>
781*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
782*f4a2713aSLionel Sambuc 
783*f4a2713aSLionel Sambuc   res_vui = vec_nor(vbi, vbi);                  // CHECK: or <4 x i32>
784*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
785*f4a2713aSLionel Sambuc 
786*f4a2713aSLionel Sambuc   res_vf  = vec_nor(vf, vf);                    // CHECK: or <4 x i32>
787*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
788*f4a2713aSLionel Sambuc 
789*f4a2713aSLionel Sambuc   res_vsc = vec_vnor(vsc, vsc);                 // CHECK: or <16 x i8>
790*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
791*f4a2713aSLionel Sambuc 
792*f4a2713aSLionel Sambuc   res_vuc = vec_vnor(vuc, vuc);                 // CHECK: or <16 x i8>
793*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
794*f4a2713aSLionel Sambuc 
795*f4a2713aSLionel Sambuc   res_vuc = vec_vnor(vbc, vbc);                 // CHECK: or <16 x i8>
796*f4a2713aSLionel Sambuc                                                 // CHECK: xor <16 x i8>
797*f4a2713aSLionel Sambuc 
798*f4a2713aSLionel Sambuc   res_vs  = vec_vnor(vs, vs);                   // CHECK: or <8 x i16>
799*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
800*f4a2713aSLionel Sambuc 
801*f4a2713aSLionel Sambuc   res_vus = vec_vnor(vus, vus);                 // CHECK: or <8 x i16>
802*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
803*f4a2713aSLionel Sambuc 
804*f4a2713aSLionel Sambuc   res_vus = vec_vnor(vbs, vbs);                 // CHECK: or <8 x i16>
805*f4a2713aSLionel Sambuc                                                 // CHECK: xor <8 x i16>
806*f4a2713aSLionel Sambuc 
807*f4a2713aSLionel Sambuc   res_vi  = vec_vnor(vi, vi);                   // CHECK: or <4 x i32>
808*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
809*f4a2713aSLionel Sambuc 
810*f4a2713aSLionel Sambuc   res_vui = vec_vnor(vui, vui);                 // CHECK: or <4 x i32>
811*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
812*f4a2713aSLionel Sambuc 
813*f4a2713aSLionel Sambuc   res_vui = vec_vnor(vbi, vbi);                 // CHECK: or <4 x i32>
814*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
815*f4a2713aSLionel Sambuc 
816*f4a2713aSLionel Sambuc   res_vf  = vec_vnor(vf, vf);                   // CHECK: or <4 x i32>
817*f4a2713aSLionel Sambuc                                                 // CHECK: xor <4 x i32>
818*f4a2713aSLionel Sambuc 
819*f4a2713aSLionel Sambuc   /* vec_or */
820*f4a2713aSLionel Sambuc   res_vsc = vec_or(vsc, vsc);                   // CHECK: or <16 x i8>
821*f4a2713aSLionel Sambuc   res_vsc = vec_or(vbc, vsc);                   // CHECK: or <16 x i8>
822*f4a2713aSLionel Sambuc   res_vsc = vec_or(vsc, vbc);                   // CHECK: or <16 x i8>
823*f4a2713aSLionel Sambuc   res_vuc = vec_or(vuc, vuc);                   // CHECK: or <16 x i8>
824*f4a2713aSLionel Sambuc   res_vuc = vec_or(vbc, vuc);                   // CHECK: or <16 x i8>
825*f4a2713aSLionel Sambuc   res_vuc = vec_or(vuc, vbc);                   // CHECK: or <16 x i8>
826*f4a2713aSLionel Sambuc   res_vbc = vec_or(vbc, vbc);                   // CHECK: or <16 x i8>
827*f4a2713aSLionel Sambuc   res_vs  = vec_or(vs, vs);                     // CHECK: or <8 x i16>
828*f4a2713aSLionel Sambuc   res_vs  = vec_or(vbs, vs);                    // CHECK: or <8 x i16>
829*f4a2713aSLionel Sambuc   res_vs  = vec_or(vs, vbs);                    // CHECK: or <8 x i16>
830*f4a2713aSLionel Sambuc   res_vus = vec_or(vus, vus);                   // CHECK: or <8 x i16>
831*f4a2713aSLionel Sambuc   res_vus = vec_or(vbs, vus);                   // CHECK: or <8 x i16>
832*f4a2713aSLionel Sambuc   res_vus = vec_or(vus, vbs);                   // CHECK: or <8 x i16>
833*f4a2713aSLionel Sambuc   res_vbs = vec_or(vbs, vbs);                   // CHECK: or <8 x i16>
834*f4a2713aSLionel Sambuc   res_vi  = vec_or(vi, vi);                     // CHECK: or <4 x i32>
835*f4a2713aSLionel Sambuc   res_vi  = vec_or(vbi, vi);                    // CHECK: or <4 x i32>
836*f4a2713aSLionel Sambuc   res_vi  = vec_or(vi, vbi);                    // CHECK: or <4 x i32>
837*f4a2713aSLionel Sambuc   res_vui = vec_or(vui, vui);                   // CHECK: or <4 x i32>
838*f4a2713aSLionel Sambuc   res_vui = vec_or(vbi, vui);                   // CHECK: or <4 x i32>
839*f4a2713aSLionel Sambuc   res_vui = vec_or(vui, vbi);                   // CHECK: or <4 x i32>
840*f4a2713aSLionel Sambuc   res_vbi = vec_or(vbi, vbi);                   // CHECK: or <4 x i32>
841*f4a2713aSLionel Sambuc   res_vf  = vec_or(vf, vf);                     // CHECK: or <4 x i32>
842*f4a2713aSLionel Sambuc   res_vf  = vec_or(vbi, vf);                    // CHECK: or <4 x i32>
843*f4a2713aSLionel Sambuc   res_vf  = vec_or(vf, vbi);                    // CHECK: or <4 x i32>
844*f4a2713aSLionel Sambuc   res_vsc = vec_vor(vsc, vsc);                  // CHECK: or <16 x i8>
845*f4a2713aSLionel Sambuc   res_vsc = vec_vor(vbc, vsc);                  // CHECK: or <16 x i8>
846*f4a2713aSLionel Sambuc   res_vsc = vec_vor(vsc, vbc);                  // CHECK: or <16 x i8>
847*f4a2713aSLionel Sambuc   res_vuc = vec_vor(vuc, vuc);                  // CHECK: or <16 x i8>
848*f4a2713aSLionel Sambuc   res_vuc = vec_vor(vbc, vuc);                  // CHECK: or <16 x i8>
849*f4a2713aSLionel Sambuc   res_vuc = vec_vor(vuc, vbc);                  // CHECK: or <16 x i8>
850*f4a2713aSLionel Sambuc   res_vbc = vec_vor(vbc, vbc);                  // CHECK: or <16 x i8>
851*f4a2713aSLionel Sambuc   res_vs  = vec_vor(vs, vs);                    // CHECK: or <8 x i16>
852*f4a2713aSLionel Sambuc   res_vs  = vec_vor(vbs, vs);                   // CHECK: or <8 x i16>
853*f4a2713aSLionel Sambuc   res_vs  = vec_vor(vs, vbs);                   // CHECK: or <8 x i16>
854*f4a2713aSLionel Sambuc   res_vus = vec_vor(vus, vus);                  // CHECK: or <8 x i16>
855*f4a2713aSLionel Sambuc   res_vus = vec_vor(vbs, vus);                  // CHECK: or <8 x i16>
856*f4a2713aSLionel Sambuc   res_vus = vec_vor(vus, vbs);                  // CHECK: or <8 x i16>
857*f4a2713aSLionel Sambuc   res_vbs = vec_vor(vbs, vbs);                  // CHECK: or <8 x i16>
858*f4a2713aSLionel Sambuc   res_vi  = vec_vor(vi, vi);                    // CHECK: or <4 x i32>
859*f4a2713aSLionel Sambuc   res_vi  = vec_vor(vbi, vi);                   // CHECK: or <4 x i32>
860*f4a2713aSLionel Sambuc   res_vi  = vec_vor(vi, vbi);                   // CHECK: or <4 x i32>
861*f4a2713aSLionel Sambuc   res_vui = vec_vor(vui, vui);                  // CHECK: or <4 x i32>
862*f4a2713aSLionel Sambuc   res_vui = vec_vor(vbi, vui);                  // CHECK: or <4 x i32>
863*f4a2713aSLionel Sambuc   res_vui = vec_vor(vui, vbi);                  // CHECK: or <4 x i32>
864*f4a2713aSLionel Sambuc   res_vbi = vec_vor(vbi, vbi);                  // CHECK: or <4 x i32>
865*f4a2713aSLionel Sambuc   res_vf  = vec_vor(vf, vf);                    // CHECK: or <4 x i32>
866*f4a2713aSLionel Sambuc   res_vf  = vec_vor(vbi, vf);                   // CHECK: or <4 x i32>
867*f4a2713aSLionel Sambuc   res_vf  = vec_vor(vf, vbi);                   // CHECK: or <4 x i32>
868*f4a2713aSLionel Sambuc 
869*f4a2713aSLionel Sambuc   /* vec_pack */
870*f4a2713aSLionel Sambuc   res_vsc = vec_pack(vs, vs);                   // CHECK: @llvm.ppc.altivec.vperm
871*f4a2713aSLionel Sambuc   res_vuc = vec_pack(vus, vus);                 // CHECK: @llvm.ppc.altivec.vperm
872*f4a2713aSLionel Sambuc   res_vbc = vec_pack(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vperm
873*f4a2713aSLionel Sambuc   res_vs  = vec_pack(vi, vi);                   // CHECK: @llvm.ppc.altivec.vperm
874*f4a2713aSLionel Sambuc   res_vus = vec_pack(vui, vui);                 // CHECK: @llvm.ppc.altivec.vperm
875*f4a2713aSLionel Sambuc   res_vbs = vec_pack(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vperm
876*f4a2713aSLionel Sambuc   res_vsc = vec_vpkuhum(vs, vs);                // CHECK: @llvm.ppc.altivec.vperm
877*f4a2713aSLionel Sambuc   res_vuc = vec_vpkuhum(vus, vus);              // CHECK: @llvm.ppc.altivec.vperm
878*f4a2713aSLionel Sambuc   res_vbc = vec_vpkuhum(vbs, vbs);              // CHECK: @llvm.ppc.altivec.vperm
879*f4a2713aSLionel Sambuc   res_vs  = vec_vpkuwum(vi, vi);                // CHECK: @llvm.ppc.altivec.vperm
880*f4a2713aSLionel Sambuc   res_vus = vec_vpkuwum(vui, vui);              // CHECK: @llvm.ppc.altivec.vperm
881*f4a2713aSLionel Sambuc   res_vbs = vec_vpkuwum(vbi, vbi);              // CHECK: @llvm.ppc.altivec.vperm
882*f4a2713aSLionel Sambuc 
883*f4a2713aSLionel Sambuc   /* vec_packpx */
884*f4a2713aSLionel Sambuc   res_vp = vec_packpx(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkpx
885*f4a2713aSLionel Sambuc   res_vp = vec_vpkpx(vui, vui);                 // CHECK: @llvm.ppc.altivec.vpkpx
886*f4a2713aSLionel Sambuc 
887*f4a2713aSLionel Sambuc   /* vec_packs */
888*f4a2713aSLionel Sambuc   res_vsc = vec_packs(vs, vs);                  // CHECK: @llvm.ppc.altivec.vpkshss
889*f4a2713aSLionel Sambuc   res_vuc = vec_packs(vus, vus);                // CHECK: @llvm.ppc.altivec.vpkuhus
890*f4a2713aSLionel Sambuc   res_vs  = vec_packs(vi, vi);                  // CHECK: @llvm.ppc.altivec.vpkswss
891*f4a2713aSLionel Sambuc   res_vus = vec_packs(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkuwus
892*f4a2713aSLionel Sambuc   res_vsc = vec_vpkshss(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshss
893*f4a2713aSLionel Sambuc   res_vuc = vec_vpkuhus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
894*f4a2713aSLionel Sambuc   res_vs  = vec_vpkswss(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswss
895*f4a2713aSLionel Sambuc   res_vus = vec_vpkuwus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
896*f4a2713aSLionel Sambuc 
897*f4a2713aSLionel Sambuc   /* vec_packsu */
898*f4a2713aSLionel Sambuc   res_vuc = vec_packsu(vs, vs);                 // CHECK: @llvm.ppc.altivec.vpkshus
899*f4a2713aSLionel Sambuc   res_vuc = vec_packsu(vus, vus);               // CHECK: @llvm.ppc.altivec.vpkuhus
900*f4a2713aSLionel Sambuc   res_vus = vec_packsu(vi, vi);                 // CHECK: @llvm.ppc.altivec.vpkswus
901*f4a2713aSLionel Sambuc   res_vus = vec_packsu(vui, vui);               // CHECK: @llvm.ppc.altivec.vpkuwus
902*f4a2713aSLionel Sambuc   res_vuc = vec_vpkshus(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshus
903*f4a2713aSLionel Sambuc   res_vuc = vec_vpkshus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
904*f4a2713aSLionel Sambuc   res_vus = vec_vpkswus(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswus
905*f4a2713aSLionel Sambuc   res_vus = vec_vpkswus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
906*f4a2713aSLionel Sambuc 
907*f4a2713aSLionel Sambuc   /* vec_perm */
908*f4a2713aSLionel Sambuc   res_vsc = vec_perm(vsc, vsc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
909*f4a2713aSLionel Sambuc   res_vuc = vec_perm(vuc, vuc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
910*f4a2713aSLionel Sambuc   res_vbc = vec_perm(vbc, vbc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
911*f4a2713aSLionel Sambuc   res_vs  = vec_perm(vs, vs, vuc);              // CHECK: @llvm.ppc.altivec.vperm
912*f4a2713aSLionel Sambuc   res_vus = vec_perm(vus, vus, vuc);            // CHECK: @llvm.ppc.altivec.vperm
913*f4a2713aSLionel Sambuc   res_vbs = vec_perm(vbs, vbs, vuc);            // CHECK: @llvm.ppc.altivec.vperm
914*f4a2713aSLionel Sambuc   res_vp  = vec_perm(vp, vp, vuc);              // CHECK: @llvm.ppc.altivec.vperm
915*f4a2713aSLionel Sambuc   res_vi  = vec_perm(vi, vi, vuc);              // CHECK: @llvm.ppc.altivec.vperm
916*f4a2713aSLionel Sambuc   res_vui = vec_perm(vui, vui, vuc);            // CHECK: @llvm.ppc.altivec.vperm
917*f4a2713aSLionel Sambuc   res_vbi = vec_perm(vbi, vbi, vuc);            // CHECK: @llvm.ppc.altivec.vperm
918*f4a2713aSLionel Sambuc   res_vf  = vec_perm(vf, vf, vuc);              // CHECK: @llvm.ppc.altivec.vperm
919*f4a2713aSLionel Sambuc   res_vsc = vec_vperm(vsc, vsc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
920*f4a2713aSLionel Sambuc   res_vuc = vec_vperm(vuc, vuc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
921*f4a2713aSLionel Sambuc   res_vbc = vec_vperm(vbc, vbc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
922*f4a2713aSLionel Sambuc   res_vs  = vec_vperm(vs, vs, vuc);             // CHECK: @llvm.ppc.altivec.vperm
923*f4a2713aSLionel Sambuc   res_vus = vec_vperm(vus, vus, vuc);           // CHECK: @llvm.ppc.altivec.vperm
924*f4a2713aSLionel Sambuc   res_vbs = vec_vperm(vbs, vbs, vuc);           // CHECK: @llvm.ppc.altivec.vperm
925*f4a2713aSLionel Sambuc   res_vp  = vec_vperm(vp, vp, vuc);             // CHECK: @llvm.ppc.altivec.vperm
926*f4a2713aSLionel Sambuc   res_vi  = vec_vperm(vi, vi, vuc);             // CHECK: @llvm.ppc.altivec.vperm
927*f4a2713aSLionel Sambuc   res_vui = vec_vperm(vui, vui, vuc);           // CHECK: @llvm.ppc.altivec.vperm
928*f4a2713aSLionel Sambuc   res_vbi = vec_vperm(vbi, vbi, vuc);           // CHECK: @llvm.ppc.altivec.vperm
929*f4a2713aSLionel Sambuc   res_vf  = vec_vperm(vf, vf, vuc);             // CHECK: @llvm.ppc.altivec.vperm
930*f4a2713aSLionel Sambuc 
931*f4a2713aSLionel Sambuc   /* vec_re */
932*f4a2713aSLionel Sambuc   res_vf = vec_re(vf);                          // CHECK: @llvm.ppc.altivec.vrefp
933*f4a2713aSLionel Sambuc   res_vf = vec_vrefp(vf);                       // CHECK: @llvm.ppc.altivec.vrefp
934*f4a2713aSLionel Sambuc 
935*f4a2713aSLionel Sambuc   /* vec_rl */
936*f4a2713aSLionel Sambuc   res_vsc = vec_rl(vsc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
937*f4a2713aSLionel Sambuc   res_vuc = vec_rl(vuc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
938*f4a2713aSLionel Sambuc   res_vs  = vec_rl(vs, vus);                    // CHECK: @llvm.ppc.altivec.vrlh
939*f4a2713aSLionel Sambuc   res_vus = vec_rl(vus, vus);                   // CHECK: @llvm.ppc.altivec.vrlh
940*f4a2713aSLionel Sambuc   res_vi  = vec_rl(vi, vui);                    // CHECK: @llvm.ppc.altivec.vrlw
941*f4a2713aSLionel Sambuc   res_vui = vec_rl(vui, vui);                   // CHECK: @llvm.ppc.altivec.vrlw
942*f4a2713aSLionel Sambuc   res_vsc = vec_vrlb(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
943*f4a2713aSLionel Sambuc   res_vuc = vec_vrlb(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
944*f4a2713aSLionel Sambuc   res_vs  = vec_vrlh(vs, vus);                  // CHECK: @llvm.ppc.altivec.vrlh
945*f4a2713aSLionel Sambuc   res_vus = vec_vrlh(vus, vus);                 // CHECK: @llvm.ppc.altivec.vrlh
946*f4a2713aSLionel Sambuc   res_vi  = vec_vrlw(vi, vui);                  // CHECK: @llvm.ppc.altivec.vrlw
947*f4a2713aSLionel Sambuc   res_vui = vec_vrlw(vui, vui);                 // CHECK: @llvm.ppc.altivec.vrlw
948*f4a2713aSLionel Sambuc 
949*f4a2713aSLionel Sambuc   /* vec_round */
950*f4a2713aSLionel Sambuc   res_vf = vec_round(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
951*f4a2713aSLionel Sambuc   res_vf = vec_vrfin(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
952*f4a2713aSLionel Sambuc 
953*f4a2713aSLionel Sambuc   /* vec_rsqrte */
954*f4a2713aSLionel Sambuc   res_vf = vec_rsqrte(vf);                      // CHECK: @llvm.ppc.altivec.vrsqrtefp
955*f4a2713aSLionel Sambuc   res_vf = vec_vrsqrtefp(vf);                   // CHECK: @llvm.ppc.altivec.vrsqrtefp
956*f4a2713aSLionel Sambuc 
957*f4a2713aSLionel Sambuc   /* vec_sel */
958*f4a2713aSLionel Sambuc   res_vsc = vec_sel(vsc, vsc, vuc);             // CHECK: xor <16 x i8>
959*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
960*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
961*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
962*f4a2713aSLionel Sambuc 
963*f4a2713aSLionel Sambuc   res_vsc = vec_sel(vsc, vsc, vbc);             // CHECK: xor <16 x i8>
964*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
965*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
966*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
967*f4a2713aSLionel Sambuc 
968*f4a2713aSLionel Sambuc   res_vuc = vec_sel(vuc, vuc, vuc);             // CHECK: xor <16 x i8>
969*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
970*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
971*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
972*f4a2713aSLionel Sambuc 
973*f4a2713aSLionel Sambuc   res_vuc = vec_sel(vuc, vuc, vbc);             // CHECK: xor <16 x i8>
974*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
975*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
976*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
977*f4a2713aSLionel Sambuc 
978*f4a2713aSLionel Sambuc   res_vbc = vec_sel(vbc, vbc, vuc);             // CHECK: xor <16 x i8>
979*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
980*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
981*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
982*f4a2713aSLionel Sambuc 
983*f4a2713aSLionel Sambuc   res_vbc = vec_sel(vbc, vbc, vbc);             // CHECK: xor <16 x i8>
984*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
985*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
986*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
987*f4a2713aSLionel Sambuc 
988*f4a2713aSLionel Sambuc   res_vs  = vec_sel(vs, vs, vus);               // CHECK: xor <8 x i16>
989*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
990*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
991*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
992*f4a2713aSLionel Sambuc 
993*f4a2713aSLionel Sambuc   res_vs  = vec_sel(vs, vs, vbs);               // CHECK: xor <8 x i16>
994*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
995*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
996*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
997*f4a2713aSLionel Sambuc 
998*f4a2713aSLionel Sambuc   res_vus = vec_sel(vus, vus, vus);             // CHECK: xor <8 x i16>
999*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1000*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1001*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1002*f4a2713aSLionel Sambuc 
1003*f4a2713aSLionel Sambuc   res_vus = vec_sel(vus, vus, vbs);             // CHECK: xor <8 x i16>
1004*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1005*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1006*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1007*f4a2713aSLionel Sambuc 
1008*f4a2713aSLionel Sambuc   res_vbs = vec_sel(vbs, vbs, vus);             // CHECK: xor <8 x i16>
1009*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1010*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1011*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1012*f4a2713aSLionel Sambuc 
1013*f4a2713aSLionel Sambuc   res_vbs = vec_sel(vbs, vbs, vbs);             // CHECK: xor <8 x i16>
1014*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1015*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1016*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1017*f4a2713aSLionel Sambuc 
1018*f4a2713aSLionel Sambuc   res_vi  = vec_sel(vi, vi, vui);               // CHECK: xor <4 x i32>
1019*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1020*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1021*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1022*f4a2713aSLionel Sambuc 
1023*f4a2713aSLionel Sambuc   res_vi  = vec_sel(vi, vi, vbi);               // CHECK: xor <4 x i32>
1024*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1025*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1026*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1027*f4a2713aSLionel Sambuc 
1028*f4a2713aSLionel Sambuc   res_vui = vec_sel(vui, vui, vui);             // CHECK: xor <4 x i32>
1029*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1030*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1031*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1032*f4a2713aSLionel Sambuc 
1033*f4a2713aSLionel Sambuc   res_vui = vec_sel(vui, vui, vbi);             // CHECK: xor <4 x i32>
1034*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1035*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1036*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1037*f4a2713aSLionel Sambuc 
1038*f4a2713aSLionel Sambuc   res_vbi = vec_sel(vbi, vbi, vui);             // CHECK: xor <4 x i32>
1039*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1040*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1041*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1042*f4a2713aSLionel Sambuc 
1043*f4a2713aSLionel Sambuc   res_vbi = vec_sel(vbi, vbi, vbi);             // CHECK: xor <4 x i32>
1044*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1045*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1046*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1047*f4a2713aSLionel Sambuc 
1048*f4a2713aSLionel Sambuc   res_vf  = vec_sel(vf, vf, vui);               // CHECK: xor <4 x i32>
1049*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1050*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1051*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1052*f4a2713aSLionel Sambuc 
1053*f4a2713aSLionel Sambuc   res_vf  = vec_sel(vf, vf, vbi);               // CHECK: xor <4 x i32>
1054*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1055*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1056*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1057*f4a2713aSLionel Sambuc 
1058*f4a2713aSLionel Sambuc   res_vsc = vec_vsel(vsc, vsc, vuc);            // CHECK: xor <16 x i8>
1059*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1060*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1061*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1062*f4a2713aSLionel Sambuc 
1063*f4a2713aSLionel Sambuc   res_vsc = vec_vsel(vsc, vsc, vbc);            // CHECK: xor <16 x i8>
1064*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1065*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1066*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1067*f4a2713aSLionel Sambuc 
1068*f4a2713aSLionel Sambuc   res_vuc = vec_vsel(vuc, vuc, vuc);            // CHECK: xor <16 x i8>
1069*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1070*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1071*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1072*f4a2713aSLionel Sambuc 
1073*f4a2713aSLionel Sambuc   res_vuc = vec_vsel(vuc, vuc, vbc);            // CHECK: xor <16 x i8>
1074*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1075*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1076*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1077*f4a2713aSLionel Sambuc 
1078*f4a2713aSLionel Sambuc   res_vbc = vec_vsel(vbc, vbc, vuc);            // CHECK: xor <16 x i8>
1079*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1080*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1081*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1082*f4a2713aSLionel Sambuc 
1083*f4a2713aSLionel Sambuc   res_vbc = vec_vsel(vbc, vbc, vbc);            // CHECK: xor <16 x i8>
1084*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1085*f4a2713aSLionel Sambuc                                                 // CHECK: and <16 x i8>
1086*f4a2713aSLionel Sambuc                                                 // CHECK: or <16 x i8>
1087*f4a2713aSLionel Sambuc 
1088*f4a2713aSLionel Sambuc   res_vs  = vec_vsel(vs, vs, vus);              // CHECK: xor <8 x i16>
1089*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1090*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1091*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1092*f4a2713aSLionel Sambuc 
1093*f4a2713aSLionel Sambuc   res_vs  = vec_vsel(vs, vs, vbs);              // CHECK: xor <8 x i16>
1094*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1095*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1096*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1097*f4a2713aSLionel Sambuc 
1098*f4a2713aSLionel Sambuc   res_vus = vec_vsel(vus, vus, vus);            // CHECK: xor <8 x i16>
1099*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1100*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1101*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1102*f4a2713aSLionel Sambuc 
1103*f4a2713aSLionel Sambuc   res_vus = vec_vsel(vus, vus, vbs);            // CHECK: xor <8 x i16>
1104*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1105*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1106*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1107*f4a2713aSLionel Sambuc 
1108*f4a2713aSLionel Sambuc   res_vbs = vec_vsel(vbs, vbs, vus);            // CHECK: xor <8 x i16>
1109*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1110*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1111*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1112*f4a2713aSLionel Sambuc 
1113*f4a2713aSLionel Sambuc   res_vbs = vec_vsel(vbs, vbs, vbs);            // CHECK: xor <8 x i16>
1114*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1115*f4a2713aSLionel Sambuc                                                 // CHECK: and <8 x i16>
1116*f4a2713aSLionel Sambuc                                                 // CHECK: or <8 x i16>
1117*f4a2713aSLionel Sambuc 
1118*f4a2713aSLionel Sambuc   res_vi  = vec_vsel(vi, vi, vui);              // CHECK: xor <4 x i32>
1119*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1120*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1121*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1122*f4a2713aSLionel Sambuc 
1123*f4a2713aSLionel Sambuc   res_vi  = vec_vsel(vi, vi, vbi);              // CHECK: xor <4 x i32>
1124*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1125*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1126*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1127*f4a2713aSLionel Sambuc 
1128*f4a2713aSLionel Sambuc   res_vui = vec_vsel(vui, vui, vui);            // CHECK: xor <4 x i32>
1129*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1130*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1131*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1132*f4a2713aSLionel Sambuc 
1133*f4a2713aSLionel Sambuc   res_vui = vec_vsel(vui, vui, vbi);            // CHECK: xor <4 x i32>
1134*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1135*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1136*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1137*f4a2713aSLionel Sambuc 
1138*f4a2713aSLionel Sambuc   res_vbi = vec_vsel(vbi, vbi, vui);            // CHECK: xor <4 x i32>
1139*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1140*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1141*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1142*f4a2713aSLionel Sambuc 
1143*f4a2713aSLionel Sambuc   res_vbi = vec_vsel(vbi, vbi, vbi);            // CHECK: xor <4 x i32>
1144*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1145*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1146*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1147*f4a2713aSLionel Sambuc 
1148*f4a2713aSLionel Sambuc   res_vf  = vec_vsel(vf, vf, vui);              // CHECK: xor <4 x i32>
1149*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1150*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1151*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1152*f4a2713aSLionel Sambuc 
1153*f4a2713aSLionel Sambuc   res_vf  = vec_vsel(vf, vf, vbi);              // CHECK: xor <4 x i32>
1154*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1155*f4a2713aSLionel Sambuc                                                 // CHECK: and <4 x i32>
1156*f4a2713aSLionel Sambuc                                                 // CHECK: or <4 x i32>
1157*f4a2713aSLionel Sambuc 
1158*f4a2713aSLionel Sambuc   /* vec_sl */
1159*f4a2713aSLionel Sambuc   res_vsc = vec_sl(vsc, vuc);                   // CHECK: shl <16 x i8>
1160*f4a2713aSLionel Sambuc   res_vuc = vec_sl(vuc, vuc);                   // CHECK: shl <16 x i8>
1161*f4a2713aSLionel Sambuc   res_vs  = vec_sl(vs, vus);                    // CHECK: shl <8 x i16>
1162*f4a2713aSLionel Sambuc   res_vus = vec_sl(vus, vus);                   // CHECK: shl <8 x i16>
1163*f4a2713aSLionel Sambuc   res_vi  = vec_sl(vi, vui);                    // CHECK: shl <4 x i32>
1164*f4a2713aSLionel Sambuc   res_vui = vec_sl(vui, vui);                   // CHECK: shl <4 x i32>
1165*f4a2713aSLionel Sambuc   res_vsc = vec_vslb(vsc, vuc);                 // CHECK: shl <16 x i8>
1166*f4a2713aSLionel Sambuc   res_vuc = vec_vslb(vuc, vuc);                 // CHECK: shl <16 x i8>
1167*f4a2713aSLionel Sambuc   res_vs  = vec_vslh(vs, vus);                  // CHECK: shl <8 x i16>
1168*f4a2713aSLionel Sambuc   res_vus = vec_vslh(vus, vus);                 // CHECK: shl <8 x i16>
1169*f4a2713aSLionel Sambuc   res_vi  = vec_vslw(vi, vui);                  // CHECK: shl <4 x i32>
1170*f4a2713aSLionel Sambuc   res_vui = vec_vslw(vui, vui);                 // CHECK: shl <4 x i32>
1171*f4a2713aSLionel Sambuc 
1172*f4a2713aSLionel Sambuc   /* vec_sld */
1173*f4a2713aSLionel Sambuc   res_vsc = vec_sld(vsc, vsc, 0);               // CHECK: @llvm.ppc.altivec.vperm
1174*f4a2713aSLionel Sambuc   res_vuc = vec_sld(vuc, vuc, 0);               // CHECK: @llvm.ppc.altivec.vperm
1175*f4a2713aSLionel Sambuc   res_vs  = vec_sld(vs, vs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1176*f4a2713aSLionel Sambuc   res_vus = vec_sld(vus, vus, 0);               // CHECK: @llvm.ppc.altivec.vperm
1177*f4a2713aSLionel Sambuc   res_vp  = vec_sld(vp, vp, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1178*f4a2713aSLionel Sambuc   res_vi  = vec_sld(vi, vi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1179*f4a2713aSLionel Sambuc   res_vui = vec_sld(vui, vui, 0);               // CHECK: @llvm.ppc.altivec.vperm
1180*f4a2713aSLionel Sambuc   res_vf  = vec_sld(vf, vf, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1181*f4a2713aSLionel Sambuc   res_vsc = vec_vsldoi(vsc, vsc, 0);            // CHECK: @llvm.ppc.altivec.vperm
1182*f4a2713aSLionel Sambuc   res_vuc = vec_vsldoi(vuc, vuc, 0);            // CHECK: @llvm.ppc.altivec.vperm
1183*f4a2713aSLionel Sambuc   res_vs  = vec_vsldoi(vs, vs, 0);              // CHECK: @llvm.ppc.altivec.vperm
1184*f4a2713aSLionel Sambuc   res_vus = vec_vsldoi(vus, vus, 0);            // CHECK: @llvm.ppc.altivec.vperm
1185*f4a2713aSLionel Sambuc   res_vp  = vec_vsldoi(vp, vp, 0);              // CHECK: @llvm.ppc.altivec.vperm
1186*f4a2713aSLionel Sambuc   res_vi  = vec_vsldoi(vi, vi, 0);              // CHECK: @llvm.ppc.altivec.vperm
1187*f4a2713aSLionel Sambuc   res_vui = vec_vsldoi(vui, vui, 0);            // CHECK: @llvm.ppc.altivec.vperm
1188*f4a2713aSLionel Sambuc   res_vf  = vec_vsldoi(vf, vf, 0);              // CHECK: @llvm.ppc.altivec.vperm
1189*f4a2713aSLionel Sambuc 
1190*f4a2713aSLionel Sambuc   /* vec_sll */
1191*f4a2713aSLionel Sambuc   res_vsc = vec_sll(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1192*f4a2713aSLionel Sambuc   res_vsc = vec_sll(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1193*f4a2713aSLionel Sambuc   res_vsc = vec_sll(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1194*f4a2713aSLionel Sambuc   res_vuc = vec_sll(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1195*f4a2713aSLionel Sambuc   res_vuc = vec_sll(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1196*f4a2713aSLionel Sambuc   res_vuc = vec_sll(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1197*f4a2713aSLionel Sambuc   res_vbc = vec_sll(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1198*f4a2713aSLionel Sambuc   res_vbc = vec_sll(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1199*f4a2713aSLionel Sambuc   res_vbc = vec_sll(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1200*f4a2713aSLionel Sambuc   res_vs  = vec_sll(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1201*f4a2713aSLionel Sambuc   res_vs  = vec_sll(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1202*f4a2713aSLionel Sambuc   res_vs  = vec_sll(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1203*f4a2713aSLionel Sambuc   res_vus = vec_sll(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1204*f4a2713aSLionel Sambuc   res_vus = vec_sll(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1205*f4a2713aSLionel Sambuc   res_vus = vec_sll(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1206*f4a2713aSLionel Sambuc   res_vbs = vec_sll(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1207*f4a2713aSLionel Sambuc   res_vbs = vec_sll(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1208*f4a2713aSLionel Sambuc   res_vbs = vec_sll(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1209*f4a2713aSLionel Sambuc   res_vp  = vec_sll(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1210*f4a2713aSLionel Sambuc   res_vp  = vec_sll(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1211*f4a2713aSLionel Sambuc   res_vp  = vec_sll(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1212*f4a2713aSLionel Sambuc   res_vi  = vec_sll(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1213*f4a2713aSLionel Sambuc   res_vi  = vec_sll(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1214*f4a2713aSLionel Sambuc   res_vi  = vec_sll(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1215*f4a2713aSLionel Sambuc   res_vui = vec_sll(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1216*f4a2713aSLionel Sambuc   res_vui = vec_sll(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1217*f4a2713aSLionel Sambuc   res_vui = vec_sll(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1218*f4a2713aSLionel Sambuc   res_vbi = vec_sll(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1219*f4a2713aSLionel Sambuc   res_vbi = vec_sll(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1220*f4a2713aSLionel Sambuc   res_vbi = vec_sll(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1221*f4a2713aSLionel Sambuc   res_vsc = vec_vsl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1222*f4a2713aSLionel Sambuc   res_vsc = vec_vsl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1223*f4a2713aSLionel Sambuc   res_vsc = vec_vsl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1224*f4a2713aSLionel Sambuc   res_vuc = vec_vsl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1225*f4a2713aSLionel Sambuc   res_vuc = vec_vsl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1226*f4a2713aSLionel Sambuc   res_vuc = vec_vsl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1227*f4a2713aSLionel Sambuc   res_vbc = vec_vsl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1228*f4a2713aSLionel Sambuc   res_vbc = vec_vsl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1229*f4a2713aSLionel Sambuc   res_vbc = vec_vsl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1230*f4a2713aSLionel Sambuc   res_vs  = vec_vsl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1231*f4a2713aSLionel Sambuc   res_vs  = vec_vsl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1232*f4a2713aSLionel Sambuc   res_vs  = vec_vsl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1233*f4a2713aSLionel Sambuc   res_vus = vec_vsl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1234*f4a2713aSLionel Sambuc   res_vus = vec_vsl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1235*f4a2713aSLionel Sambuc   res_vus = vec_vsl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1236*f4a2713aSLionel Sambuc   res_vbs = vec_vsl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1237*f4a2713aSLionel Sambuc   res_vbs = vec_vsl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1238*f4a2713aSLionel Sambuc   res_vbs = vec_vsl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1239*f4a2713aSLionel Sambuc   res_vp  = vec_vsl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1240*f4a2713aSLionel Sambuc   res_vp  = vec_vsl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1241*f4a2713aSLionel Sambuc   res_vp  = vec_vsl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1242*f4a2713aSLionel Sambuc   res_vi  = vec_vsl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
1243*f4a2713aSLionel Sambuc   res_vi  = vec_vsl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
1244*f4a2713aSLionel Sambuc   res_vi  = vec_vsl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
1245*f4a2713aSLionel Sambuc   res_vui = vec_vsl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1246*f4a2713aSLionel Sambuc   res_vui = vec_vsl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1247*f4a2713aSLionel Sambuc   res_vui = vec_vsl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1248*f4a2713aSLionel Sambuc   res_vbi = vec_vsl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
1249*f4a2713aSLionel Sambuc   res_vbi = vec_vsl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
1250*f4a2713aSLionel Sambuc   res_vbi = vec_vsl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
1251*f4a2713aSLionel Sambuc 
1252*f4a2713aSLionel Sambuc   /* vec_slo */
1253*f4a2713aSLionel Sambuc   res_vsc = vec_slo(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1254*f4a2713aSLionel Sambuc   res_vsc = vec_slo(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1255*f4a2713aSLionel Sambuc   res_vuc = vec_slo(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1256*f4a2713aSLionel Sambuc   res_vuc = vec_slo(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1257*f4a2713aSLionel Sambuc   res_vs  = vec_slo(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
1258*f4a2713aSLionel Sambuc   res_vs  = vec_slo(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
1259*f4a2713aSLionel Sambuc   res_vus = vec_slo(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1260*f4a2713aSLionel Sambuc   res_vus = vec_slo(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1261*f4a2713aSLionel Sambuc   res_vp  = vec_slo(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
1262*f4a2713aSLionel Sambuc   res_vp  = vec_slo(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
1263*f4a2713aSLionel Sambuc   res_vi  = vec_slo(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
1264*f4a2713aSLionel Sambuc   res_vi  = vec_slo(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
1265*f4a2713aSLionel Sambuc   res_vui = vec_slo(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1266*f4a2713aSLionel Sambuc   res_vui = vec_slo(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1267*f4a2713aSLionel Sambuc   res_vf  = vec_slo(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
1268*f4a2713aSLionel Sambuc   res_vf  = vec_slo(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
1269*f4a2713aSLionel Sambuc   res_vsc = vec_vslo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
1270*f4a2713aSLionel Sambuc   res_vsc = vec_vslo(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
1271*f4a2713aSLionel Sambuc   res_vuc = vec_vslo(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
1272*f4a2713aSLionel Sambuc   res_vuc = vec_vslo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
1273*f4a2713aSLionel Sambuc   res_vs  = vec_vslo(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1274*f4a2713aSLionel Sambuc   res_vs  = vec_vslo(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1275*f4a2713aSLionel Sambuc   res_vus = vec_vslo(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
1276*f4a2713aSLionel Sambuc   res_vus = vec_vslo(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
1277*f4a2713aSLionel Sambuc   res_vp  = vec_vslo(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1278*f4a2713aSLionel Sambuc   res_vp  = vec_vslo(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1279*f4a2713aSLionel Sambuc   res_vi  = vec_vslo(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1280*f4a2713aSLionel Sambuc   res_vi  = vec_vslo(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1281*f4a2713aSLionel Sambuc   res_vui = vec_vslo(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
1282*f4a2713aSLionel Sambuc   res_vui = vec_vslo(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
1283*f4a2713aSLionel Sambuc   res_vf  = vec_vslo(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
1284*f4a2713aSLionel Sambuc   res_vf  = vec_vslo(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
1285*f4a2713aSLionel Sambuc 
1286*f4a2713aSLionel Sambuc   /* vec_splat */
1287*f4a2713aSLionel Sambuc   res_vsc = vec_splat(vsc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1288*f4a2713aSLionel Sambuc   res_vuc = vec_splat(vuc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1289*f4a2713aSLionel Sambuc   res_vbc = vec_splat(vbc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1290*f4a2713aSLionel Sambuc   res_vs  = vec_splat(vs, 0);                   // CHECK: @llvm.ppc.altivec.vperm
1291*f4a2713aSLionel Sambuc   res_vus = vec_splat(vus, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1292*f4a2713aSLionel Sambuc   res_vbs = vec_splat(vbs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1293*f4a2713aSLionel Sambuc   res_vp  = vec_splat(vp, 0);                   // CHECK: @llvm.ppc.altivec.vperm
1294*f4a2713aSLionel Sambuc   res_vi  = vec_splat(vi, 0);                   // CHECK: @llvm.ppc.altivec.vperm
1295*f4a2713aSLionel Sambuc   res_vui = vec_splat(vui, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1296*f4a2713aSLionel Sambuc   res_vbi = vec_splat(vbi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1297*f4a2713aSLionel Sambuc   res_vf  = vec_splat(vf, 0);                   // CHECK: @llvm.ppc.altivec.vperm
1298*f4a2713aSLionel Sambuc   res_vsc = vec_vspltb(vsc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1299*f4a2713aSLionel Sambuc   res_vuc = vec_vspltb(vuc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1300*f4a2713aSLionel Sambuc   res_vbc = vec_vspltb(vbc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1301*f4a2713aSLionel Sambuc   res_vs  = vec_vsplth(vs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1302*f4a2713aSLionel Sambuc   res_vus = vec_vsplth(vus, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1303*f4a2713aSLionel Sambuc   res_vbs = vec_vsplth(vbs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1304*f4a2713aSLionel Sambuc   res_vp  = vec_vsplth(vp, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1305*f4a2713aSLionel Sambuc   res_vi  = vec_vspltw(vi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1306*f4a2713aSLionel Sambuc   res_vui = vec_vspltw(vui, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1307*f4a2713aSLionel Sambuc   res_vbi = vec_vspltw(vbi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
1308*f4a2713aSLionel Sambuc   res_vf  = vec_vspltw(vf, 0);                  // CHECK: @llvm.ppc.altivec.vperm
1309*f4a2713aSLionel Sambuc 
1310*f4a2713aSLionel Sambuc   /* vec_splat_s8 */
1311*f4a2713aSLionel Sambuc   res_vsc = vec_splat_s8(0x09);                 // TODO: add check
1312*f4a2713aSLionel Sambuc   res_vsc = vec_vspltisb(0x09);                 // TODO: add check
1313*f4a2713aSLionel Sambuc 
1314*f4a2713aSLionel Sambuc   /* vec_splat_s16 */
1315*f4a2713aSLionel Sambuc   res_vs = vec_splat_s16(0x09);                 // TODO: add check
1316*f4a2713aSLionel Sambuc   res_vs = vec_vspltish(0x09);                  // TODO: add check
1317*f4a2713aSLionel Sambuc 
1318*f4a2713aSLionel Sambuc   /* vec_splat_s32 */
1319*f4a2713aSLionel Sambuc   res_vi = vec_splat_s32(0x09);                 // TODO: add check
1320*f4a2713aSLionel Sambuc   res_vi = vec_vspltisw(0x09);                  // TODO: add check
1321*f4a2713aSLionel Sambuc 
1322*f4a2713aSLionel Sambuc   /* vec_splat_u8 */
1323*f4a2713aSLionel Sambuc   res_vuc = vec_splat_u8(0x09);                 // TODO: add check
1324*f4a2713aSLionel Sambuc 
1325*f4a2713aSLionel Sambuc   /* vec_splat_u16 */
1326*f4a2713aSLionel Sambuc   res_vus = vec_splat_u16(0x09);                // TODO: add check
1327*f4a2713aSLionel Sambuc 
1328*f4a2713aSLionel Sambuc   /* vec_splat_u32 */
1329*f4a2713aSLionel Sambuc   res_vui = vec_splat_u32(0x09);                // TODO: add check
1330*f4a2713aSLionel Sambuc 
1331*f4a2713aSLionel Sambuc   /* vec_sr */
1332*f4a2713aSLionel Sambuc   res_vsc = vec_sr(vsc, vuc);                   // CHECK: shr <16 x i8>
1333*f4a2713aSLionel Sambuc   res_vuc = vec_sr(vuc, vuc);                   // CHECK: shr <16 x i8>
1334*f4a2713aSLionel Sambuc   res_vs  = vec_sr(vs, vus);                    // CHECK: shr <8 x i16>
1335*f4a2713aSLionel Sambuc   res_vus = vec_sr(vus, vus);                   // CHECK: shr <8 x i16>
1336*f4a2713aSLionel Sambuc   res_vi  = vec_sr(vi, vui);                    // CHECK: shr <4 x i32>
1337*f4a2713aSLionel Sambuc   res_vui = vec_sr(vui, vui);                   // CHECK: shr <4 x i32>
1338*f4a2713aSLionel Sambuc   res_vsc = vec_vsrb(vsc, vuc);                 // CHECK: shr <16 x i8>
1339*f4a2713aSLionel Sambuc   res_vuc = vec_vsrb(vuc, vuc);                 // CHECK: shr <16 x i8>
1340*f4a2713aSLionel Sambuc   res_vs  = vec_vsrh(vs, vus);                  // CHECK: shr <8 x i16>
1341*f4a2713aSLionel Sambuc   res_vus = vec_vsrh(vus, vus);                 // CHECK: shr <8 x i16>
1342*f4a2713aSLionel Sambuc   res_vi  = vec_vsrw(vi, vui);                  // CHECK: shr <4 x i32>
1343*f4a2713aSLionel Sambuc   res_vui = vec_vsrw(vui, vui);                 // CHECK: shr <4 x i32>
1344*f4a2713aSLionel Sambuc 
1345*f4a2713aSLionel Sambuc   /* vec_sra */
1346*f4a2713aSLionel Sambuc   res_vsc = vec_sra(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
1347*f4a2713aSLionel Sambuc   res_vuc = vec_sra(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
1348*f4a2713aSLionel Sambuc   res_vs  = vec_sra(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsrah
1349*f4a2713aSLionel Sambuc   res_vus = vec_sra(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsrah
1350*f4a2713aSLionel Sambuc   res_vi  = vec_sra(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsraw
1351*f4a2713aSLionel Sambuc   res_vui = vec_sra(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsraw
1352*f4a2713aSLionel Sambuc   res_vsc = vec_vsrab(vsc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
1353*f4a2713aSLionel Sambuc   res_vuc = vec_vsrab(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
1354*f4a2713aSLionel Sambuc   res_vs  = vec_vsrah(vs, vus);                 // CHECK: @llvm.ppc.altivec.vsrah
1355*f4a2713aSLionel Sambuc   res_vus = vec_vsrah(vus, vus);                // CHECK: @llvm.ppc.altivec.vsrah
1356*f4a2713aSLionel Sambuc   res_vi  = vec_vsraw(vi, vui);                 // CHECK: @llvm.ppc.altivec.vsraw
1357*f4a2713aSLionel Sambuc   res_vui = vec_vsraw(vui, vui);                // CHECK: @llvm.ppc.altivec.vsraw
1358*f4a2713aSLionel Sambuc 
1359*f4a2713aSLionel Sambuc   /* vec_srl */
1360*f4a2713aSLionel Sambuc   res_vsc = vec_srl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1361*f4a2713aSLionel Sambuc   res_vsc = vec_srl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1362*f4a2713aSLionel Sambuc   res_vsc = vec_srl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1363*f4a2713aSLionel Sambuc   res_vuc = vec_srl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1364*f4a2713aSLionel Sambuc   res_vuc = vec_srl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1365*f4a2713aSLionel Sambuc   res_vuc = vec_srl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1366*f4a2713aSLionel Sambuc   res_vbc = vec_srl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1367*f4a2713aSLionel Sambuc   res_vbc = vec_srl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1368*f4a2713aSLionel Sambuc   res_vbc = vec_srl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1369*f4a2713aSLionel Sambuc   res_vs  = vec_srl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1370*f4a2713aSLionel Sambuc   res_vs  = vec_srl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1371*f4a2713aSLionel Sambuc   res_vs  = vec_srl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1372*f4a2713aSLionel Sambuc   res_vus = vec_srl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1373*f4a2713aSLionel Sambuc   res_vus = vec_srl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1374*f4a2713aSLionel Sambuc   res_vus = vec_srl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1375*f4a2713aSLionel Sambuc   res_vbs = vec_srl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1376*f4a2713aSLionel Sambuc   res_vbs = vec_srl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1377*f4a2713aSLionel Sambuc   res_vbs = vec_srl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1378*f4a2713aSLionel Sambuc   res_vp  = vec_srl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1379*f4a2713aSLionel Sambuc   res_vp  = vec_srl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1380*f4a2713aSLionel Sambuc   res_vp  = vec_srl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1381*f4a2713aSLionel Sambuc   res_vi  = vec_srl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1382*f4a2713aSLionel Sambuc   res_vi  = vec_srl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1383*f4a2713aSLionel Sambuc   res_vi  = vec_srl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1384*f4a2713aSLionel Sambuc   res_vui = vec_srl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1385*f4a2713aSLionel Sambuc   res_vui = vec_srl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1386*f4a2713aSLionel Sambuc   res_vui = vec_srl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1387*f4a2713aSLionel Sambuc   res_vbi = vec_srl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1388*f4a2713aSLionel Sambuc   res_vbi = vec_srl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1389*f4a2713aSLionel Sambuc   res_vbi = vec_srl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1390*f4a2713aSLionel Sambuc   res_vsc = vec_vsr(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1391*f4a2713aSLionel Sambuc   res_vsc = vec_vsr(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1392*f4a2713aSLionel Sambuc   res_vsc = vec_vsr(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1393*f4a2713aSLionel Sambuc   res_vuc = vec_vsr(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1394*f4a2713aSLionel Sambuc   res_vuc = vec_vsr(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1395*f4a2713aSLionel Sambuc   res_vuc = vec_vsr(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1396*f4a2713aSLionel Sambuc   res_vbc = vec_vsr(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1397*f4a2713aSLionel Sambuc   res_vbc = vec_vsr(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1398*f4a2713aSLionel Sambuc   res_vbc = vec_vsr(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1399*f4a2713aSLionel Sambuc   res_vs  = vec_vsr(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1400*f4a2713aSLionel Sambuc   res_vs  = vec_vsr(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1401*f4a2713aSLionel Sambuc   res_vs  = vec_vsr(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1402*f4a2713aSLionel Sambuc   res_vus = vec_vsr(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1403*f4a2713aSLionel Sambuc   res_vus = vec_vsr(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1404*f4a2713aSLionel Sambuc   res_vus = vec_vsr(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1405*f4a2713aSLionel Sambuc   res_vbs = vec_vsr(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1406*f4a2713aSLionel Sambuc   res_vbs = vec_vsr(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1407*f4a2713aSLionel Sambuc   res_vbs = vec_vsr(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1408*f4a2713aSLionel Sambuc   res_vp  = vec_vsr(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1409*f4a2713aSLionel Sambuc   res_vp  = vec_vsr(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1410*f4a2713aSLionel Sambuc   res_vp  = vec_vsr(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1411*f4a2713aSLionel Sambuc   res_vi  = vec_vsr(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
1412*f4a2713aSLionel Sambuc   res_vi  = vec_vsr(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
1413*f4a2713aSLionel Sambuc   res_vi  = vec_vsr(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
1414*f4a2713aSLionel Sambuc   res_vui = vec_vsr(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1415*f4a2713aSLionel Sambuc   res_vui = vec_vsr(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1416*f4a2713aSLionel Sambuc   res_vui = vec_vsr(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1417*f4a2713aSLionel Sambuc   res_vbi = vec_vsr(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
1418*f4a2713aSLionel Sambuc   res_vbi = vec_vsr(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
1419*f4a2713aSLionel Sambuc   res_vbi = vec_vsr(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
1420*f4a2713aSLionel Sambuc 
1421*f4a2713aSLionel Sambuc   /* vec_sro */
1422*f4a2713aSLionel Sambuc   res_vsc = vec_sro(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1423*f4a2713aSLionel Sambuc   res_vsc = vec_sro(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1424*f4a2713aSLionel Sambuc   res_vuc = vec_sro(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1425*f4a2713aSLionel Sambuc   res_vuc = vec_sro(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1426*f4a2713aSLionel Sambuc   res_vs  = vec_sro(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
1427*f4a2713aSLionel Sambuc   res_vs  = vec_sro(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
1428*f4a2713aSLionel Sambuc   res_vus = vec_sro(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1429*f4a2713aSLionel Sambuc   res_vus = vec_sro(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1430*f4a2713aSLionel Sambuc   res_vp  = vec_sro(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
1431*f4a2713aSLionel Sambuc   res_vp  = vec_sro(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
1432*f4a2713aSLionel Sambuc   res_vi  = vec_sro(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
1433*f4a2713aSLionel Sambuc   res_vi  = vec_sro(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
1434*f4a2713aSLionel Sambuc   res_vui = vec_sro(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1435*f4a2713aSLionel Sambuc   res_vui = vec_sro(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1436*f4a2713aSLionel Sambuc   res_vf  = vec_sro(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
1437*f4a2713aSLionel Sambuc   res_vf  = vec_sro(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
1438*f4a2713aSLionel Sambuc   res_vsc = vec_vsro(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
1439*f4a2713aSLionel Sambuc   res_vsc = vec_vsro(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
1440*f4a2713aSLionel Sambuc   res_vuc = vec_vsro(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
1441*f4a2713aSLionel Sambuc   res_vuc = vec_vsro(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
1442*f4a2713aSLionel Sambuc   res_vs  = vec_vsro(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1443*f4a2713aSLionel Sambuc   res_vs  = vec_vsro(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1444*f4a2713aSLionel Sambuc   res_vus = vec_vsro(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
1445*f4a2713aSLionel Sambuc   res_vus = vec_vsro(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
1446*f4a2713aSLionel Sambuc   res_vp  = vec_vsro(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1447*f4a2713aSLionel Sambuc   res_vp  = vec_vsro(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1448*f4a2713aSLionel Sambuc   res_vi  = vec_vsro(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1449*f4a2713aSLionel Sambuc   res_vi  = vec_vsro(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1450*f4a2713aSLionel Sambuc   res_vui = vec_vsro(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
1451*f4a2713aSLionel Sambuc   res_vui = vec_vsro(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
1452*f4a2713aSLionel Sambuc   res_vf  = vec_vsro(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
1453*f4a2713aSLionel Sambuc   res_vf  = vec_vsro(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
1454*f4a2713aSLionel Sambuc 
1455*f4a2713aSLionel Sambuc   /* vec_st */
1456*f4a2713aSLionel Sambuc   vec_st(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvx
1457*f4a2713aSLionel Sambuc   vec_st(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvx
1458*f4a2713aSLionel Sambuc   vec_st(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvx
1459*f4a2713aSLionel Sambuc   vec_st(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
1460*f4a2713aSLionel Sambuc   vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
1461*f4a2713aSLionel Sambuc   vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
1462*f4a2713aSLionel Sambuc   vec_st(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvx
1463*f4a2713aSLionel Sambuc   vec_st(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvx
1464*f4a2713aSLionel Sambuc   vec_st(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
1465*f4a2713aSLionel Sambuc   vec_st(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvx
1466*f4a2713aSLionel Sambuc   vec_st(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
1467*f4a2713aSLionel Sambuc   vec_st(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvx
1468*f4a2713aSLionel Sambuc   vec_st(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
1469*f4a2713aSLionel Sambuc   vec_st(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvx
1470*f4a2713aSLionel Sambuc   vec_st(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
1471*f4a2713aSLionel Sambuc   vec_st(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvx
1472*f4a2713aSLionel Sambuc   vec_st(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvx
1473*f4a2713aSLionel Sambuc   vec_st(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvx
1474*f4a2713aSLionel Sambuc   vec_st(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvx
1475*f4a2713aSLionel Sambuc   vec_st(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvx
1476*f4a2713aSLionel Sambuc   vec_st(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
1477*f4a2713aSLionel Sambuc   vec_st(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvx
1478*f4a2713aSLionel Sambuc   vec_st(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
1479*f4a2713aSLionel Sambuc   vec_st(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvx
1480*f4a2713aSLionel Sambuc   vec_st(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvx
1481*f4a2713aSLionel Sambuc   vec_st(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvx
1482*f4a2713aSLionel Sambuc   vec_stvx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvx
1483*f4a2713aSLionel Sambuc   vec_stvx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvx
1484*f4a2713aSLionel Sambuc   vec_stvx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvx
1485*f4a2713aSLionel Sambuc   vec_stvx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
1486*f4a2713aSLionel Sambuc   vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
1487*f4a2713aSLionel Sambuc   vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
1488*f4a2713aSLionel Sambuc   vec_stvx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvx
1489*f4a2713aSLionel Sambuc   vec_stvx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvx
1490*f4a2713aSLionel Sambuc   vec_stvx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
1491*f4a2713aSLionel Sambuc   vec_stvx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvx
1492*f4a2713aSLionel Sambuc   vec_stvx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
1493*f4a2713aSLionel Sambuc   vec_stvx(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvx
1494*f4a2713aSLionel Sambuc   vec_stvx(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
1495*f4a2713aSLionel Sambuc   vec_stvx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvx
1496*f4a2713aSLionel Sambuc   vec_stvx(vp, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
1497*f4a2713aSLionel Sambuc   vec_stvx(vp, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvx
1498*f4a2713aSLionel Sambuc   vec_stvx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.stvx
1499*f4a2713aSLionel Sambuc   vec_stvx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvx
1500*f4a2713aSLionel Sambuc   vec_stvx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvx
1501*f4a2713aSLionel Sambuc   vec_stvx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvx
1502*f4a2713aSLionel Sambuc   vec_stvx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
1503*f4a2713aSLionel Sambuc   vec_stvx(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvx
1504*f4a2713aSLionel Sambuc   vec_stvx(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
1505*f4a2713aSLionel Sambuc   vec_stvx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvx
1506*f4a2713aSLionel Sambuc   vec_stvx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvx
1507*f4a2713aSLionel Sambuc   vec_stvx(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvx
1508*f4a2713aSLionel Sambuc 
1509*f4a2713aSLionel Sambuc   /* vec_ste */
1510*f4a2713aSLionel Sambuc   vec_ste(vsc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
1511*f4a2713aSLionel Sambuc   vec_ste(vuc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
1512*f4a2713aSLionel Sambuc   vec_ste(vbc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
1513*f4a2713aSLionel Sambuc   vec_ste(vbc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
1514*f4a2713aSLionel Sambuc   vec_ste(vs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
1515*f4a2713aSLionel Sambuc   vec_ste(vus, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
1516*f4a2713aSLionel Sambuc   vec_ste(vbs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvehx
1517*f4a2713aSLionel Sambuc   vec_ste(vbs, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
1518*f4a2713aSLionel Sambuc   vec_ste(vp, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
1519*f4a2713aSLionel Sambuc   vec_ste(vp, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvehx
1520*f4a2713aSLionel Sambuc   vec_ste(vi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvewx
1521*f4a2713aSLionel Sambuc   vec_ste(vui, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
1522*f4a2713aSLionel Sambuc   vec_ste(vbi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvewx
1523*f4a2713aSLionel Sambuc   vec_ste(vbi, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
1524*f4a2713aSLionel Sambuc   vec_ste(vf, 0, &param_f);                    // CHECK: @llvm.ppc.altivec.stvewx
1525*f4a2713aSLionel Sambuc   vec_stvebx(vsc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
1526*f4a2713aSLionel Sambuc   vec_stvebx(vuc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
1527*f4a2713aSLionel Sambuc   vec_stvebx(vbc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
1528*f4a2713aSLionel Sambuc   vec_stvebx(vbc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
1529*f4a2713aSLionel Sambuc   vec_stvehx(vs, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
1530*f4a2713aSLionel Sambuc   vec_stvehx(vus, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
1531*f4a2713aSLionel Sambuc   vec_stvehx(vbs, 0, &param_s);                // CHECK: @llvm.ppc.altivec.stvehx
1532*f4a2713aSLionel Sambuc   vec_stvehx(vbs, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
1533*f4a2713aSLionel Sambuc   vec_stvehx(vp, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
1534*f4a2713aSLionel Sambuc   vec_stvehx(vp, 0, &param_us);                // CHECK: @llvm.ppc.altivec.stvehx
1535*f4a2713aSLionel Sambuc   vec_stvewx(vi, 0, &param_i);                 // CHECK: @llvm.ppc.altivec.stvewx
1536*f4a2713aSLionel Sambuc   vec_stvewx(vui, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
1537*f4a2713aSLionel Sambuc   vec_stvewx(vbi, 0, &param_i);                // CHECK: @llvm.ppc.altivec.stvewx
1538*f4a2713aSLionel Sambuc   vec_stvewx(vbi, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
1539*f4a2713aSLionel Sambuc   vec_stvewx(vf, 0, &param_f);                 // CHECK: @llvm.ppc.altivec.stvewx
1540*f4a2713aSLionel Sambuc 
1541*f4a2713aSLionel Sambuc   /* vec_stl */
1542*f4a2713aSLionel Sambuc   vec_stl(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvxl
1543*f4a2713aSLionel Sambuc   vec_stl(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
1544*f4a2713aSLionel Sambuc   vec_stl(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvxl
1545*f4a2713aSLionel Sambuc   vec_stl(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
1546*f4a2713aSLionel Sambuc   vec_stl(vbc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
1547*f4a2713aSLionel Sambuc   vec_stl(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
1548*f4a2713aSLionel Sambuc   vec_stl(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvxl
1549*f4a2713aSLionel Sambuc   vec_stl(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvxl
1550*f4a2713aSLionel Sambuc   vec_stl(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
1551*f4a2713aSLionel Sambuc   vec_stl(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvxl
1552*f4a2713aSLionel Sambuc   vec_stl(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
1553*f4a2713aSLionel Sambuc   vec_stl(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvxl
1554*f4a2713aSLionel Sambuc   vec_stl(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
1555*f4a2713aSLionel Sambuc   vec_stl(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvxl
1556*f4a2713aSLionel Sambuc   vec_stl(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
1557*f4a2713aSLionel Sambuc   vec_stl(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvxl
1558*f4a2713aSLionel Sambuc   vec_stl(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvxl
1559*f4a2713aSLionel Sambuc   vec_stl(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvxl
1560*f4a2713aSLionel Sambuc   vec_stl(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvxl
1561*f4a2713aSLionel Sambuc   vec_stl(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvxl
1562*f4a2713aSLionel Sambuc   vec_stl(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
1563*f4a2713aSLionel Sambuc   vec_stl(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvxl
1564*f4a2713aSLionel Sambuc   vec_stl(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
1565*f4a2713aSLionel Sambuc   vec_stl(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvxl
1566*f4a2713aSLionel Sambuc   vec_stl(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvxl
1567*f4a2713aSLionel Sambuc   vec_stl(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvxl
1568*f4a2713aSLionel Sambuc   vec_stvxl(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvxl
1569*f4a2713aSLionel Sambuc   vec_stvxl(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
1570*f4a2713aSLionel Sambuc   vec_stvxl(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvxl
1571*f4a2713aSLionel Sambuc   vec_stvxl(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
1572*f4a2713aSLionel Sambuc   vec_stvxl(vbc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
1573*f4a2713aSLionel Sambuc   vec_stvxl(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
1574*f4a2713aSLionel Sambuc   vec_stvxl(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvxl
1575*f4a2713aSLionel Sambuc   vec_stvxl(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvxl
1576*f4a2713aSLionel Sambuc   vec_stvxl(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvxl
1577*f4a2713aSLionel Sambuc   vec_stvxl(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvxl
1578*f4a2713aSLionel Sambuc   vec_stvxl(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
1579*f4a2713aSLionel Sambuc   vec_stvxl(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
1580*f4a2713aSLionel Sambuc   vec_stvxl(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
1581*f4a2713aSLionel Sambuc   vec_stvxl(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvxl
1582*f4a2713aSLionel Sambuc   vec_stvxl(vp, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
1583*f4a2713aSLionel Sambuc   vec_stvxl(vp, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
1584*f4a2713aSLionel Sambuc   vec_stvxl(vp, 0, &vp);                      // CHECK: @llvm.ppc.altivec.stvxl
1585*f4a2713aSLionel Sambuc   vec_stvxl(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvxl
1586*f4a2713aSLionel Sambuc   vec_stvxl(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvxl
1587*f4a2713aSLionel Sambuc   vec_stvxl(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvxl
1588*f4a2713aSLionel Sambuc   vec_stvxl(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
1589*f4a2713aSLionel Sambuc   vec_stvxl(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvxl
1590*f4a2713aSLionel Sambuc   vec_stvxl(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
1591*f4a2713aSLionel Sambuc   vec_stvxl(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvxl
1592*f4a2713aSLionel Sambuc   vec_stvxl(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvxl
1593*f4a2713aSLionel Sambuc   vec_stvxl(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvxl
1594*f4a2713aSLionel Sambuc 
1595*f4a2713aSLionel Sambuc   /* vec_sub */
1596*f4a2713aSLionel Sambuc   res_vsc = vec_sub(vsc, vsc);                  // CHECK: sub <16 x i8>
1597*f4a2713aSLionel Sambuc   res_vsc = vec_sub(vbc, vsc);                  // CHECK: sub <16 x i8>
1598*f4a2713aSLionel Sambuc   res_vsc = vec_sub(vsc, vbc);                  // CHECK: sub <16 x i8>
1599*f4a2713aSLionel Sambuc   res_vuc = vec_sub(vuc, vuc);                  // CHECK: sub <16 x i8>
1600*f4a2713aSLionel Sambuc   res_vuc = vec_sub(vbc, vuc);                  // CHECK: sub <16 x i8>
1601*f4a2713aSLionel Sambuc   res_vuc = vec_sub(vuc, vbc);                  // CHECK: sub <16 x i8>
1602*f4a2713aSLionel Sambuc   res_vs  = vec_sub(vs, vs);                    // CHECK: sub <8 x i16>
1603*f4a2713aSLionel Sambuc   res_vs  = vec_sub(vbs, vs);                   // CHECK: sub <8 x i16>
1604*f4a2713aSLionel Sambuc   res_vs  = vec_sub(vs, vbs);                   // CHECK: sub <8 x i16>
1605*f4a2713aSLionel Sambuc   res_vus = vec_sub(vus, vus);                  // CHECK: sub <8 x i16>
1606*f4a2713aSLionel Sambuc   res_vus = vec_sub(vbs, vus);                  // CHECK: sub <8 x i16>
1607*f4a2713aSLionel Sambuc   res_vus = vec_sub(vus, vbs);                  // CHECK: sub <8 x i16>
1608*f4a2713aSLionel Sambuc   res_vi  = vec_sub(vi, vi);                    // CHECK: sub <4 x i32>
1609*f4a2713aSLionel Sambuc   res_vi  = vec_sub(vbi, vi);                   // CHECK: sub <4 x i32>
1610*f4a2713aSLionel Sambuc   res_vi  = vec_sub(vi, vbi);                   // CHECK: sub <4 x i32>
1611*f4a2713aSLionel Sambuc   res_vui = vec_sub(vui, vui);                  // CHECK: sub <4 x i32>
1612*f4a2713aSLionel Sambuc   res_vui = vec_sub(vbi, vui);                  // CHECK: sub <4 x i32>
1613*f4a2713aSLionel Sambuc   res_vui = vec_sub(vui, vbi);                  // CHECK: sub <4 x i32>
1614*f4a2713aSLionel Sambuc   res_vf  = vec_sub(vf, vf);                    // CHECK: fsub <4 x float>
1615*f4a2713aSLionel Sambuc   res_vsc = vec_vsububm(vsc, vsc);              // CHECK: sub <16 x i8>
1616*f4a2713aSLionel Sambuc   res_vsc = vec_vsububm(vbc, vsc);              // CHECK: sub <16 x i8>
1617*f4a2713aSLionel Sambuc   res_vsc = vec_vsububm(vsc, vbc);              // CHECK: sub <16 x i8>
1618*f4a2713aSLionel Sambuc   res_vuc = vec_vsububm(vuc, vuc);              // CHECK: sub <16 x i8>
1619*f4a2713aSLionel Sambuc   res_vuc = vec_vsububm(vbc, vuc);              // CHECK: sub <16 x i8>
1620*f4a2713aSLionel Sambuc   res_vuc = vec_vsububm(vuc, vbc);              // CHECK: sub <16 x i8>
1621*f4a2713aSLionel Sambuc   res_vs  = vec_vsubuhm(vs, vs);                // CHECK: sub <8 x i16>
1622*f4a2713aSLionel Sambuc   res_vs  = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
1623*f4a2713aSLionel Sambuc   res_vs  = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
1624*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhm(vus, vus);              // CHECK: sub <8 x i16>
1625*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
1626*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
1627*f4a2713aSLionel Sambuc   res_vi  = vec_vsubuwm(vi, vi);                // CHECK: sub <4 x i32>
1628*f4a2713aSLionel Sambuc   res_vi  = vec_vsubuwm(vbi, vi);               // CHECK: sub <4 x i32>
1629*f4a2713aSLionel Sambuc   res_vi  = vec_vsubuwm(vi, vbi);               // CHECK: sub <4 x i32>
1630*f4a2713aSLionel Sambuc   res_vui = vec_vsubuwm(vui, vui);              // CHECK: sub <4 x i32>
1631*f4a2713aSLionel Sambuc   res_vui = vec_vsubuwm(vbi, vui);              // CHECK: sub <4 x i32>
1632*f4a2713aSLionel Sambuc   res_vui = vec_vsubuwm(vui, vbi);              // CHECK: sub <4 x i32>
1633*f4a2713aSLionel Sambuc   res_vf  = vec_vsubfp(vf, vf);                 // CHECK: fsub <4 x float>
1634*f4a2713aSLionel Sambuc 
1635*f4a2713aSLionel Sambuc   /* vec_subc */
1636*f4a2713aSLionel Sambuc   res_vui = vec_subc(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubcuw
1637*f4a2713aSLionel Sambuc   res_vui = vec_vsubcuw(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubcuw
1638*f4a2713aSLionel Sambuc 
1639*f4a2713aSLionel Sambuc   /* vec_subs */
1640*f4a2713aSLionel Sambuc   res_vsc = vec_subs(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
1641*f4a2713aSLionel Sambuc   res_vsc = vec_subs(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
1642*f4a2713aSLionel Sambuc   res_vsc = vec_subs(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
1643*f4a2713aSLionel Sambuc   res_vuc = vec_subs(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
1644*f4a2713aSLionel Sambuc   res_vuc = vec_subs(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
1645*f4a2713aSLionel Sambuc   res_vuc = vec_subs(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vsububs
1646*f4a2713aSLionel Sambuc   res_vs  = vec_subs(vs, vs);                   // CHECK: @llvm.ppc.altivec.vsubshs
1647*f4a2713aSLionel Sambuc   res_vs  = vec_subs(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vsubshs
1648*f4a2713aSLionel Sambuc   res_vs  = vec_subs(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vsubshs
1649*f4a2713aSLionel Sambuc   res_vus = vec_subs(vus, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
1650*f4a2713aSLionel Sambuc   res_vus = vec_subs(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
1651*f4a2713aSLionel Sambuc   res_vus = vec_subs(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vsubuhs
1652*f4a2713aSLionel Sambuc   res_vi  = vec_subs(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsubsws
1653*f4a2713aSLionel Sambuc   res_vi  = vec_subs(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vsubsws
1654*f4a2713aSLionel Sambuc   res_vi  = vec_subs(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vsubsws
1655*f4a2713aSLionel Sambuc   res_vui = vec_subs(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
1656*f4a2713aSLionel Sambuc   res_vui = vec_subs(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
1657*f4a2713aSLionel Sambuc   res_vui = vec_subs(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vsubuws
1658*f4a2713aSLionel Sambuc   res_vsc = vec_vsubsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
1659*f4a2713aSLionel Sambuc   res_vsc = vec_vsubsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
1660*f4a2713aSLionel Sambuc   res_vsc = vec_vsubsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vsubsbs
1661*f4a2713aSLionel Sambuc   res_vuc = vec_vsububs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
1662*f4a2713aSLionel Sambuc   res_vuc = vec_vsububs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
1663*f4a2713aSLionel Sambuc   res_vuc = vec_vsububs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vsububs
1664*f4a2713aSLionel Sambuc   res_vs  = vec_vsubshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vsubshs
1665*f4a2713aSLionel Sambuc   res_vs  = vec_vsubshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vsubshs
1666*f4a2713aSLionel Sambuc   res_vs  = vec_vsubshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vsubshs
1667*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
1668*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
1669*f4a2713aSLionel Sambuc   res_vus = vec_vsubuhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vsubuhs
1670*f4a2713aSLionel Sambuc   res_vi  = vec_vsubsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsubsws
1671*f4a2713aSLionel Sambuc   res_vi  = vec_vsubsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vsubsws
1672*f4a2713aSLionel Sambuc   res_vi  = vec_vsubsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vsubsws
1673*f4a2713aSLionel Sambuc   res_vui = vec_vsubuws(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
1674*f4a2713aSLionel Sambuc   res_vui = vec_vsubuws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
1675*f4a2713aSLionel Sambuc   res_vui = vec_vsubuws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vsubuws
1676*f4a2713aSLionel Sambuc 
1677*f4a2713aSLionel Sambuc   /* vec_sum4s */
1678*f4a2713aSLionel Sambuc   res_vi  = vec_sum4s(vsc, vi);                 // CHECK: @llvm.ppc.altivec.vsum4sbs
1679*f4a2713aSLionel Sambuc   res_vui = vec_sum4s(vuc, vui);                // CHECK: @llvm.ppc.altivec.vsum4ubs
1680*f4a2713aSLionel Sambuc   res_vi  = vec_sum4s(vs, vi);                  // CHECK: @llvm.ppc.altivec.vsum4shs
1681*f4a2713aSLionel Sambuc   res_vi  = vec_vsum4sbs(vsc, vi);              // CHECK: @llvm.ppc.altivec.vsum4sbs
1682*f4a2713aSLionel Sambuc   res_vui = vec_vsum4ubs(vuc, vui);             // CHECK: @llvm.ppc.altivec.vsum4ubs
1683*f4a2713aSLionel Sambuc   res_vi  = vec_vsum4shs(vs, vi);               // CHECK: @llvm.ppc.altivec.vsum4shs
1684*f4a2713aSLionel Sambuc 
1685*f4a2713aSLionel Sambuc   /* vec_sum2s */
1686*f4a2713aSLionel Sambuc   res_vi = vec_sum2s(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsum2sws
1687*f4a2713aSLionel Sambuc   res_vi = vec_vsum2sws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsum2sws
1688*f4a2713aSLionel Sambuc 
1689*f4a2713aSLionel Sambuc   /* vec_sums */
1690*f4a2713aSLionel Sambuc   res_vi = vec_sums(vi, vi);                    // CHECK: @llvm.ppc.altivec.vsumsws
1691*f4a2713aSLionel Sambuc   res_vi = vec_vsumsws(vi, vi);                 // CHECK: @llvm.ppc.altivec.vsumsws
1692*f4a2713aSLionel Sambuc 
1693*f4a2713aSLionel Sambuc   /* vec_trunc */
1694*f4a2713aSLionel Sambuc   res_vf = vec_trunc(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
1695*f4a2713aSLionel Sambuc   res_vf = vec_vrfiz(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
1696*f4a2713aSLionel Sambuc 
1697*f4a2713aSLionel Sambuc   /* vec_unpackh */
1698*f4a2713aSLionel Sambuc   res_vs  = vec_unpackh(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
1699*f4a2713aSLionel Sambuc   res_vbs = vec_unpackh(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
1700*f4a2713aSLionel Sambuc   res_vi  = vec_unpackh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
1701*f4a2713aSLionel Sambuc   res_vbi = vec_unpackh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
1702*f4a2713aSLionel Sambuc   res_vui = vec_unpackh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
1703*f4a2713aSLionel Sambuc   res_vs  = vec_vupkhsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
1704*f4a2713aSLionel Sambuc   res_vbs = vec_vupkhsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
1705*f4a2713aSLionel Sambuc   res_vi  = vec_vupkhsh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
1706*f4a2713aSLionel Sambuc   res_vbi = vec_vupkhsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
1707*f4a2713aSLionel Sambuc   res_vui = vec_vupkhsh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
1708*f4a2713aSLionel Sambuc 
1709*f4a2713aSLionel Sambuc   /* vec_unpackl */
1710*f4a2713aSLionel Sambuc   res_vs  = vec_unpackl(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
1711*f4a2713aSLionel Sambuc   res_vbs = vec_unpackl(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
1712*f4a2713aSLionel Sambuc   res_vi  = vec_unpackl(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
1713*f4a2713aSLionel Sambuc   res_vbi = vec_unpackl(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
1714*f4a2713aSLionel Sambuc   res_vui = vec_unpackl(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
1715*f4a2713aSLionel Sambuc   res_vs  = vec_vupklsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
1716*f4a2713aSLionel Sambuc   res_vbs = vec_vupklsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
1717*f4a2713aSLionel Sambuc   res_vi  = vec_vupklsh(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
1718*f4a2713aSLionel Sambuc   res_vbi = vec_vupklsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
1719*f4a2713aSLionel Sambuc   res_vui = vec_vupklsh(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
1720*f4a2713aSLionel Sambuc 
1721*f4a2713aSLionel Sambuc   /* vec_xor */
1722*f4a2713aSLionel Sambuc   res_vsc = vec_xor(vsc, vsc);                  // CHECK: xor <16 x i8>
1723*f4a2713aSLionel Sambuc   res_vsc = vec_xor(vbc, vsc);                  // CHECK: xor <16 x i8>
1724*f4a2713aSLionel Sambuc   res_vsc = vec_xor(vsc, vbc);                  // CHECK: xor <16 x i8>
1725*f4a2713aSLionel Sambuc   res_vuc = vec_xor(vuc, vuc);                  // CHECK: xor <16 x i8>
1726*f4a2713aSLionel Sambuc   res_vuc = vec_xor(vbc, vuc);                  // CHECK: xor <16 x i8>
1727*f4a2713aSLionel Sambuc   res_vuc = vec_xor(vuc, vbc);                  // CHECK: xor <16 x i8>
1728*f4a2713aSLionel Sambuc   res_vbc = vec_xor(vbc, vbc);                  // CHECK: xor <16 x i8>
1729*f4a2713aSLionel Sambuc   res_vs  = vec_xor(vs, vs);                    // CHECK: xor <8 x i16>
1730*f4a2713aSLionel Sambuc   res_vs  = vec_xor(vbs, vs);                   // CHECK: xor <8 x i16>
1731*f4a2713aSLionel Sambuc   res_vs  = vec_xor(vs, vbs);                   // CHECK: xor <8 x i16>
1732*f4a2713aSLionel Sambuc   res_vus = vec_xor(vus, vus);                  // CHECK: xor <8 x i16>
1733*f4a2713aSLionel Sambuc   res_vus = vec_xor(vbs, vus);                  // CHECK: xor <8 x i16>
1734*f4a2713aSLionel Sambuc   res_vus = vec_xor(vus, vbs);                  // CHECK: xor <8 x i16>
1735*f4a2713aSLionel Sambuc   res_vbs = vec_xor(vbs, vbs);                  // CHECK: xor <8 x i16>
1736*f4a2713aSLionel Sambuc   res_vi  = vec_xor(vi, vi);                    // CHECK: xor <4 x i32>
1737*f4a2713aSLionel Sambuc   res_vi  = vec_xor(vbi, vi);                   // CHECK: xor <4 x i32>
1738*f4a2713aSLionel Sambuc   res_vi  = vec_xor(vi, vbi);                   // CHECK: xor <4 x i32>
1739*f4a2713aSLionel Sambuc   res_vui = vec_xor(vui, vui);                  // CHECK: xor <4 x i32>
1740*f4a2713aSLionel Sambuc   res_vui = vec_xor(vbi, vui);                  // CHECK: xor <4 x i32>
1741*f4a2713aSLionel Sambuc   res_vui = vec_xor(vui, vbi);                  // CHECK: xor <4 x i32>
1742*f4a2713aSLionel Sambuc   res_vbi = vec_xor(vbi, vbi);                  // CHECK: xor <4 x i32>
1743*f4a2713aSLionel Sambuc   res_vf  = vec_xor(vf, vf);                    // CHECK: xor <4 x i32>
1744*f4a2713aSLionel Sambuc   res_vf  = vec_xor(vbi, vf);                   // CHECK: xor <4 x i32>
1745*f4a2713aSLionel Sambuc   res_vf  = vec_xor(vf, vbi);                   // CHECK: xor <4 x i32>
1746*f4a2713aSLionel Sambuc   res_vsc = vec_vxor(vsc, vsc);                 // CHECK: xor <16 x i8>
1747*f4a2713aSLionel Sambuc   res_vsc = vec_vxor(vbc, vsc);                 // CHECK: xor <16 x i8>
1748*f4a2713aSLionel Sambuc   res_vsc = vec_vxor(vsc, vbc);                 // CHECK: xor <16 x i8>
1749*f4a2713aSLionel Sambuc   res_vuc = vec_vxor(vuc, vuc);                 // CHECK: xor <16 x i8>
1750*f4a2713aSLionel Sambuc   res_vuc = vec_vxor(vbc, vuc);                 // CHECK: xor <16 x i8>
1751*f4a2713aSLionel Sambuc   res_vuc = vec_vxor(vuc, vbc);                 // CHECK: xor <16 x i8>
1752*f4a2713aSLionel Sambuc   res_vbc = vec_vxor(vbc, vbc);                 // CHECK: xor <16 x i8>
1753*f4a2713aSLionel Sambuc   res_vs  = vec_vxor(vs, vs);                   // CHECK: xor <8 x i16>
1754*f4a2713aSLionel Sambuc   res_vs  = vec_vxor(vbs, vs);                  // CHECK: xor <8 x i16>
1755*f4a2713aSLionel Sambuc   res_vs  = vec_vxor(vs, vbs);                  // CHECK: xor <8 x i16>
1756*f4a2713aSLionel Sambuc   res_vus = vec_vxor(vus, vus);                 // CHECK: xor <8 x i16>
1757*f4a2713aSLionel Sambuc   res_vus = vec_vxor(vbs, vus);                 // CHECK: xor <8 x i16>
1758*f4a2713aSLionel Sambuc   res_vus = vec_vxor(vus, vbs);                 // CHECK: xor <8 x i16>
1759*f4a2713aSLionel Sambuc   res_vbs = vec_vxor(vbs, vbs);                 // CHECK: xor <8 x i16>
1760*f4a2713aSLionel Sambuc   res_vi  = vec_vxor(vi, vi);                   // CHECK: xor <4 x i32>
1761*f4a2713aSLionel Sambuc   res_vi  = vec_vxor(vbi, vi);                  // CHECK: xor <4 x i32>
1762*f4a2713aSLionel Sambuc   res_vi  = vec_vxor(vi, vbi);                  // CHECK: xor <4 x i32>
1763*f4a2713aSLionel Sambuc   res_vui = vec_vxor(vui, vui);                 // CHECK: xor <4 x i32>
1764*f4a2713aSLionel Sambuc   res_vui = vec_vxor(vbi, vui);                 // CHECK: xor <4 x i32>
1765*f4a2713aSLionel Sambuc   res_vui = vec_vxor(vui, vbi);                 // CHECK: xor <4 x i32>
1766*f4a2713aSLionel Sambuc   res_vbi = vec_vxor(vbi, vbi);                 // CHECK: xor <4 x i32>
1767*f4a2713aSLionel Sambuc   res_vf  = vec_vxor(vf, vf);                   // CHECK: xor <4 x i32>
1768*f4a2713aSLionel Sambuc   res_vf  = vec_vxor(vbi, vf);                  // CHECK: xor <4 x i32>
1769*f4a2713aSLionel Sambuc   res_vf  = vec_vxor(vf, vbi);                  // CHECK: xor <4 x i32>
1770*f4a2713aSLionel Sambuc 
1771*f4a2713aSLionel Sambuc   /* ------------------------------ extensions -------------------------------------- */
1772*f4a2713aSLionel Sambuc 
1773*f4a2713aSLionel Sambuc   /* vec_extract */
1774*f4a2713aSLionel Sambuc   res_sc = vec_extract(vsc, param_i);           // CHECK: extractelement <16 x i8>
1775*f4a2713aSLionel Sambuc   res_uc = vec_extract(vuc, param_i);           // CHECK: extractelement <16 x i8>
1776*f4a2713aSLionel Sambuc   res_s  = vec_extract(vs, param_i);            // CHECK: extractelement <8 x i16>
1777*f4a2713aSLionel Sambuc   res_us = vec_extract(vus, param_i);           // CHECK: extractelement <8 x i16>
1778*f4a2713aSLionel Sambuc   res_i  = vec_extract(vi, param_i);            // CHECK: extractelement <4 x i32>
1779*f4a2713aSLionel Sambuc   res_ui = vec_extract(vui, param_i);           // CHECK: extractelement <4 x i32>
1780*f4a2713aSLionel Sambuc   res_f  = vec_extract(vf, param_i);            // CHECK: extractelement <4 x float>
1781*f4a2713aSLionel Sambuc 
1782*f4a2713aSLionel Sambuc   /* vec_insert */
1783*f4a2713aSLionel Sambuc   res_vsc = vec_insert(param_sc, vsc, param_i); // CHECK: insertelement <16 x i8>
1784*f4a2713aSLionel Sambuc   res_vuc = vec_insert(param_uc, vuc, param_i); // CHECK: insertelement <16 x i8>
1785*f4a2713aSLionel Sambuc   res_vs  = vec_insert(param_s, vs, param_i);   // CHECK: insertelement <8 x i16>
1786*f4a2713aSLionel Sambuc   res_vus = vec_insert(param_us, vus, param_i); // CHECK: insertelement <8 x i16>
1787*f4a2713aSLionel Sambuc   res_vi  = vec_insert(param_i, vi, param_i);   // CHECK: insertelement <4 x i32>
1788*f4a2713aSLionel Sambuc   res_vui = vec_insert(param_ui, vui, param_i); // CHECK: insertelement <4 x i32>
1789*f4a2713aSLionel Sambuc   res_vf  = vec_insert(param_f, vf, param_i);   // CHECK: insertelement <4 x float>
1790*f4a2713aSLionel Sambuc 
1791*f4a2713aSLionel Sambuc   /* vec_lvlx */
1792*f4a2713aSLionel Sambuc   res_vsc = vec_lvlx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
1793*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1794*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1795*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1796*f4a2713aSLionel Sambuc 
1797*f4a2713aSLionel Sambuc   res_vsc = vec_lvlx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
1798*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1799*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1800*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1801*f4a2713aSLionel Sambuc 
1802*f4a2713aSLionel Sambuc   res_vuc = vec_lvlx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
1803*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1804*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1805*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1806*f4a2713aSLionel Sambuc 
1807*f4a2713aSLionel Sambuc   res_vuc = vec_lvlx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
1808*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1809*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1810*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1811*f4a2713aSLionel Sambuc 
1812*f4a2713aSLionel Sambuc   res_vbc = vec_lvlx(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvx
1813*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1814*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1815*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1816*f4a2713aSLionel Sambuc 
1817*f4a2713aSLionel Sambuc   res_vs  = vec_lvlx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
1818*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1819*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1820*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1821*f4a2713aSLionel Sambuc 
1822*f4a2713aSLionel Sambuc   res_vs  = vec_lvlx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
1823*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1824*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1825*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1826*f4a2713aSLionel Sambuc 
1827*f4a2713aSLionel Sambuc   res_vus = vec_lvlx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
1828*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1829*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1830*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1831*f4a2713aSLionel Sambuc 
1832*f4a2713aSLionel Sambuc   res_vus = vec_lvlx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
1833*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1834*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1835*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1836*f4a2713aSLionel Sambuc 
1837*f4a2713aSLionel Sambuc   res_vbs = vec_lvlx(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvx
1838*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1839*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1840*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1841*f4a2713aSLionel Sambuc 
1842*f4a2713aSLionel Sambuc   res_vp  = vec_lvlx(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvx
1843*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1844*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1845*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1846*f4a2713aSLionel Sambuc 
1847*f4a2713aSLionel Sambuc   res_vi  = vec_lvlx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
1848*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1849*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1850*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1851*f4a2713aSLionel Sambuc 
1852*f4a2713aSLionel Sambuc   res_vi  = vec_lvlx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
1853*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1854*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1855*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1856*f4a2713aSLionel Sambuc 
1857*f4a2713aSLionel Sambuc   res_vui = vec_lvlx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
1858*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1859*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1860*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1861*f4a2713aSLionel Sambuc 
1862*f4a2713aSLionel Sambuc   res_vui = vec_lvlx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
1863*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1864*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1865*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1866*f4a2713aSLionel Sambuc 
1867*f4a2713aSLionel Sambuc   res_vbi = vec_lvlx(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvx
1868*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1869*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1870*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1871*f4a2713aSLionel Sambuc 
1872*f4a2713aSLionel Sambuc   res_vf  = vec_lvlx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
1873*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1874*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
1875*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1876*f4a2713aSLionel Sambuc 
1877*f4a2713aSLionel Sambuc   /* vec_lvlxl */
1878*f4a2713aSLionel Sambuc   res_vsc = vec_lvlxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
1879*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1880*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1881*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1882*f4a2713aSLionel Sambuc 
1883*f4a2713aSLionel Sambuc   res_vsc = vec_lvlxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
1884*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1885*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1886*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1887*f4a2713aSLionel Sambuc 
1888*f4a2713aSLionel Sambuc   res_vuc = vec_lvlxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
1889*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1890*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1891*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1892*f4a2713aSLionel Sambuc 
1893*f4a2713aSLionel Sambuc   res_vuc = vec_lvlxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
1894*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1895*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1896*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1897*f4a2713aSLionel Sambuc 
1898*f4a2713aSLionel Sambuc   res_vbc = vec_lvlxl(0, &vbc);                 // CHECK: @llvm.ppc.altivec.lvxl
1899*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1900*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1901*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1902*f4a2713aSLionel Sambuc 
1903*f4a2713aSLionel Sambuc   res_vs  = vec_lvlxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
1904*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1905*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1906*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1907*f4a2713aSLionel Sambuc 
1908*f4a2713aSLionel Sambuc   res_vs  = vec_lvlxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
1909*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1910*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1911*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1912*f4a2713aSLionel Sambuc 
1913*f4a2713aSLionel Sambuc   res_vus = vec_lvlxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
1914*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1915*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1916*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1917*f4a2713aSLionel Sambuc 
1918*f4a2713aSLionel Sambuc   res_vus = vec_lvlxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
1919*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1920*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1921*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1922*f4a2713aSLionel Sambuc 
1923*f4a2713aSLionel Sambuc   res_vbs = vec_lvlxl(0, &vbs);                 // CHECK: @llvm.ppc.altivec.lvxl
1924*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1925*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1926*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1927*f4a2713aSLionel Sambuc 
1928*f4a2713aSLionel Sambuc   res_vp  = vec_lvlxl(0, &vp);                  // CHECK: @llvm.ppc.altivec.lvxl
1929*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1930*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1931*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1932*f4a2713aSLionel Sambuc 
1933*f4a2713aSLionel Sambuc   res_vi  = vec_lvlxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
1934*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1935*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1936*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1937*f4a2713aSLionel Sambuc 
1938*f4a2713aSLionel Sambuc   res_vi  = vec_lvlxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
1939*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1940*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1941*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1942*f4a2713aSLionel Sambuc 
1943*f4a2713aSLionel Sambuc   res_vui = vec_lvlxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
1944*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1945*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1946*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1947*f4a2713aSLionel Sambuc 
1948*f4a2713aSLionel Sambuc   res_vui = vec_lvlxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
1949*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1950*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1951*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1952*f4a2713aSLionel Sambuc 
1953*f4a2713aSLionel Sambuc   res_vbi = vec_lvlxl(0, &vbi);                 // CHECK: @llvm.ppc.altivec.lvxl
1954*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
1955*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1956*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1957*f4a2713aSLionel Sambuc 
1958*f4a2713aSLionel Sambuc   res_vf  = vec_lvlxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
1959*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1960*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
1961*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1962*f4a2713aSLionel Sambuc 
1963*f4a2713aSLionel Sambuc   /* vec_lvrx */
1964*f4a2713aSLionel Sambuc   res_vsc = vec_lvrx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
1965*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1966*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1967*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1968*f4a2713aSLionel Sambuc 
1969*f4a2713aSLionel Sambuc   res_vsc = vec_lvrx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
1970*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1971*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1972*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1973*f4a2713aSLionel Sambuc 
1974*f4a2713aSLionel Sambuc   res_vuc = vec_lvrx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
1975*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1976*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1977*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1978*f4a2713aSLionel Sambuc 
1979*f4a2713aSLionel Sambuc   res_vuc = vec_lvrx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
1980*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1981*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
1982*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1983*f4a2713aSLionel Sambuc 
1984*f4a2713aSLionel Sambuc   res_vbc = vec_lvrx(0, &vbc);                  // CHECK: store <16 x i8> zeroinitializer
1985*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
1986*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1987*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1988*f4a2713aSLionel Sambuc 
1989*f4a2713aSLionel Sambuc   res_vs  = vec_lvrx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
1990*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1991*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1992*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1993*f4a2713aSLionel Sambuc 
1994*f4a2713aSLionel Sambuc   res_vs  = vec_lvrx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
1995*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
1996*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
1997*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
1998*f4a2713aSLionel Sambuc 
1999*f4a2713aSLionel Sambuc   res_vus = vec_lvrx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
2000*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2001*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2002*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2003*f4a2713aSLionel Sambuc 
2004*f4a2713aSLionel Sambuc   res_vus = vec_lvrx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
2005*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2006*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2007*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2008*f4a2713aSLionel Sambuc 
2009*f4a2713aSLionel Sambuc   res_vbs = vec_lvrx(0, &vbs);                  // CHECK: store <8 x i16> zeroinitializer
2010*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2011*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2012*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2013*f4a2713aSLionel Sambuc 
2014*f4a2713aSLionel Sambuc   res_vp  = vec_lvrx(0, &vp);                   // CHECK: store <8 x i16> zeroinitializer
2015*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2016*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2017*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2018*f4a2713aSLionel Sambuc 
2019*f4a2713aSLionel Sambuc   res_vi  = vec_lvrx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
2020*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2021*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2022*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2023*f4a2713aSLionel Sambuc 
2024*f4a2713aSLionel Sambuc   res_vi  = vec_lvrx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
2025*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2026*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2027*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2028*f4a2713aSLionel Sambuc 
2029*f4a2713aSLionel Sambuc   res_vui = vec_lvrx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
2030*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2031*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2032*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2033*f4a2713aSLionel Sambuc 
2034*f4a2713aSLionel Sambuc   res_vui = vec_lvrx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
2035*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2036*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2037*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2038*f4a2713aSLionel Sambuc 
2039*f4a2713aSLionel Sambuc   res_vbi = vec_lvrx(0, &vbi);                  // CHECK: store <4 x i32> zeroinitializer
2040*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2041*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2042*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2043*f4a2713aSLionel Sambuc 
2044*f4a2713aSLionel Sambuc   res_vf  = vec_lvrx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
2045*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2046*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2047*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2048*f4a2713aSLionel Sambuc 
2049*f4a2713aSLionel Sambuc   /* vec_lvrxl */
2050*f4a2713aSLionel Sambuc   res_vsc = vec_lvrxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
2051*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2052*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2053*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2054*f4a2713aSLionel Sambuc 
2055*f4a2713aSLionel Sambuc   res_vsc = vec_lvrxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
2056*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2057*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2058*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2059*f4a2713aSLionel Sambuc 
2060*f4a2713aSLionel Sambuc   res_vuc = vec_lvrxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
2061*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2062*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2063*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2064*f4a2713aSLionel Sambuc 
2065*f4a2713aSLionel Sambuc   res_vuc = vec_lvrxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
2066*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2067*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2068*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2069*f4a2713aSLionel Sambuc 
2070*f4a2713aSLionel Sambuc   res_vbc = vec_lvrxl(0, &vbc);                 // CHECK: store <16 x i8> zeroinitializer
2071*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvxl
2072*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2073*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2074*f4a2713aSLionel Sambuc 
2075*f4a2713aSLionel Sambuc   res_vs  = vec_lvrxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
2076*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2077*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2078*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2079*f4a2713aSLionel Sambuc 
2080*f4a2713aSLionel Sambuc   res_vs  = vec_lvrxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
2081*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2082*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2083*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2084*f4a2713aSLionel Sambuc 
2085*f4a2713aSLionel Sambuc   res_vus = vec_lvrxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
2086*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2087*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2088*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2089*f4a2713aSLionel Sambuc 
2090*f4a2713aSLionel Sambuc   res_vus = vec_lvrxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
2091*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2092*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2093*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2094*f4a2713aSLionel Sambuc 
2095*f4a2713aSLionel Sambuc   res_vbs = vec_lvrxl(0, &vbs);                 // CHECK: store <8 x i16> zeroinitializer
2096*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvxl
2097*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2098*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2099*f4a2713aSLionel Sambuc 
2100*f4a2713aSLionel Sambuc   res_vp  = vec_lvrxl(0, &vp);                  // CHECK: store <8 x i16> zeroinitializer
2101*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvxl
2102*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2103*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2104*f4a2713aSLionel Sambuc 
2105*f4a2713aSLionel Sambuc   res_vi  = vec_lvrxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
2106*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2107*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2108*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2109*f4a2713aSLionel Sambuc 
2110*f4a2713aSLionel Sambuc   res_vi  = vec_lvrxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
2111*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2112*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2113*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2114*f4a2713aSLionel Sambuc 
2115*f4a2713aSLionel Sambuc   res_vui = vec_lvrxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
2116*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2117*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2118*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2119*f4a2713aSLionel Sambuc 
2120*f4a2713aSLionel Sambuc   res_vui = vec_lvrxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
2121*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2122*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2123*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2124*f4a2713aSLionel Sambuc 
2125*f4a2713aSLionel Sambuc   res_vbi = vec_lvrxl(0, &vbi);                 // CHECK: store <4 x i32> zeroinitializer
2126*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvxl
2127*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2128*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2129*f4a2713aSLionel Sambuc 
2130*f4a2713aSLionel Sambuc   res_vf  = vec_lvrxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
2131*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2132*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2133*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2134*f4a2713aSLionel Sambuc 
2135*f4a2713aSLionel Sambuc   /* vec_stvlx */
2136*f4a2713aSLionel Sambuc   vec_stvlx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
2137*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2138*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2139*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2140*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2141*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2142*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2143*f4a2713aSLionel Sambuc 
2144*f4a2713aSLionel Sambuc   vec_stvlx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
2145*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2146*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2147*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2148*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2149*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2150*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2151*f4a2713aSLionel Sambuc 
2152*f4a2713aSLionel Sambuc   vec_stvlx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
2153*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2154*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2155*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2156*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2157*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2158*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2159*f4a2713aSLionel Sambuc 
2160*f4a2713aSLionel Sambuc   vec_stvlx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
2161*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2162*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2163*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2164*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2165*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2166*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2167*f4a2713aSLionel Sambuc 
2168*f4a2713aSLionel Sambuc   vec_stvlx(vbc, 0, &vbc);                      // CHECK: store <16 x i8> zeroinitializer
2169*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2170*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2171*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2172*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2173*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2174*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2175*f4a2713aSLionel Sambuc 
2176*f4a2713aSLionel Sambuc   vec_stvlx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
2177*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2178*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2179*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2180*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2181*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2182*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2183*f4a2713aSLionel Sambuc 
2184*f4a2713aSLionel Sambuc   vec_stvlx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
2185*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2186*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2187*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2188*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2189*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2190*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2191*f4a2713aSLionel Sambuc 
2192*f4a2713aSLionel Sambuc   vec_stvlx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
2193*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2194*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2195*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2196*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2197*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2198*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2199*f4a2713aSLionel Sambuc 
2200*f4a2713aSLionel Sambuc   vec_stvlx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
2201*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2202*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2203*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2204*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2205*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2206*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2207*f4a2713aSLionel Sambuc 
2208*f4a2713aSLionel Sambuc   vec_stvlx(vbs, 0, &vbs);                      // CHECK: store <8 x i16> zeroinitializer
2209*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2210*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2211*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2212*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2213*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2214*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2215*f4a2713aSLionel Sambuc 
2216*f4a2713aSLionel Sambuc   vec_stvlx(vp, 0, &vp);                        // CHECK: store <8 x i16> zeroinitializer
2217*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2218*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2219*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2220*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2221*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2222*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2223*f4a2713aSLionel Sambuc 
2224*f4a2713aSLionel Sambuc   vec_stvlx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
2225*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2226*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2227*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2228*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2229*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2230*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2231*f4a2713aSLionel Sambuc 
2232*f4a2713aSLionel Sambuc   vec_stvlx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
2233*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2234*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2235*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2236*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2237*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2238*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2239*f4a2713aSLionel Sambuc 
2240*f4a2713aSLionel Sambuc   vec_stvlx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
2241*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2242*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2243*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2244*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2245*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2246*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2247*f4a2713aSLionel Sambuc 
2248*f4a2713aSLionel Sambuc   vec_stvlx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
2249*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2250*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2251*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2252*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2253*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2254*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2255*f4a2713aSLionel Sambuc 
2256*f4a2713aSLionel Sambuc   vec_stvlx(vbi, 0, &vbi);                      // CHECK: store <4 x i32> zeroinitializer
2257*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2258*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2259*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2260*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2261*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2262*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2263*f4a2713aSLionel Sambuc 
2264*f4a2713aSLionel Sambuc   vec_stvlx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
2265*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2266*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2267*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2268*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2269*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2270*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2271*f4a2713aSLionel Sambuc 
2272*f4a2713aSLionel Sambuc   /* vec_stvlxl */
2273*f4a2713aSLionel Sambuc   vec_stvlxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
2274*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2275*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2276*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2277*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2278*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2279*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2280*f4a2713aSLionel Sambuc 
2281*f4a2713aSLionel Sambuc   vec_stvlxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
2282*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2283*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2284*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2285*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2286*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2287*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2288*f4a2713aSLionel Sambuc 
2289*f4a2713aSLionel Sambuc   vec_stvlxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
2290*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2291*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2292*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2293*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2294*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2295*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2296*f4a2713aSLionel Sambuc 
2297*f4a2713aSLionel Sambuc   vec_stvlxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
2298*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2299*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2300*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2301*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2302*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2303*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2304*f4a2713aSLionel Sambuc 
2305*f4a2713aSLionel Sambuc   vec_stvlxl(vbc, 0, &vbc);                     // CHECK: store <16 x i8> zeroinitializer
2306*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2307*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2308*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2309*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2310*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2311*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2312*f4a2713aSLionel Sambuc 
2313*f4a2713aSLionel Sambuc   vec_stvlxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
2314*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2315*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2316*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2317*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2318*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2319*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2320*f4a2713aSLionel Sambuc 
2321*f4a2713aSLionel Sambuc   vec_stvlxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
2322*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2323*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2324*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2325*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2326*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2327*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2328*f4a2713aSLionel Sambuc 
2329*f4a2713aSLionel Sambuc   vec_stvlxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
2330*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2331*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2332*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2333*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2334*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2335*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2336*f4a2713aSLionel Sambuc 
2337*f4a2713aSLionel Sambuc   vec_stvlxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
2338*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2339*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2340*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2341*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2342*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2343*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2344*f4a2713aSLionel Sambuc 
2345*f4a2713aSLionel Sambuc   vec_stvlxl(vbs, 0, &vbs);                     // CHECK: store <8 x i16> zeroinitializer
2346*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2347*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2348*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2349*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2350*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2351*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2352*f4a2713aSLionel Sambuc 
2353*f4a2713aSLionel Sambuc   vec_stvlxl(vp, 0, &vp);                       // CHECK: store <8 x i16> zeroinitializer
2354*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2355*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2356*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2357*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2358*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2359*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2360*f4a2713aSLionel Sambuc 
2361*f4a2713aSLionel Sambuc   vec_stvlxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
2362*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2363*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2364*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2365*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2366*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2367*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2368*f4a2713aSLionel Sambuc 
2369*f4a2713aSLionel Sambuc   vec_stvlxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
2370*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2371*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2372*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2373*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2374*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2375*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2376*f4a2713aSLionel Sambuc 
2377*f4a2713aSLionel Sambuc   vec_stvlxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
2378*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2379*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2380*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2381*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2382*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2383*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2384*f4a2713aSLionel Sambuc 
2385*f4a2713aSLionel Sambuc   vec_stvlxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
2386*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2387*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2388*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2389*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2390*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2391*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2392*f4a2713aSLionel Sambuc 
2393*f4a2713aSLionel Sambuc   vec_stvlxl(vbi, 0, &vbi);                     // CHECK: store <4 x i32> zeroinitializer
2394*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvx
2395*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2396*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2397*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2398*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2399*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2400*f4a2713aSLionel Sambuc 
2401*f4a2713aSLionel Sambuc   vec_stvlxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
2402*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2403*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2404*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2405*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2406*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2407*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2408*f4a2713aSLionel Sambuc 
2409*f4a2713aSLionel Sambuc   /* vec_stvrx */
2410*f4a2713aSLionel Sambuc   vec_stvrx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
2411*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2412*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2413*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2414*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2415*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2416*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2417*f4a2713aSLionel Sambuc 
2418*f4a2713aSLionel Sambuc   vec_stvrx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
2419*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2420*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2421*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2422*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2423*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2424*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2425*f4a2713aSLionel Sambuc 
2426*f4a2713aSLionel Sambuc   vec_stvrx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
2427*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2428*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2429*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2430*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2431*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2432*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2433*f4a2713aSLionel Sambuc 
2434*f4a2713aSLionel Sambuc   vec_stvrx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
2435*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2436*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2437*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2438*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2439*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2440*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2441*f4a2713aSLionel Sambuc 
2442*f4a2713aSLionel Sambuc   vec_stvrx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.lvx
2443*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2444*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2445*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2446*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2447*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2448*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2449*f4a2713aSLionel Sambuc 
2450*f4a2713aSLionel Sambuc   vec_stvrx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
2451*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2452*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2453*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2454*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2455*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2456*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2457*f4a2713aSLionel Sambuc 
2458*f4a2713aSLionel Sambuc   vec_stvrx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
2459*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2460*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2461*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2462*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2463*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2464*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2465*f4a2713aSLionel Sambuc 
2466*f4a2713aSLionel Sambuc   vec_stvrx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
2467*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2468*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2469*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2470*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2471*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2472*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2473*f4a2713aSLionel Sambuc 
2474*f4a2713aSLionel Sambuc   vec_stvrx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
2475*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2476*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2477*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2478*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2479*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2480*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2481*f4a2713aSLionel Sambuc 
2482*f4a2713aSLionel Sambuc   vec_stvrx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.lvx
2483*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2484*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2485*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2486*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2487*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2488*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2489*f4a2713aSLionel Sambuc 
2490*f4a2713aSLionel Sambuc   vec_stvrx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.lvx
2491*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2492*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2493*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2494*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2495*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2496*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2497*f4a2713aSLionel Sambuc 
2498*f4a2713aSLionel Sambuc   vec_stvrx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
2499*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2500*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2501*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2502*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2503*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2504*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2505*f4a2713aSLionel Sambuc 
2506*f4a2713aSLionel Sambuc   vec_stvrx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
2507*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2508*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2509*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2510*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2511*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2512*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2513*f4a2713aSLionel Sambuc 
2514*f4a2713aSLionel Sambuc   vec_stvrx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
2515*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2516*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2517*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2518*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2519*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2520*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2521*f4a2713aSLionel Sambuc 
2522*f4a2713aSLionel Sambuc   vec_stvrx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
2523*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2524*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2525*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2526*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2527*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2528*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2529*f4a2713aSLionel Sambuc 
2530*f4a2713aSLionel Sambuc   vec_stvrx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.lvx
2531*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2532*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2533*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2534*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2535*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2536*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2537*f4a2713aSLionel Sambuc 
2538*f4a2713aSLionel Sambuc   vec_stvrx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
2539*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2540*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2541*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2542*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2543*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2544*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvx
2545*f4a2713aSLionel Sambuc 
2546*f4a2713aSLionel Sambuc   /* vec_stvrxl */
2547*f4a2713aSLionel Sambuc   vec_stvrxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
2548*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2549*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2550*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2551*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2552*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2553*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2554*f4a2713aSLionel Sambuc 
2555*f4a2713aSLionel Sambuc   vec_stvrxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
2556*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2557*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2558*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2559*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2560*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2561*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2562*f4a2713aSLionel Sambuc 
2563*f4a2713aSLionel Sambuc   vec_stvrxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
2564*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2565*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2566*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2567*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2568*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2569*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2570*f4a2713aSLionel Sambuc 
2571*f4a2713aSLionel Sambuc   vec_stvrxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
2572*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2573*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2574*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2575*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2576*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2577*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2578*f4a2713aSLionel Sambuc 
2579*f4a2713aSLionel Sambuc   vec_stvrxl(vbc, 0, &vbc);                     // CHECK: @llvm.ppc.altivec.lvx
2580*f4a2713aSLionel Sambuc                                                 // CHECK: store <16 x i8> zeroinitializer
2581*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2582*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2583*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2584*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2585*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2586*f4a2713aSLionel Sambuc 
2587*f4a2713aSLionel Sambuc   vec_stvrxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
2588*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2589*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2590*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2591*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2592*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2593*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2594*f4a2713aSLionel Sambuc 
2595*f4a2713aSLionel Sambuc   vec_stvrxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
2596*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2597*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2598*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2599*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2600*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2601*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2602*f4a2713aSLionel Sambuc 
2603*f4a2713aSLionel Sambuc   vec_stvrxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
2604*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2605*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2606*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2607*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2608*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2609*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2610*f4a2713aSLionel Sambuc 
2611*f4a2713aSLionel Sambuc   vec_stvrxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
2612*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2613*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2614*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2615*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2616*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2617*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2618*f4a2713aSLionel Sambuc 
2619*f4a2713aSLionel Sambuc   vec_stvrxl(vbs, 0, &vbs);                     // CHECK: @llvm.ppc.altivec.lvx
2620*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2621*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2622*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2623*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2624*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2625*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2626*f4a2713aSLionel Sambuc 
2627*f4a2713aSLionel Sambuc   vec_stvrxl(vp, 0, &vp);                       // CHECK: @llvm.ppc.altivec.lvx
2628*f4a2713aSLionel Sambuc                                                 // CHECK: store <8 x i16> zeroinitializer
2629*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2630*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2631*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2632*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2633*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2634*f4a2713aSLionel Sambuc 
2635*f4a2713aSLionel Sambuc   vec_stvrxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
2636*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2637*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2638*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2639*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2640*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2641*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2642*f4a2713aSLionel Sambuc 
2643*f4a2713aSLionel Sambuc   vec_stvrxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
2644*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2645*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2646*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2647*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2648*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2649*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2650*f4a2713aSLionel Sambuc 
2651*f4a2713aSLionel Sambuc   vec_stvrxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
2652*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2653*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2654*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2655*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2656*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2657*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2658*f4a2713aSLionel Sambuc 
2659*f4a2713aSLionel Sambuc   vec_stvrxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
2660*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2661*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2662*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2663*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2664*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2665*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2666*f4a2713aSLionel Sambuc 
2667*f4a2713aSLionel Sambuc   vec_stvrxl(vbi, 0, &vbi);                     // CHECK: @llvm.ppc.altivec.lvx
2668*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x i32> zeroinitializer
2669*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2670*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2671*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2672*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2673*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2674*f4a2713aSLionel Sambuc 
2675*f4a2713aSLionel Sambuc   vec_stvrxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
2676*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsl
2677*f4a2713aSLionel Sambuc                                                 // CHECK: store <4 x float> zeroinitializer
2678*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2679*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.lvsr
2680*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.vperm
2681*f4a2713aSLionel Sambuc                                                 // CHECK: @llvm.ppc.altivec.stvxl
2682*f4a2713aSLionel Sambuc 
2683*f4a2713aSLionel Sambuc   /* vec_promote */
2684*f4a2713aSLionel Sambuc   res_vsc = vec_promote(param_sc, 0);           // CHECK: store <16 x i8> zeroinitializer
2685*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <16 x i8>
2686*f4a2713aSLionel Sambuc 
2687*f4a2713aSLionel Sambuc   res_vuc = vec_promote(param_uc, 0);           // CHECK: store <16 x i8> zeroinitializer
2688*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <16 x i8>
2689*f4a2713aSLionel Sambuc 
2690*f4a2713aSLionel Sambuc   res_vs  = vec_promote(param_s, 0);            // CHECK: store <8 x i16> zeroinitializer
2691*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <8 x i16>
2692*f4a2713aSLionel Sambuc 
2693*f4a2713aSLionel Sambuc   res_vus = vec_promote(param_us, 0);           // CHECK: store <8 x i16> zeroinitializer
2694*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <8 x i16>
2695*f4a2713aSLionel Sambuc 
2696*f4a2713aSLionel Sambuc   res_vi  = vec_promote(param_i, 0);            // CHECK: store <4 x i32> zeroinitializer
2697*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <4 x i32>
2698*f4a2713aSLionel Sambuc 
2699*f4a2713aSLionel Sambuc   res_vui = vec_promote(param_ui, 0);           // CHECK: store <4 x i32> zeroinitializer
2700*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <4 x i32>
2701*f4a2713aSLionel Sambuc 
2702*f4a2713aSLionel Sambuc   res_vf  = vec_promote(param_f, 0);            // CHECK: store <4 x float> zeroinitializer
2703*f4a2713aSLionel Sambuc                                                 // CHECK: insertelement <4 x float>
2704*f4a2713aSLionel Sambuc 
2705*f4a2713aSLionel Sambuc   /* vec_splats */
2706*f4a2713aSLionel Sambuc   res_vsc = vec_splats(param_sc);               // CHECK: insertelement <16 x i8>
2707*f4a2713aSLionel Sambuc 
2708*f4a2713aSLionel Sambuc   res_vuc = vec_splats(param_uc);               // CHECK: insertelement <16 x i8>
2709*f4a2713aSLionel Sambuc 
2710*f4a2713aSLionel Sambuc   res_vs  = vec_splats(param_s);                // CHECK: insertelement <8 x i16>
2711*f4a2713aSLionel Sambuc 
2712*f4a2713aSLionel Sambuc   res_vus = vec_splats(param_us);               // CHECK: insertelement <8 x i16>
2713*f4a2713aSLionel Sambuc 
2714*f4a2713aSLionel Sambuc   res_vi  = vec_splats(param_i);                // CHECK: insertelement <4 x i32>
2715*f4a2713aSLionel Sambuc 
2716*f4a2713aSLionel Sambuc   res_vui = vec_splats(param_ui);               // CHECK: insertelement <4 x i32>
2717*f4a2713aSLionel Sambuc 
2718*f4a2713aSLionel Sambuc   res_vf  = vec_splats(param_f);                // CHECK: insertelement <4 x float>
2719*f4a2713aSLionel Sambuc 
2720*f4a2713aSLionel Sambuc   /* ------------------------------ predicates -------------------------------------- */
2721*f4a2713aSLionel Sambuc 
2722*f4a2713aSLionel Sambuc   /* vec_all_eq */
2723*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2724*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2725*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2726*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2727*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2728*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2729*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2730*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2731*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2732*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2733*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2734*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2735*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2736*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2737*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2738*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
2739*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2740*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2741*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2742*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2743*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2744*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2745*f4a2713aSLionel Sambuc   res_i = vec_all_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2746*f4a2713aSLionel Sambuc 
2747*f4a2713aSLionel Sambuc   /* vec_all_ge */
2748*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2749*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2750*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2751*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2752*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2753*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2754*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2755*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2756*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2757*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2758*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2759*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2760*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2761*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2762*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2763*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2764*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2765*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2766*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2767*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2768*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2769*f4a2713aSLionel Sambuc   res_i = vec_all_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2770*f4a2713aSLionel Sambuc 
2771*f4a2713aSLionel Sambuc   /* vec_all_gt */
2772*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2773*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2774*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2775*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2776*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2777*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2778*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2779*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2780*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2781*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2782*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2783*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2784*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2785*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2786*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2787*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2788*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2789*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2790*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2791*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2792*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2793*f4a2713aSLionel Sambuc   res_i = vec_all_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2794*f4a2713aSLionel Sambuc 
2795*f4a2713aSLionel Sambuc   /* vec_all_in */
2796*f4a2713aSLionel Sambuc   res_i = vec_all_in(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpbfp.p
2797*f4a2713aSLionel Sambuc 
2798*f4a2713aSLionel Sambuc   /* vec_all_le */
2799*f4a2713aSLionel Sambuc   res_i = vec_all_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2800*f4a2713aSLionel Sambuc   res_i = vec_all_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2801*f4a2713aSLionel Sambuc   res_i = vec_all_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2802*f4a2713aSLionel Sambuc   res_i = vec_all_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2803*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2804*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2805*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2806*f4a2713aSLionel Sambuc   res_i = vec_all_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2807*f4a2713aSLionel Sambuc   res_i = vec_all_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2808*f4a2713aSLionel Sambuc   res_i = vec_all_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2809*f4a2713aSLionel Sambuc   res_i = vec_all_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2810*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2811*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2812*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2813*f4a2713aSLionel Sambuc   res_i = vec_all_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2814*f4a2713aSLionel Sambuc   res_i = vec_all_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2815*f4a2713aSLionel Sambuc   res_i = vec_all_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2816*f4a2713aSLionel Sambuc   res_i = vec_all_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2817*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2818*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2819*f4a2713aSLionel Sambuc   res_i = vec_all_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2820*f4a2713aSLionel Sambuc   res_i = vec_all_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2821*f4a2713aSLionel Sambuc 
2822*f4a2713aSLionel Sambuc   /* vec_all_lt */
2823*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2824*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2825*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2826*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2827*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2828*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2829*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2830*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2831*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2832*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2833*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2834*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2835*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2836*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2837*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2838*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2839*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2840*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2841*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2842*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2843*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2844*f4a2713aSLionel Sambuc   res_i = vec_all_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2845*f4a2713aSLionel Sambuc 
2846*f4a2713aSLionel Sambuc   /* vec_all_nan */
2847*f4a2713aSLionel Sambuc   res_i = vec_all_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2848*f4a2713aSLionel Sambuc 
2849*f4a2713aSLionel Sambuc   /*  vec_all_ne */
2850*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2851*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2852*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2853*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2854*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2855*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2856*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2857*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2858*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2859*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2860*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2861*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2862*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2863*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2864*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2865*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
2866*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2867*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2868*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2869*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2870*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2871*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2872*f4a2713aSLionel Sambuc   res_i = vec_all_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2873*f4a2713aSLionel Sambuc 
2874*f4a2713aSLionel Sambuc   /* vec_all_nge */
2875*f4a2713aSLionel Sambuc   res_i = vec_all_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2876*f4a2713aSLionel Sambuc 
2877*f4a2713aSLionel Sambuc   /* vec_all_ngt */
2878*f4a2713aSLionel Sambuc   res_i = vec_all_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2879*f4a2713aSLionel Sambuc 
2880*f4a2713aSLionel Sambuc   /* vec_all_nle */
2881*f4a2713aSLionel Sambuc   res_i = vec_all_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2882*f4a2713aSLionel Sambuc 
2883*f4a2713aSLionel Sambuc   /* vec_all_nlt */
2884*f4a2713aSLionel Sambuc   res_i = vec_all_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2885*f4a2713aSLionel Sambuc 
2886*f4a2713aSLionel Sambuc   /* vec_all_numeric */
2887*f4a2713aSLionel Sambuc   res_i = vec_all_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2888*f4a2713aSLionel Sambuc 
2889*f4a2713aSLionel Sambuc   /*  vec_any_eq */
2890*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2891*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2892*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2893*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2894*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2895*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2896*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
2897*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2898*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2899*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2900*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2901*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
2902*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2903*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
2904*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
2905*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
2906*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2907*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2908*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2909*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
2910*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2911*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
2912*f4a2713aSLionel Sambuc   res_i = vec_any_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
2913*f4a2713aSLionel Sambuc 
2914*f4a2713aSLionel Sambuc   /* vec_any_ge */
2915*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2916*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2917*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2918*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2919*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2920*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2921*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2922*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2923*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2924*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2925*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2926*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2927*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2928*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2929*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2930*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2931*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2932*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2933*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2934*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2935*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2936*f4a2713aSLionel Sambuc   res_i = vec_any_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2937*f4a2713aSLionel Sambuc 
2938*f4a2713aSLionel Sambuc   /* vec_any_gt */
2939*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2940*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2941*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2942*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2943*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2944*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2945*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2946*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2947*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2948*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2949*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2950*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2951*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2952*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2953*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2954*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2955*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2956*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2957*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2958*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2959*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2960*f4a2713aSLionel Sambuc   res_i = vec_any_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
2961*f4a2713aSLionel Sambuc 
2962*f4a2713aSLionel Sambuc   /* vec_any_le */
2963*f4a2713aSLionel Sambuc   res_i = vec_any_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2964*f4a2713aSLionel Sambuc   res_i = vec_any_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2965*f4a2713aSLionel Sambuc   res_i = vec_any_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2966*f4a2713aSLionel Sambuc   res_i = vec_any_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2967*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2968*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2969*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2970*f4a2713aSLionel Sambuc   res_i = vec_any_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2971*f4a2713aSLionel Sambuc   res_i = vec_any_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2972*f4a2713aSLionel Sambuc   res_i = vec_any_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2973*f4a2713aSLionel Sambuc   res_i = vec_any_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2974*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2975*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2976*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2977*f4a2713aSLionel Sambuc   res_i = vec_any_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2978*f4a2713aSLionel Sambuc   res_i = vec_any_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
2979*f4a2713aSLionel Sambuc   res_i = vec_any_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2980*f4a2713aSLionel Sambuc   res_i = vec_any_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2981*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2982*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2983*f4a2713aSLionel Sambuc   res_i = vec_any_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
2984*f4a2713aSLionel Sambuc   res_i = vec_any_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
2985*f4a2713aSLionel Sambuc 
2986*f4a2713aSLionel Sambuc   /* vec_any_lt */
2987*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2988*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
2989*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2990*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2991*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2992*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2993*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
2994*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2995*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
2996*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2997*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2998*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
2999*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
3000*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
3001*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
3002*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
3003*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3004*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3005*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3006*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3007*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
3008*f4a2713aSLionel Sambuc   res_i = vec_any_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3009*f4a2713aSLionel Sambuc 
3010*f4a2713aSLionel Sambuc   /* vec_any_nan */
3011*f4a2713aSLionel Sambuc   res_i = vec_any_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3012*f4a2713aSLionel Sambuc 
3013*f4a2713aSLionel Sambuc   /* vec_any_ne */
3014*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3015*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3016*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3017*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3018*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3019*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3020*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
3021*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
3022*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
3023*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
3024*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
3025*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
3026*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
3027*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
3028*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
3029*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
3030*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
3031*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
3032*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
3033*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
3034*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
3035*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
3036*f4a2713aSLionel Sambuc   res_i = vec_any_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3037*f4a2713aSLionel Sambuc 
3038*f4a2713aSLionel Sambuc   /* vec_any_nge */
3039*f4a2713aSLionel Sambuc   res_i = vec_any_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
3040*f4a2713aSLionel Sambuc 
3041*f4a2713aSLionel Sambuc   /* vec_any_ngt */
3042*f4a2713aSLionel Sambuc   res_i = vec_any_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3043*f4a2713aSLionel Sambuc 
3044*f4a2713aSLionel Sambuc   /* vec_any_nle */
3045*f4a2713aSLionel Sambuc   res_i = vec_any_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
3046*f4a2713aSLionel Sambuc 
3047*f4a2713aSLionel Sambuc   /* vec_any_nlt */
3048*f4a2713aSLionel Sambuc   res_i = vec_any_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
3049*f4a2713aSLionel Sambuc 
3050*f4a2713aSLionel Sambuc   /* vec_any_numeric */
3051*f4a2713aSLionel Sambuc   res_i = vec_any_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
3052*f4a2713aSLionel Sambuc 
3053*f4a2713aSLionel Sambuc   /* vec_any_out */
3054*f4a2713aSLionel Sambuc   res_i = vec_any_out(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpbfp.p
3055*f4a2713aSLionel Sambuc }
3056*f4a2713aSLionel Sambuc 
3057*f4a2713aSLionel Sambuc /* ------------------------------ Relational Operators ------------------------------ */
3058*f4a2713aSLionel Sambuc // CHECK-LABEL: define void @test7
3059*f4a2713aSLionel Sambuc void test7() {
3060*f4a2713aSLionel Sambuc   vector signed char vsc1 = (vector signed char)(-1);
3061*f4a2713aSLionel Sambuc   vector signed char vsc2 = (vector signed char)(-2);
3062*f4a2713aSLionel Sambuc   res_i = (vsc1 == vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
3063*f4a2713aSLionel Sambuc   res_i = (vsc1 != vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
3064*f4a2713aSLionel Sambuc   res_i = (vsc1 <  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
3065*f4a2713aSLionel Sambuc   res_i = (vsc1 >  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
3066*f4a2713aSLionel Sambuc   res_i = (vsc1 <= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
3067*f4a2713aSLionel Sambuc   res_i = (vsc1 >= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
3068*f4a2713aSLionel Sambuc   vector unsigned char vuc1 = (vector unsigned char)(1);
3069*f4a2713aSLionel Sambuc   vector unsigned char vuc2 = (vector unsigned char)(2);
3070*f4a2713aSLionel Sambuc   res_i = (vuc1 == vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
3071*f4a2713aSLionel Sambuc   res_i = (vuc1 != vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
3072*f4a2713aSLionel Sambuc   res_i = (vuc1 <  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
3073*f4a2713aSLionel Sambuc   res_i = (vuc1 >  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
3074*f4a2713aSLionel Sambuc   res_i = (vuc1 <= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
3075*f4a2713aSLionel Sambuc   res_i = (vuc1 >= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
3076*f4a2713aSLionel Sambuc   vector short vs1 = (vector short)(-1);
3077*f4a2713aSLionel Sambuc   vector short vs2 = (vector short)(-2);
3078*f4a2713aSLionel Sambuc   res_i = (vs1 == vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
3079*f4a2713aSLionel Sambuc   res_i = (vs1 != vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
3080*f4a2713aSLionel Sambuc   res_i = (vs1 <  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
3081*f4a2713aSLionel Sambuc   res_i = (vs1 >  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
3082*f4a2713aSLionel Sambuc   res_i = (vs1 <= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
3083*f4a2713aSLionel Sambuc   res_i = (vs1 >= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
3084*f4a2713aSLionel Sambuc   vector unsigned short vus1 = (vector unsigned short)(1);
3085*f4a2713aSLionel Sambuc   vector unsigned short vus2 = (vector unsigned short)(2);
3086*f4a2713aSLionel Sambuc   res_i = (vus1 == vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
3087*f4a2713aSLionel Sambuc   res_i = (vus1 != vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
3088*f4a2713aSLionel Sambuc   res_i = (vus1 <  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
3089*f4a2713aSLionel Sambuc   res_i = (vus1 >  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
3090*f4a2713aSLionel Sambuc   res_i = (vus1 <= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
3091*f4a2713aSLionel Sambuc   res_i = (vus1 >= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
3092*f4a2713aSLionel Sambuc   vector int vi1 = (vector int)(-1);
3093*f4a2713aSLionel Sambuc   vector int vi2 = (vector int)(-2);
3094*f4a2713aSLionel Sambuc   res_i = (vi1 == vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
3095*f4a2713aSLionel Sambuc   res_i = (vi1 != vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
3096*f4a2713aSLionel Sambuc   res_i = (vi1 <  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
3097*f4a2713aSLionel Sambuc   res_i = (vi1 >  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
3098*f4a2713aSLionel Sambuc   res_i = (vi1 <= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
3099*f4a2713aSLionel Sambuc   res_i = (vi1 >= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
3100*f4a2713aSLionel Sambuc   vector unsigned int vui1 = (vector unsigned int)(1);
3101*f4a2713aSLionel Sambuc   vector unsigned int vui2 = (vector unsigned int)(2);
3102*f4a2713aSLionel Sambuc   res_i = (vui1 == vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
3103*f4a2713aSLionel Sambuc   res_i = (vui1 != vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
3104*f4a2713aSLionel Sambuc   res_i = (vui1 <  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
3105*f4a2713aSLionel Sambuc   res_i = (vui1 >  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
3106*f4a2713aSLionel Sambuc   res_i = (vui1 <= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
3107*f4a2713aSLionel Sambuc   res_i = (vui1 >= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
3108*f4a2713aSLionel Sambuc   vector float vf1 = (vector float)(1.0);
3109*f4a2713aSLionel Sambuc   vector float vf2 = (vector float)(2.0);
3110*f4a2713aSLionel Sambuc   res_i = (vf1 == vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
3111*f4a2713aSLionel Sambuc   res_i = (vf1 != vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
3112*f4a2713aSLionel Sambuc   res_i = (vf1 <  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
3113*f4a2713aSLionel Sambuc   res_i = (vf1 >  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
3114*f4a2713aSLionel Sambuc   res_i = (vf1 <= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
3115*f4a2713aSLionel Sambuc   res_i = (vf1 >= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
3116*f4a2713aSLionel Sambuc }
3117