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