1 // REQUIRES: powerpc-registered-target
2 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc-unknown-unknown -emit-llvm %s \
3 // RUN: -flax-vector-conversions=none -o - | FileCheck %s
4 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64-unknown-unknown -emit-llvm %s \
5 // RUN: -flax-vector-conversions=none -o - | FileCheck %s
6 // RUN: %clang_cc1 -target-feature +altivec -triple powerpc64le-unknown-unknown -emit-llvm %s \
7 // RUN: -flax-vector-conversions=none -o - | FileCheck %s -check-prefix=CHECK-LE
8 // RUN: not %clang_cc1 -triple powerpc64le-unknown-unknown -emit-llvm %s \
9 // RUN: -ferror-limit 0 -DNO_ALTIVEC -o - 2>&1 \
10 // RUN: | FileCheck %s -check-prefix=CHECK-NOALTIVEC
11 #ifndef NO_ALTIVEC
12 #include <altivec.h>
13 #endif
14
15 vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
16 vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
17 vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
18 vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
19 vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
20 vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
21 vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
22 vector bool int vbi = { 1, 0, 1, 0 };
23 vector int vi = { -1, 2, -3, 4 };
24 vector unsigned int vui = { 1, 2, 3, 4 };
25 vector float vf = { -1.5, 2.5, -3.5, 4.5 };
26
27 vector bool char res_vbc;
28 vector signed char res_vsc;
29 vector unsigned char res_vuc;
30 vector bool short res_vbs;
31 vector short res_vs;
32 vector unsigned short res_vus;
33 vector pixel res_vp;
34 vector bool int res_vbi;
35 vector int res_vi;
36 vector unsigned int res_vui;
37 vector float res_vf;
38
39 // CHECK-NOALTIVEC: error: unknown type name 'vector'
40 // CHECK-NOALTIVEC-NOT: '(error)'
41
42 signed char param_sc;
43 unsigned char param_uc;
44 short param_s;
45 unsigned short param_us;
46 int param_i;
47 unsigned int param_ui;
48 float param_f;
49 signed long long param_sll;
50
51 int res_sc;
52 int res_uc;
53 int res_s;
54 int res_us;
55 int res_i;
56 int res_ui;
57 int res_f;
58
59 // CHECK-LABEL: define void @test1
test1()60 void test1() {
61
62 /* vec_abs */
63 vsc = vec_abs(vsc);
64 // CHECK: sub <16 x i8> zeroinitializer
65 // CHECK: @llvm.ppc.altivec.vmaxsb
66 // CHECK-LE: sub <16 x i8> zeroinitializer
67 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
68
69 vs = vec_abs(vs);
70 // CHECK: sub <8 x i16> zeroinitializer
71 // CHECK: @llvm.ppc.altivec.vmaxsh
72 // CHECK-LE: sub <8 x i16> zeroinitializer
73 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
74
75 vi = vec_abs(vi);
76 // CHECK: sub <4 x i32> zeroinitializer
77 // CHECK: @llvm.ppc.altivec.vmaxsw
78 // CHECK-LE: sub <4 x i32> zeroinitializer
79 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
80
81 vf = vec_abs(vf);
82 // CHECK: bitcast <4 x float> %{{.*}} to <4 x i32>
83 // CHECK: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
84 // CHECK: bitcast <4 x i32> %{{.*}} to <4 x float>
85 // CHECK: store <4 x float> %{{.*}}, <4 x float>* @vf
86 // CHECK-LE: bitcast <4 x float> %{{.*}} to <4 x i32>
87 // CHECK-LE: and <4 x i32> {{.*}}, <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647>
88 // CHECK-LE: bitcast <4 x i32> %{{.*}} to <4 x float>
89 // CHECK-LE: store <4 x float> %{{.*}}, <4 x float>* @vf
90
91 vsc = vec_nabs(vsc);
92 // CHECK: sub <16 x i8> zeroinitializer
93 // CHECK: @llvm.ppc.altivec.vminsb
94 // CHECK-LE: sub <16 x i8> zeroinitializer
95 // CHECK-LE: @llvm.ppc.altivec.vminsb
96
97 vs = vec_nabs(vs);
98 // CHECK: sub <8 x i16> zeroinitializer
99 // CHECK: @llvm.ppc.altivec.vminsh
100 // CHECK-LE: sub <8 x i16> zeroinitializer
101 // CHECK-LE: @llvm.ppc.altivec.vminsh
102
103 vi = vec_nabs(vi);
104 // CHECK: sub <4 x i32> zeroinitializer
105 // CHECK: @llvm.ppc.altivec.vminsw
106 // CHECK-LE: sub <4 x i32> zeroinitializer
107 // CHECK-LE: @llvm.ppc.altivec.vminsw
108
109 res_vi = vec_neg(vi);
110 // CHECK: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
111 // CHECK-LE: sub <4 x i32> zeroinitializer, {{%[0-9]+}}
112
113 res_vs = vec_neg(vs);
114 // CHECK: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
115 // CHECK-LE: sub <8 x i16> zeroinitializer, {{%[0-9]+}}
116
117 res_vsc = vec_neg(vsc);
118 // CHECK: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
119 // CHECK-LE: sub <16 x i8> zeroinitializer, {{%[0-9]+}}
120
121
122 /* vec_abs */
123 vsc = vec_abss(vsc);
124 // CHECK: @llvm.ppc.altivec.vsubsbs
125 // CHECK: @llvm.ppc.altivec.vmaxsb
126 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
127 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
128
129 vs = vec_abss(vs);
130 // CHECK: @llvm.ppc.altivec.vsubshs
131 // CHECK: @llvm.ppc.altivec.vmaxsh
132 // CHECK-LE: @llvm.ppc.altivec.vsubshs
133 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
134
135 vi = vec_abss(vi);
136 // CHECK: @llvm.ppc.altivec.vsubsws
137 // CHECK: @llvm.ppc.altivec.vmaxsw
138 // CHECK-LE: @llvm.ppc.altivec.vsubsws
139 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
140
141 /* vec_add */
142 res_vsc = vec_add(vsc, vsc);
143 // CHECK: add <16 x i8>
144 // CHECK-LE: add <16 x i8>
145
146 res_vsc = vec_add(vbc, vsc);
147 // CHECK: add <16 x i8>
148 // CHECK-LE: add <16 x i8>
149
150 res_vsc = vec_add(vsc, vbc);
151 // CHECK: add <16 x i8>
152 // CHECK-LE: add <16 x i8>
153
154 res_vuc = vec_add(vuc, vuc);
155 // CHECK: add <16 x i8>
156 // CHECK-LE: add <16 x i8>
157
158 res_vuc = vec_add(vbc, vuc);
159 // CHECK: add <16 x i8>
160 // CHECK-LE: add <16 x i8>
161
162 res_vuc = vec_add(vuc, vbc);
163 // CHECK: add <16 x i8>
164 // CHECK-LE: add <16 x i8>
165
166 res_vs = vec_add(vs, vs);
167 // CHECK: add <8 x i16>
168 // CHECK-LE: add <8 x i16>
169
170 res_vs = vec_add(vbs, vs);
171 // CHECK: add <8 x i16>
172 // CHECK-LE: add <8 x i16>
173
174 res_vs = vec_add(vs, vbs);
175 // CHECK: add <8 x i16>
176 // CHECK-LE: add <8 x i16>
177
178 res_vus = vec_add(vus, vus);
179 // CHECK: add <8 x i16>
180 // CHECK-LE: add <8 x i16>
181
182 res_vus = vec_add(vbs, vus);
183 // CHECK: add <8 x i16>
184 // CHECK-LE: add <8 x i16>
185
186 res_vus = vec_add(vus, vbs);
187 // CHECK: add <8 x i16>
188 // CHECK-LE: add <8 x i16>
189
190 res_vi = vec_add(vi, vi);
191 // CHECK: add <4 x i32>
192 // CHECK-LE: add <4 x i32>
193
194 res_vi = vec_add(vbi, vi);
195 // CHECK: add <4 x i32>
196 // CHECK-LE: add <4 x i32>
197
198 res_vi = vec_add(vi, vbi);
199 // CHECK: add <4 x i32>
200 // CHECK-LE: add <4 x i32>
201
202 res_vui = vec_add(vui, vui);
203 // CHECK: add <4 x i32>
204 // CHECK-LE: add <4 x i32>
205
206 res_vui = vec_add(vbi, vui);
207 // CHECK: add <4 x i32>
208 // CHECK-LE: add <4 x i32>
209
210 res_vui = vec_add(vui, vbi);
211 // CHECK: add <4 x i32>
212 // CHECK-LE: add <4 x i32>
213
214 res_vf = vec_add(vf, vf);
215 // CHECK: fadd <4 x float>
216 // CHECK-LE: fadd <4 x float>
217
218 res_vi = vec_adde(vi, vi, vi);
219 // CHECK: and <4 x i32>
220 // CHECK: add <4 x i32>
221 // CHECK: add <4 x i32>
222 // CHECK-LE: and <4 x i32>
223 // CHECK-LE: add <4 x i32>
224 // CHECK-LE: add <4 x i32>
225
226 res_vui = vec_adde(vui, vui, vui);
227 // CHECK: and <4 x i32>
228 // CHECK: add <4 x i32>
229 // CHECK: add <4 x i32>
230 // CHECK-LE: and <4 x i32>
231 // CHECK-LE: add <4 x i32>
232 // CHECK-LE: add <4 x i32>
233
234 res_vsc = vec_vaddubm(vsc, vsc);
235 // CHECK: add <16 x i8>
236 // CHECK-LE: add <16 x i8>
237
238 res_vsc = vec_vaddubm(vbc, vsc);
239 // CHECK: add <16 x i8>
240 // CHECK-LE: add <16 x i8>
241
242 res_vsc = vec_vaddubm(vsc, vbc);
243 // CHECK: add <16 x i8>
244 // CHECK-LE: add <16 x i8>
245
246 res_vuc = vec_vaddubm(vuc, vuc);
247 // CHECK: add <16 x i8>
248 // CHECK-LE: add <16 x i8>
249
250 res_vuc = vec_vaddubm(vbc, vuc);
251 // CHECK: add <16 x i8>
252 // CHECK-LE: add <16 x i8>
253
254 res_vuc = vec_vaddubm(vuc, vbc);
255 // CHECK: add <16 x i8>
256 // CHECK-LE: add <16 x i8>
257
258 res_vs = vec_vadduhm(vs, vs);
259 // CHECK: add <8 x i16>
260 // CHECK-LE: add <8 x i16>
261
262 res_vs = vec_vadduhm(vbs, vs);
263 // CHECK: add <8 x i16>
264 // CHECK-LE: add <8 x i16>
265
266 res_vs = vec_vadduhm(vs, vbs);
267 // CHECK: add <8 x i16>
268 // CHECK-LE: add <8 x i16>
269
270 res_vus = vec_vadduhm(vus, vus);
271 // CHECK: add <8 x i16>
272 // CHECK-LE: add <8 x i16>
273
274 res_vus = vec_vadduhm(vbs, vus);
275 // CHECK: add <8 x i16>
276 // CHECK-LE: add <8 x i16>
277
278 res_vus = vec_vadduhm(vus, vbs);
279 // CHECK: add <8 x i16>
280 // CHECK-LE: add <8 x i16>
281
282 res_vi = vec_vadduwm(vi, vi);
283 // CHECK: add <4 x i32>
284 // CHECK-LE: add <4 x i32>
285
286 res_vi = vec_vadduwm(vbi, vi);
287 // CHECK: add <4 x i32>
288 // CHECK-LE: add <4 x i32>
289
290 res_vi = vec_vadduwm(vi, vbi);
291 // CHECK: add <4 x i32>
292 // CHECK-LE: add <4 x i32>
293
294 res_vui = vec_vadduwm(vui, vui);
295 // CHECK: add <4 x i32>
296 // CHECK-LE: add <4 x i32>
297
298 res_vui = vec_vadduwm(vbi, vui);
299 // CHECK: add <4 x i32>
300 // CHECK-LE: add <4 x i32>
301
302 res_vui = vec_vadduwm(vui, vbi);
303 // CHECK: add <4 x i32>
304 // CHECK-LE: add <4 x i32>
305
306 res_vf = vec_vaddfp(vf, vf);
307 // CHECK: fadd <4 x float>
308 // CHECK-LE: fadd <4 x float>
309
310 /* vec_addc */
311 res_vui = vec_addc(vui, vui);
312 // CHECK: @llvm.ppc.altivec.vaddcuw
313 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
314
315 res_vui = vec_vaddcuw(vui, vui);
316 // CHECK: @llvm.ppc.altivec.vaddcuw
317 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
318
319 /* vec_adds */
320 res_vsc = vec_adds(vsc, vsc);
321 // CHECK: @llvm.ppc.altivec.vaddsbs
322 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
323
324 res_vsc = vec_adds(vbc, vsc);
325 // CHECK: @llvm.ppc.altivec.vaddsbs
326 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
327
328 res_vsc = vec_adds(vsc, vbc);
329 // CHECK: @llvm.ppc.altivec.vaddsbs
330 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
331
332 res_vuc = vec_adds(vuc, vuc);
333 // CHECK: @llvm.ppc.altivec.vaddubs
334 // CHECK-LE: @llvm.ppc.altivec.vaddubs
335
336 res_vuc = vec_adds(vbc, vuc);
337 // CHECK: @llvm.ppc.altivec.vaddubs
338 // CHECK-LE: @llvm.ppc.altivec.vaddubs
339
340 res_vuc = vec_adds(vuc, vbc);
341 // CHECK: @llvm.ppc.altivec.vaddubs
342 // CHECK-LE: @llvm.ppc.altivec.vaddubs
343
344 res_vs = vec_adds(vs, vs);
345 // CHECK: @llvm.ppc.altivec.vaddshs
346 // CHECK-LE: @llvm.ppc.altivec.vaddshs
347
348 res_vs = vec_adds(vbs, vs);
349 // CHECK: @llvm.ppc.altivec.vaddshs
350 // CHECK-LE: @llvm.ppc.altivec.vaddshs
351
352 res_vs = vec_adds(vs, vbs);
353 // CHECK: @llvm.ppc.altivec.vaddshs
354 // CHECK-LE: @llvm.ppc.altivec.vaddshs
355
356 res_vus = vec_adds(vus, vus);
357 // CHECK: @llvm.ppc.altivec.vadduhs
358 // CHECK-LE: @llvm.ppc.altivec.vadduhs
359
360 res_vus = vec_adds(vbs, vus);
361 // CHECK: @llvm.ppc.altivec.vadduhs
362 // CHECK-LE: @llvm.ppc.altivec.vadduhs
363
364 res_vus = vec_adds(vus, vbs);
365 // CHECK: @llvm.ppc.altivec.vadduhs
366 // CHECK-LE: @llvm.ppc.altivec.vadduhs
367
368 res_vi = vec_adds(vi, vi);
369 // CHECK: @llvm.ppc.altivec.vaddsws
370 // CHECK-LE: @llvm.ppc.altivec.vaddsws
371
372 res_vi = vec_adds(vbi, vi);
373 // CHECK: @llvm.ppc.altivec.vaddsws
374 // CHECK-LE: @llvm.ppc.altivec.vaddsws
375
376 res_vi = vec_adds(vi, vbi);
377 // CHECK: @llvm.ppc.altivec.vaddsws
378 // CHECK-LE: @llvm.ppc.altivec.vaddsws
379
380 res_vui = vec_adds(vui, vui);
381 // CHECK: @llvm.ppc.altivec.vadduws
382 // CHECK-LE: @llvm.ppc.altivec.vadduws
383
384 res_vui = vec_adds(vbi, vui);
385 // CHECK: @llvm.ppc.altivec.vadduws
386 // CHECK-LE: @llvm.ppc.altivec.vadduws
387
388 res_vui = vec_adds(vui, vbi);
389 // CHECK: @llvm.ppc.altivec.vadduws
390 // CHECK-LE: @llvm.ppc.altivec.vadduws
391
392 res_vsc = vec_vaddsbs(vsc, vsc);
393 // CHECK: @llvm.ppc.altivec.vaddsbs
394 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
395
396 res_vsc = vec_vaddsbs(vbc, vsc);
397 // CHECK: @llvm.ppc.altivec.vaddsbs
398 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
399
400 res_vsc = vec_vaddsbs(vsc, vbc);
401 // CHECK: @llvm.ppc.altivec.vaddsbs
402 // CHECK-LE: @llvm.ppc.altivec.vaddsbs
403
404 res_vuc = vec_vaddubs(vuc, vuc);
405 // CHECK: @llvm.ppc.altivec.vaddubs
406 // CHECK-LE: @llvm.ppc.altivec.vaddubs
407
408 res_vuc = vec_vaddubs(vbc, vuc);
409 // CHECK: @llvm.ppc.altivec.vaddubs
410 // CHECK-LE: @llvm.ppc.altivec.vaddubs
411
412 res_vuc = vec_vaddubs(vuc, vbc);
413 // CHECK: @llvm.ppc.altivec.vaddubs
414 // CHECK-LE: @llvm.ppc.altivec.vaddubs
415
416 res_vs = vec_vaddshs(vs, vs);
417 // CHECK: @llvm.ppc.altivec.vaddshs
418 // CHECK-LE: @llvm.ppc.altivec.vaddshs
419
420 res_vs = vec_vaddshs(vbs, vs);
421 // CHECK: @llvm.ppc.altivec.vaddshs
422 // CHECK-LE: @llvm.ppc.altivec.vaddshs
423
424 res_vs = vec_vaddshs(vs, vbs);
425 // CHECK: @llvm.ppc.altivec.vaddshs
426 // CHECK-LE: @llvm.ppc.altivec.vaddshs
427
428 res_vus = vec_vadduhs(vus, vus);
429 // CHECK: @llvm.ppc.altivec.vadduhs
430 // CHECK-LE: @llvm.ppc.altivec.vadduhs
431
432 res_vus = vec_vadduhs(vbs, vus);
433 // CHECK: @llvm.ppc.altivec.vadduhs
434 // CHECK-LE: @llvm.ppc.altivec.vadduhs
435
436 res_vus = vec_vadduhs(vus, vbs);
437 // CHECK: @llvm.ppc.altivec.vadduhs
438 // CHECK-LE: @llvm.ppc.altivec.vadduhs
439
440 res_vi = vec_vaddsws(vi, vi);
441 // CHECK: @llvm.ppc.altivec.vaddsws
442 // CHECK-LE: @llvm.ppc.altivec.vaddsws
443
444 res_vi = vec_vaddsws(vbi, vi);
445 // CHECK: @llvm.ppc.altivec.vaddsws
446 // CHECK-LE: @llvm.ppc.altivec.vaddsws
447
448 res_vi = vec_vaddsws(vi, vbi);
449 // CHECK: @llvm.ppc.altivec.vaddsws
450 // CHECK-LE: @llvm.ppc.altivec.vaddsws
451
452 res_vui = vec_vadduws(vui, vui);
453 // CHECK: @llvm.ppc.altivec.vadduws
454 // CHECK-LE: @llvm.ppc.altivec.vadduws
455
456 res_vui = vec_vadduws(vbi, vui);
457 // CHECK: @llvm.ppc.altivec.vadduws
458 // CHECK-LE: @llvm.ppc.altivec.vadduws
459
460 res_vui = vec_vadduws(vui, vbi);
461 // CHECK: @llvm.ppc.altivec.vadduws
462 // CHECK-LE: @llvm.ppc.altivec.vadduws
463
464 /* vec_and */
465 res_vsc = vec_and(vsc, vsc);
466 // CHECK: and <16 x i8>
467 // CHECK-LE: and <16 x i8>
468
469 res_vsc = vec_and(vbc, vsc);
470 // CHECK: and <16 x i8>
471 // CHECK-LE: and <16 x i8>
472
473 res_vsc = vec_and(vsc, vbc);
474 // CHECK: and <16 x i8>
475 // CHECK-LE: and <16 x i8>
476
477 res_vuc = vec_and(vuc, vuc);
478 // CHECK: and <16 x i8>
479 // CHECK-LE: and <16 x i8>
480
481 res_vuc = vec_and(vbc, vuc);
482 // CHECK: and <16 x i8>
483 // CHECK-LE: and <16 x i8>
484
485 res_vuc = vec_and(vuc, vbc);
486 // CHECK: and <16 x i8>
487 // CHECK-LE: and <16 x i8>
488
489 res_vbc = vec_and(vbc, vbc);
490 // CHECK: and <16 x i8>
491 // CHECK-LE: and <16 x i8>
492
493 res_vs = vec_and(vs, vs);
494 // CHECK: and <8 x i16>
495 // CHECK-LE: and <8 x i16>
496
497 res_vs = vec_and(vbs, vs);
498 // CHECK: and <8 x i16>
499 // CHECK-LE: and <8 x i16>
500
501 res_vs = vec_and(vs, vbs);
502 // CHECK: and <8 x i16>
503 // CHECK-LE: and <8 x i16>
504
505 res_vus = vec_and(vus, vus);
506 // CHECK: and <8 x i16>
507 // CHECK-LE: and <8 x i16>
508
509 res_vus = vec_and(vbs, vus);
510 // CHECK: and <8 x i16>
511 // CHECK-LE: and <8 x i16>
512
513 res_vus = vec_and(vus, vbs);
514 // CHECK: and <8 x i16>
515 // CHECK-LE: and <8 x i16>
516
517 res_vbs = vec_and(vbs, vbs);
518 // CHECK: and <8 x i16>
519 // CHECK-LE: and <8 x i16>
520
521 res_vi = vec_and(vi, vi);
522 // CHECK: and <4 x i32>
523 // CHECK-LE: and <4 x i32>
524
525 res_vi = vec_and(vbi, vi);
526 // CHECK: and <4 x i32>
527 // CHECK-le: and <4 x i32>
528
529 res_vi = vec_and(vi, vbi);
530 // CHECK: and <4 x i32>
531 // CHECK-LE: and <4 x i32>
532
533 res_vui = vec_and(vui, vui);
534 // CHECK: and <4 x i32>
535 // CHECK-LE: and <4 x i32>
536
537 res_vui = vec_and(vbi, vui);
538 // CHECK: and <4 x i32>
539 // CHECK-LE: and <4 x i32>
540
541 res_vui = vec_and(vui, vbi);
542 // CHECK: and <4 x i32>
543 // CHECK-LE: and <4 x i32>
544
545 res_vbi = vec_and(vbi, vbi);
546 // CHECK: and <4 x i32>
547 // CHECK-LE: and <4 x i32>
548
549 res_vsc = vec_vand(vsc, vsc);
550 // CHECK: and <16 x i8>
551 // CHECK-LE: and <16 x i8>
552
553 res_vsc = vec_vand(vbc, vsc);
554 // CHECK: and <16 x i8>
555 // CHECK-LE: and <16 x i8>
556
557 res_vsc = vec_vand(vsc, vbc);
558 // CHECK: and <16 x i8>
559 // CHECK-LE: and <16 x i8>
560
561 res_vuc = vec_vand(vuc, vuc);
562 // CHECK: and <16 x i8>
563 // CHECK-LE: and <16 x i8>
564
565 res_vuc = vec_vand(vbc, vuc);
566 // CHECK: and <16 x i8>
567 // CHECK-LE: and <16 x i8>
568
569 res_vuc = vec_vand(vuc, vbc);
570 // CHECK: and <16 x i8>
571 // CHECK-LE: and <16 x i8>
572
573 res_vbc = vec_vand(vbc, vbc);
574 // CHECK: and <16 x i8>
575 // CHECK-LE: and <16 x i8>
576
577 res_vs = vec_vand(vs, vs);
578 // CHECK: and <8 x i16>
579 // CHECK-LE: and <8 x i16>
580
581 res_vs = vec_vand(vbs, vs);
582 // CHECK: and <8 x i16>
583 // CHECK-LE: and <8 x i16>
584
585 res_vs = vec_vand(vs, vbs);
586 // CHECK: and <8 x i16>
587 // CHECK-LE: and <8 x i16>
588
589 res_vus = vec_vand(vus, vus);
590 // CHECK: and <8 x i16>
591 // CHECK-LE: and <8 x i16>
592
593 res_vus = vec_vand(vbs, vus);
594 // CHECK: and <8 x i16>
595 // CHECK-LE: and <8 x i16>
596
597 res_vus = vec_vand(vus, vbs);
598 // CHECK: and <8 x i16>
599 // CHECK-LE: and <8 x i16>
600
601 res_vbs = vec_vand(vbs, vbs);
602 // CHECK: and <8 x i16>
603 // CHECK-LE: and <8 x i16>
604
605 res_vi = vec_vand(vi, vi);
606 // CHECK: and <4 x i32>
607 // CHECK-LE: and <4 x i32>
608
609 res_vi = vec_vand(vbi, vi);
610 // CHECK: and <4 x i32>
611 // CHECK-LE: and <4 x i32>
612
613 res_vi = vec_vand(vi, vbi);
614 // CHECK: and <4 x i32>
615 // CHECK-LE: and <4 x i32>
616
617 res_vui = vec_vand(vui, vui);
618 // CHECK: and <4 x i32>
619 // CHECK-LE: and <4 x i32>
620
621 res_vui = vec_vand(vbi, vui);
622 // CHECK: and <4 x i32>
623 // CHECK-LE: and <4 x i32>
624
625 res_vui = vec_vand(vui, vbi);
626 // CHECK: and <4 x i32>
627 // CHECK-LE: and <4 x i32>
628
629 res_vbi = vec_vand(vbi, vbi);
630 // CHECK: and <4 x i32>
631 // CHECK-LE: and <4 x i32>
632
633 /* vec_andc */
634 res_vsc = vec_andc(vsc, vsc);
635 // CHECK: xor <16 x i8>
636 // CHECK: and <16 x i8>
637 // CHECK-LE: xor <16 x i8>
638 // CHECK-LE: and <16 x i8>
639
640 res_vsc = vec_andc(vbc, vsc);
641 // CHECK: xor <16 x i8>
642 // CHECK: and <16 x i8>
643 // CHECK-LE: xor <16 x i8>
644 // CHECK-LE: and <16 x i8>
645
646 res_vsc = vec_andc(vsc, vbc);
647 // CHECK: xor <16 x i8>
648 // CHECK: and <16 x i8>
649 // CHECK-LE: xor <16 x i8>
650 // CHECK-LE: and <16 x i8>
651
652 res_vuc = vec_andc(vuc, vuc);
653 // CHECK: xor <16 x i8>
654 // CHECK: and <16 x i8>
655 // CHECK-LE: xor <16 x i8>
656 // CHECK-LE: and <16 x i8>
657
658 res_vuc = vec_andc(vbc, vuc);
659 // CHECK: xor <16 x i8>
660 // CHECK: and <16 x i8>
661 // CHECK-LE: xor <16 x i8>
662 // CHECK-LE: and <16 x i8>
663
664 res_vuc = vec_andc(vuc, vbc);
665 // CHECK-LE: xor <16 x i8>
666 // CHECK-LE: and <16 x i8>
667
668 res_vbc = vec_andc(vbc, vbc);
669 // CHECK: xor <16 x i8>
670 // CHECK: and <16 x i8>
671 // CHECK-LE: xor <16 x i8>
672 // CHECK-LE: and <16 x i8>
673
674 res_vs = vec_andc(vs, vs);
675 // CHECK: xor <8 x i16>
676 // CHECK: and <8 x i16>
677 // CHECK-LE: xor <8 x i16>
678 // CHECK-LE: and <8 x i16>
679
680 res_vs = vec_andc(vbs, vs);
681 // CHECK: xor <8 x i16>
682 // CHECK: and <8 x i16>
683 // CHECK-LE: xor <8 x i16>
684 // CHECK-LE: and <8 x i16>
685
686 res_vs = vec_andc(vs, vbs);
687 // CHECK: xor <8 x i16>
688 // CHECK: and <8 x i16>
689 // CHECK-LE: xor <8 x i16>
690 // CHECK-LE: and <8 x i16>
691
692 res_vus = vec_andc(vus, vus);
693 // CHECK: xor <8 x i16>
694 // CHECK: and <8 x i16>
695 // CHECK-LE: xor <8 x i16>
696 // CHECK-LE: and <8 x i16>
697
698 res_vus = vec_andc(vbs, vus);
699 // CHECK: xor <8 x i16>
700 // CHECK: and <8 x i16>
701 // CHECK-LE: xor <8 x i16>
702 // CHECK-LE: and <8 x i16>
703
704 res_vus = vec_andc(vus, vbs);
705 // CHECK: xor <8 x i16>
706 // CHECK: and <8 x i16>
707 // CHECK-LE: xor <8 x i16>
708 // CHECK-LE: and <8 x i16>
709
710 res_vbs = vec_andc(vbs, vbs);
711 // CHECK: xor <8 x i16>
712 // CHECK: and <8 x i16>
713 // CHECK-LE: xor <8 x i16>
714 // CHECK-LE: and <8 x i16>
715
716 res_vi = vec_andc(vi, vi);
717 // CHECK: xor <4 x i32>
718 // CHECK: and <4 x i32>
719 // CHECK-LE: xor <4 x i32>
720 // CHECK-LE: and <4 x i32>
721
722 res_vi = vec_andc(vbi, vi);
723 // CHECK: xor <4 x i32>
724 // CHECK: and <4 x i32>
725 // CHECK-LE: xor <4 x i32>
726 // CHECK-LE: and <4 x i32>
727
728 res_vi = vec_andc(vi, vbi);
729 // CHECK: xor <4 x i32>
730 // CHECK: and <4 x i32>
731 // CHECK-LE: xor <4 x i32>
732 // CHECK-LE: and <4 x i32>
733
734 res_vui = vec_andc(vui, vui);
735 // CHECK: xor <4 x i32>
736 // CHECK: and <4 x i32>
737 // CHECK-LE: xor <4 x i32>
738 // CHECK-LE: and <4 x i32>
739
740 res_vui = vec_andc(vbi, vui);
741 // CHECK: xor <4 x i32>
742 // CHECK: and <4 x i32>
743 // CHECK-LE: xor <4 x i32>
744 // CHECK-LE: and <4 x i32>
745
746 res_vui = vec_andc(vui, vbi);
747 // CHECK: xor <4 x i32>
748 // CHECK: and <4 x i32>
749 // CHECK-LE: xor <4 x i32>
750 // CHECK-LE: and <4 x i32>
751
752 res_vf = vec_andc(vf, vf);
753 // CHECK: xor <4 x i32>
754 // CHECK: and <4 x i32>
755 // CHECK-LE: xor <4 x i32>
756 // CHECK-LE: and <4 x i32>
757
758 res_vf = vec_andc(vbi, vf);
759 // CHECK: xor <4 x i32>
760 // CHECK: and <4 x i32>
761 // CHECK-LE: xor <4 x i32>
762 // CHECK-LE: and <4 x i32>
763
764 res_vf = vec_andc(vf, vbi);
765 // CHECK: xor <4 x i32>
766 // CHECK: and <4 x i32>
767 // CHECK-LE: xor <4 x i32>
768 // CHECK-LE: and <4 x i32>
769
770 res_vsc = vec_vandc(vsc, vsc);
771 // CHECK: xor <16 x i8>
772 // CHECK: and <16 x i8>
773 // CHECK-LE: xor <16 x i8>
774 // CHECK-LE: and <16 x i8>
775
776 res_vsc = vec_vandc(vbc, vsc);
777 // CHECK: xor <16 x i8>
778 // CHECK: and <16 x i8>
779 // CHECK-LE: xor <16 x i8>
780 // CHECK-LE: and <16 x i8>
781
782 res_vsc = vec_vandc(vsc, vbc);
783 // CHECK: xor <16 x i8>
784 // CHECK: and <16 x i8>
785 // CHECK-LE: xor <16 x i8>
786 // CHECK-LE: and <16 x i8>
787
788 res_vuc = vec_vandc(vuc, vuc);
789 // CHECK: xor <16 x i8>
790 // CHECK: and <16 x i8>
791 // CHECK-LE: xor <16 x i8>
792 // CHECK-LE: and <16 x i8>
793
794 res_vuc = vec_vandc(vbc, vuc);
795 // CHECK: xor <16 x i8>
796 // CHECK: and <16 x i8>
797 // CHECK-LE: xor <16 x i8>
798 // CHECK-LE: and <16 x i8>
799
800 res_vuc = vec_vandc(vuc, vbc);
801 // CHECK: xor <16 x i8>
802 // CHECK: and <16 x i8>
803 // CHECK-LE: xor <16 x i8>
804 // CHECK-LE: and <16 x i8>
805
806 res_vbc = vec_vandc(vbc, vbc);
807 // CHECK: xor <16 x i8>
808 // CHECK: and <16 x i8>
809 // CHECK-LE: xor <16 x i8>
810 // CHECK-LE: and <16 x i8>
811
812 res_vs = vec_vandc(vs, vs);
813 // CHECK: xor <8 x i16>
814 // CHECK: and <8 x i16>
815 // CHECK-LE: xor <8 x i16>
816 // CHECK-LE: and <8 x i16>
817
818 res_vs = vec_vandc(vbs, vs);
819 // CHECK: xor <8 x i16>
820 // CHECK: and <8 x i16>
821 // CHECK-LE: xor <8 x i16>
822 // CHECK-LE: and <8 x i16>
823
824 res_vs = vec_vandc(vs, vbs);
825 // CHECK: xor <8 x i16>
826 // CHECK: and <8 x i16>
827 // CHECK-LE: xor <8 x i16>
828 // CHECK-LE: and <8 x i16>
829
830 res_vus = vec_vandc(vus, vus);
831 // CHECK: xor <8 x i16>
832 // CHECK: and <8 x i16>
833 // CHECK-LE: xor <8 x i16>
834 // CHECK-LE: and <8 x i16>
835
836 res_vus = vec_vandc(vbs, vus);
837 // CHECK: xor <8 x i16>
838 // CHECK: and <8 x i16>
839 // CHECK-LE: xor <8 x i16>
840 // CHECK-LE: and <8 x i16>
841
842 res_vus = vec_vandc(vus, vbs);
843 // CHECK: xor <8 x i16>
844 // CHECK: and <8 x i16>
845 // CHECK-LE: xor <8 x i16>
846 // CHECK-LE: and <8 x i16>
847
848 res_vbs = vec_vandc(vbs, vbs);
849 // CHECK: xor <8 x i16>
850 // CHECK: and <8 x i16>
851 // CHECK-LE: xor <8 x i16>
852 // CHECK-LE: and <8 x i16>
853
854 res_vi = vec_vandc(vi, vi);
855 // CHECK: xor <4 x i32>
856 // CHECK: and <4 x i32>
857 // CHECK-LE: xor <4 x i32>
858 // CHECK-LE: and <4 x i32>
859
860 res_vi = vec_vandc(vbi, vi);
861 // CHECK: xor <4 x i32>
862 // CHECK: and <4 x i32>
863 // CHECK-LE: xor <4 x i32>
864 // CHECK-LE: and <4 x i32>
865
866 res_vi = vec_vandc(vi, vbi);
867 // CHECK: xor <4 x i32>
868 // CHECK: and <4 x i32>
869 // CHECK-LE: xor <4 x i32>
870 // CHECK-LE: and <4 x i32>
871
872 res_vui = vec_vandc(vui, vui);
873 // CHECK: xor <4 x i32>
874 // CHECK: and <4 x i32>
875 // CHECK-LE: xor <4 x i32>
876 // CHECK-LE: and <4 x i32>
877
878 res_vui = vec_vandc(vbi, vui);
879 // CHECK: xor <4 x i32>
880 // CHECK: and <4 x i32>
881 // CHECK-LE: xor <4 x i32>
882 // CHECK-LE: and <4 x i32>
883
884 res_vui = vec_vandc(vui, vbi);
885 // CHECK: xor <4 x i32>
886 // CHECK: and <4 x i32>
887 // CHECK-LE: xor <4 x i32>
888 // CHECK-LE: and <4 x i32>
889
890 res_vf = vec_vandc(vf, vf);
891 // CHECK: xor <4 x i32>
892 // CHECK: and <4 x i32>
893 // CHECK-LE: xor <4 x i32>
894 // CHECK-LE: and <4 x i32>
895
896 res_vf = vec_vandc(vbi, vf);
897 // CHECK: xor <4 x i32>
898 // CHECK: and <4 x i32>
899 // CHECK-LE: xor <4 x i32>
900 // CHECK-LE: and <4 x i32>
901
902 res_vf = vec_vandc(vf, vbi);
903 // CHECK: xor <4 x i32>
904 // CHECK: and <4 x i32>
905 // CHECK-LE: xor <4 x i32>
906 // CHECK-LE: and <4 x i32>
907
908 }
909
910 // CHECK-LABEL: define void @test2
test2()911 void test2() {
912 /* vec_avg */
913 res_vsc = vec_avg(vsc, vsc);
914 // CHECK: @llvm.ppc.altivec.vavgsb
915 // CHECK-LE: @llvm.ppc.altivec.vavgsb
916
917 res_vuc = vec_avg(vuc, vuc);
918 // CHECK: @llvm.ppc.altivec.vavgub
919 // CHECK-LE: @llvm.ppc.altivec.vavgub
920
921 res_vs = vec_avg(vs, vs);
922 // CHECK: @llvm.ppc.altivec.vavgsh
923 // CHECK-LE: @llvm.ppc.altivec.vavgsh
924
925 res_vus = vec_avg(vus, vus);
926 // CHECK: @llvm.ppc.altivec.vavguh
927 // CHECK-LE: @llvm.ppc.altivec.vavguh
928
929 res_vi = vec_avg(vi, vi);
930 // CHECK: @llvm.ppc.altivec.vavgsw
931 // CHECK-LE: @llvm.ppc.altivec.vavgsw
932
933 res_vui = vec_avg(vui, vui);
934 // CHECK: @llvm.ppc.altivec.vavguw
935 // CHECK-LE: @llvm.ppc.altivec.vavguw
936
937 res_vsc = vec_vavgsb(vsc, vsc);
938 // CHECK: @llvm.ppc.altivec.vavgsb
939 // CHECK-LE: @llvm.ppc.altivec.vavgsb
940
941 res_vuc = vec_vavgub(vuc, vuc);
942 // CHECK: @llvm.ppc.altivec.vavgub
943 // CHECK-LE: @llvm.ppc.altivec.vavgub
944
945 res_vs = vec_vavgsh(vs, vs);
946 // CHECK: @llvm.ppc.altivec.vavgsh
947 // CHECK-LE: @llvm.ppc.altivec.vavgsh
948
949 res_vus = vec_vavguh(vus, vus);
950 // CHECK: @llvm.ppc.altivec.vavguh
951 // CHECK-LE: @llvm.ppc.altivec.vavguh
952
953 res_vi = vec_vavgsw(vi, vi);
954 // CHECK: @llvm.ppc.altivec.vavgsw
955 // CHECK-LE: @llvm.ppc.altivec.vavgsw
956
957 res_vui = vec_vavguw(vui, vui);
958 // CHECK: @llvm.ppc.altivec.vavguw
959 // CHECK-LE: @llvm.ppc.altivec.vavguw
960
961 /* vec_ceil */
962 res_vf = vec_ceil(vf);
963 // CHECK: @llvm.ppc.altivec.vrfip
964 // CHECK-LE: @llvm.ppc.altivec.vrfip
965
966 res_vf = vec_vrfip(vf);
967 // CHECK: @llvm.ppc.altivec.vrfip
968 // CHECK-LE: @llvm.ppc.altivec.vrfip
969
970 /* vec_cmpb */
971 res_vi = vec_cmpb(vf, vf);
972 // CHECK: @llvm.ppc.altivec.vcmpbfp
973 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
974
975 res_vi = vec_vcmpbfp(vf, vf);
976 // CHECK: @llvm.ppc.altivec.vcmpbfp
977 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp
978
979 /* vec_cmpeq */
980 res_vbc = vec_cmpeq(vsc, vsc);
981 // CHECK: @llvm.ppc.altivec.vcmpequb
982 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
983
984 res_vbc = vec_cmpeq(vuc, vuc);
985 // CHECK: @llvm.ppc.altivec.vcmpequb
986 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
987
988 res_vbc = vec_cmpeq(vbc, vbc);
989 // CHECK: @llvm.ppc.altivec.vcmpequb
990 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
991
992 res_vbc = vec_cmpeq(vbc, vbc);
993 // CHECK: @llvm.ppc.altivec.vcmpequb
994 // CHECK-LE: @llvm.ppc.altivec.vcmpequb
995
996 res_vbs = vec_cmpeq(vs, vs);
997 // CHECK: @llvm.ppc.altivec.vcmpequh
998 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
999
1000 res_vbs = vec_cmpeq(vus, vus);
1001 // CHECK: @llvm.ppc.altivec.vcmpequh
1002 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1003
1004 res_vbs = vec_cmpeq(vbs, vbs);
1005 // CHECK: @llvm.ppc.altivec.vcmpequh
1006 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1007
1008 res_vbs = vec_cmpeq(vbs, vbs);
1009 // CHECK: @llvm.ppc.altivec.vcmpequh
1010 // CHECK-LE: @llvm.ppc.altivec.vcmpequh
1011
1012 res_vbi = vec_cmpeq(vi, vi);
1013 // CHECK: @llvm.ppc.altivec.vcmpequw
1014 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1015
1016 res_vbi = vec_cmpeq(vui, vui);
1017 // CHECK: @llvm.ppc.altivec.vcmpequw
1018 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1019
1020 res_vbi = vec_cmpeq(vbi, vbi);
1021 // CHECK: @llvm.ppc.altivec.vcmpequw
1022 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1023
1024 res_vbi = vec_cmpeq(vbi, vbi);
1025 // CHECK: @llvm.ppc.altivec.vcmpequw
1026 // CHECK-LE: @llvm.ppc.altivec.vcmpequw
1027
1028 res_vbi = vec_cmpeq(vf, vf);
1029 // CHECK: @llvm.ppc.altivec.vcmpeqfp
1030 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp
1031
1032 /* vec_cmpge */
1033 res_vbc = vec_cmpge(vsc, vsc);
1034 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1035 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1036
1037 res_vbc = vec_cmpge(vuc, vuc);
1038 // CHECK: @llvm.ppc.altivec.vcmpgtub
1039 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1040
1041 res_vbs = vec_cmpge(vs, vs);
1042 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1043 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1044
1045 res_vbs = vec_cmpge(vus, vus);
1046 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1047 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1048
1049 res_vbi = vec_cmpge(vi, vi);
1050 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1051 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1052
1053 res_vbi = vec_cmpge(vui, vui);
1054 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1055 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1056
1057 res_vbi = vec_cmpge(vf, vf);
1058 // CHECK: @llvm.ppc.altivec.vcmpgefp
1059 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1060
1061 res_vbi = vec_vcmpgefp(vf, vf);
1062 // CHECK: @llvm.ppc.altivec.vcmpgefp
1063 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1064 }
1065
1066 // CHECK-LABEL: define void @test5
test5()1067 void test5() {
1068
1069 /* vec_cmpgt */
1070 res_vbc = vec_cmpgt(vsc, vsc);
1071 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1072 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1073
1074 res_vbc = vec_cmpgt(vuc, vuc);
1075 // CHECK: @llvm.ppc.altivec.vcmpgtub
1076 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1077
1078 res_vbs = vec_cmpgt(vs, vs);
1079 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1080 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1081
1082 res_vbs = vec_cmpgt(vus, vus);
1083 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1084 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1085
1086 res_vbi = vec_cmpgt(vi, vi);
1087 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1088 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1089
1090 res_vbi = vec_cmpgt(vui, vui);
1091 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1092 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1093
1094 res_vbi = vec_cmpgt(vf, vf);
1095 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1096 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1097
1098 res_vbc = vec_vcmpgtsb(vsc, vsc);
1099 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1100 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1101
1102 res_vbc = vec_vcmpgtub(vuc, vuc);
1103 // CHECK: @llvm.ppc.altivec.vcmpgtub
1104 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1105
1106 res_vbs = vec_vcmpgtsh(vs, vs);
1107 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1108 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1109
1110 res_vbs = vec_vcmpgtuh(vus, vus);
1111 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1112 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1113
1114 res_vbi = vec_vcmpgtsw(vi, vi);
1115 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1116 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1117
1118 res_vbi = vec_vcmpgtuw(vui, vui);
1119 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1120 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1121
1122 res_vbi = vec_vcmpgtfp(vf, vf);
1123 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1124 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1125
1126 /* vec_cmple */
1127 res_vbc = vec_cmple(vsc, vsc);
1128 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1130
1131 res_vbc = vec_cmple(vuc, vuc);
1132 // CHECK: @llvm.ppc.altivec.vcmpgtub
1133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1134
1135 res_vbs = vec_cmple(vs, vs);
1136 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1138
1139 res_vbs = vec_cmple(vus, vus);
1140 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1142
1143 res_vbi = vec_cmple(vi, vi);
1144 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1145 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1146
1147 res_vbi = vec_cmple(vui, vui);
1148 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1149 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1150
1151 res_vbi = vec_cmple(vf, vf);
1152 // CHECK: @llvm.ppc.altivec.vcmpgefp
1153 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp
1154 }
1155
1156 // CHECK-LABEL: define void @test6
test6()1157 void test6() {
1158 /* vec_cmplt */
1159 res_vbc = vec_cmplt(vsc, vsc);
1160 // CHECK: @llvm.ppc.altivec.vcmpgtsb
1161 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb
1162
1163 res_vbc = vec_cmplt(vuc, vuc);
1164 // CHECK: @llvm.ppc.altivec.vcmpgtub
1165 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub
1166
1167 res_vbs = vec_cmplt(vs, vs);
1168 // CHECK: @llvm.ppc.altivec.vcmpgtsh
1169 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh
1170
1171 res_vbs = vec_cmplt(vus, vus);
1172 // CHECK: @llvm.ppc.altivec.vcmpgtuh
1173 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh
1174
1175 res_vbi = vec_cmplt(vi, vi);
1176 // CHECK: @llvm.ppc.altivec.vcmpgtsw
1177 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw
1178
1179 res_vbi = vec_cmplt(vui, vui);
1180 // CHECK: @llvm.ppc.altivec.vcmpgtuw
1181 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw
1182
1183 res_vbi = vec_cmplt(vf, vf);
1184 // CHECK: @llvm.ppc.altivec.vcmpgtfp
1185 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp
1186
1187 /* vec_ctf */
1188 res_vf = vec_ctf(vi, 0);
1189 // CHECK: @llvm.ppc.altivec.vcfsx
1190 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1191
1192 res_vf = vec_ctf(vui, 0);
1193 // CHECK: @llvm.ppc.altivec.vcfux
1194 // CHECK-LE: @llvm.ppc.altivec.vcfux
1195
1196 res_vf = vec_vcfsx(vi, 0);
1197 // CHECK: @llvm.ppc.altivec.vcfsx
1198 // CHECK-LE: @llvm.ppc.altivec.vcfsx
1199
1200 res_vf = vec_vcfux(vui, 0);
1201 // CHECK: @llvm.ppc.altivec.vcfux
1202 // CHECK-LE: @llvm.ppc.altivec.vcfux
1203
1204 /* vec_cts */
1205 res_vi = vec_cts(vf, 0);
1206 // CHECK: @llvm.ppc.altivec.vctsxs
1207 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1208
1209 res_vi = vec_vctsxs(vf, 0);
1210 // CHECK: @llvm.ppc.altivec.vctsxs
1211 // CHECK-LE: @llvm.ppc.altivec.vctsxs
1212
1213 /* vec_ctu */
1214 res_vui = vec_ctu(vf, 0);
1215 // CHECK: @llvm.ppc.altivec.vctuxs
1216 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1217
1218 res_vui = vec_vctuxs(vf, 0);
1219 // CHECK: @llvm.ppc.altivec.vctuxs
1220 // CHECK-LE: @llvm.ppc.altivec.vctuxs
1221
1222 res_vi = vec_signed(vf);
1223 // CHECK: fptosi <4 x float>
1224 // CHECK-LE: fptosi <4 x float>
1225
1226 res_vui = vec_unsigned(vf);
1227 // CHECK: fptoui <4 x float>
1228 // CHECK-LE: fptoui <4 x float>
1229
1230 res_vf = vec_float(vi);
1231 // CHECK: sitofp <4 x i32>
1232 // CHECK-LE: sitofp <4 x i32>
1233
1234 res_vf = vec_float(vui);
1235 // CHECK: uitofp <4 x i32>
1236 // CHECK-LE: uitofp <4 x i32>
1237
1238 /* vec_div */
1239 res_vsc = vec_div(vsc, vsc);
1240 // CHECK: sdiv <16 x i8>
1241 // CHECK-LE: sdiv <16 x i8>
1242
1243 res_vuc = vec_div(vuc, vuc);
1244 // CHECK: udiv <16 x i8>
1245 // CHECK-LE: udiv <16 x i8>
1246
1247 res_vs = vec_div(vs, vs);
1248 // CHECK: sdiv <8 x i16>
1249 // CHECK-LE: sdiv <8 x i16>
1250
1251 res_vus = vec_div(vus, vus);
1252 // CHECK: udiv <8 x i16>
1253 // CHECK-LE: udiv <8 x i16>
1254
1255 res_vi = vec_div(vi, vi);
1256 // CHECK: sdiv <4 x i32>
1257 // CHECK-LE: sdiv <4 x i32>
1258
1259 res_vui = vec_div(vui, vui);
1260 // CHECK: udiv <4 x i32>
1261 // CHECK-LE: udiv <4 x i32>
1262
1263 /* vec_dss */
1264 vec_dss(0);
1265 // CHECK: @llvm.ppc.altivec.dss
1266 // CHECK-LE: @llvm.ppc.altivec.dss
1267
1268 /* vec_dssall */
1269 vec_dssall();
1270 // CHECK: @llvm.ppc.altivec.dssall
1271 // CHECK-LE: @llvm.ppc.altivec.dssall
1272
1273 /* vec_dst */
1274 vec_dst(&vsc, 0, 0);
1275 // CHECK: @llvm.ppc.altivec.dst
1276 // CHECK-LE: @llvm.ppc.altivec.dst
1277
1278 /* vec_dstst */
1279 vec_dstst(&vs, 0, 0);
1280 // CHECK: @llvm.ppc.altivec.dstst
1281 // CHECK-LE: @llvm.ppc.altivec.dstst
1282
1283 /* vec_dststt */
1284 vec_dststt(¶m_i, 0, 0);
1285 // CHECK: @llvm.ppc.altivec.dststt
1286 // CHECK-LE: @llvm.ppc.altivec.dststt
1287
1288 /* vec_dstt */
1289 vec_dstt(&vf, 0, 0);
1290 // CHECK: @llvm.ppc.altivec.dstt
1291 // CHECK-LE: @llvm.ppc.altivec.dstt
1292
1293 /* vec_expte */
1294 res_vf = vec_expte(vf);
1295 // CHECK: @llvm.ppc.altivec.vexptefp
1296 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1297
1298 res_vf = vec_vexptefp(vf);
1299 // CHECK: @llvm.ppc.altivec.vexptefp
1300 // CHECK-LE: @llvm.ppc.altivec.vexptefp
1301
1302 /* vec_floor */
1303 res_vf = vec_floor(vf);
1304 // CHECK: @llvm.ppc.altivec.vrfim
1305 // CHECK-LE: @llvm.ppc.altivec.vrfim
1306
1307 res_vf = vec_vrfim(vf);
1308 // CHECK: @llvm.ppc.altivec.vrfim
1309 // CHECK-LE: @llvm.ppc.altivec.vrfim
1310
1311 /* vec_ld */
1312 res_vsc = vec_ld(0, &vsc);
1313 // CHECK: @llvm.ppc.altivec.lvx
1314 // CHECK-LE: @llvm.ppc.altivec.lvx
1315
1316 res_vsc = vec_ld(0, ¶m_sc);
1317 // CHECK: @llvm.ppc.altivec.lvx
1318 // CHECK-LE: @llvm.ppc.altivec.lvx
1319
1320 res_vuc = vec_ld(0, &vuc);
1321 // CHECK: @llvm.ppc.altivec.lvx
1322 // CHECK-LE: @llvm.ppc.altivec.lvx
1323
1324 res_vuc = vec_ld(0, ¶m_uc);
1325 // CHECK: @llvm.ppc.altivec.lvx
1326 // CHECK-LE: @llvm.ppc.altivec.lvx
1327
1328 res_vbc = vec_ld(0, &vbc);
1329 // CHECK: @llvm.ppc.altivec.lvx
1330 // CHECK-LE: @llvm.ppc.altivec.lvx
1331
1332 res_vs = vec_ld(0, &vs);
1333 // CHECK: @llvm.ppc.altivec.lvx
1334 // CHECK-LE: @llvm.ppc.altivec.lvx
1335
1336 res_vs = vec_ld(0, ¶m_s);
1337 // CHECK: @llvm.ppc.altivec.lvx
1338 // CHECK-LE: @llvm.ppc.altivec.lvx
1339
1340 res_vus = vec_ld(0, &vus);
1341 // CHECK: @llvm.ppc.altivec.lvx
1342 // CHECK-LE: @llvm.ppc.altivec.lvx
1343
1344 res_vus = vec_ld(0, ¶m_us);
1345 // CHECK: @llvm.ppc.altivec.lvx
1346 // CHECK-LE: @llvm.ppc.altivec.lvx
1347
1348 res_vbs = vec_ld(0, &vbs);
1349 // CHECK: @llvm.ppc.altivec.lvx
1350 // CHECK-LE: @llvm.ppc.altivec.lvx
1351
1352 res_vp = vec_ld(0, &vp);
1353 // CHECK: @llvm.ppc.altivec.lvx
1354 // CHECK-LE: @llvm.ppc.altivec.lvx
1355
1356 res_vi = vec_ld(0, &vi);
1357 // CHECK: @llvm.ppc.altivec.lvx
1358 // CHECK-LE: @llvm.ppc.altivec.lvx
1359
1360 res_vi = vec_ld(0, ¶m_i);
1361 // CHECK: @llvm.ppc.altivec.lvx
1362 // CHECK-LE: @llvm.ppc.altivec.lvx
1363
1364 res_vui = vec_ld(0, &vui);
1365 // CHECK: @llvm.ppc.altivec.lvx
1366 // CHECK-LE: @llvm.ppc.altivec.lvx
1367
1368 res_vui = vec_ld(0, ¶m_ui);
1369 // CHECK: @llvm.ppc.altivec.lvx
1370 // CHECK-LE: @llvm.ppc.altivec.lvx
1371
1372 res_vbi = vec_ld(0, &vbi);
1373 // CHECK: @llvm.ppc.altivec.lvx
1374 // CHECK-LE: @llvm.ppc.altivec.lvx
1375
1376 res_vf = vec_ld(0, &vf);
1377 // CHECK: @llvm.ppc.altivec.lvx
1378 // CHECK-LE: @llvm.ppc.altivec.lvx
1379
1380 res_vf = vec_ld(0, ¶m_f);
1381 // CHECK: @llvm.ppc.altivec.lvx
1382 // CHECK-LE: @llvm.ppc.altivec.lvx
1383
1384 res_vsc = vec_lvx(0, &vsc);
1385 // CHECK: @llvm.ppc.altivec.lvx
1386 // CHECK-LE: @llvm.ppc.altivec.lvx
1387
1388 res_vsc = vec_lvx(0, ¶m_sc);
1389 // CHECK: @llvm.ppc.altivec.lvx
1390 // CHECK-LE: @llvm.ppc.altivec.lvx
1391
1392 res_vuc = vec_lvx(0, &vuc);
1393 // CHECK: @llvm.ppc.altivec.lvx
1394 // CHECK-LE: @llvm.ppc.altivec.lvx
1395
1396 res_vuc = vec_lvx(0, ¶m_uc);
1397 // CHECK: @llvm.ppc.altivec.lvx
1398 // CHECK-LE: @llvm.ppc.altivec.lvx
1399
1400 res_vbc = vec_lvx(0, &vbc);
1401 // CHECK: @llvm.ppc.altivec.lvx
1402 // CHECK-LE: @llvm.ppc.altivec.lvx
1403
1404 res_vs = vec_lvx(0, &vs);
1405 // CHECK: @llvm.ppc.altivec.lvx
1406 // CHECK-LE: @llvm.ppc.altivec.lvx
1407
1408 res_vs = vec_lvx(0, ¶m_s);
1409 // CHECK: @llvm.ppc.altivec.lvx
1410 // CHECK-LE: @llvm.ppc.altivec.lvx
1411
1412 res_vus = vec_lvx(0, &vus);
1413 // CHECK: @llvm.ppc.altivec.lvx
1414 // CHECK-LE: @llvm.ppc.altivec.lvx
1415
1416 res_vus = vec_lvx(0, ¶m_us);
1417 // CHECK: @llvm.ppc.altivec.lvx
1418 // CHECK-LE: @llvm.ppc.altivec.lvx
1419
1420 res_vbs = vec_lvx(0, &vbs);
1421 // CHECK: @llvm.ppc.altivec.lvx
1422 // CHECK-LE: @llvm.ppc.altivec.lvx
1423
1424 res_vp = vec_lvx(0, &vp);
1425 // CHECK: @llvm.ppc.altivec.lvx
1426 // CHECK-LE: @llvm.ppc.altivec.lvx
1427
1428 res_vi = vec_lvx(0, &vi);
1429 // CHECK: @llvm.ppc.altivec.lvx
1430 // CHECK-LE: @llvm.ppc.altivec.lvx
1431
1432 res_vi = vec_lvx(0, ¶m_i);
1433 // CHECK: @llvm.ppc.altivec.lvx
1434 // CHECK-LE: @llvm.ppc.altivec.lvx
1435
1436 res_vui = vec_lvx(0, &vui);
1437 // CHECK: @llvm.ppc.altivec.lvx
1438 // CHECK-LE: @llvm.ppc.altivec.lvx
1439
1440 res_vui = vec_lvx(0, ¶m_ui);
1441 // CHECK: @llvm.ppc.altivec.lvx
1442 // CHECK-LE: @llvm.ppc.altivec.lvx
1443
1444 res_vbi = vec_lvx(0, &vbi);
1445 // CHECK: @llvm.ppc.altivec.lvx
1446 // CHECK-LE: @llvm.ppc.altivec.lvx
1447
1448 res_vf = vec_lvx(0, &vf);
1449 // CHECK: @llvm.ppc.altivec.lvx
1450 // CHECK-LE: @llvm.ppc.altivec.lvx
1451
1452 res_vf = vec_lvx(0, ¶m_f);
1453 // CHECK: @llvm.ppc.altivec.lvx
1454 // CHECK-LE: @llvm.ppc.altivec.lvx
1455
1456 /* vec_lde */
1457 res_vsc = vec_lde(0, ¶m_sc);
1458 // CHECK: @llvm.ppc.altivec.lvebx
1459 // CHECK-LE: @llvm.ppc.altivec.lvebx
1460
1461 res_vuc = vec_lde(0, ¶m_uc);
1462 // CHECK: @llvm.ppc.altivec.lvebx
1463 // CHECK-LE: @llvm.ppc.altivec.lvebx
1464
1465 res_vs = vec_lde(0, ¶m_s);
1466 // CHECK: @llvm.ppc.altivec.lvehx
1467 // CHECK-LE: @llvm.ppc.altivec.lvehx
1468
1469 res_vus = vec_lde(0, ¶m_us);
1470 // CHECK: @llvm.ppc.altivec.lvehx
1471 // CHECK-LE: @llvm.ppc.altivec.lvehx
1472
1473 res_vi = vec_lde(0, ¶m_i);
1474 // CHECK: @llvm.ppc.altivec.lvewx
1475 // CHECK-LE: @llvm.ppc.altivec.lvewx
1476
1477 res_vui = vec_lde(0, ¶m_ui);
1478 // CHECK: @llvm.ppc.altivec.lvewx
1479 // CHECK-LE: @llvm.ppc.altivec.lvewx
1480
1481 res_vf = vec_lde(0, ¶m_f);
1482 // CHECK: @llvm.ppc.altivec.lvewx
1483 // CHECK-LE: @llvm.ppc.altivec.lvewx
1484
1485 res_vsc = vec_lvebx(0, ¶m_sc);
1486 // CHECK: @llvm.ppc.altivec.lvebx
1487 // CHECK-LE: @llvm.ppc.altivec.lvebx
1488
1489 res_vuc = vec_lvebx(0, ¶m_uc);
1490 // CHECK: @llvm.ppc.altivec.lvebx
1491 // CHECK-LE: @llvm.ppc.altivec.lvebx
1492
1493 res_vs = vec_lvehx(0, ¶m_s);
1494 // CHECK: @llvm.ppc.altivec.lvehx
1495 // CHECK-LE: @llvm.ppc.altivec.lvehx
1496
1497 res_vus = vec_lvehx(0, ¶m_us);
1498 // CHECK: @llvm.ppc.altivec.lvehx
1499 // CHECK-LE: @llvm.ppc.altivec.lvehx
1500
1501 res_vi = vec_lvewx(0, ¶m_i);
1502 // CHECK: @llvm.ppc.altivec.lvewx
1503 // CHECK-LE: @llvm.ppc.altivec.lvewx
1504
1505 res_vui = vec_lvewx(0, ¶m_ui);
1506 // CHECK: @llvm.ppc.altivec.lvewx
1507 // CHECK-LE: @llvm.ppc.altivec.lvewx
1508
1509 res_vf = vec_lvewx(0, ¶m_f);
1510 // CHECK: @llvm.ppc.altivec.lvewx
1511 // CHECK-LE: @llvm.ppc.altivec.lvewx
1512
1513 /* vec_ldl */
1514 res_vsc = vec_ldl(0, &vsc);
1515 // CHECK: @llvm.ppc.altivec.lvxl
1516 // CHECK-LE: @llvm.ppc.altivec.lvxl
1517
1518 res_vsc = vec_ldl(0, ¶m_sc);
1519 // CHECK: @llvm.ppc.altivec.lvxl
1520 // CHECK-LE: @llvm.ppc.altivec.lvxl
1521
1522 res_vuc = vec_ldl(0, &vuc);
1523 // CHECK: @llvm.ppc.altivec.lvxl
1524 // CHECK-LE: @llvm.ppc.altivec.lvxl
1525
1526 res_vuc = vec_ldl(0, ¶m_uc);
1527 // CHECK: @llvm.ppc.altivec.lvxl
1528 // CHECK-LE: @llvm.ppc.altivec.lvxl
1529
1530 res_vbc = vec_ldl(0, &vbc);
1531 // CHECK: @llvm.ppc.altivec.lvxl
1532 // CHECK-LE: @llvm.ppc.altivec.lvxl
1533
1534 res_vs = vec_ldl(0, &vs);
1535 // CHECK: @llvm.ppc.altivec.lvxl
1536 // CHECK-LE: @llvm.ppc.altivec.lvxl
1537
1538 res_vs = vec_ldl(0, ¶m_s);
1539 // CHECK: @llvm.ppc.altivec.lvxl
1540 // CHECK-LE: @llvm.ppc.altivec.lvxl
1541
1542 res_vus = vec_ldl(0, &vus);
1543 // CHECK: @llvm.ppc.altivec.lvxl
1544 // CHECK-LE: @llvm.ppc.altivec.lvxl
1545
1546 res_vus = vec_ldl(0, ¶m_us);
1547 // CHECK: @llvm.ppc.altivec.lvxl
1548 // CHECK-LE: @llvm.ppc.altivec.lvxl
1549
1550 res_vbs = vec_ldl(0, &vbs);
1551 // CHECK: @llvm.ppc.altivec.lvxl
1552 // CHECK-LE: @llvm.ppc.altivec.lvxl
1553
1554 res_vp = vec_ldl(0, &vp);
1555 // CHECK: @llvm.ppc.altivec.lvxl
1556 // CHECK-LE: @llvm.ppc.altivec.lvxl
1557
1558 res_vi = vec_ldl(0, &vi);
1559 // CHECK: @llvm.ppc.altivec.lvxl
1560 // CHECK-LE: @llvm.ppc.altivec.lvxl
1561
1562 res_vi = vec_ldl(0, ¶m_i);
1563 // CHECK: @llvm.ppc.altivec.lvxl
1564 // CHECK-LE: @llvm.ppc.altivec.lvxl
1565
1566 res_vui = vec_ldl(0, &vui);
1567 // CHECK: @llvm.ppc.altivec.lvxl
1568 // CHECK-LE: @llvm.ppc.altivec.lvxl
1569
1570 res_vui = vec_ldl(0, ¶m_ui);
1571 // CHECK: @llvm.ppc.altivec.lvxl
1572 // CHECK-LE: @llvm.ppc.altivec.lvxl
1573
1574 res_vbi = vec_ldl(0, &vbi);
1575 // CHECK: @llvm.ppc.altivec.lvxl
1576 // CHECK-LE: @llvm.ppc.altivec.lvxl
1577
1578 res_vf = vec_ldl(0, &vf);
1579 // CHECK: @llvm.ppc.altivec.lvxl
1580 // CHECK-LE: @llvm.ppc.altivec.lvxl
1581
1582 res_vf = vec_ldl(0, ¶m_f);
1583 // CHECK: @llvm.ppc.altivec.lvxl
1584 // CHECK-LE: @llvm.ppc.altivec.lvxl
1585
1586 res_vsc = vec_lvxl(0, &vsc);
1587 // CHECK: @llvm.ppc.altivec.lvxl
1588 // CHECK-LE: @llvm.ppc.altivec.lvxl
1589
1590 res_vsc = vec_lvxl(0, ¶m_sc);
1591 // CHECK: @llvm.ppc.altivec.lvxl
1592 // CHECK-LE: @llvm.ppc.altivec.lvxl
1593
1594 res_vuc = vec_lvxl(0, &vuc);
1595 // CHECK: @llvm.ppc.altivec.lvxl
1596 // CHECK-LE: @llvm.ppc.altivec.lvxl
1597
1598 res_vbc = vec_lvxl(0, &vbc);
1599 // CHECK: @llvm.ppc.altivec.lvxl
1600 // CHECK-LE: @llvm.ppc.altivec.lvxl
1601
1602 res_vuc = vec_lvxl(0, ¶m_uc);
1603 // CHECK: @llvm.ppc.altivec.lvxl
1604 // CHECK-LE: @llvm.ppc.altivec.lvxl
1605
1606 res_vs = vec_lvxl(0, &vs);
1607 // CHECK: @llvm.ppc.altivec.lvxl
1608 // CHECK-LE: @llvm.ppc.altivec.lvxl
1609
1610 res_vs = vec_lvxl(0, ¶m_s);
1611 // CHECK: @llvm.ppc.altivec.lvxl
1612 // CHECK-LE: @llvm.ppc.altivec.lvxl
1613
1614 res_vus = vec_lvxl(0, &vus);
1615 // CHECK: @llvm.ppc.altivec.lvxl
1616 // CHECK-LE: @llvm.ppc.altivec.lvxl
1617
1618 res_vus = vec_lvxl(0, ¶m_us);
1619 // CHECK: @llvm.ppc.altivec.lvxl
1620 // CHECK-LE: @llvm.ppc.altivec.lvxl
1621
1622 res_vbs = vec_lvxl(0, &vbs);
1623 // CHECK: @llvm.ppc.altivec.lvxl
1624 // CHECK-LE: @llvm.ppc.altivec.lvxl
1625
1626 res_vp = vec_lvxl(0, &vp);
1627 // CHECK: @llvm.ppc.altivec.lvxl
1628 // CHECK-LE: @llvm.ppc.altivec.lvxl
1629
1630 res_vi = vec_lvxl(0, &vi);
1631 // CHECK: @llvm.ppc.altivec.lvxl
1632 // CHECK-LE: @llvm.ppc.altivec.lvxl
1633
1634 res_vi = vec_lvxl(0, ¶m_i);
1635 // CHECK: @llvm.ppc.altivec.lvxl
1636 // CHECK-LE: @llvm.ppc.altivec.lvxl
1637
1638 res_vui = vec_lvxl(0, &vui);
1639 // CHECK: @llvm.ppc.altivec.lvxl
1640 // CHECK-LE: @llvm.ppc.altivec.lvxl
1641
1642 res_vui = vec_lvxl(0, ¶m_ui);
1643 // CHECK: @llvm.ppc.altivec.lvxl
1644 // CHECK-LE: @llvm.ppc.altivec.lvxl
1645
1646 res_vbi = vec_lvxl(0, &vbi);
1647 // CHECK: @llvm.ppc.altivec.lvxl
1648 // CHECK-LE: @llvm.ppc.altivec.lvxl
1649
1650 res_vf = vec_lvxl(0, &vf);
1651 // CHECK: @llvm.ppc.altivec.lvxl
1652 // CHECK-LE: @llvm.ppc.altivec.lvxl
1653
1654 res_vf = vec_lvxl(0, ¶m_f);
1655 // CHECK: @llvm.ppc.altivec.lvxl
1656 // CHECK-LE: @llvm.ppc.altivec.lvxl
1657
1658 /* vec_loge */
1659 res_vf = vec_loge(vf);
1660 // CHECK: @llvm.ppc.altivec.vlogefp
1661 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1662
1663 res_vf = vec_vlogefp(vf);
1664 // CHECK: @llvm.ppc.altivec.vlogefp
1665 // CHECK-LE: @llvm.ppc.altivec.vlogefp
1666
1667 /* vec_lvsl */
1668 res_vuc = vec_lvsl(0, ¶m_i);
1669 // CHECK: @llvm.ppc.altivec.lvsl
1670 // CHECK-LE: @llvm.ppc.altivec.lvsl
1671
1672 /* vec_lvsr */
1673 res_vuc = vec_lvsr(0, ¶m_i);
1674 // CHECK: @llvm.ppc.altivec.lvsr
1675 // CHECK-LE: @llvm.ppc.altivec.lvsr
1676
1677 /* vec_madd */
1678 res_vf =vec_madd(vf, vf, vf);
1679 // CHECK: @llvm.ppc.altivec.vmaddfp
1680 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1681
1682 res_vf = vec_vmaddfp(vf, vf, vf);
1683 // CHECK: @llvm.ppc.altivec.vmaddfp
1684 // CHECK-LE: @llvm.ppc.altivec.vmaddfp
1685
1686 /* vec_madds */
1687 res_vs = vec_madds(vs, vs, vs);
1688 // CHECK: @llvm.ppc.altivec.vmhaddshs
1689 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1690
1691 res_vs = vec_vmhaddshs(vs, vs, vs);
1692 // CHECK: @llvm.ppc.altivec.vmhaddshs
1693 // CHECK-LE: @llvm.ppc.altivec.vmhaddshs
1694
1695 /* vec_max */
1696 res_vsc = vec_max(vsc, vsc);
1697 // CHECK: @llvm.ppc.altivec.vmaxsb
1698 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1699
1700 res_vsc = vec_max(vbc, vsc);
1701 // CHECK: @llvm.ppc.altivec.vmaxsb
1702 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1703
1704 res_vsc = vec_max(vsc, vbc);
1705 // CHECK: @llvm.ppc.altivec.vmaxsb
1706 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1707
1708 res_vuc = vec_max(vuc, vuc);
1709 // CHECK: @llvm.ppc.altivec.vmaxub
1710 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1711
1712 res_vuc = vec_max(vbc, vuc);
1713 // CHECK: @llvm.ppc.altivec.vmaxub
1714 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1715
1716 res_vuc = vec_max(vuc, vbc);
1717 // CHECK: @llvm.ppc.altivec.vmaxub
1718 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1719
1720 res_vs = vec_max(vs, vs);
1721 // CHECK: @llvm.ppc.altivec.vmaxsh
1722 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1723
1724 res_vs = vec_max(vbs, vs);
1725 // CHECK: @llvm.ppc.altivec.vmaxsh
1726 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1727
1728 res_vs = vec_max(vs, vbs);
1729 // CHECK: @llvm.ppc.altivec.vmaxsh
1730 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1731
1732 res_vus = vec_max(vus, vus);
1733 // CHECK: @llvm.ppc.altivec.vmaxuh
1734 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1735
1736 res_vus = vec_max(vbs, vus);
1737 // CHECK: @llvm.ppc.altivec.vmaxuh
1738 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1739
1740 res_vus = vec_max(vus, vbs);
1741 // CHECK: @llvm.ppc.altivec.vmaxuh
1742 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1743
1744 res_vi = vec_max(vi, vi);
1745 // CHECK: @llvm.ppc.altivec.vmaxsw
1746 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1747
1748 res_vi = vec_max(vbi, vi);
1749 // CHECK: @llvm.ppc.altivec.vmaxsw
1750 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1751
1752 res_vi = vec_max(vi, vbi);
1753 // CHECK: @llvm.ppc.altivec.vmaxsw
1754 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1755
1756 res_vui = vec_max(vui, vui);
1757 // CHECK: @llvm.ppc.altivec.vmaxuw
1758 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1759
1760 res_vui = vec_max(vbi, vui);
1761 // CHECK: @llvm.ppc.altivec.vmaxuw
1762 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1763
1764 res_vui = vec_max(vui, vbi);
1765 // CHECK: @llvm.ppc.altivec.vmaxuw
1766 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1767
1768 res_vf = vec_max(vf, vf);
1769 // CHECK: @llvm.ppc.altivec.vmaxfp
1770 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1771
1772 res_vsc = vec_vmaxsb(vsc, vsc);
1773 // CHECK: @llvm.ppc.altivec.vmaxsb
1774 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1775
1776 res_vsc = vec_vmaxsb(vbc, vsc);
1777 // CHECK: @llvm.ppc.altivec.vmaxsb
1778 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1779
1780 res_vsc = vec_vmaxsb(vsc, vbc);
1781 // CHECK: @llvm.ppc.altivec.vmaxsb
1782 // CHECK-LE: @llvm.ppc.altivec.vmaxsb
1783
1784 res_vuc = vec_vmaxub(vuc, vuc);
1785 // CHECK: @llvm.ppc.altivec.vmaxub
1786 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1787
1788 res_vuc = vec_vmaxub(vbc, vuc);
1789 // CHECK: @llvm.ppc.altivec.vmaxub
1790 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1791
1792 res_vuc = vec_vmaxub(vuc, vbc);
1793 // CHECK: @llvm.ppc.altivec.vmaxub
1794 // CHECK-LE: @llvm.ppc.altivec.vmaxub
1795
1796 res_vs = vec_vmaxsh(vs, vs);
1797 // CHECK: @llvm.ppc.altivec.vmaxsh
1798 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1799
1800 res_vs = vec_vmaxsh(vbs, vs);
1801 // CHECK: @llvm.ppc.altivec.vmaxsh
1802 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1803
1804 res_vs = vec_vmaxsh(vs, vbs);
1805 // CHECK: @llvm.ppc.altivec.vmaxsh
1806 // CHECK-LE: @llvm.ppc.altivec.vmaxsh
1807
1808 res_vus = vec_vmaxuh(vus, vus);
1809 // CHECK: @llvm.ppc.altivec.vmaxuh
1810 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1811
1812 res_vus = vec_vmaxuh(vbs, vus);
1813 // CHECK: @llvm.ppc.altivec.vmaxuh
1814 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1815
1816 res_vus = vec_vmaxuh(vus, vbs);
1817 // CHECK: @llvm.ppc.altivec.vmaxuh
1818 // CHECK-LE: @llvm.ppc.altivec.vmaxuh
1819
1820 res_vi = vec_vmaxsw(vi, vi);
1821 // CHECK: @llvm.ppc.altivec.vmaxsw
1822 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1823
1824 res_vi = vec_vmaxsw(vbi, vi);
1825 // CHECK: @llvm.ppc.altivec.vmaxsw
1826 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1827
1828 res_vi = vec_vmaxsw(vi, vbi);
1829 // CHECK: @llvm.ppc.altivec.vmaxsw
1830 // CHECK-LE: @llvm.ppc.altivec.vmaxsw
1831
1832 res_vui = vec_vmaxuw(vui, vui);
1833 // CHECK: @llvm.ppc.altivec.vmaxuw
1834 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1835
1836 res_vui = vec_vmaxuw(vbi, vui);
1837 // CHECK: @llvm.ppc.altivec.vmaxuw
1838 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1839
1840 res_vui = vec_vmaxuw(vui, vbi);
1841 // CHECK: @llvm.ppc.altivec.vmaxuw
1842 // CHECK-LE: @llvm.ppc.altivec.vmaxuw
1843
1844 res_vf = vec_vmaxfp(vf, vf);
1845 // CHECK: @llvm.ppc.altivec.vmaxfp
1846 // CHECK-LE: @llvm.ppc.altivec.vmaxfp
1847
1848 /* vec_mergeh */
1849 res_vsc = vec_mergeh(vsc, vsc);
1850 // CHECK: @llvm.ppc.altivec.vperm
1851 // CHECK-LE: @llvm.ppc.altivec.vperm
1852
1853 res_vuc = vec_mergeh(vuc, vuc);
1854 // CHECK: @llvm.ppc.altivec.vperm
1855 // CHECK-LE: @llvm.ppc.altivec.vperm
1856
1857 res_vbc = vec_mergeh(vbc, vbc);
1858 // CHECK: @llvm.ppc.altivec.vperm
1859 // CHECK-LE: @llvm.ppc.altivec.vperm
1860
1861 res_vs = vec_mergeh(vs, vs);
1862 // CHECK: @llvm.ppc.altivec.vperm
1863 // CHECK-LE: @llvm.ppc.altivec.vperm
1864
1865 res_vp = vec_mergeh(vp, vp);
1866 // CHECK: @llvm.ppc.altivec.vperm
1867 // CHECK-LE: @llvm.ppc.altivec.vperm
1868
1869 res_vus = vec_mergeh(vus, vus);
1870 // CHECK: @llvm.ppc.altivec.vperm
1871 // CHECK-LE: @llvm.ppc.altivec.vperm
1872
1873 res_vbs = vec_mergeh(vbs, vbs);
1874 // CHECK: @llvm.ppc.altivec.vperm
1875 // CHECK-LE: @llvm.ppc.altivec.vperm
1876
1877 res_vi = vec_mergeh(vi, vi);
1878 // CHECK: @llvm.ppc.altivec.vperm
1879 // CHECK-LE: @llvm.ppc.altivec.vperm
1880
1881 res_vui = vec_mergeh(vui, vui);
1882 // CHECK: @llvm.ppc.altivec.vperm
1883 // CHECK-LE: @llvm.ppc.altivec.vperm
1884
1885 res_vbi = vec_mergeh(vbi, vbi);
1886 // CHECK: @llvm.ppc.altivec.vperm
1887 // CHECK-LE: @llvm.ppc.altivec.vperm
1888
1889 res_vf = vec_mergeh(vf, vf);
1890 // CHECK: @llvm.ppc.altivec.vperm
1891 // CHECK-LE: @llvm.ppc.altivec.vperm
1892
1893 res_vsc = vec_vmrghb(vsc, vsc);
1894 // CHECK: @llvm.ppc.altivec.vperm
1895 // CHECK-LE: @llvm.ppc.altivec.vperm
1896
1897 res_vuc = vec_vmrghb(vuc, vuc);
1898 // CHECK: @llvm.ppc.altivec.vperm
1899 // CHECK-LE: @llvm.ppc.altivec.vperm
1900
1901 res_vbc = vec_vmrghb(vbc, vbc);
1902 // CHECK: @llvm.ppc.altivec.vperm
1903 // CHECK-LE: @llvm.ppc.altivec.vperm
1904
1905 res_vs = vec_vmrghh(vs, vs);
1906 // CHECK: @llvm.ppc.altivec.vperm
1907 // CHECK-LE: @llvm.ppc.altivec.vperm
1908
1909 res_vp = vec_vmrghh(vp, vp);
1910 // CHECK: @llvm.ppc.altivec.vperm
1911 // CHECK-LE: @llvm.ppc.altivec.vperm
1912
1913 res_vus = vec_vmrghh(vus, vus);
1914 // CHECK: @llvm.ppc.altivec.vperm
1915 // CHECK-LE: @llvm.ppc.altivec.vperm
1916
1917 res_vbs = vec_vmrghh(vbs, vbs);
1918 // CHECK: @llvm.ppc.altivec.vperm
1919 // CHECK-LE: @llvm.ppc.altivec.vperm
1920
1921 res_vi = vec_vmrghw(vi, vi);
1922 // CHECK: @llvm.ppc.altivec.vperm
1923 // CHECK-LE: @llvm.ppc.altivec.vperm
1924
1925 res_vui = vec_vmrghw(vui, vui);
1926 // CHECK: @llvm.ppc.altivec.vperm
1927 // CHECK-LE: @llvm.ppc.altivec.vperm
1928
1929 res_vbi = vec_vmrghw(vbi, vbi);
1930 // CHECK: @llvm.ppc.altivec.vperm
1931 // CHECK-LE: @llvm.ppc.altivec.vperm
1932
1933 res_vf = vec_vmrghw(vf, vf);
1934 // CHECK: @llvm.ppc.altivec.vperm
1935 // CHECK-LE: @llvm.ppc.altivec.vperm
1936
1937 /* vec_mergel */
1938 res_vsc = vec_mergel(vsc, vsc);
1939 // CHECK: @llvm.ppc.altivec.vperm
1940 // CHECK-LE: @llvm.ppc.altivec.vperm
1941
1942 res_vuc = vec_mergel(vuc, vuc);
1943 // CHECK: @llvm.ppc.altivec.vperm
1944 // CHECK-LE: @llvm.ppc.altivec.vperm
1945
1946 res_vbc = vec_mergel(vbc, vbc);
1947 // CHECK: @llvm.ppc.altivec.vperm
1948 // CHECK-LE: @llvm.ppc.altivec.vperm
1949
1950 res_vs = vec_mergel(vs, vs);
1951 // CHECK: @llvm.ppc.altivec.vperm
1952 // CHECK-LE: @llvm.ppc.altivec.vperm
1953
1954 res_vp = vec_mergeh(vp, vp);
1955 // CHECK: @llvm.ppc.altivec.vperm
1956 // CHECK-LE: @llvm.ppc.altivec.vperm
1957
1958 res_vus = vec_mergel(vus, vus);
1959 // CHECK: @llvm.ppc.altivec.vperm
1960 // CHECK-LE: @llvm.ppc.altivec.vperm
1961
1962 res_vbs = vec_mergel(vbs, vbs);
1963 // CHECK: @llvm.ppc.altivec.vperm
1964 // CHECK-LE: @llvm.ppc.altivec.vperm
1965
1966 res_vi = vec_mergel(vi, vi);
1967 // CHECK: @llvm.ppc.altivec.vperm
1968 // CHECK-LE: @llvm.ppc.altivec.vperm
1969
1970 res_vui = vec_mergel(vui, vui);
1971 // CHECK: @llvm.ppc.altivec.vperm
1972 // CHECK-LE: @llvm.ppc.altivec.vperm
1973
1974 res_vbi = vec_mergel(vbi, vbi);
1975 // CHECK: @llvm.ppc.altivec.vperm
1976 // CHECK-LE: @llvm.ppc.altivec.vperm
1977
1978 res_vf = vec_mergel(vf, vf);
1979 // CHECK: @llvm.ppc.altivec.vperm
1980 // CHECK-LE: @llvm.ppc.altivec.vperm
1981
1982 res_vsc = vec_vmrglb(vsc, vsc);
1983 // CHECK: @llvm.ppc.altivec.vperm
1984 // CHECK-LE: @llvm.ppc.altivec.vperm
1985
1986 res_vuc = vec_vmrglb(vuc, vuc);
1987 // CHECK: @llvm.ppc.altivec.vperm
1988 // CHECK-LE: @llvm.ppc.altivec.vperm
1989
1990 res_vbc = vec_vmrglb(vbc, vbc);
1991 // CHECK: @llvm.ppc.altivec.vperm
1992 // CHECK-LE: @llvm.ppc.altivec.vperm
1993
1994 res_vs = vec_vmrglh(vs, vs);
1995 // CHECK: @llvm.ppc.altivec.vperm
1996 // CHECK-LE: @llvm.ppc.altivec.vperm
1997
1998 res_vp = vec_vmrglh(vp, vp);
1999 // CHECK: @llvm.ppc.altivec.vperm
2000 // CHECK-LE: @llvm.ppc.altivec.vperm
2001
2002 res_vus = vec_vmrglh(vus, vus);
2003 // CHECK: @llvm.ppc.altivec.vperm
2004 // CHECK-LE: @llvm.ppc.altivec.vperm
2005
2006 res_vbs = vec_vmrglh(vbs, vbs);
2007 // CHECK: @llvm.ppc.altivec.vperm
2008 // CHECK-LE: @llvm.ppc.altivec.vperm
2009
2010 res_vi = vec_vmrglw(vi, vi);
2011 // CHECK: @llvm.ppc.altivec.vperm
2012 // CHECK-LE: @llvm.ppc.altivec.vperm
2013
2014 res_vui = vec_vmrglw(vui, vui);
2015 // CHECK: @llvm.ppc.altivec.vperm
2016 // CHECK-LE: @llvm.ppc.altivec.vperm
2017
2018 res_vbi = vec_vmrglw(vbi, vbi);
2019 // CHECK: @llvm.ppc.altivec.vperm
2020 // CHECK-LE: @llvm.ppc.altivec.vperm
2021
2022 res_vf = vec_vmrglw(vf, vf);
2023 // CHECK: @llvm.ppc.altivec.vperm
2024 // CHECK-LE: @llvm.ppc.altivec.vperm
2025
2026 /* vec_mfvscr */
2027 vus = vec_mfvscr();
2028 // CHECK: @llvm.ppc.altivec.mfvscr
2029 // CHECK-LE: @llvm.ppc.altivec.mfvscr
2030
2031 /* vec_min */
2032 res_vsc = vec_min(vsc, vsc);
2033 // CHECK: @llvm.ppc.altivec.vminsb
2034 // CHECK-LE: @llvm.ppc.altivec.vminsb
2035
2036 res_vsc = vec_min(vbc, vsc);
2037 // CHECK: @llvm.ppc.altivec.vminsb
2038 // CHECK-LE: @llvm.ppc.altivec.vminsb
2039
2040 res_vsc = vec_min(vsc, vbc);
2041 // CHECK: @llvm.ppc.altivec.vminsb
2042 // CHECK-LE: @llvm.ppc.altivec.vminsb
2043
2044 res_vuc = vec_min(vuc, vuc);
2045 // CHECK: @llvm.ppc.altivec.vminub
2046 // CHECK-LE: @llvm.ppc.altivec.vminub
2047
2048 res_vuc = vec_min(vbc, vuc);
2049 // CHECK: @llvm.ppc.altivec.vminub
2050 // CHECK-LE: @llvm.ppc.altivec.vminub
2051
2052 res_vuc = vec_min(vuc, vbc);
2053 // CHECK: @llvm.ppc.altivec.vminub
2054 // CHECK-LE: @llvm.ppc.altivec.vminub
2055
2056 res_vs = vec_min(vs, vs);
2057 // CHECK: @llvm.ppc.altivec.vminsh
2058 // CHECK-LE: @llvm.ppc.altivec.vminsh
2059
2060 res_vs = vec_min(vbs, vs);
2061 // CHECK: @llvm.ppc.altivec.vminsh
2062 // CHECK-LE: @llvm.ppc.altivec.vminsh
2063
2064 res_vs = vec_min(vs, vbs);
2065 // CHECK: @llvm.ppc.altivec.vminsh
2066 // CHECK-LE: @llvm.ppc.altivec.vminsh
2067
2068 res_vus = vec_min(vus, vus);
2069 // CHECK: @llvm.ppc.altivec.vminuh
2070 // CHECK-LE: @llvm.ppc.altivec.vminuh
2071
2072 res_vus = vec_min(vbs, vus);
2073 // CHECK: @llvm.ppc.altivec.vminuh
2074 // CHECK-LE: @llvm.ppc.altivec.vminuh
2075
2076 res_vus = vec_min(vus, vbs);
2077 // CHECK: @llvm.ppc.altivec.vminuh
2078 // CHECK-LE: @llvm.ppc.altivec.vminuh
2079
2080 res_vi = vec_min(vi, vi);
2081 // CHECK: @llvm.ppc.altivec.vminsw
2082 // CHECK-LE: @llvm.ppc.altivec.vminsw
2083
2084 res_vi = vec_min(vbi, vi);
2085 // CHECK: @llvm.ppc.altivec.vminsw
2086 // CHECK-LE: @llvm.ppc.altivec.vminsw
2087
2088 res_vi = vec_min(vi, vbi);
2089 // CHECK: @llvm.ppc.altivec.vminsw
2090 // CHECK-LE: @llvm.ppc.altivec.vminsw
2091
2092 res_vui = vec_min(vui, vui);
2093 // CHECK: @llvm.ppc.altivec.vminuw
2094 // CHECK-LE: @llvm.ppc.altivec.vminuw
2095
2096 res_vui = vec_min(vbi, vui);
2097 // CHECK: @llvm.ppc.altivec.vminuw
2098 // CHECK-LE: @llvm.ppc.altivec.vminuw
2099
2100 res_vui = vec_min(vui, vbi);
2101 // CHECK: @llvm.ppc.altivec.vminuw
2102 // CHECK-LE: @llvm.ppc.altivec.vminuw
2103
2104 res_vf = vec_min(vf, vf);
2105 // CHECK: @llvm.ppc.altivec.vminfp
2106 // CHECK-LE: @llvm.ppc.altivec.vminfp
2107
2108 res_vsc = vec_vminsb(vsc, vsc);
2109 // CHECK: @llvm.ppc.altivec.vminsb
2110 // CHECK-LE: @llvm.ppc.altivec.vminsb
2111
2112 res_vsc = vec_vminsb(vbc, vsc);
2113 // CHECK: @llvm.ppc.altivec.vminsb
2114 // CHECK-LE: @llvm.ppc.altivec.vminsb
2115
2116 res_vsc = vec_vminsb(vsc, vbc);
2117 // CHECK: @llvm.ppc.altivec.vminsb
2118 // CHECK-LE: @llvm.ppc.altivec.vminsb
2119
2120 res_vuc = vec_vminub(vuc, vuc);
2121 // CHECK: @llvm.ppc.altivec.vminub
2122 // CHECK-LE: @llvm.ppc.altivec.vminub
2123
2124 res_vuc = vec_vminub(vbc, vuc);
2125 // CHECK: @llvm.ppc.altivec.vminub
2126 // CHECK-LE: @llvm.ppc.altivec.vminub
2127
2128 res_vuc = vec_vminub(vuc, vbc);
2129 // CHECK: @llvm.ppc.altivec.vminub
2130 // CHECK-LE: @llvm.ppc.altivec.vminub
2131
2132 res_vs = vec_vminsh(vs, vs);
2133 // CHECK: @llvm.ppc.altivec.vminsh
2134 // CHECK-LE: @llvm.ppc.altivec.vminsh
2135
2136 res_vs = vec_vminsh(vbs, vs);
2137 // CHECK: @llvm.ppc.altivec.vminsh
2138 // CHECK-LE: @llvm.ppc.altivec.vminsh
2139
2140 res_vs = vec_vminsh(vs, vbs);
2141 // CHECK: @llvm.ppc.altivec.vminsh
2142 // CHECK-LE: @llvm.ppc.altivec.vminsh
2143
2144 res_vus = vec_vminuh(vus, vus);
2145 // CHECK: @llvm.ppc.altivec.vminuh
2146 // CHECK-LE: @llvm.ppc.altivec.vminuh
2147
2148 res_vus = vec_vminuh(vbs, vus);
2149 // CHECK: @llvm.ppc.altivec.vminuh
2150 // CHECK-LE: @llvm.ppc.altivec.vminuh
2151
2152 res_vus = vec_vminuh(vus, vbs);
2153 // CHECK: @llvm.ppc.altivec.vminuh
2154 // CHECK-LE: @llvm.ppc.altivec.vminuh
2155
2156 res_vi = vec_vminsw(vi, vi);
2157 // CHECK: @llvm.ppc.altivec.vminsw
2158 // CHECK-LE: @llvm.ppc.altivec.vminsw
2159
2160 res_vi = vec_vminsw(vbi, vi);
2161 // CHECK: @llvm.ppc.altivec.vminsw
2162 // CHECK-LE: @llvm.ppc.altivec.vminsw
2163
2164 res_vi = vec_vminsw(vi, vbi);
2165 // CHECK: @llvm.ppc.altivec.vminsw
2166 // CHECK-LE: @llvm.ppc.altivec.vminsw
2167
2168 res_vui = vec_vminuw(vui, vui);
2169 // CHECK: @llvm.ppc.altivec.vminuw
2170 // CHECK-LE: @llvm.ppc.altivec.vminuw
2171
2172 res_vui = vec_vminuw(vbi, vui);
2173 // CHECK: @llvm.ppc.altivec.vminuw
2174 // CHECK-LE: @llvm.ppc.altivec.vminuw
2175
2176 res_vui = vec_vminuw(vui, vbi);
2177 // CHECK: @llvm.ppc.altivec.vminuw
2178 // CHECK-LE: @llvm.ppc.altivec.vminuw
2179
2180 res_vf = vec_vminfp(vf, vf);
2181 // CHECK: @llvm.ppc.altivec.vminfp
2182 // CHECK-LE: @llvm.ppc.altivec.vminfp
2183
2184 /* vec_mladd */
2185 res_vus = vec_mladd(vus, vus, vus);
2186 // CHECK: mul <8 x i16>
2187 // CHECK: add <8 x i16>
2188 // CHECK-LE: mul <8 x i16>
2189 // CHECK-LE: add <8 x i16>
2190
2191 res_vs = vec_mladd(vus, vs, vs);
2192 // CHECK: mul <8 x i16>
2193 // CHECK: add <8 x i16>
2194 // CHECK-LE: mul <8 x i16>
2195 // CHECK-LE: add <8 x i16>
2196
2197 res_vs = vec_mladd(vs, vus, vus);
2198 // CHECK: mul <8 x i16>
2199 // CHECK: add <8 x i16>
2200 // CHECK-LE: mul <8 x i16>
2201 // CHECK-LE: add <8 x i16>
2202
2203 res_vs = vec_mladd(vs, vs, vs);
2204 // CHECK: mul <8 x i16>
2205 // CHECK: add <8 x i16>
2206 // CHECK-LE: mul <8 x i16>
2207 // CHECK-LE: add <8 x i16>
2208
2209 /* vec_mradds */
2210 res_vs = vec_mradds(vs, vs, vs);
2211 // CHECK: @llvm.ppc.altivec.vmhraddshs
2212 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2213
2214 res_vs = vec_vmhraddshs(vs, vs, vs);
2215 // CHECK: @llvm.ppc.altivec.vmhraddshs
2216 // CHECK-LE: @llvm.ppc.altivec.vmhraddshs
2217
2218 /* vec_msum */
2219 res_vi = vec_msum(vsc, vuc, vi);
2220 // CHECK: @llvm.ppc.altivec.vmsummbm
2221 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2222
2223 res_vui = vec_msum(vuc, vuc, vui);
2224 // CHECK: @llvm.ppc.altivec.vmsumubm
2225 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2226
2227 res_vi = vec_msum(vs, vs, vi);
2228 // CHECK: @llvm.ppc.altivec.vmsumshm
2229 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2230
2231 res_vui = vec_msum(vus, vus, vui);
2232 // CHECK: @llvm.ppc.altivec.vmsumuhm
2233 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2234
2235 res_vi = vec_vmsummbm(vsc, vuc, vi);
2236 // CHECK: @llvm.ppc.altivec.vmsummbm
2237 // CHECK-LE: @llvm.ppc.altivec.vmsummbm
2238
2239 res_vui = vec_vmsumubm(vuc, vuc, vui);
2240 // CHECK: @llvm.ppc.altivec.vmsumubm
2241 // CHECK-LE: @llvm.ppc.altivec.vmsumubm
2242
2243 res_vi = vec_vmsumshm(vs, vs, vi);
2244 // CHECK: @llvm.ppc.altivec.vmsumshm
2245 // CHECK-LE: @llvm.ppc.altivec.vmsumshm
2246
2247 res_vui = vec_vmsumuhm(vus, vus, vui);
2248 // CHECK: @llvm.ppc.altivec.vmsumuhm
2249 // CHECK-LE: @llvm.ppc.altivec.vmsumuhm
2250
2251 /* vec_msums */
2252 res_vi = vec_msums(vs, vs, vi);
2253 // CHECK: @llvm.ppc.altivec.vmsumshs
2254 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2255
2256 res_vui = vec_msums(vus, vus, vui);
2257 // CHECK: @llvm.ppc.altivec.vmsumuhs
2258 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2259
2260 res_vi = vec_vmsumshs(vs, vs, vi);
2261 // CHECK: @llvm.ppc.altivec.vmsumshs
2262 // CHECK-LE: @llvm.ppc.altivec.vmsumshs
2263
2264 res_vui = vec_vmsumuhs(vus, vus, vui);
2265 // CHECK: @llvm.ppc.altivec.vmsumuhs
2266 // CHECK-LE: @llvm.ppc.altivec.vmsumuhs
2267
2268 /* vec_mtvscr */
2269 vec_mtvscr(vsc);
2270 // CHECK: @llvm.ppc.altivec.mtvscr
2271 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2272
2273 vec_mtvscr(vuc);
2274 // CHECK: @llvm.ppc.altivec.mtvscr
2275 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2276
2277 vec_mtvscr(vbc);
2278 // CHECK: @llvm.ppc.altivec.mtvscr
2279 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2280
2281 vec_mtvscr(vs);
2282 // CHECK: @llvm.ppc.altivec.mtvscr
2283 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2284
2285 vec_mtvscr(vus);
2286 // CHECK: @llvm.ppc.altivec.mtvscr
2287 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2288
2289 vec_mtvscr(vbs);
2290 // CHECK: @llvm.ppc.altivec.mtvscr
2291 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2292
2293 vec_mtvscr(vp);
2294 // CHECK: @llvm.ppc.altivec.mtvscr
2295 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2296
2297 vec_mtvscr(vi);
2298 // CHECK: @llvm.ppc.altivec.mtvscr
2299 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2300
2301 vec_mtvscr(vui);
2302 // CHECK: @llvm.ppc.altivec.mtvscr
2303 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2304
2305 vec_mtvscr(vbi);
2306 // CHECK: @llvm.ppc.altivec.mtvscr
2307 // CHECK-LE: @llvm.ppc.altivec.mtvscr
2308
2309 /* vec_mul */
2310 res_vsc = vec_mul(vsc, vsc);
2311 // CHECK: mul <16 x i8>
2312 // CHECK-LE: mul <16 x i8>
2313
2314 res_vuc = vec_mul(vuc, vuc);
2315 // CHECK: mul <16 x i8>
2316 // CHECK-LE: mul <16 x i8>
2317
2318 res_vs = vec_mul(vs, vs);
2319 // CHECK: mul <8 x i16>
2320 // CHECK-LE: mul <8 x i16>
2321
2322 res_vus = vec_mul(vus, vus);
2323 // CHECK: mul <8 x i16>
2324 // CHECK-LE: mul <8 x i16>
2325
2326 res_vi = vec_mul(vi, vi);
2327 // CHECK: mul <4 x i32>
2328 // CHECK-LE: mul <4 x i32>
2329
2330 res_vui = vec_mul(vui, vui);
2331 // CHECK: mul <4 x i32>
2332 // CHECK-LE: mul <4 x i32>
2333
2334 /* vec_mule */
2335 res_vs = vec_mule(vsc, vsc);
2336 // CHECK: @llvm.ppc.altivec.vmulesb
2337 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2338
2339 res_vus = vec_mule(vuc, vuc);
2340 // CHECK: @llvm.ppc.altivec.vmuleub
2341 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2342
2343 res_vi = vec_mule(vs, vs);
2344 // CHECK: @llvm.ppc.altivec.vmulesh
2345 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2346
2347 res_vui = vec_mule(vus, vus);
2348 // CHECK: @llvm.ppc.altivec.vmuleuh
2349 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2350
2351 res_vs = vec_vmulesb(vsc, vsc);
2352 // CHECK: @llvm.ppc.altivec.vmulesb
2353 // CHECK-LE: @llvm.ppc.altivec.vmulosb
2354
2355 res_vus = vec_vmuleub(vuc, vuc);
2356 // CHECK: @llvm.ppc.altivec.vmuleub
2357 // CHECK-LE: @llvm.ppc.altivec.vmuloub
2358
2359 res_vi = vec_vmulesh(vs, vs);
2360 // CHECK: @llvm.ppc.altivec.vmulesh
2361 // CHECK-LE: @llvm.ppc.altivec.vmulosh
2362
2363 res_vui = vec_vmuleuh(vus, vus);
2364 // CHECK: @llvm.ppc.altivec.vmuleuh
2365 // CHECK-LE: @llvm.ppc.altivec.vmulouh
2366
2367 /* vec_mulo */
2368 res_vs = vec_mulo(vsc, vsc);
2369 // CHECK: @llvm.ppc.altivec.vmulosb
2370 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2371
2372 res_vus = vec_mulo(vuc, vuc);
2373 // CHECK: @llvm.ppc.altivec.vmuloub
2374 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2375
2376 res_vi = vec_mulo(vs, vs);
2377 // CHECK: @llvm.ppc.altivec.vmulosh
2378 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2379
2380 res_vui = vec_mulo(vus, vus);
2381 // CHECK: @llvm.ppc.altivec.vmulouh
2382 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2383
2384 res_vs = vec_vmulosb(vsc, vsc);
2385 // CHECK: @llvm.ppc.altivec.vmulosb
2386 // CHECK-LE: @llvm.ppc.altivec.vmulesb
2387
2388 res_vus = vec_vmuloub(vuc, vuc);
2389 // CHECK: @llvm.ppc.altivec.vmuloub
2390 // CHECK-LE: @llvm.ppc.altivec.vmuleub
2391
2392 res_vi = vec_vmulosh(vs, vs);
2393 // CHECK: @llvm.ppc.altivec.vmulosh
2394 // CHECK-LE: @llvm.ppc.altivec.vmulesh
2395
2396 res_vui = vec_vmulouh(vus, vus);
2397 // CHECK: @llvm.ppc.altivec.vmulouh
2398 // CHECK-LE: @llvm.ppc.altivec.vmuleuh
2399
2400 /* vec_nmsub */
2401 res_vf = vec_nmsub(vf, vf, vf);
2402 // CHECK: @llvm.ppc.altivec.vnmsubfp
2403 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2404
2405 res_vf = vec_vnmsubfp(vf, vf, vf);
2406 // CHECK: @llvm.ppc.altivec.vnmsubfp
2407 // CHECK-LE: @llvm.ppc.altivec.vnmsubfp
2408
2409 /* vec_nor */
2410 res_vsc = vec_nor(vsc, vsc);
2411 // CHECK: or <16 x i8>
2412 // CHECK: xor <16 x i8>
2413 // CHECK-LE: or <16 x i8>
2414 // CHECK-LE: xor <16 x i8>
2415
2416 res_vuc = vec_nor(vuc, vuc);
2417 // CHECK: or <16 x i8>
2418 // CHECK: xor <16 x i8>
2419 // CHECK-LE: or <16 x i8>
2420 // CHECK-LE: xor <16 x i8>
2421
2422 res_vbc = vec_nor(vbc, vbc);
2423 // CHECK: or <16 x i8>
2424 // CHECK: xor <16 x i8>
2425 // CHECK-LE: or <16 x i8>
2426 // CHECK-LE: xor <16 x i8>
2427
2428 res_vs = vec_nor(vs, vs);
2429 // CHECK: or <8 x i16>
2430 // CHECK: xor <8 x i16>
2431 // CHECK-LE: or <8 x i16>
2432 // CHECK-LE: xor <8 x i16>
2433
2434 res_vus = vec_nor(vus, vus);
2435 // CHECK: or <8 x i16>
2436 // CHECK: xor <8 x i16>
2437 // CHECK-LE: or <8 x i16>
2438 // CHECK-LE: xor <8 x i16>
2439
2440 res_vbs = vec_nor(vbs, vbs);
2441 // CHECK: or <8 x i16>
2442 // CHECK: xor <8 x i16>
2443 // CHECK-LE: or <8 x i16>
2444 // CHECK-LE: xor <8 x i16>
2445
2446 res_vi = vec_nor(vi, vi);
2447 // CHECK: or <4 x i32>
2448 // CHECK: xor <4 x i32>
2449 // CHECK-LE: or <4 x i32>
2450 // CHECK-LE: xor <4 x i32>
2451
2452 res_vui = vec_nor(vui, vui);
2453 // CHECK: or <4 x i32>
2454 // CHECK: xor <4 x i32>
2455 // CHECK-LE: or <4 x i32>
2456 // CHECK-LE: xor <4 x i32>
2457
2458 res_vbi = vec_nor(vbi, vbi);
2459 // CHECK: or <4 x i32>
2460 // CHECK: xor <4 x i32>
2461 // CHECK-LE: or <4 x i32>
2462 // CHECK-LE: xor <4 x i32>
2463
2464 res_vf = vec_nor(vf, vf);
2465 // CHECK: or <4 x i32>
2466 // CHECK: xor <4 x i32>
2467 // CHECK-LE: or <4 x i32>
2468 // CHECK-LE: xor <4 x i32>
2469
2470 res_vsc = vec_vnor(vsc, vsc);
2471 // CHECK: or <16 x i8>
2472 // CHECK: xor <16 x i8>
2473 // CHECK-LE: or <16 x i8>
2474 // CHECK-LE: xor <16 x i8>
2475
2476 res_vuc = vec_vnor(vuc, vuc);
2477 // CHECK: or <16 x i8>
2478 // CHECK: xor <16 x i8>
2479 // CHECK-LE: or <16 x i8>
2480 // CHECK-LE: xor <16 x i8>
2481
2482 res_vbc = vec_vnor(vbc, vbc);
2483 // CHECK: or <16 x i8>
2484 // CHECK: xor <16 x i8>
2485 // CHECK-LE: or <16 x i8>
2486 // CHECK-LE: xor <16 x i8>
2487
2488 res_vs = vec_vnor(vs, vs);
2489 // CHECK: or <8 x i16>
2490 // CHECK: xor <8 x i16>
2491 // CHECK-LE: or <8 x i16>
2492 // CHECK-LE: xor <8 x i16>
2493
2494 res_vus = vec_vnor(vus, vus);
2495 // CHECK: or <8 x i16>
2496 // CHECK: xor <8 x i16>
2497 // CHECK-LE: or <8 x i16>
2498 // CHECK-LE: xor <8 x i16>
2499
2500 res_vbs = vec_vnor(vbs, vbs);
2501 // CHECK: or <8 x i16>
2502 // CHECK: xor <8 x i16>
2503 // CHECK-LE: or <8 x i16>
2504 // CHECK-LE: xor <8 x i16>
2505
2506 res_vi = vec_vnor(vi, vi);
2507 // CHECK: or <4 x i32>
2508 // CHECK: xor <4 x i32>
2509 // CHECK-LE: or <4 x i32>
2510 // CHECK-LE: xor <4 x i32>
2511
2512 res_vui = vec_vnor(vui, vui);
2513 // CHECK: or <4 x i32>
2514 // CHECK: xor <4 x i32>
2515 // CHECK-LE: or <4 x i32>
2516 // CHECK-LE: xor <4 x i32>
2517
2518 res_vbi = vec_vnor(vbi, vbi);
2519 // CHECK: or <4 x i32>
2520 // CHECK: xor <4 x i32>
2521 // CHECK-LE: or <4 x i32>
2522 // CHECK-LE: xor <4 x i32>
2523
2524 res_vf = vec_vnor(vf, vf);
2525 // CHECK: or <4 x i32>
2526 // CHECK: xor <4 x i32>
2527 // CHECK-LE: or <4 x i32>
2528 // CHECK-LE: xor <4 x i32>
2529
2530 /* vec_or */
2531 res_vsc = vec_or(vsc, vsc);
2532 // CHECK: or <16 x i8>
2533 // CHECK-LE: or <16 x i8>
2534
2535 res_vsc = vec_or(vbc, vsc);
2536 // CHECK: or <16 x i8>
2537 // CHECK-LE: or <16 x i8>
2538
2539 res_vsc = vec_or(vsc, vbc);
2540 // CHECK: or <16 x i8>
2541 // CHECK-LE: or <16 x i8>
2542
2543 res_vuc = vec_or(vuc, vuc);
2544 // CHECK: or <16 x i8>
2545 // CHECK-LE: or <16 x i8>
2546
2547 res_vuc = vec_or(vbc, vuc);
2548 // CHECK: or <16 x i8>
2549 // CHECK-LE: or <16 x i8>
2550
2551 res_vuc = vec_or(vuc, vbc);
2552 // CHECK: or <16 x i8>
2553 // CHECK-LE: or <16 x i8>
2554
2555 res_vbc = vec_or(vbc, vbc);
2556 // CHECK: or <16 x i8>
2557 // CHECK-LE: or <16 x i8>
2558
2559 res_vs = vec_or(vs, vs);
2560 // CHECK: or <8 x i16>
2561 // CHECK-LE: or <8 x i16>
2562
2563 res_vs = vec_or(vbs, vs);
2564 // CHECK: or <8 x i16>
2565 // CHECK-LE: or <8 x i16>
2566
2567 res_vs = vec_or(vs, vbs);
2568 // CHECK: or <8 x i16>
2569 // CHECK-LE: or <8 x i16>
2570
2571 res_vus = vec_or(vus, vus);
2572 // CHECK: or <8 x i16>
2573 // CHECK-LE: or <8 x i16>
2574
2575 res_vus = vec_or(vbs, vus);
2576 // CHECK: or <8 x i16>
2577 // CHECK-LE: or <8 x i16>
2578
2579 res_vus = vec_or(vus, vbs);
2580 // CHECK: or <8 x i16>
2581 // CHECK-LE: or <8 x i16>
2582
2583 res_vbs = vec_or(vbs, vbs);
2584 // CHECK: or <8 x i16>
2585 // CHECK-LE: or <8 x i16>
2586
2587 res_vi = vec_or(vi, vi);
2588 // CHECK: or <4 x i32>
2589 // CHECK-LE: or <4 x i32>
2590
2591 res_vi = vec_or(vbi, vi);
2592 // CHECK: or <4 x i32>
2593 // CHECK-LE: or <4 x i32>
2594
2595 res_vi = vec_or(vi, vbi);
2596 // CHECK: or <4 x i32>
2597 // CHECK-LE: or <4 x i32>
2598
2599 res_vui = vec_or(vui, vui);
2600 // CHECK: or <4 x i32>
2601 // CHECK-LE: or <4 x i32>
2602
2603 res_vui = vec_or(vbi, vui);
2604 // CHECK: or <4 x i32>
2605 // CHECK-LE: or <4 x i32>
2606
2607 res_vui = vec_or(vui, vbi);
2608 // CHECK: or <4 x i32>
2609 // CHECK-LE: or <4 x i32>
2610
2611 res_vbi = vec_or(vbi, vbi);
2612 // CHECK: or <4 x i32>
2613 // CHECK-LE: or <4 x i32>
2614
2615 res_vf = vec_or(vf, vf);
2616 // CHECK: or <4 x i32>
2617 // CHECK-LE: or <4 x i32>
2618
2619 res_vf = vec_or(vbi, vf);
2620 // CHECK: or <4 x i32>
2621 // CHECK-LE: or <4 x i32>
2622
2623 res_vf = vec_or(vf, vbi);
2624 // CHECK: or <4 x i32>
2625 // CHECK-LE: or <4 x i32>
2626
2627 res_vsc = vec_vor(vsc, vsc);
2628 // CHECK: or <16 x i8>
2629 // CHECK-LE: or <16 x i8>
2630
2631 res_vsc = vec_vor(vbc, vsc);
2632 // CHECK: or <16 x i8>
2633 // CHECK-LE: or <16 x i8>
2634
2635 res_vsc = vec_vor(vsc, vbc);
2636 // CHECK: or <16 x i8>
2637 // CHECK-LE: or <16 x i8>
2638
2639 res_vuc = vec_vor(vuc, vuc);
2640 // CHECK: or <16 x i8>
2641 // CHECK-LE: or <16 x i8>
2642
2643 res_vuc = vec_vor(vbc, vuc);
2644 // CHECK: or <16 x i8>
2645 // CHECK-LE: or <16 x i8>
2646
2647 res_vuc = vec_vor(vuc, vbc);
2648 // CHECK: or <16 x i8>
2649 // CHECK-LE: or <16 x i8>
2650
2651 res_vbc = vec_vor(vbc, vbc);
2652 // CHECK: or <16 x i8>
2653 // CHECK-LE: or <16 x i8>
2654
2655 res_vs = vec_vor(vs, vs);
2656 // CHECK: or <8 x i16>
2657 // CHECK-LE: or <8 x i16>
2658
2659 res_vs = vec_vor(vbs, vs);
2660 // CHECK: or <8 x i16>
2661 // CHECK-LE: or <8 x i16>
2662
2663 res_vs = vec_vor(vs, vbs);
2664 // CHECK: or <8 x i16>
2665 // CHECK-LE: or <8 x i16>
2666
2667 res_vus = vec_vor(vus, vus);
2668 // CHECK: or <8 x i16>
2669 // CHECK-LE: or <8 x i16>
2670
2671 res_vus = vec_vor(vbs, vus);
2672 // CHECK: or <8 x i16>
2673 // CHECK-LE: or <8 x i16>
2674
2675 res_vus = vec_vor(vus, vbs);
2676 // CHECK: or <8 x i16>
2677 // CHECK-LE: or <8 x i16>
2678
2679 res_vbs = vec_vor(vbs, vbs);
2680 // CHECK: or <8 x i16>
2681 // CHECK-LE: or <8 x i16>
2682
2683 res_vi = vec_vor(vi, vi);
2684 // CHECK: or <4 x i32>
2685 // CHECK-LE: or <4 x i32>
2686
2687 res_vi = vec_vor(vbi, vi);
2688 // CHECK: or <4 x i32>
2689 // CHECK-LE: or <4 x i32>
2690
2691 res_vi = vec_vor(vi, vbi);
2692 // CHECK: or <4 x i32>
2693 // CHECK-LE: or <4 x i32>
2694
2695 res_vui = vec_vor(vui, vui);
2696 // CHECK: or <4 x i32>
2697 // CHECK-LE: or <4 x i32>
2698
2699 res_vui = vec_vor(vbi, vui);
2700 // CHECK: or <4 x i32>
2701 // CHECK-LE: or <4 x i32>
2702
2703 res_vui = vec_vor(vui, vbi);
2704 // CHECK: or <4 x i32>
2705 // CHECK-LE: or <4 x i32>
2706
2707 res_vbi = vec_vor(vbi, vbi);
2708 // CHECK: or <4 x i32>
2709 // CHECK-LE: or <4 x i32>
2710
2711 res_vf = vec_vor(vf, vf);
2712 // CHECK: or <4 x i32>
2713 // CHECK-LE: or <4 x i32>
2714
2715 res_vf = vec_vor(vbi, vf);
2716 // CHECK: or <4 x i32>
2717 // CHECK-LE: or <4 x i32>
2718
2719 res_vf = vec_vor(vf, vbi);
2720 // CHECK: or <4 x i32>
2721 // CHECK-LE: or <4 x i32>
2722
2723 /* vec_pack */
2724 res_vsc = vec_pack(vs, vs);
2725 // CHECK: @llvm.ppc.altivec.vperm
2726 // CHECK-LE: @llvm.ppc.altivec.vperm
2727
2728 res_vuc = vec_pack(vus, vus);
2729 // CHECK: @llvm.ppc.altivec.vperm
2730 // CHECK-LE: @llvm.ppc.altivec.vperm
2731
2732 res_vbc = vec_pack(vbs, vbs);
2733 // CHECK: @llvm.ppc.altivec.vperm
2734 // CHECK-LE: @llvm.ppc.altivec.vperm
2735
2736 res_vs = vec_pack(vi, vi);
2737 // CHECK: @llvm.ppc.altivec.vperm
2738 // CHECK-LE: @llvm.ppc.altivec.vperm
2739
2740 res_vus = vec_pack(vui, vui);
2741 // CHECK: @llvm.ppc.altivec.vperm
2742 // CHECK-LE: @llvm.ppc.altivec.vperm
2743
2744 res_vbs = vec_pack(vbi, vbi);
2745 // CHECK: @llvm.ppc.altivec.vperm
2746 // CHECK-LE: @llvm.ppc.altivec.vperm
2747
2748 res_vsc = vec_vpkuhum(vs, vs);
2749 // CHECK: @llvm.ppc.altivec.vperm
2750 // CHECK-LE: @llvm.ppc.altivec.vperm
2751
2752 res_vuc = vec_vpkuhum(vus, vus);
2753 // CHECK: @llvm.ppc.altivec.vperm
2754 // CHECK-LE: @llvm.ppc.altivec.vperm
2755
2756 res_vbc = vec_vpkuhum(vbs, vbs);
2757 // CHECK: @llvm.ppc.altivec.vperm
2758 // CHECK-LE: @llvm.ppc.altivec.vperm
2759
2760 res_vs = vec_vpkuwum(vi, vi);
2761 // CHECK: @llvm.ppc.altivec.vperm
2762 // CHECK-LE: @llvm.ppc.altivec.vperm
2763
2764 res_vus = vec_vpkuwum(vui, vui);
2765 // CHECK: @llvm.ppc.altivec.vperm
2766 // CHECK-LE: @llvm.ppc.altivec.vperm
2767
2768 res_vbs = vec_vpkuwum(vbi, vbi);
2769 // CHECK: @llvm.ppc.altivec.vperm
2770 // CHECK-LE: @llvm.ppc.altivec.vperm
2771
2772 /* vec_packpx */
2773 res_vp = vec_packpx(vui, vui);
2774 // CHECK: @llvm.ppc.altivec.vpkpx
2775 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2776
2777 res_vp = vec_vpkpx(vui, vui);
2778 // CHECK: @llvm.ppc.altivec.vpkpx
2779 // CHECK-LE: @llvm.ppc.altivec.vpkpx
2780
2781 /* vec_packs */
2782 res_vsc = vec_packs(vs, vs);
2783 // CHECK: @llvm.ppc.altivec.vpkshss
2784 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2785
2786 res_vuc = vec_packs(vus, vus);
2787 // CHECK: @llvm.ppc.altivec.vpkuhus
2788 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2789
2790 res_vs = vec_packs(vi, vi);
2791 // CHECK: @llvm.ppc.altivec.vpkswss
2792 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2793
2794 res_vus = vec_packs(vui, vui);
2795 // CHECK: @llvm.ppc.altivec.vpkuwus
2796 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2797
2798 res_vsc = vec_vpkshss(vs, vs);
2799 // CHECK: @llvm.ppc.altivec.vpkshss
2800 // CHECK-LE: @llvm.ppc.altivec.vpkshss
2801
2802 res_vuc = vec_vpkuhus(vus, vus);
2803 // CHECK: @llvm.ppc.altivec.vpkuhus
2804 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2805
2806 res_vs = vec_vpkswss(vi, vi);
2807 // CHECK: @llvm.ppc.altivec.vpkswss
2808 // CHECK-LE: @llvm.ppc.altivec.vpkswss
2809
2810 res_vus = vec_vpkuwus(vui, vui);
2811 // CHECK: @llvm.ppc.altivec.vpkuwus
2812 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2813
2814 /* vec_packsu */
2815 res_vuc = vec_packsu(vs, vs);
2816 // CHECK: @llvm.ppc.altivec.vpkshus
2817 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2818
2819 res_vuc = vec_packsu(vus, vus);
2820 // CHECK: @llvm.ppc.altivec.vpkuhus
2821 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2822
2823 res_vus = vec_packsu(vi, vi);
2824 // CHECK: @llvm.ppc.altivec.vpkswus
2825 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2826
2827 res_vus = vec_packsu(vui, vui);
2828 // CHECK: @llvm.ppc.altivec.vpkuwus
2829 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2830
2831 res_vuc = vec_vpkshus(vs, vs);
2832 // CHECK: @llvm.ppc.altivec.vpkshus
2833 // CHECK-LE: @llvm.ppc.altivec.vpkshus
2834
2835 res_vuc = vec_vpkshus(vus, vus);
2836 // CHECK: @llvm.ppc.altivec.vpkuhus
2837 // CHECK-LE: @llvm.ppc.altivec.vpkuhus
2838
2839 res_vus = vec_vpkswus(vi, vi);
2840 // CHECK: @llvm.ppc.altivec.vpkswus
2841 // CHECK-LE: @llvm.ppc.altivec.vpkswus
2842
2843 res_vus = vec_vpkswus(vui, vui);
2844 // CHECK: @llvm.ppc.altivec.vpkuwus
2845 // CHECK-LE: @llvm.ppc.altivec.vpkuwus
2846
2847 /* vec_perm */
2848 res_vsc = vec_perm(vsc, vsc, vuc);
2849 // CHECK: @llvm.ppc.altivec.vperm
2850 // CHECK-LE: @llvm.ppc.altivec.vperm
2851
2852 res_vuc = vec_perm(vuc, vuc, vuc);
2853 // CHECK: @llvm.ppc.altivec.vperm
2854 // CHECK-LE: @llvm.ppc.altivec.vperm
2855
2856 res_vbc = vec_perm(vbc, vbc, vuc);
2857 // CHECK: @llvm.ppc.altivec.vperm
2858 // CHECK-LE: @llvm.ppc.altivec.vperm
2859
2860 res_vs = vec_perm(vs, vs, vuc);
2861 // CHECK: @llvm.ppc.altivec.vperm
2862 // CHECK-LE: @llvm.ppc.altivec.vperm
2863
2864 res_vus = vec_perm(vus, vus, vuc);
2865 // CHECK: @llvm.ppc.altivec.vperm
2866 // CHECK-LE: @llvm.ppc.altivec.vperm
2867
2868 res_vbs = vec_perm(vbs, vbs, vuc);
2869 // CHECK: @llvm.ppc.altivec.vperm
2870 // CHECK-LE: @llvm.ppc.altivec.vperm
2871
2872 res_vp = vec_perm(vp, vp, vuc);
2873 // CHECK: @llvm.ppc.altivec.vperm
2874 // CHECK-LE: @llvm.ppc.altivec.vperm
2875
2876 res_vi = vec_perm(vi, vi, vuc);
2877 // CHECK: @llvm.ppc.altivec.vperm
2878 // CHECK-LE: @llvm.ppc.altivec.vperm
2879
2880 res_vui = vec_perm(vui, vui, vuc);
2881 // CHECK: @llvm.ppc.altivec.vperm
2882 // CHECK-LE: @llvm.ppc.altivec.vperm
2883
2884 res_vbi = vec_perm(vbi, vbi, vuc);
2885 // CHECK: @llvm.ppc.altivec.vperm
2886 // CHECK-LE: @llvm.ppc.altivec.vperm
2887
2888 res_vf = vec_perm(vf, vf, vuc);
2889 // CHECK: @llvm.ppc.altivec.vperm
2890 // CHECK-LE: @llvm.ppc.altivec.vperm
2891
2892 res_vsc = vec_vperm(vsc, vsc, vuc);
2893 // CHECK: @llvm.ppc.altivec.vperm
2894 // CHECK-LE: @llvm.ppc.altivec.vperm
2895
2896 res_vuc = vec_vperm(vuc, vuc, vuc);
2897 // CHECK: @llvm.ppc.altivec.vperm
2898 // CHECK-LE: @llvm.ppc.altivec.vperm
2899
2900 res_vbc = vec_vperm(vbc, vbc, vuc);
2901 // CHECK: @llvm.ppc.altivec.vperm
2902 // CHECK-LE: @llvm.ppc.altivec.vperm
2903
2904 res_vs = vec_vperm(vs, vs, vuc);
2905 // CHECK: @llvm.ppc.altivec.vperm
2906 // CHECK-LE: @llvm.ppc.altivec.vperm
2907
2908 res_vus = vec_vperm(vus, vus, vuc);
2909 // CHECK: @llvm.ppc.altivec.vperm
2910 // CHECK-LE: @llvm.ppc.altivec.vperm
2911
2912 res_vbs = vec_vperm(vbs, vbs, vuc);
2913 // CHECK: @llvm.ppc.altivec.vperm
2914 // CHECK-LE: @llvm.ppc.altivec.vperm
2915
2916 res_vp = vec_vperm(vp, vp, vuc);
2917 // CHECK: @llvm.ppc.altivec.vperm
2918 // CHECK-LE: @llvm.ppc.altivec.vperm
2919
2920 res_vi = vec_vperm(vi, vi, vuc);
2921 // CHECK: @llvm.ppc.altivec.vperm
2922 // CHECK-LE: @llvm.ppc.altivec.vperm
2923
2924 res_vui = vec_vperm(vui, vui, vuc);
2925 // CHECK: @llvm.ppc.altivec.vperm
2926 // CHECK-LE: @llvm.ppc.altivec.vperm
2927
2928 res_vbi = vec_vperm(vbi, vbi, vuc);
2929 // CHECK: @llvm.ppc.altivec.vperm
2930 // CHECK-LE: @llvm.ppc.altivec.vperm
2931
2932 res_vf = vec_vperm(vf, vf, vuc);
2933 // CHECK: @llvm.ppc.altivec.vperm
2934 // CHECK-LE: @llvm.ppc.altivec.vperm
2935
2936 /* vec_re */
2937 res_vf = vec_re(vf);
2938 // CHECK: @llvm.ppc.altivec.vrefp
2939 // CHECK-LE: @llvm.ppc.altivec.vrefp
2940
2941 res_vf = vec_vrefp(vf);
2942 // CHECK: @llvm.ppc.altivec.vrefp
2943 // CHECK-LE: @llvm.ppc.altivec.vrefp
2944
2945 /* vec_rl */
2946 res_vsc = vec_rl(vsc, vuc);
2947 // CHECK: @llvm.ppc.altivec.vrlb
2948 // CHECK-LE: @llvm.ppc.altivec.vrlb
2949
2950 res_vuc = vec_rl(vuc, vuc);
2951 // CHECK: @llvm.ppc.altivec.vrlb
2952 // CHECK-LE: @llvm.ppc.altivec.vrlb
2953
2954 res_vs = vec_rl(vs, vus);
2955 // CHECK: @llvm.ppc.altivec.vrlh
2956 // CHECK-LE: @llvm.ppc.altivec.vrlh
2957
2958 res_vus = vec_rl(vus, vus);
2959 // CHECK: @llvm.ppc.altivec.vrlh
2960 // CHECK-LE: @llvm.ppc.altivec.vrlh
2961
2962 res_vi = vec_rl(vi, vui);
2963 // CHECK: @llvm.ppc.altivec.vrlw
2964 // CHECK-LE: @llvm.ppc.altivec.vrlw
2965
2966 res_vui = vec_rl(vui, vui);
2967 // CHECK: @llvm.ppc.altivec.vrlw
2968 // CHECK-LE: @llvm.ppc.altivec.vrlw
2969
2970 res_vsc = vec_vrlb(vsc, vuc);
2971 // CHECK: @llvm.ppc.altivec.vrlb
2972 // CHECK-LE: @llvm.ppc.altivec.vrlb
2973
2974 res_vuc = vec_vrlb(vuc, vuc);
2975 // CHECK: @llvm.ppc.altivec.vrlb
2976 // CHECK-LE: @llvm.ppc.altivec.vrlb
2977
2978 res_vs = vec_vrlh(vs, vus);
2979 // CHECK: @llvm.ppc.altivec.vrlh
2980 // CHECK-LE: @llvm.ppc.altivec.vrlh
2981
2982 res_vus = vec_vrlh(vus, vus);
2983 // CHECK: @llvm.ppc.altivec.vrlh
2984 // CHECK-LE: @llvm.ppc.altivec.vrlh
2985
2986 res_vi = vec_vrlw(vi, vui);
2987 // CHECK: @llvm.ppc.altivec.vrlw
2988 // CHECK-LE: @llvm.ppc.altivec.vrlw
2989
2990 res_vui = vec_vrlw(vui, vui);
2991 // CHECK: @llvm.ppc.altivec.vrlw
2992 // CHECK-LE: @llvm.ppc.altivec.vrlw
2993
2994 /* vec_round */
2995 res_vf = vec_round(vf);
2996 // CHECK: @llvm.ppc.altivec.vrfin
2997 // CHECK-LE: @llvm.ppc.altivec.vrfin
2998
2999 res_vf = vec_vrfin(vf);
3000 // CHECK: @llvm.ppc.altivec.vrfin
3001 // CHECK-LE: @llvm.ppc.altivec.vrfin
3002
3003 /* vec_rsqrte */
3004 res_vf = vec_rsqrte(vf);
3005 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3006 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3007
3008 res_vf = vec_vrsqrtefp(vf);
3009 // CHECK: @llvm.ppc.altivec.vrsqrtefp
3010 // CHECK-LE: @llvm.ppc.altivec.vrsqrtefp
3011
3012 /* vec_sel */
3013 res_vsc = vec_sel(vsc, vsc, vuc);
3014 // CHECK: xor <16 x i8>
3015 // CHECK: and <16 x i8>
3016 // CHECK: and <16 x i8>
3017 // CHECK: or <16 x i8>
3018 // CHECK-LE: xor <16 x i8>
3019 // CHECK-LE: and <16 x i8>
3020 // CHECK-LE: and <16 x i8>
3021 // CHECK-LE: or <16 x i8>
3022
3023 res_vsc = vec_sel(vsc, vsc, vbc);
3024 // CHECK: xor <16 x i8>
3025 // CHECK: and <16 x i8>
3026 // CHECK: and <16 x i8>
3027 // CHECK: or <16 x i8>
3028 // CHECK-LE: xor <16 x i8>
3029 // CHECK-LE: and <16 x i8>
3030 // CHECK-LE: and <16 x i8>
3031 // CHECK-LE: or <16 x i8>
3032
3033 res_vuc = vec_sel(vuc, vuc, vuc);
3034 // CHECK: xor <16 x i8>
3035 // CHECK: and <16 x i8>
3036 // CHECK: and <16 x i8>
3037 // CHECK: or <16 x i8>
3038 // CHECK-LE: xor <16 x i8>
3039 // CHECK-LE: and <16 x i8>
3040 // CHECK-LE: and <16 x i8>
3041 // CHECK-LE: or <16 x i8>
3042
3043 res_vuc = vec_sel(vuc, vuc, vbc);
3044 // CHECK: xor <16 x i8>
3045 // CHECK: and <16 x i8>
3046 // CHECK: and <16 x i8>
3047 // CHECK: or <16 x i8>
3048 // CHECK-LE: xor <16 x i8>
3049 // CHECK-LE: and <16 x i8>
3050 // CHECK-LE: and <16 x i8>
3051 // CHECK-LE: or <16 x i8>
3052
3053 res_vbc = vec_sel(vbc, vbc, vuc);
3054 // CHECK: xor <16 x i8>
3055 // CHECK: and <16 x i8>
3056 // CHECK: and <16 x i8>
3057 // CHECK: or <16 x i8>
3058 // CHECK-LE: xor <16 x i8>
3059 // CHECK-LE: and <16 x i8>
3060 // CHECK-LE: and <16 x i8>
3061 // CHECK-LE: or <16 x i8>
3062
3063 res_vbc = vec_sel(vbc, vbc, vbc);
3064 // CHECK: xor <16 x i8>
3065 // CHECK: and <16 x i8>
3066 // CHECK: and <16 x i8>
3067 // CHECK: or <16 x i8>
3068 // CHECK-LE: xor <16 x i8>
3069 // CHECK-LE: and <16 x i8>
3070 // CHECK-LE: and <16 x i8>
3071 // CHECK-LE: or <16 x i8>
3072
3073 res_vs = vec_sel(vs, vs, vus);
3074 // CHECK: xor <8 x i16>
3075 // CHECK: and <8 x i16>
3076 // CHECK: and <8 x i16>
3077 // CHECK: or <8 x i16>
3078 // CHECK-LE: xor <8 x i16>
3079 // CHECK-LE: and <8 x i16>
3080 // CHECK-LE: and <8 x i16>
3081 // CHECK-LE: or <8 x i16>
3082
3083 res_vs = vec_sel(vs, vs, vbs);
3084 // CHECK: xor <8 x i16>
3085 // CHECK: and <8 x i16>
3086 // CHECK: and <8 x i16>
3087 // CHECK: or <8 x i16>
3088 // CHECK-LE: xor <8 x i16>
3089 // CHECK-LE: and <8 x i16>
3090 // CHECK-LE: and <8 x i16>
3091 // CHECK-LE: or <8 x i16>
3092
3093 res_vus = vec_sel(vus, vus, vus);
3094 // CHECK: xor <8 x i16>
3095 // CHECK: and <8 x i16>
3096 // CHECK: and <8 x i16>
3097 // CHECK: or <8 x i16>
3098 // CHECK-LE: xor <8 x i16>
3099 // CHECK-LE: and <8 x i16>
3100 // CHECK-LE: and <8 x i16>
3101 // CHECK-LE: or <8 x i16>
3102
3103 res_vus = vec_sel(vus, vus, vbs);
3104 // CHECK: xor <8 x i16>
3105 // CHECK: and <8 x i16>
3106 // CHECK: and <8 x i16>
3107 // CHECK: or <8 x i16>
3108 // CHECK-LE: xor <8 x i16>
3109 // CHECK-LE: and <8 x i16>
3110 // CHECK-LE: and <8 x i16>
3111 // CHECK-LE: or <8 x i16>
3112
3113 res_vbs = vec_sel(vbs, vbs, vus);
3114 // CHECK: xor <8 x i16>
3115 // CHECK: and <8 x i16>
3116 // CHECK: and <8 x i16>
3117 // CHECK: or <8 x i16>
3118 // CHECK-LE: xor <8 x i16>
3119 // CHECK-LE: and <8 x i16>
3120 // CHECK-LE: and <8 x i16>
3121 // CHECK-LE: or <8 x i16>
3122
3123 res_vbs = vec_sel(vbs, vbs, vbs);
3124 // CHECK: xor <8 x i16>
3125 // CHECK: and <8 x i16>
3126 // CHECK: and <8 x i16>
3127 // CHECK: or <8 x i16>
3128 // CHECK-LE: xor <8 x i16>
3129 // CHECK-LE: and <8 x i16>
3130 // CHECK-LE: and <8 x i16>
3131 // CHECK-LE: or <8 x i16>
3132
3133 res_vi = vec_sel(vi, vi, vui);
3134 // CHECK: xor <4 x i32>
3135 // CHECK: and <4 x i32>
3136 // CHECK: and <4 x i32>
3137 // CHECK: or <4 x i32>
3138 // CHECK-LE: xor <4 x i32>
3139 // CHECK-LE: and <4 x i32>
3140 // CHECK-LE: and <4 x i32>
3141 // CHECK-LE: or <4 x i32>
3142
3143 res_vi = vec_sel(vi, vi, vbi);
3144 // CHECK: xor <4 x i32>
3145 // CHECK: and <4 x i32>
3146 // CHECK: and <4 x i32>
3147 // CHECK: or <4 x i32>
3148 // CHECK-LE: xor <4 x i32>
3149 // CHECK-LE: and <4 x i32>
3150 // CHECK-LE: and <4 x i32>
3151 // CHECK-LE: or <4 x i32>
3152
3153 res_vui = vec_sel(vui, vui, vui);
3154 // CHECK: xor <4 x i32>
3155 // CHECK: and <4 x i32>
3156 // CHECK: and <4 x i32>
3157 // CHECK: or <4 x i32>
3158 // CHECK-LE: xor <4 x i32>
3159 // CHECK-LE: and <4 x i32>
3160 // CHECK-LE: and <4 x i32>
3161 // CHECK-LE: or <4 x i32>
3162
3163 res_vui = vec_sel(vui, vui, vbi);
3164 // CHECK: xor <4 x i32>
3165 // CHECK: and <4 x i32>
3166 // CHECK: and <4 x i32>
3167 // CHECK: or <4 x i32>
3168 // CHECK-LE: xor <4 x i32>
3169 // CHECK-LE: and <4 x i32>
3170 // CHECK-LE: and <4 x i32>
3171 // CHECK-LE: or <4 x i32>
3172
3173 res_vbi = vec_sel(vbi, vbi, vui);
3174 // CHECK: xor <4 x i32>
3175 // CHECK: and <4 x i32>
3176 // CHECK: and <4 x i32>
3177 // CHECK: or <4 x i32>
3178 // CHECK-LE: xor <4 x i32>
3179 // CHECK-LE: and <4 x i32>
3180 // CHECK-LE: and <4 x i32>
3181 // CHECK-LE: or <4 x i32>
3182
3183 res_vbi = vec_sel(vbi, vbi, vbi);
3184 // CHECK: xor <4 x i32>
3185 // CHECK: and <4 x i32>
3186 // CHECK: and <4 x i32>
3187 // CHECK: or <4 x i32>
3188 // CHECK-LE: xor <4 x i32>
3189 // CHECK-LE: and <4 x i32>
3190 // CHECK-LE: and <4 x i32>
3191 // CHECK-LE: or <4 x i32>
3192
3193 res_vf = vec_sel(vf, vf, vui);
3194 // CHECK: xor <4 x i32>
3195 // CHECK: and <4 x i32>
3196 // CHECK: and <4 x i32>
3197 // CHECK: or <4 x i32>
3198 // CHECK-LE: xor <4 x i32>
3199 // CHECK-LE: and <4 x i32>
3200 // CHECK-LE: and <4 x i32>
3201 // CHECK-LE: or <4 x i32>
3202
3203 res_vf = vec_sel(vf, vf, vbi);
3204 // CHECK: xor <4 x i32>
3205 // CHECK: and <4 x i32>
3206 // CHECK: and <4 x i32>
3207 // CHECK: or <4 x i32>
3208 // CHECK-LE: xor <4 x i32>
3209 // CHECK-LE: and <4 x i32>
3210 // CHECK-LE: and <4 x i32>
3211 // CHECK-LE: or <4 x i32>
3212
3213 res_vsc = vec_vsel(vsc, vsc, vuc);
3214 // CHECK: xor <16 x i8>
3215 // CHECK: and <16 x i8>
3216 // CHECK: and <16 x i8>
3217 // CHECK: or <16 x i8>
3218 // CHECK-LE: xor <16 x i8>
3219 // CHECK-LE: and <16 x i8>
3220 // CHECK-LE: and <16 x i8>
3221 // CHECK-LE: or <16 x i8>
3222
3223 res_vsc = vec_vsel(vsc, vsc, vbc);
3224 // CHECK: xor <16 x i8>
3225 // CHECK: and <16 x i8>
3226 // CHECK: and <16 x i8>
3227 // CHECK: or <16 x i8>
3228 // CHECK-LE: xor <16 x i8>
3229 // CHECK-LE: and <16 x i8>
3230 // CHECK-LE: and <16 x i8>
3231 // CHECK-LE: or <16 x i8>
3232
3233 res_vuc = vec_vsel(vuc, vuc, vuc);
3234 // CHECK: xor <16 x i8>
3235 // CHECK: and <16 x i8>
3236 // CHECK: and <16 x i8>
3237 // CHECK: or <16 x i8>
3238 // CHECK-LE: xor <16 x i8>
3239 // CHECK-LE: and <16 x i8>
3240 // CHECK-LE: and <16 x i8>
3241 // CHECK-LE: or <16 x i8>
3242
3243 res_vuc = vec_vsel(vuc, vuc, vbc);
3244 // CHECK: xor <16 x i8>
3245 // CHECK: and <16 x i8>
3246 // CHECK: and <16 x i8>
3247 // CHECK: or <16 x i8>
3248 // CHECK-LE: xor <16 x i8>
3249 // CHECK-LE: and <16 x i8>
3250 // CHECK-LE: and <16 x i8>
3251 // CHECK-LE: or <16 x i8>
3252
3253 res_vbc = vec_vsel(vbc, vbc, vuc);
3254 // CHECK: xor <16 x i8>
3255 // CHECK: and <16 x i8>
3256 // CHECK: and <16 x i8>
3257 // CHECK: or <16 x i8>
3258 // CHECK-LE: xor <16 x i8>
3259 // CHECK-LE: and <16 x i8>
3260 // CHECK-LE: and <16 x i8>
3261 // CHECK-LE: or <16 x i8>
3262
3263 res_vbc = vec_vsel(vbc, vbc, vbc);
3264 // CHECK: xor <16 x i8>
3265 // CHECK: and <16 x i8>
3266 // CHECK: and <16 x i8>
3267 // CHECK: or <16 x i8>
3268 // CHECK-LE: xor <16 x i8>
3269 // CHECK-LE: and <16 x i8>
3270 // CHECK-LE: and <16 x i8>
3271 // CHECK-LE: or <16 x i8>
3272
3273 res_vs = vec_vsel(vs, vs, vus);
3274 // CHECK: xor <8 x i16>
3275 // CHECK: and <8 x i16>
3276 // CHECK: and <8 x i16>
3277 // CHECK: or <8 x i16>
3278 // CHECK-LE: xor <8 x i16>
3279 // CHECK-LE: and <8 x i16>
3280 // CHECK-LE: and <8 x i16>
3281 // CHECK-LE: or <8 x i16>
3282
3283 res_vs = vec_vsel(vs, vs, vbs);
3284 // CHECK: xor <8 x i16>
3285 // CHECK: and <8 x i16>
3286 // CHECK: and <8 x i16>
3287 // CHECK: or <8 x i16>
3288 // CHECK-LE: xor <8 x i16>
3289 // CHECK-LE: and <8 x i16>
3290 // CHECK-LE: and <8 x i16>
3291 // CHECK-LE: or <8 x i16>
3292
3293 res_vus = vec_vsel(vus, vus, vus);
3294 // CHECK: xor <8 x i16>
3295 // CHECK: and <8 x i16>
3296 // CHECK: and <8 x i16>
3297 // CHECK: or <8 x i16>
3298 // CHECK-LE: xor <8 x i16>
3299 // CHECK-LE: and <8 x i16>
3300 // CHECK-LE: and <8 x i16>
3301 // CHECK-LE: or <8 x i16>
3302
3303 res_vus = vec_vsel(vus, vus, vbs);
3304 // CHECK: xor <8 x i16>
3305 // CHECK: and <8 x i16>
3306 // CHECK: and <8 x i16>
3307 // CHECK: or <8 x i16>
3308 // CHECK-LE: xor <8 x i16>
3309 // CHECK-LE: and <8 x i16>
3310 // CHECK-LE: and <8 x i16>
3311 // CHECK-LE: or <8 x i16>
3312
3313 res_vbs = vec_vsel(vbs, vbs, vus);
3314 // CHECK: xor <8 x i16>
3315 // CHECK: and <8 x i16>
3316 // CHECK: and <8 x i16>
3317 // CHECK: or <8 x i16>
3318 // CHECK-LE: xor <8 x i16>
3319 // CHECK-LE: and <8 x i16>
3320 // CHECK-LE: and <8 x i16>
3321 // CHECK-LE: or <8 x i16>
3322
3323 res_vbs = vec_vsel(vbs, vbs, vbs);
3324 // CHECK: xor <8 x i16>
3325 // CHECK: and <8 x i16>
3326 // CHECK: and <8 x i16>
3327 // CHECK: or <8 x i16>
3328 // CHECK-LE: xor <8 x i16>
3329 // CHECK-LE: and <8 x i16>
3330 // CHECK-LE: and <8 x i16>
3331 // CHECK-LE: or <8 x i16>
3332
3333 res_vi = vec_vsel(vi, vi, vui);
3334 // CHECK: xor <4 x i32>
3335 // CHECK: and <4 x i32>
3336 // CHECK: and <4 x i32>
3337 // CHECK: or <4 x i32>
3338 // CHECK-LE: xor <4 x i32>
3339 // CHECK-LE: and <4 x i32>
3340 // CHECK-LE: and <4 x i32>
3341 // CHECK-LE: or <4 x i32>
3342
3343 res_vi = vec_vsel(vi, vi, vbi);
3344 // CHECK: xor <4 x i32>
3345 // CHECK: and <4 x i32>
3346 // CHECK: and <4 x i32>
3347 // CHECK: or <4 x i32>
3348 // CHECK-LE: xor <4 x i32>
3349 // CHECK-LE: and <4 x i32>
3350 // CHECK-LE: and <4 x i32>
3351 // CHECK-LE: or <4 x i32>
3352
3353 res_vui = vec_vsel(vui, vui, vui);
3354 // CHECK: xor <4 x i32>
3355 // CHECK: and <4 x i32>
3356 // CHECK: and <4 x i32>
3357 // CHECK: or <4 x i32>
3358 // CHECK-LE: xor <4 x i32>
3359 // CHECK-LE: and <4 x i32>
3360 // CHECK-LE: and <4 x i32>
3361 // CHECK-LE: or <4 x i32>
3362
3363 res_vui = vec_vsel(vui, vui, vbi);
3364 // CHECK: xor <4 x i32>
3365 // CHECK: and <4 x i32>
3366 // CHECK: and <4 x i32>
3367 // CHECK: or <4 x i32>
3368 // CHECK-LE: xor <4 x i32>
3369 // CHECK-LE: and <4 x i32>
3370 // CHECK-LE: and <4 x i32>
3371 // CHECK-LE: or <4 x i32>
3372
3373 res_vbi = vec_vsel(vbi, vbi, vui);
3374 // CHECK: xor <4 x i32>
3375 // CHECK: and <4 x i32>
3376 // CHECK: and <4 x i32>
3377 // CHECK: or <4 x i32>
3378 // CHECK-LE: xor <4 x i32>
3379 // CHECK-LE: and <4 x i32>
3380 // CHECK-LE: and <4 x i32>
3381 // CHECK-LE: or <4 x i32>
3382
3383 res_vbi = vec_vsel(vbi, vbi, vbi);
3384 // CHECK: xor <4 x i32>
3385 // CHECK: and <4 x i32>
3386 // CHECK: and <4 x i32>
3387 // CHECK: or <4 x i32>
3388 // CHECK-LE: xor <4 x i32>
3389 // CHECK-LE: and <4 x i32>
3390 // CHECK-LE: and <4 x i32>
3391 // CHECK-LE: or <4 x i32>
3392
3393 res_vf = vec_vsel(vf, vf, vui);
3394 // CHECK: xor <4 x i32>
3395 // CHECK: and <4 x i32>
3396 // CHECK: and <4 x i32>
3397 // CHECK: or <4 x i32>
3398 // CHECK-LE: xor <4 x i32>
3399 // CHECK-LE: and <4 x i32>
3400 // CHECK-LE: and <4 x i32>
3401 // CHECK-LE: or <4 x i32>
3402
3403 res_vf = vec_vsel(vf, vf, vbi);
3404 // CHECK: xor <4 x i32>
3405 // CHECK: and <4 x i32>
3406 // CHECK: and <4 x i32>
3407 // CHECK: or <4 x i32>
3408 // CHECK-LE: xor <4 x i32>
3409 // CHECK-LE: and <4 x i32>
3410 // CHECK-LE: and <4 x i32>
3411 // CHECK-LE: or <4 x i32>
3412
3413 /* vec_sl */
3414 res_vsc = vec_sl(vsc, vuc);
3415 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3416 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3417 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3418 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3419
3420 res_vuc = vec_sl(vuc, vuc);
3421 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3422 // CHECK: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3423 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
3424 // CHECK-LE: shl <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3425
3426 res_vs = vec_sl(vs, vus);
3427 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3428 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3429 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3430 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3431
3432 res_vus = vec_sl(vus, vus);
3433 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3434 // CHECK: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3435 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
3436 // CHECK-LE: shl <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3437
3438 res_vi = vec_sl(vi, vui);
3439 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3440 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3441 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3442 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3443
3444 res_vui = vec_sl(vui, vui);
3445 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3446 // CHECK: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3447 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
3448 // CHECK-LE: shl <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
3449
3450 res_vsc = vec_vslb(vsc, vuc);
3451 // CHECK: shl <16 x i8>
3452 // CHECK-LE: shl <16 x i8>
3453
3454 res_vuc = vec_vslb(vuc, vuc);
3455 // CHECK: shl <16 x i8>
3456 // CHECK-LE: shl <16 x i8>
3457
3458 res_vs = vec_vslh(vs, vus);
3459 // CHECK: shl <8 x i16>
3460 // CHECK-LE: shl <8 x i16>
3461
3462 res_vus = vec_vslh(vus, vus);
3463 // CHECK: shl <8 x i16>
3464 // CHECK-LE: shl <8 x i16>
3465
3466 res_vi = vec_vslw(vi, vui);
3467 // CHECK: shl <4 x i32>
3468 // CHECK-LE: shl <4 x i32>
3469
3470 res_vui = vec_vslw(vui, vui);
3471 // CHECK: shl <4 x i32>
3472 // CHECK-LE: shl <4 x i32>
3473
3474 /* vec_sld */
3475 res_vsc = vec_sld(vsc, vsc, 0);
3476 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3477 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3478 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3479 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3480 // CHECK: @llvm.ppc.altivec.vperm
3481 // CHECK-LE: sub nsw i32 16
3482 // CHECK-LE: sub nsw i32 17
3483 // CHECK-LE: sub nsw i32 18
3484 // CHECK-LE: sub nsw i32 31
3485 // CHECK-LE: @llvm.ppc.altivec.vperm
3486
3487 res_vuc = vec_sld(vuc, vuc, 0);
3488 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3489 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3490 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3491 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3492 // CHECK: @llvm.ppc.altivec.vperm
3493 // CHECK-LE: sub nsw i32 16
3494 // CHECK-LE: sub nsw i32 17
3495 // CHECK-LE: sub nsw i32 18
3496 // CHECK-LE: sub nsw i32 31
3497 // CHECK-LE: @llvm.ppc.altivec.vperm
3498
3499 res_vs = vec_sld(vs, vs, 0);
3500 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3501 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3502 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3503 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3504 // CHECK: @llvm.ppc.altivec.vperm
3505 // CHECK-LE: sub nsw i32 16
3506 // CHECK-LE: sub nsw i32 17
3507 // CHECK-LE: sub nsw i32 18
3508 // CHECK-LE: sub nsw i32 31
3509 // CHECK-LE: @llvm.ppc.altivec.vperm
3510
3511 res_vus = vec_sld(vus, vus, 0);
3512 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3513 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3514 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3515 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3516 // CHECK: @llvm.ppc.altivec.vperm
3517 // CHECK-LE: sub nsw i32 16
3518 // CHECK-LE: sub nsw i32 17
3519 // CHECK-LE: sub nsw i32 18
3520 // CHECK-LE: sub nsw i32 31
3521 // CHECK-LE: @llvm.ppc.altivec.vperm
3522
3523 res_vbs = vec_sld(vbs, vbs, 0);
3524 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3525 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3526 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3527 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3528 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3529 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3530 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3531 // CHECK-LE: sub nsw i32 16
3532 // CHECK-LE: sub nsw i32 17
3533 // CHECK-LE: sub nsw i32 18
3534 // CHECK-LE: sub nsw i32 31
3535 // CHECK-LE: xor <16 x i8>
3536 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3537 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
3538 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> [[T1]], <4 x i32> [[T2]], <16 x i8>
3539
3540 res_vp = vec_sld(vp, vp, 0);
3541 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3542 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3543 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3544 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3545 // CHECK: @llvm.ppc.altivec.vperm
3546 // CHECK-LE: sub nsw i32 16
3547 // CHECK-LE: sub nsw i32 17
3548 // CHECK-LE: sub nsw i32 18
3549 // CHECK-LE: sub nsw i32 31
3550 // CHECK-LE: @llvm.ppc.altivec.vperm
3551
3552 res_vi = vec_sld(vi, vi, 0);
3553 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3554 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3555 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3556 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3557 // CHECK: @llvm.ppc.altivec.vperm
3558 // CHECK-LE: sub nsw i32 16
3559 // CHECK-LE: sub nsw i32 17
3560 // CHECK-LE: sub nsw i32 18
3561 // CHECK-LE: sub nsw i32 31
3562 // CHECK-LE: @llvm.ppc.altivec.vperm
3563
3564 res_vui = vec_sld(vui, vui, 0);
3565 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3566 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3567 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3568 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3569 // CHECK: @llvm.ppc.altivec.vperm
3570 // CHECK-LE: sub nsw i32 16
3571 // CHECK-LE: sub nsw i32 17
3572 // CHECK-LE: sub nsw i32 18
3573 // CHECK-LE: sub nsw i32 31
3574 // CHECK-LE: @llvm.ppc.altivec.vperm
3575
3576 res_vbi = vec_sld(vbi, vbi, 0);
3577 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3578 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3579 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3580 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3581 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3582 // CHECK-LE: sub nsw i32 16
3583 // CHECK-LE: sub nsw i32 17
3584 // CHECK-LE: sub nsw i32 18
3585 // CHECK-LE: sub nsw i32 31
3586 // CHECK-LE: xor <16 x i8>
3587 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{.+}}, <4 x i32> {{.+}}, <16 x i8>
3588
3589 res_vf = vec_sld(vf, vf, 0);
3590 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3591 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3592 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3593 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3594 // CHECK: @llvm.ppc.altivec.vperm
3595 // CHECK-LE: sub nsw i32 16
3596 // CHECK-LE: sub nsw i32 17
3597 // CHECK-LE: sub nsw i32 18
3598 // CHECK-LE: sub nsw i32 31
3599 // CHECK-LE: @llvm.ppc.altivec.vperm
3600
3601 /* vec_sldw */
3602 res_vsc = vec_sldw(vsc, vsc, 0);
3603 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3604 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3605 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3606 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3607 // CHECK: @llvm.ppc.altivec.vperm
3608 // CHECK-LE: sub nsw i32 16
3609 // CHECK-LE: sub nsw i32 17
3610 // CHECK-LE: sub nsw i32 18
3611 // CHECK-LE: sub nsw i32 31
3612 // CHECK-LE: @llvm.ppc.altivec.vperm
3613
3614 res_vuc = vec_sldw(vuc, vuc, 0);
3615 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3616 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3617 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3618 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3619 // CHECK: @llvm.ppc.altivec.vperm
3620 // CHECK-LE: sub nsw i32 16
3621 // CHECK-LE: sub nsw i32 17
3622 // CHECK-LE: sub nsw i32 18
3623 // CHECK-LE: sub nsw i32 31
3624 // CHECK-LE: @llvm.ppc.altivec.vperm
3625
3626 res_vi = vec_sldw(vi, vi, 0);
3627 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3628 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3629 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3630 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3631 // CHECK: @llvm.ppc.altivec.vperm
3632 // CHECK-LE: sub nsw i32 16
3633 // CHECK-LE: sub nsw i32 17
3634 // CHECK-LE: sub nsw i32 18
3635 // CHECK-LE: sub nsw i32 31
3636 // CHECK-LE: @llvm.ppc.altivec.vperm
3637
3638 res_vui = vec_sldw(vui, vui, 0);
3639 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3640 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3641 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3642 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3643 // CHECK: @llvm.ppc.altivec.vperm
3644 // CHECK-LE: sub nsw i32 16
3645 // CHECK-LE: sub nsw i32 17
3646 // CHECK-LE: sub nsw i32 18
3647 // CHECK-LE: sub nsw i32 31
3648 // CHECK-LE: @llvm.ppc.altivec.vperm
3649
3650 res_vs = vec_sldw(vs, vs, 0);
3651 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3652 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3653 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3654 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3655 // CHECK: @llvm.ppc.altivec.vperm
3656 // CHECK-LE: sub nsw i32 16
3657 // CHECK-LE: sub nsw i32 17
3658 // CHECK-LE: sub nsw i32 18
3659 // CHECK-LE: sub nsw i32 31
3660 // CHECK-LE: @llvm.ppc.altivec.vperm
3661
3662 res_vus = vec_sldw(vus, vus, 0);
3663 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3664 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3665 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3666 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3667 // CHECK: @llvm.ppc.altivec.vperm
3668 // CHECK-LE: sub nsw i32 16
3669 // CHECK-LE: sub nsw i32 17
3670 // CHECK-LE: sub nsw i32 18
3671 // CHECK-LE: sub nsw i32 31
3672 // CHECK-LE: @llvm.ppc.altivec.vperm
3673
3674 res_vsc = vec_vsldoi(vsc, vsc, 0);
3675 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3676 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3677 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3678 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3679 // CHECK: @llvm.ppc.altivec.vperm
3680 // CHECK-LE: sub nsw i32 16
3681 // CHECK-LE: sub nsw i32 17
3682 // CHECK-LE: sub nsw i32 18
3683 // CHECK-LE: sub nsw i32 31
3684 // CHECK-LE: @llvm.ppc.altivec.vperm
3685
3686 res_vuc = vec_vsldoi(vuc, vuc, 0);
3687 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3688 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3689 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3690 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3691 // CHECK: @llvm.ppc.altivec.vperm
3692 // CHECK-LE: sub nsw i32 16
3693 // CHECK-LE: sub nsw i32 17
3694 // CHECK-LE: sub nsw i32 18
3695 // CHECK-LE: sub nsw i32 31
3696 // CHECK-LE: @llvm.ppc.altivec.vperm
3697
3698 res_vs = vec_vsldoi(vs, vs, 0);
3699 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3700 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3701 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3702 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3703 // CHECK: @llvm.ppc.altivec.vperm
3704 // CHECK-LE: sub nsw i32 16
3705 // CHECK-LE: sub nsw i32 17
3706 // CHECK-LE: sub nsw i32 18
3707 // CHECK-LE: sub nsw i32 31
3708 // CHECK-LE: @llvm.ppc.altivec.vperm
3709
3710 res_vus = vec_vsldoi(vus, vus, 0);
3711 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3712 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3713 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3714 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3715 // CHECK: @llvm.ppc.altivec.vperm
3716 // CHECK-LE: sub nsw i32 16
3717 // CHECK-LE: sub nsw i32 17
3718 // CHECK-LE: sub nsw i32 18
3719 // CHECK-LE: sub nsw i32 31
3720 // CHECK-LE: @llvm.ppc.altivec.vperm
3721
3722 res_vp = vec_vsldoi(vp, vp, 0);
3723 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3724 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3725 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3726 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3727 // CHECK: @llvm.ppc.altivec.vperm
3728 // CHECK-LE: sub nsw i32 16
3729 // CHECK-LE: sub nsw i32 17
3730 // CHECK-LE: sub nsw i32 18
3731 // CHECK-LE: sub nsw i32 31
3732 // CHECK-LE: @llvm.ppc.altivec.vperm
3733
3734 res_vi = vec_vsldoi(vi, vi, 0);
3735 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3736 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3737 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3738 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3739 // CHECK: @llvm.ppc.altivec.vperm
3740 // CHECK-LE: sub nsw i32 16
3741 // CHECK-LE: sub nsw i32 17
3742 // CHECK-LE: sub nsw i32 18
3743 // CHECK-LE: sub nsw i32 31
3744 // CHECK-LE: @llvm.ppc.altivec.vperm
3745
3746 res_vui = vec_vsldoi(vui, vui, 0);
3747 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3748 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3749 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3750 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3751 // CHECK: @llvm.ppc.altivec.vperm
3752 // CHECK-LE: sub nsw i32 16
3753 // CHECK-LE: sub nsw i32 17
3754 // CHECK-LE: sub nsw i32 18
3755 // CHECK-LE: sub nsw i32 31
3756 // CHECK-LE: @llvm.ppc.altivec.vperm
3757
3758 res_vf = vec_vsldoi(vf, vf, 0);
3759 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 1
3760 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 2
3761 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 3
3762 // CHECK: add nsw i32 {{[0-9a-zA-Z%.]+}}, 15
3763 // CHECK: @llvm.ppc.altivec.vperm
3764 // CHECK-LE: sub nsw i32 16
3765 // CHECK-LE: sub nsw i32 17
3766 // CHECK-LE: sub nsw i32 18
3767 // CHECK-LE: sub nsw i32 31
3768 // CHECK-LE: @llvm.ppc.altivec.vperm
3769
3770 /* vec_sll */
3771 res_vsc = vec_sll(vsc, vuc);
3772 // CHECK: @llvm.ppc.altivec.vsl
3773 // CHECK-LE: @llvm.ppc.altivec.vsl
3774
3775 res_vsc = vec_sll(vsc, vus);
3776 // CHECK: @llvm.ppc.altivec.vsl
3777 // CHECK-LE: @llvm.ppc.altivec.vsl
3778
3779 res_vsc = vec_sll(vsc, vui);
3780 // CHECK: @llvm.ppc.altivec.vsl
3781 // CHECK-LE: @llvm.ppc.altivec.vsl
3782
3783 res_vuc = vec_sll(vuc, vuc);
3784 // CHECK: @llvm.ppc.altivec.vsl
3785 // CHECK-LE: @llvm.ppc.altivec.vsl
3786
3787 res_vuc = vec_sll(vuc, vus);
3788 // CHECK: @llvm.ppc.altivec.vsl
3789 // CHECK-LE: @llvm.ppc.altivec.vsl
3790
3791 res_vuc = vec_sll(vuc, vui);
3792 // CHECK: @llvm.ppc.altivec.vsl
3793 // CHECK-LE: @llvm.ppc.altivec.vsl
3794
3795 res_vbc = vec_sll(vbc, vuc);
3796 // CHECK: @llvm.ppc.altivec.vsl
3797 // CHECK-LE: @llvm.ppc.altivec.vsl
3798
3799 res_vbc = vec_sll(vbc, vus);
3800 // CHECK: @llvm.ppc.altivec.vsl
3801 // CHECK-LE: @llvm.ppc.altivec.vsl
3802
3803 res_vbc = vec_sll(vbc, vui);
3804 // CHECK: @llvm.ppc.altivec.vsl
3805 // CHECK-LE: @llvm.ppc.altivec.vsl
3806
3807 res_vs = vec_sll(vs, vuc);
3808 // CHECK: @llvm.ppc.altivec.vsl
3809 // CHECK-LE: @llvm.ppc.altivec.vsl
3810
3811 res_vs = vec_sll(vs, vus);
3812 // CHECK: @llvm.ppc.altivec.vsl
3813 // CHECK-LE: @llvm.ppc.altivec.vsl
3814
3815 res_vs = vec_sll(vs, vui);
3816 // CHECK: @llvm.ppc.altivec.vsl
3817 // CHECK-LE: @llvm.ppc.altivec.vsl
3818
3819 res_vus = vec_sll(vus, vuc);
3820 // CHECK: @llvm.ppc.altivec.vsl
3821 // CHECK-LE: @llvm.ppc.altivec.vsl
3822
3823 res_vus = vec_sll(vus, vus);
3824 // CHECK: @llvm.ppc.altivec.vsl
3825 // CHECK-LE: @llvm.ppc.altivec.vsl
3826
3827 res_vus = vec_sll(vus, vui);
3828 // CHECK: @llvm.ppc.altivec.vsl
3829 // CHECK-LE: @llvm.ppc.altivec.vsl
3830
3831 res_vbs = vec_sll(vbs, vuc);
3832 // CHECK: @llvm.ppc.altivec.vsl
3833 // CHECK-LE: @llvm.ppc.altivec.vsl
3834
3835 res_vbs = vec_sll(vbs, vus);
3836 // CHECK: @llvm.ppc.altivec.vsl
3837 // CHECK-LE: @llvm.ppc.altivec.vsl
3838
3839 res_vbs = vec_sll(vbs, vui);
3840 // CHECK: @llvm.ppc.altivec.vsl
3841 // CHECK-LE: @llvm.ppc.altivec.vsl
3842
3843 res_vp = vec_sll(vp, vuc);
3844 // CHECK: @llvm.ppc.altivec.vsl
3845 // CHECK-LE: @llvm.ppc.altivec.vsl
3846
3847 res_vp = vec_sll(vp, vus);
3848 // CHECK: @llvm.ppc.altivec.vsl
3849 // CHECK-LE: @llvm.ppc.altivec.vsl
3850
3851 res_vp = vec_sll(vp, vui);
3852 // CHECK: @llvm.ppc.altivec.vsl
3853 // CHECK-LE: @llvm.ppc.altivec.vsl
3854
3855 res_vi = vec_sll(vi, vuc);
3856 // CHECK: @llvm.ppc.altivec.vsl
3857 // CHECK-LE: @llvm.ppc.altivec.vsl
3858
3859 res_vi = vec_sll(vi, vus);
3860 // CHECK: @llvm.ppc.altivec.vsl
3861 // CHECK-LE: @llvm.ppc.altivec.vsl
3862
3863 res_vi = vec_sll(vi, vui);
3864 // CHECK: @llvm.ppc.altivec.vsl
3865 // CHECK-LE: @llvm.ppc.altivec.vsl
3866
3867 res_vui = vec_sll(vui, vuc);
3868 // CHECK: @llvm.ppc.altivec.vsl
3869 // CHECK-LE: @llvm.ppc.altivec.vsl
3870
3871 res_vui = vec_sll(vui, vus);
3872 // CHECK: @llvm.ppc.altivec.vsl
3873 // CHECK-LE: @llvm.ppc.altivec.vsl
3874
3875 res_vui = vec_sll(vui, vui);
3876 // CHECK: @llvm.ppc.altivec.vsl
3877 // CHECK-LE: @llvm.ppc.altivec.vsl
3878
3879 res_vbi = vec_sll(vbi, vuc);
3880 // CHECK: @llvm.ppc.altivec.vsl
3881 // CHECK-LE: @llvm.ppc.altivec.vsl
3882
3883 res_vbi = vec_sll(vbi, vus);
3884 // CHECK: @llvm.ppc.altivec.vsl
3885 // CHECK-LE: @llvm.ppc.altivec.vsl
3886
3887 res_vbi = vec_sll(vbi, vui);
3888 // CHECK: @llvm.ppc.altivec.vsl
3889 // CHECK-LE: @llvm.ppc.altivec.vsl
3890
3891 res_vsc = vec_vsl(vsc, vuc);
3892 // CHECK: @llvm.ppc.altivec.vsl
3893 // CHECK-LE: @llvm.ppc.altivec.vsl
3894
3895 res_vsc = vec_vsl(vsc, vus);
3896 // CHECK: @llvm.ppc.altivec.vsl
3897 // CHECK-LE: @llvm.ppc.altivec.vsl
3898
3899 res_vsc = vec_vsl(vsc, vui);
3900 // CHECK: @llvm.ppc.altivec.vsl
3901 // CHECK-LE: @llvm.ppc.altivec.vsl
3902
3903 res_vuc = vec_vsl(vuc, vuc);
3904 // CHECK: @llvm.ppc.altivec.vsl
3905 // CHECK-LE: @llvm.ppc.altivec.vsl
3906
3907 res_vuc = vec_vsl(vuc, vus);
3908 // CHECK: @llvm.ppc.altivec.vsl
3909 // CHECK-LE: @llvm.ppc.altivec.vsl
3910
3911 res_vuc = vec_vsl(vuc, vui);
3912 // CHECK: @llvm.ppc.altivec.vsl
3913 // CHECK-LE: @llvm.ppc.altivec.vsl
3914
3915 res_vbc = vec_vsl(vbc, vuc);
3916 // CHECK: @llvm.ppc.altivec.vsl
3917 // CHECK-LE: @llvm.ppc.altivec.vsl
3918
3919 res_vbc = vec_vsl(vbc, vus);
3920 // CHECK: @llvm.ppc.altivec.vsl
3921 // CHECK-LE: @llvm.ppc.altivec.vsl
3922
3923 res_vbc = vec_vsl(vbc, vui);
3924 // CHECK: @llvm.ppc.altivec.vsl
3925 // CHECK-LE: @llvm.ppc.altivec.vsl
3926
3927 res_vs = vec_vsl(vs, vuc);
3928 // CHECK: @llvm.ppc.altivec.vsl
3929 // CHECK-LE: @llvm.ppc.altivec.vsl
3930
3931 res_vs = vec_vsl(vs, vus);
3932 // CHECK: @llvm.ppc.altivec.vsl
3933 // CHECK-LE: @llvm.ppc.altivec.vsl
3934
3935 res_vs = vec_vsl(vs, vui);
3936 // CHECK: @llvm.ppc.altivec.vsl
3937 // CHECK-LE: @llvm.ppc.altivec.vsl
3938
3939 res_vus = vec_vsl(vus, vuc);
3940 // CHECK: @llvm.ppc.altivec.vsl
3941 // CHECK-LE: @llvm.ppc.altivec.vsl
3942
3943 res_vus = vec_vsl(vus, vus);
3944 // CHECK: @llvm.ppc.altivec.vsl
3945 // CHECK-LE: @llvm.ppc.altivec.vsl
3946
3947 res_vus = vec_vsl(vus, vui);
3948 // CHECK: @llvm.ppc.altivec.vsl
3949 // CHECK-LE: @llvm.ppc.altivec.vsl
3950
3951 res_vbs = vec_vsl(vbs, vuc);
3952 // CHECK: @llvm.ppc.altivec.vsl
3953 // CHECK-LE: @llvm.ppc.altivec.vsl
3954
3955 res_vbs = vec_vsl(vbs, vus);
3956 // CHECK: @llvm.ppc.altivec.vsl
3957 // CHECK-LE: @llvm.ppc.altivec.vsl
3958
3959 res_vbs = vec_vsl(vbs, vui);
3960 // CHECK: @llvm.ppc.altivec.vsl
3961 // CHECK-LE: @llvm.ppc.altivec.vsl
3962
3963 res_vp = vec_vsl(vp, vuc);
3964 // CHECK: @llvm.ppc.altivec.vsl
3965 // CHECK-LE: @llvm.ppc.altivec.vsl
3966
3967 res_vp = vec_vsl(vp, vus);
3968 // CHECK: @llvm.ppc.altivec.vsl
3969 // CHECK-LE: @llvm.ppc.altivec.vsl
3970
3971 res_vp = vec_vsl(vp, vui);
3972 // CHECK: @llvm.ppc.altivec.vsl
3973 // CHECK-LE: @llvm.ppc.altivec.vsl
3974
3975 res_vi = vec_vsl(vi, vuc);
3976 // CHECK: @llvm.ppc.altivec.vsl
3977 // CHECK-LE: @llvm.ppc.altivec.vsl
3978
3979 res_vi = vec_vsl(vi, vus);
3980 // CHECK: @llvm.ppc.altivec.vsl
3981 // CHECK-LE: @llvm.ppc.altivec.vsl
3982
3983 res_vi = vec_vsl(vi, vui);
3984 // CHECK: @llvm.ppc.altivec.vsl
3985 // CHECK-LE: @llvm.ppc.altivec.vsl
3986
3987 res_vui = vec_vsl(vui, vuc);
3988 // CHECK: @llvm.ppc.altivec.vsl
3989 // CHECK-LE: @llvm.ppc.altivec.vsl
3990
3991 res_vui = vec_vsl(vui, vus);
3992 // CHECK: @llvm.ppc.altivec.vsl
3993 // CHECK-LE: @llvm.ppc.altivec.vsl
3994
3995 res_vui = vec_vsl(vui, vui);
3996 // CHECK: @llvm.ppc.altivec.vsl
3997 // CHECK-LE: @llvm.ppc.altivec.vsl
3998
3999 res_vbi = vec_vsl(vbi, vuc);
4000 // CHECK: @llvm.ppc.altivec.vsl
4001 // CHECK-LE: @llvm.ppc.altivec.vsl
4002
4003 res_vbi = vec_vsl(vbi, vus);
4004 // CHECK: @llvm.ppc.altivec.vsl
4005 // CHECK-LE: @llvm.ppc.altivec.vsl
4006
4007 res_vbi = vec_vsl(vbi, vui);
4008 // CHECK: @llvm.ppc.altivec.vsl
4009 // CHECK-LE: @llvm.ppc.altivec.vsl
4010
4011 /* vec_slo */
4012 res_vsc = vec_slo(vsc, vsc);
4013 // CHECK: @llvm.ppc.altivec.vslo
4014 // CHECK-LE: @llvm.ppc.altivec.vslo
4015
4016 res_vsc = vec_slo(vsc, vuc);
4017 // CHECK: @llvm.ppc.altivec.vslo
4018 // CHECK-LE: @llvm.ppc.altivec.vslo
4019
4020 res_vuc = vec_slo(vuc, vsc);
4021 // CHECK: @llvm.ppc.altivec.vslo
4022 // CHECK-LE: @llvm.ppc.altivec.vslo
4023
4024 res_vuc = vec_slo(vuc, vuc);
4025 // CHECK: @llvm.ppc.altivec.vslo
4026 // CHECK-LE: @llvm.ppc.altivec.vslo
4027
4028 res_vs = vec_slo(vs, vsc);
4029 // CHECK: @llvm.ppc.altivec.vslo
4030 // CHECK-LE: @llvm.ppc.altivec.vslo
4031
4032 res_vs = vec_slo(vs, vuc);
4033 // CHECK: @llvm.ppc.altivec.vslo
4034 // CHECK-LE: @llvm.ppc.altivec.vslo
4035
4036 res_vus = vec_slo(vus, vsc);
4037 // CHECK: @llvm.ppc.altivec.vslo
4038 // CHECK-LE: @llvm.ppc.altivec.vslo
4039
4040 res_vus = vec_slo(vus, vuc);
4041 // CHECK: @llvm.ppc.altivec.vslo
4042 // CHECK-LE: @llvm.ppc.altivec.vslo
4043
4044 res_vp = vec_slo(vp, vsc);
4045 // CHECK: @llvm.ppc.altivec.vslo
4046 // CHECK-LE: @llvm.ppc.altivec.vslo
4047
4048 res_vp = vec_slo(vp, vuc);
4049 // CHECK: @llvm.ppc.altivec.vslo
4050 // CHECK-LE: @llvm.ppc.altivec.vslo
4051
4052 res_vi = vec_slo(vi, vsc);
4053 // CHECK: @llvm.ppc.altivec.vslo
4054 // CHECK-LE: @llvm.ppc.altivec.vslo
4055
4056 res_vi = vec_slo(vi, vuc);
4057 // CHECK: @llvm.ppc.altivec.vslo
4058 // CHECK-LE: @llvm.ppc.altivec.vslo
4059
4060 res_vui = vec_slo(vui, vsc);
4061 // CHECK: @llvm.ppc.altivec.vslo
4062 // CHECK-LE: @llvm.ppc.altivec.vslo
4063
4064 res_vui = vec_slo(vui, vuc);
4065 // CHECK: @llvm.ppc.altivec.vslo
4066 // CHECK-LE: @llvm.ppc.altivec.vslo
4067
4068 res_vf = vec_slo(vf, vsc);
4069 // CHECK: @llvm.ppc.altivec.vslo
4070 // CHECK-LE: @llvm.ppc.altivec.vslo
4071
4072 res_vf = vec_slo(vf, vuc);
4073 // CHECK: @llvm.ppc.altivec.vslo
4074 // CHECK-LE: @llvm.ppc.altivec.vslo
4075
4076 res_vsc = vec_vslo(vsc, vsc);
4077 // CHECK: @llvm.ppc.altivec.vslo
4078 // CHECK-LE: @llvm.ppc.altivec.vslo
4079
4080 res_vsc = vec_vslo(vsc, vuc);
4081 // CHECK: @llvm.ppc.altivec.vslo
4082 // CHECK-LE: @llvm.ppc.altivec.vslo
4083
4084 res_vuc = vec_vslo(vuc, vsc);
4085 // CHECK: @llvm.ppc.altivec.vslo
4086 // CHECK-LE: @llvm.ppc.altivec.vslo
4087
4088 res_vuc = vec_vslo(vuc, vuc);
4089 // CHECK: @llvm.ppc.altivec.vslo
4090 // CHECK-LE: @llvm.ppc.altivec.vslo
4091
4092 res_vs = vec_vslo(vs, vsc);
4093 // CHECK: @llvm.ppc.altivec.vslo
4094 // CHECK-LE: @llvm.ppc.altivec.vslo
4095
4096 res_vs = vec_vslo(vs, vuc);
4097 // CHECK: @llvm.ppc.altivec.vslo
4098 // CHECK-LE: @llvm.ppc.altivec.vslo
4099
4100 res_vus = vec_vslo(vus, vsc);
4101 // CHECK: @llvm.ppc.altivec.vslo
4102 // CHECK-LE: @llvm.ppc.altivec.vslo
4103
4104 res_vus = vec_vslo(vus, vuc);
4105 // CHECK: @llvm.ppc.altivec.vslo
4106 // CHECK-LE: @llvm.ppc.altivec.vslo
4107
4108 res_vp = vec_vslo(vp, vsc);
4109 // CHECK: @llvm.ppc.altivec.vslo
4110 // CHECK-LE: @llvm.ppc.altivec.vslo
4111
4112 res_vp = vec_vslo(vp, vuc);
4113 // CHECK: @llvm.ppc.altivec.vslo
4114 // CHECK-LE: @llvm.ppc.altivec.vslo
4115
4116 res_vi = vec_vslo(vi, vsc);
4117 // CHECK: @llvm.ppc.altivec.vslo
4118 // CHECK-LE: @llvm.ppc.altivec.vslo
4119
4120 res_vi = vec_vslo(vi, vuc);
4121 // CHECK: @llvm.ppc.altivec.vslo
4122 // CHECK-LE: @llvm.ppc.altivec.vslo
4123
4124 res_vui = vec_vslo(vui, vsc);
4125 // CHECK: @llvm.ppc.altivec.vslo
4126 // CHECK-LE: @llvm.ppc.altivec.vslo
4127
4128 res_vui = vec_vslo(vui, vuc);
4129 // CHECK: @llvm.ppc.altivec.vslo
4130 // CHECK-LE: @llvm.ppc.altivec.vslo
4131
4132 res_vf = vec_vslo(vf, vsc);
4133 // CHECK: @llvm.ppc.altivec.vslo
4134 // CHECK-LE: @llvm.ppc.altivec.vslo
4135
4136 res_vf = vec_vslo(vf, vuc);
4137 // CHECK: @llvm.ppc.altivec.vslo
4138 // CHECK-LE: @llvm.ppc.altivec.vslo
4139
4140 /* vec_splat */
4141 res_vsc = vec_splat(vsc, 0);
4142 // CHECK: @llvm.ppc.altivec.vperm
4143 // CHECK-LE: @llvm.ppc.altivec.vperm
4144
4145 res_vuc = vec_splat(vuc, 0);
4146 // CHECK: @llvm.ppc.altivec.vperm
4147 // CHECK-LE: @llvm.ppc.altivec.vperm
4148
4149 res_vbc = vec_splat(vbc, 0);
4150 // CHECK: @llvm.ppc.altivec.vperm
4151 // CHECK-LE: @llvm.ppc.altivec.vperm
4152
4153 res_vs = vec_splat(vs, 0);
4154 // CHECK: @llvm.ppc.altivec.vperm
4155 // CHECK-LE: @llvm.ppc.altivec.vperm
4156
4157 res_vus = vec_splat(vus, 0);
4158 // CHECK: @llvm.ppc.altivec.vperm
4159 // CHECK-LE: @llvm.ppc.altivec.vperm
4160
4161 res_vbs = vec_splat(vbs, 0);
4162 // CHECK: @llvm.ppc.altivec.vperm
4163 // CHECK-LE: @llvm.ppc.altivec.vperm
4164
4165 res_vp = vec_splat(vp, 0);
4166 // CHECK: @llvm.ppc.altivec.vperm
4167 // CHECK-LE: @llvm.ppc.altivec.vperm
4168
4169 res_vi = vec_splat(vi, 0);
4170 // CHECK: @llvm.ppc.altivec.vperm
4171 // CHECK-LE: @llvm.ppc.altivec.vperm
4172
4173 res_vui = vec_splat(vui, 0);
4174 // CHECK: @llvm.ppc.altivec.vperm
4175 // CHECK-LE: @llvm.ppc.altivec.vperm
4176
4177 res_vbi = vec_splat(vbi, 0);
4178 // CHECK: @llvm.ppc.altivec.vperm
4179 // CHECK-LE: @llvm.ppc.altivec.vperm
4180
4181 res_vf = vec_splat(vf, 0);
4182 // CHECK: @llvm.ppc.altivec.vperm
4183 // CHECK-LE: @llvm.ppc.altivec.vperm
4184
4185 res_vsc = vec_vspltb(vsc, 0);
4186 // CHECK: @llvm.ppc.altivec.vperm
4187 // CHECK-LE: @llvm.ppc.altivec.vperm
4188
4189 res_vuc = vec_vspltb(vuc, 0);
4190 // CHECK: @llvm.ppc.altivec.vperm
4191 // CHECK-LE: @llvm.ppc.altivec.vperm
4192
4193 res_vbc = vec_vspltb(vbc, 0);
4194 // CHECK: @llvm.ppc.altivec.vperm
4195 // CHECK-LE: @llvm.ppc.altivec.vperm
4196
4197 res_vs = vec_vsplth(vs, 0);
4198 // CHECK: @llvm.ppc.altivec.vperm
4199 // CHECK-LE: @llvm.ppc.altivec.vperm
4200
4201 res_vus = vec_vsplth(vus, 0);
4202 // CHECK: @llvm.ppc.altivec.vperm
4203 // CHECK-LE: @llvm.ppc.altivec.vperm
4204
4205 res_vbs = vec_vsplth(vbs, 0);
4206 // CHECK: @llvm.ppc.altivec.vperm
4207 // CHECK-LE: @llvm.ppc.altivec.vperm
4208
4209 res_vp = vec_vsplth(vp, 0);
4210 // CHECK: @llvm.ppc.altivec.vperm
4211 // CHECK-LE: @llvm.ppc.altivec.vperm
4212
4213 res_vi = vec_vspltw(vi, 0);
4214 // CHECK: @llvm.ppc.altivec.vperm
4215 // CHECK-LE: @llvm.ppc.altivec.vperm
4216
4217 res_vui = vec_vspltw(vui, 0);
4218 // CHECK: @llvm.ppc.altivec.vperm
4219 // CHECK-LE: @llvm.ppc.altivec.vperm
4220
4221 res_vbi = vec_vspltw(vbi, 0);
4222 // CHECK: @llvm.ppc.altivec.vperm
4223 // CHECK-LE: @llvm.ppc.altivec.vperm
4224
4225 res_vf = vec_vspltw(vf, 0);
4226 // CHECK: @llvm.ppc.altivec.vperm
4227 // CHECK-LE: @llvm.ppc.altivec.vperm
4228
4229 /* vec_splat_s8 */
4230 res_vsc = vec_splat_s8(0x09); // TODO: add check
4231 res_vsc = vec_vspltisb(0x09); // TODO: add check
4232
4233 /* vec_splat_s16 */
4234 res_vs = vec_splat_s16(0x09); // TODO: add check
4235 res_vs = vec_vspltish(0x09); // TODO: add check
4236
4237 /* vec_splat_s32 */
4238 res_vi = vec_splat_s32(0x09); // TODO: add check
4239 res_vi = vec_vspltisw(0x09); // TODO: add check
4240
4241 /* vec_splat_u8 */
4242 res_vuc = vec_splat_u8(0x09); // TODO: add check
4243
4244 /* vec_splat_u16 */
4245 res_vus = vec_splat_u16(0x09); // TODO: add check
4246
4247 /* vec_splat_u32 */
4248 res_vui = vec_splat_u32(0x09); // TODO: add check
4249
4250 /* vec_sr */
4251 res_vsc = vec_sr(vsc, vuc);
4252 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4253 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4254 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4255 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4256
4257 res_vuc = vec_sr(vuc, vuc);
4258 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4259 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4260 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4261 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4262
4263 res_vs = vec_sr(vs, vus);
4264 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4265 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4266 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4267 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4268
4269 res_vus = vec_sr(vus, vus);
4270 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4271 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4272 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4273 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4274
4275 res_vi = vec_sr(vi, vui);
4276 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4277 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4278 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4279 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4280
4281 res_vui = vec_sr(vui, vui);
4282 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4283 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4284 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4285 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4286
4287 res_vsc = vec_vsrb(vsc, vuc);
4288 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4289 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4290 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4291 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4292
4293 res_vuc = vec_vsrb(vuc, vuc);
4294 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4295 // CHECK: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4296 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <16 x i8> {{[0-9a-zA-Z%.]+}}, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
4297 // CHECK-LE: lshr <16 x i8> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4298
4299 res_vs = vec_vsrh(vs, vus);
4300 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4301 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4302 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4303 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4304
4305 res_vus = vec_vsrh(vus, vus);
4306 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4307 // CHECK: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4308 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <8 x i16> {{[0-9a-zA-Z%.]+}}, <i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16>
4309 // CHECK-LE: lshr <8 x i16> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4310
4311 res_vi = vec_vsrw(vi, vui);
4312 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4313 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4314 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4315 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4316
4317 res_vui = vec_vsrw(vui, vui);
4318 // CHECK: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4319 // CHECK: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4320 // CHECK-LE: [[UREM:[0-9a-zA-Z%.]+]] = urem <4 x i32> {{[0-9a-zA-Z%.]+}}, <i32 32, i32 32, i32 32, i32 32>
4321 // CHECK-LE: lshr <4 x i32> {{[0-9a-zA-Z%.]+}}, [[UREM]]
4322
4323 /* vec_sra */
4324 res_vsc = vec_sra(vsc, vuc);
4325 // CHECK: @llvm.ppc.altivec.vsrab
4326 // CHECK-LE: @llvm.ppc.altivec.vsrab
4327
4328 res_vuc = vec_sra(vuc, vuc);
4329 // CHECK: @llvm.ppc.altivec.vsrab
4330 // CHECK-LE: @llvm.ppc.altivec.vsrab
4331
4332 res_vs = vec_sra(vs, vus);
4333 // CHECK: @llvm.ppc.altivec.vsrah
4334 // CHECK-LE: @llvm.ppc.altivec.vsrah
4335
4336 res_vus = vec_sra(vus, vus);
4337 // CHECK: @llvm.ppc.altivec.vsrah
4338 // CHECK-LE: @llvm.ppc.altivec.vsrah
4339
4340 res_vi = vec_sra(vi, vui);
4341 // CHECK: @llvm.ppc.altivec.vsraw
4342 // CHECK-LE: @llvm.ppc.altivec.vsraw
4343
4344 res_vui = vec_sra(vui, vui);
4345 // CHECK: @llvm.ppc.altivec.vsraw
4346 // CHECK-LE: @llvm.ppc.altivec.vsraw
4347
4348 res_vsc = vec_vsrab(vsc, vuc);
4349 // CHECK: @llvm.ppc.altivec.vsrab
4350 // CHECK-LE: @llvm.ppc.altivec.vsrab
4351
4352 res_vuc = vec_vsrab(vuc, vuc);
4353 // CHECK: @llvm.ppc.altivec.vsrab
4354 // CHECK-LE: @llvm.ppc.altivec.vsrab
4355
4356 res_vs = vec_vsrah(vs, vus);
4357 // CHECK: @llvm.ppc.altivec.vsrah
4358 // CHECK-LE: @llvm.ppc.altivec.vsrah
4359
4360 res_vus = vec_vsrah(vus, vus);
4361 // CHECK: @llvm.ppc.altivec.vsrah
4362 // CHECK-LE: @llvm.ppc.altivec.vsrah
4363
4364 res_vi = vec_vsraw(vi, vui);
4365 // CHECK: @llvm.ppc.altivec.vsraw
4366 // CHECK-LE: @llvm.ppc.altivec.vsraw
4367
4368 res_vui = vec_vsraw(vui, vui);
4369 // CHECK: @llvm.ppc.altivec.vsraw
4370 // CHECK-LE: @llvm.ppc.altivec.vsraw
4371
4372 /* vec_srl */
4373 res_vsc = vec_srl(vsc, vuc);
4374 // CHECK: @llvm.ppc.altivec.vsr
4375 // CHECK-LE: @llvm.ppc.altivec.vsr
4376
4377 res_vsc = vec_srl(vsc, vus);
4378 // CHECK: @llvm.ppc.altivec.vsr
4379 // CHECK-LE: @llvm.ppc.altivec.vsr
4380
4381 res_vsc = vec_srl(vsc, vui);
4382 // CHECK: @llvm.ppc.altivec.vsr
4383 // CHECK-LE: @llvm.ppc.altivec.vsr
4384
4385 res_vuc = vec_srl(vuc, vuc);
4386 // CHECK: @llvm.ppc.altivec.vsr
4387 // CHECK-LE: @llvm.ppc.altivec.vsr
4388
4389 res_vuc = vec_srl(vuc, vus);
4390 // CHECK: @llvm.ppc.altivec.vsr
4391 // CHECK-LE: @llvm.ppc.altivec.vsr
4392
4393 res_vuc = vec_srl(vuc, vui);
4394 // CHECK: @llvm.ppc.altivec.vsr
4395 // CHECK-LE: @llvm.ppc.altivec.vsr
4396
4397 res_vbc = vec_srl(vbc, vuc);
4398 // CHECK: @llvm.ppc.altivec.vsr
4399 // CHECK-LE: @llvm.ppc.altivec.vsr
4400
4401 res_vbc = vec_srl(vbc, vus);
4402 // CHECK: @llvm.ppc.altivec.vsr
4403 // CHECK-LE: @llvm.ppc.altivec.vsr
4404
4405 res_vbc = vec_srl(vbc, vui);
4406 // CHECK: @llvm.ppc.altivec.vsr
4407 // CHECK-LE: @llvm.ppc.altivec.vsr
4408
4409 res_vs = vec_srl(vs, vuc);
4410 // CHECK: @llvm.ppc.altivec.vsr
4411 // CHECK-LE: @llvm.ppc.altivec.vsr
4412
4413 res_vs = vec_srl(vs, vus);
4414 // CHECK: @llvm.ppc.altivec.vsr
4415 // CHECK-LE: @llvm.ppc.altivec.vsr
4416
4417 res_vs = vec_srl(vs, vui);
4418 // CHECK: @llvm.ppc.altivec.vsr
4419 // CHECK-LE: @llvm.ppc.altivec.vsr
4420
4421 res_vus = vec_srl(vus, vuc);
4422 // CHECK: @llvm.ppc.altivec.vsr
4423 // CHECK-LE: @llvm.ppc.altivec.vsr
4424
4425 res_vus = vec_srl(vus, vus);
4426 // CHECK: @llvm.ppc.altivec.vsr
4427 // CHECK-LE: @llvm.ppc.altivec.vsr
4428
4429 res_vus = vec_srl(vus, vui);
4430 // CHECK: @llvm.ppc.altivec.vsr
4431 // CHECK-LE: @llvm.ppc.altivec.vsr
4432
4433 res_vbs = vec_srl(vbs, vuc);
4434 // CHECK: @llvm.ppc.altivec.vsr
4435 // CHECK-LE: @llvm.ppc.altivec.vsr
4436
4437 res_vbs = vec_srl(vbs, vus);
4438 // CHECK: @llvm.ppc.altivec.vsr
4439 // CHECK-LE: @llvm.ppc.altivec.vsr
4440
4441 res_vbs = vec_srl(vbs, vui);
4442 // CHECK: @llvm.ppc.altivec.vsr
4443 // CHECK-LE: @llvm.ppc.altivec.vsr
4444
4445 res_vp = vec_srl(vp, vuc);
4446 // CHECK: @llvm.ppc.altivec.vsr
4447 // CHECK-LE: @llvm.ppc.altivec.vsr
4448
4449 res_vp = vec_srl(vp, vus);
4450 // CHECK: @llvm.ppc.altivec.vsr
4451 // CHECK-LE: @llvm.ppc.altivec.vsr
4452
4453 res_vp = vec_srl(vp, vui);
4454 // CHECK: @llvm.ppc.altivec.vsr
4455 // CHECK-LE: @llvm.ppc.altivec.vsr
4456
4457 res_vi = vec_srl(vi, vuc);
4458 // CHECK: @llvm.ppc.altivec.vsr
4459 // CHECK-LE: @llvm.ppc.altivec.vsr
4460
4461 res_vi = vec_srl(vi, vus);
4462 // CHECK: @llvm.ppc.altivec.vsr
4463 // CHECK-LE: @llvm.ppc.altivec.vsr
4464
4465 res_vi = vec_srl(vi, vui);
4466 // CHECK: @llvm.ppc.altivec.vsr
4467 // CHECK-LE: @llvm.ppc.altivec.vsr
4468
4469 res_vui = vec_srl(vui, vuc);
4470 // CHECK: @llvm.ppc.altivec.vsr
4471 // CHECK-LE: @llvm.ppc.altivec.vsr
4472
4473 res_vui = vec_srl(vui, vus);
4474 // CHECK: @llvm.ppc.altivec.vsr
4475 // CHECK-LE: @llvm.ppc.altivec.vsr
4476
4477 res_vui = vec_srl(vui, vui);
4478 // CHECK: @llvm.ppc.altivec.vsr
4479 // CHECK-LE: @llvm.ppc.altivec.vsr
4480
4481 res_vbi = vec_srl(vbi, vuc);
4482 // CHECK: @llvm.ppc.altivec.vsr
4483 // CHECK-LE: @llvm.ppc.altivec.vsr
4484
4485 res_vbi = vec_srl(vbi, vus);
4486 // CHECK: @llvm.ppc.altivec.vsr
4487 // CHECK-LE: @llvm.ppc.altivec.vsr
4488
4489 res_vbi = vec_srl(vbi, vui);
4490 // CHECK: @llvm.ppc.altivec.vsr
4491 // CHECK-LE: @llvm.ppc.altivec.vsr
4492
4493 res_vsc = vec_vsr(vsc, vuc);
4494 // CHECK: @llvm.ppc.altivec.vsr
4495 // CHECK-LE: @llvm.ppc.altivec.vsr
4496
4497 res_vsc = vec_vsr(vsc, vus);
4498 // CHECK: @llvm.ppc.altivec.vsr
4499 // CHECK-LE: @llvm.ppc.altivec.vsr
4500
4501 res_vsc = vec_vsr(vsc, vui);
4502 // CHECK: @llvm.ppc.altivec.vsr
4503 // CHECK-LE: @llvm.ppc.altivec.vsr
4504
4505 res_vuc = vec_vsr(vuc, vuc);
4506 // CHECK: @llvm.ppc.altivec.vsr
4507 // CHECK-LE: @llvm.ppc.altivec.vsr
4508
4509 res_vuc = vec_vsr(vuc, vus);
4510 // CHECK: @llvm.ppc.altivec.vsr
4511 // CHECK-LE: @llvm.ppc.altivec.vsr
4512
4513 res_vuc = vec_vsr(vuc, vui);
4514 // CHECK: @llvm.ppc.altivec.vsr
4515 // CHECK-LE: @llvm.ppc.altivec.vsr
4516
4517 res_vbc = vec_vsr(vbc, vuc);
4518 // CHECK: @llvm.ppc.altivec.vsr
4519 // CHECK-LE: @llvm.ppc.altivec.vsr
4520
4521 res_vbc = vec_vsr(vbc, vus);
4522 // CHECK: @llvm.ppc.altivec.vsr
4523 // CHECK-LE: @llvm.ppc.altivec.vsr
4524
4525 res_vbc = vec_vsr(vbc, vui);
4526 // CHECK: @llvm.ppc.altivec.vsr
4527 // CHECK-LE: @llvm.ppc.altivec.vsr
4528
4529 res_vs = vec_vsr(vs, vuc);
4530 // CHECK: @llvm.ppc.altivec.vsr
4531 // CHECK-LE: @llvm.ppc.altivec.vsr
4532
4533 res_vs = vec_vsr(vs, vus);
4534 // CHECK: @llvm.ppc.altivec.vsr
4535 // CHECK-LE: @llvm.ppc.altivec.vsr
4536
4537 res_vs = vec_vsr(vs, vui);
4538 // CHECK: @llvm.ppc.altivec.vsr
4539 // CHECK-LE: @llvm.ppc.altivec.vsr
4540
4541 res_vus = vec_vsr(vus, vuc);
4542 // CHECK: @llvm.ppc.altivec.vsr
4543 // CHECK-LE: @llvm.ppc.altivec.vsr
4544
4545 res_vus = vec_vsr(vus, vus);
4546 // CHECK: @llvm.ppc.altivec.vsr
4547 // CHECK-LE: @llvm.ppc.altivec.vsr
4548
4549 res_vus = vec_vsr(vus, vui);
4550 // CHECK: @llvm.ppc.altivec.vsr
4551 // CHECK-LE: @llvm.ppc.altivec.vsr
4552
4553 res_vbs = vec_vsr(vbs, vuc);
4554 // CHECK: @llvm.ppc.altivec.vsr
4555 // CHECK-LE: @llvm.ppc.altivec.vsr
4556
4557 res_vbs = vec_vsr(vbs, vus);
4558 // CHECK: @llvm.ppc.altivec.vsr
4559 // CHECK-LE: @llvm.ppc.altivec.vsr
4560
4561 res_vbs = vec_vsr(vbs, vui);
4562 // CHECK: @llvm.ppc.altivec.vsr
4563 // CHECK-LE: @llvm.ppc.altivec.vsr
4564
4565 res_vp = vec_vsr(vp, vuc);
4566 // CHECK: @llvm.ppc.altivec.vsr
4567 // CHECK-LE: @llvm.ppc.altivec.vsr
4568
4569 res_vp = vec_vsr(vp, vus);
4570 // CHECK: @llvm.ppc.altivec.vsr
4571 // CHECK-LE: @llvm.ppc.altivec.vsr
4572
4573 res_vp = vec_vsr(vp, vui);
4574 // CHECK: @llvm.ppc.altivec.vsr
4575 // CHECK-LE: @llvm.ppc.altivec.vsr
4576
4577 res_vi = vec_vsr(vi, vuc);
4578 // CHECK: @llvm.ppc.altivec.vsr
4579 // CHECK-LE: @llvm.ppc.altivec.vsr
4580
4581 res_vi = vec_vsr(vi, vus);
4582 // CHECK: @llvm.ppc.altivec.vsr
4583 // CHECK-LE: @llvm.ppc.altivec.vsr
4584
4585 res_vi = vec_vsr(vi, vui);
4586 // CHECK: @llvm.ppc.altivec.vsr
4587 // CHECK-LE: @llvm.ppc.altivec.vsr
4588
4589 res_vui = vec_vsr(vui, vuc);
4590 // CHECK: @llvm.ppc.altivec.vsr
4591 // CHECK-LE: @llvm.ppc.altivec.vsr
4592
4593 res_vui = vec_vsr(vui, vus);
4594 // CHECK: @llvm.ppc.altivec.vsr
4595 // CHECK-LE: @llvm.ppc.altivec.vsr
4596
4597 res_vui = vec_vsr(vui, vui);
4598 // CHECK: @llvm.ppc.altivec.vsr
4599 // CHECK-LE: @llvm.ppc.altivec.vsr
4600
4601 res_vbi = vec_vsr(vbi, vuc);
4602 // CHECK: @llvm.ppc.altivec.vsr
4603 // CHECK-LE: @llvm.ppc.altivec.vsr
4604
4605 res_vbi = vec_vsr(vbi, vus);
4606 // CHECK: @llvm.ppc.altivec.vsr
4607 // CHECK-LE: @llvm.ppc.altivec.vsr
4608
4609 res_vbi = vec_vsr(vbi, vui);
4610 // CHECK: @llvm.ppc.altivec.vsr
4611 // CHECK-LE: @llvm.ppc.altivec.vsr
4612
4613 /* vec_sro */
4614 res_vsc = vec_sro(vsc, vsc);
4615 // CHECK: @llvm.ppc.altivec.vsro
4616 // CHECK-LE: @llvm.ppc.altivec.vsro
4617
4618 res_vsc = vec_sro(vsc, vuc);
4619 // CHECK: @llvm.ppc.altivec.vsro
4620 // CHECK-LE: @llvm.ppc.altivec.vsro
4621
4622 res_vuc = vec_sro(vuc, vsc);
4623 // CHECK: @llvm.ppc.altivec.vsro
4624 // CHECK-LE: @llvm.ppc.altivec.vsro
4625
4626 res_vuc = vec_sro(vuc, vuc);
4627 // CHECK: @llvm.ppc.altivec.vsro
4628 // CHECK-LE: @llvm.ppc.altivec.vsro
4629
4630 res_vs = vec_sro(vs, vsc);
4631 // CHECK: @llvm.ppc.altivec.vsro
4632 // CHECK-LE: @llvm.ppc.altivec.vsro
4633
4634 res_vs = vec_sro(vs, vuc);
4635 // CHECK: @llvm.ppc.altivec.vsro
4636 // CHECK-LE: @llvm.ppc.altivec.vsro
4637
4638 res_vus = vec_sro(vus, vsc);
4639 // CHECK: @llvm.ppc.altivec.vsro
4640 // CHECK-LE: @llvm.ppc.altivec.vsro
4641
4642 res_vus = vec_sro(vus, vuc);
4643 // CHECK: @llvm.ppc.altivec.vsro
4644 // CHECK-LE: @llvm.ppc.altivec.vsro
4645
4646 res_vp = vec_sro(vp, vsc);
4647 // CHECK: @llvm.ppc.altivec.vsro
4648 // CHECK-LE: @llvm.ppc.altivec.vsro
4649
4650 res_vp = vec_sro(vp, vuc);
4651 // CHECK: @llvm.ppc.altivec.vsro
4652 // CHECK-LE: @llvm.ppc.altivec.vsro
4653
4654 res_vi = vec_sro(vi, vsc);
4655 // CHECK: @llvm.ppc.altivec.vsro
4656 // CHECK-LE: @llvm.ppc.altivec.vsro
4657
4658 res_vi = vec_sro(vi, vuc);
4659 // CHECK: @llvm.ppc.altivec.vsro
4660 // CHECK-LE: @llvm.ppc.altivec.vsro
4661
4662 res_vui = vec_sro(vui, vsc);
4663 // CHECK: @llvm.ppc.altivec.vsro
4664 // CHECK-LE: @llvm.ppc.altivec.vsro
4665
4666 res_vui = vec_sro(vui, vuc);
4667 // CHECK: @llvm.ppc.altivec.vsro
4668 // CHECK-LE: @llvm.ppc.altivec.vsro
4669
4670 res_vf = vec_sro(vf, vsc);
4671 // CHECK: @llvm.ppc.altivec.vsro
4672 // CHECK-LE: @llvm.ppc.altivec.vsro
4673
4674 res_vf = vec_sro(vf, vuc);
4675 // CHECK: @llvm.ppc.altivec.vsro
4676 // CHECK-LE: @llvm.ppc.altivec.vsro
4677
4678 res_vsc = vec_vsro(vsc, vsc);
4679 // CHECK: @llvm.ppc.altivec.vsro
4680 // CHECK-LE: @llvm.ppc.altivec.vsro
4681
4682 res_vsc = vec_vsro(vsc, vuc);
4683 // CHECK: @llvm.ppc.altivec.vsro
4684 // CHECK-LE: @llvm.ppc.altivec.vsro
4685
4686 res_vuc = vec_vsro(vuc, vsc);
4687 // CHECK: @llvm.ppc.altivec.vsro
4688 // CHECK-LE: @llvm.ppc.altivec.vsro
4689
4690 res_vuc = vec_vsro(vuc, vuc);
4691 // CHECK: @llvm.ppc.altivec.vsro
4692 // CHECK-LE: @llvm.ppc.altivec.vsro
4693
4694 res_vs = vec_vsro(vs, vsc);
4695 // CHECK: @llvm.ppc.altivec.vsro
4696 // CHECK-LE: @llvm.ppc.altivec.vsro
4697
4698 res_vs = vec_vsro(vs, vuc);
4699 // CHECK: @llvm.ppc.altivec.vsro
4700 // CHECK-LE: @llvm.ppc.altivec.vsro
4701
4702 res_vus = vec_vsro(vus, vsc);
4703 // CHECK: @llvm.ppc.altivec.vsro
4704 // CHECK-LE: @llvm.ppc.altivec.vsro
4705
4706 res_vus = vec_vsro(vus, vuc);
4707 // CHECK: @llvm.ppc.altivec.vsro
4708 // CHECK-LE: @llvm.ppc.altivec.vsro
4709
4710 res_vp = vec_vsro(vp, vsc);
4711 // CHECK: @llvm.ppc.altivec.vsro
4712 // CHECK-LE: @llvm.ppc.altivec.vsro
4713
4714 res_vp = vec_vsro(vp, vuc);
4715 // CHECK: @llvm.ppc.altivec.vsro
4716 // CHECK-LE: @llvm.ppc.altivec.vsro
4717
4718 res_vi = vec_vsro(vi, vsc);
4719 // CHECK: @llvm.ppc.altivec.vsro
4720 // CHECK-LE: @llvm.ppc.altivec.vsro
4721
4722 res_vi = vec_vsro(vi, vuc);
4723 // CHECK: @llvm.ppc.altivec.vsro
4724 // CHECK-LE: @llvm.ppc.altivec.vsro
4725
4726 res_vui = vec_vsro(vui, vsc);
4727 // CHECK: @llvm.ppc.altivec.vsro
4728 // CHECK-LE: @llvm.ppc.altivec.vsro
4729
4730 res_vui = vec_vsro(vui, vuc);
4731 // CHECK: @llvm.ppc.altivec.vsro
4732 // CHECK-LE: @llvm.ppc.altivec.vsro
4733
4734 res_vf = vec_vsro(vf, vsc);
4735 // CHECK: @llvm.ppc.altivec.vsro
4736 // CHECK-LE: @llvm.ppc.altivec.vsro
4737
4738 res_vf = vec_vsro(vf, vuc);
4739 // CHECK: @llvm.ppc.altivec.vsro
4740 // CHECK-LE: @llvm.ppc.altivec.vsro
4741
4742 /* vec_st */
4743 vec_st(vsc, 0, &vsc);
4744 // CHECK: @llvm.ppc.altivec.stvx
4745 // CHECK-LE: @llvm.ppc.altivec.stvx
4746
4747 vec_st(vsc, 0, ¶m_sc);
4748 // CHECK: @llvm.ppc.altivec.stvx
4749 // CHECK-LE: @llvm.ppc.altivec.stvx
4750
4751 vec_st(vuc, 0, &vuc);
4752 // CHECK: @llvm.ppc.altivec.stvx
4753 // CHECK-LE: @llvm.ppc.altivec.stvx
4754
4755 vec_st(vuc, 0, ¶m_uc);
4756 // CHECK: @llvm.ppc.altivec.stvx
4757 // CHECK-LE: @llvm.ppc.altivec.stvx
4758
4759 vec_st(vbc, 0, ¶m_uc);
4760 // CHECK: @llvm.ppc.altivec.stvx
4761 // CHECK-LE: @llvm.ppc.altivec.stvx
4762
4763 vec_st(vbc, 0, ¶m_uc);
4764 // CHECK: @llvm.ppc.altivec.stvx
4765 // CHECK-LE: @llvm.ppc.altivec.stvx
4766
4767 vec_st(vbc, 0, &vbc);
4768 // CHECK: @llvm.ppc.altivec.stvx
4769 // CHECK-LE: @llvm.ppc.altivec.stvx
4770
4771 vec_st(vs, 0, &vs);
4772 // CHECK: @llvm.ppc.altivec.stvx
4773 // CHECK-LE: @llvm.ppc.altivec.stvx
4774
4775 vec_st(vs, 0, ¶m_s);
4776 // CHECK: @llvm.ppc.altivec.stvx
4777 // CHECK-LE: @llvm.ppc.altivec.stvx
4778
4779 vec_st(vus, 0, &vus);
4780 // CHECK: @llvm.ppc.altivec.stvx
4781 // CHECK-LE: @llvm.ppc.altivec.stvx
4782
4783 vec_st(vus, 0, ¶m_us);
4784 // CHECK: @llvm.ppc.altivec.stvx
4785 // CHECK-LE: @llvm.ppc.altivec.stvx
4786
4787 vec_st(vbs, 0, ¶m_s);
4788 // CHECK: @llvm.ppc.altivec.stvx
4789 // CHECK-LE: @llvm.ppc.altivec.stvx
4790
4791 vec_st(vbs, 0, ¶m_us);
4792 // CHECK: @llvm.ppc.altivec.stvx
4793 // CHECK-LE: @llvm.ppc.altivec.stvx
4794
4795 vec_st(vbs, 0, &vbs);
4796 // CHECK: @llvm.ppc.altivec.stvx
4797 // CHECK-LE: @llvm.ppc.altivec.stvx
4798
4799 vec_st(vp, 0, ¶m_s);
4800 // CHECK: @llvm.ppc.altivec.stvx
4801 // CHECK-LE: @llvm.ppc.altivec.stvx
4802
4803 vec_st(vp, 0, ¶m_us);
4804 // CHECK: @llvm.ppc.altivec.stvx
4805 // CHECK-LE: @llvm.ppc.altivec.stvx
4806
4807 vec_st(vp, 0, &vp);
4808 // CHECK: @llvm.ppc.altivec.stvx
4809 // CHECK-LE: @llvm.ppc.altivec.stvx
4810
4811 vec_st(vi, 0, &vi);
4812 // CHECK: @llvm.ppc.altivec.stvx
4813 // CHECK-LE: @llvm.ppc.altivec.stvx
4814
4815 vec_st(vi, 0, ¶m_i);
4816 // CHECK: @llvm.ppc.altivec.stvx
4817 // CHECK-LE: @llvm.ppc.altivec.stvx
4818
4819 vec_st(vui, 0, &vui);
4820 // CHECK: @llvm.ppc.altivec.stvx
4821 // CHECK-LE: @llvm.ppc.altivec.stvx
4822
4823 vec_st(vui, 0, ¶m_ui);
4824 // CHECK: @llvm.ppc.altivec.stvx
4825 // CHECK-LE: @llvm.ppc.altivec.stvx
4826
4827 vec_st(vbi, 0, ¶m_i);
4828 // CHECK: @llvm.ppc.altivec.stvx
4829 // CHECK-LE: @llvm.ppc.altivec.stvx
4830
4831 vec_st(vbi, 0, ¶m_ui);
4832 // CHECK: @llvm.ppc.altivec.stvx
4833 // CHECK-LE: @llvm.ppc.altivec.stvx
4834
4835 vec_st(vbi, 0, &vbi);
4836 // CHECK: @llvm.ppc.altivec.stvx
4837 // CHECK-LE: @llvm.ppc.altivec.stvx
4838
4839 vec_st(vf, 0, &vf);
4840 // CHECK: @llvm.ppc.altivec.stvx
4841 // CHECK-LE: @llvm.ppc.altivec.stvx
4842
4843 vec_st(vf, 0, ¶m_f);
4844 // CHECK: @llvm.ppc.altivec.stvx
4845 // CHECK-LE: @llvm.ppc.altivec.stvx
4846
4847 vec_stvx(vsc, 0, &vsc);
4848 // CHECK: @llvm.ppc.altivec.stvx
4849 // CHECK-LE: @llvm.ppc.altivec.stvx
4850
4851 vec_stvx(vsc, 0, ¶m_sc);
4852 // CHECK: @llvm.ppc.altivec.stvx
4853 // CHECK-LE: @llvm.ppc.altivec.stvx
4854
4855 vec_stvx(vuc, 0, &vuc);
4856 // CHECK: @llvm.ppc.altivec.stvx
4857 // CHECK-LE: @llvm.ppc.altivec.stvx
4858
4859 vec_stvx(vuc, 0, ¶m_uc);
4860 // CHECK: @llvm.ppc.altivec.stvx
4861 // CHECK-LE: @llvm.ppc.altivec.stvx
4862
4863 vec_stvx(vbc, 0, ¶m_uc);
4864 // CHECK: @llvm.ppc.altivec.stvx
4865 // CHECK-LE: @llvm.ppc.altivec.stvx
4866
4867 vec_stvx(vbc, 0, ¶m_uc);
4868 // CHECK: @llvm.ppc.altivec.stvx
4869 // CHECK-LE: @llvm.ppc.altivec.stvx
4870
4871 vec_stvx(vbc, 0, &vbc);
4872 // CHECK: @llvm.ppc.altivec.stvx
4873 // CHECK-LE: @llvm.ppc.altivec.stvx
4874
4875 vec_stvx(vs, 0, &vs);
4876 // CHECK: @llvm.ppc.altivec.stvx
4877 // CHECK-LE: @llvm.ppc.altivec.stvx
4878
4879 vec_stvx(vs, 0, ¶m_s);
4880 // CHECK: @llvm.ppc.altivec.stvx
4881 // CHECK-LE: @llvm.ppc.altivec.stvx
4882
4883 vec_stvx(vus, 0, &vus);
4884 // CHECK: @llvm.ppc.altivec.stvx
4885 // CHECK-LE: @llvm.ppc.altivec.stvx
4886
4887 vec_stvx(vus, 0, ¶m_us);
4888 // CHECK: @llvm.ppc.altivec.stvx
4889 // CHECK-LE: @llvm.ppc.altivec.stvx
4890
4891 vec_stvx(vbs, 0, ¶m_s);
4892 // CHECK: @llvm.ppc.altivec.stvx
4893 // CHECK-LE: @llvm.ppc.altivec.stvx
4894
4895 vec_stvx(vbs, 0, ¶m_us);
4896 // CHECK: @llvm.ppc.altivec.stvx
4897 // CHECK-LE: @llvm.ppc.altivec.stvx
4898
4899 vec_stvx(vbs, 0, &vbs);
4900 // CHECK: @llvm.ppc.altivec.stvx
4901 // CHECK-LE: @llvm.ppc.altivec.stvx
4902
4903 vec_stvx(vp, 0, ¶m_s);
4904 // CHECK: @llvm.ppc.altivec.stvx
4905 // CHECK-LE: @llvm.ppc.altivec.stvx
4906
4907 vec_stvx(vp, 0, ¶m_us);
4908 // CHECK: @llvm.ppc.altivec.stvx
4909 // CHECK-LE: @llvm.ppc.altivec.stvx
4910
4911 vec_stvx(vp, 0, &vp);
4912 // CHECK: @llvm.ppc.altivec.stvx
4913 // CHECK-LE: @llvm.ppc.altivec.stvx
4914
4915 vec_stvx(vi, 0, &vi);
4916 // CHECK: @llvm.ppc.altivec.stvx
4917 // CHECK-LE: @llvm.ppc.altivec.stvx
4918
4919 vec_stvx(vi, 0, ¶m_i);
4920 // CHECK: @llvm.ppc.altivec.stvx
4921 // CHECK-LE: @llvm.ppc.altivec.stvx
4922
4923 vec_stvx(vui, 0, &vui);
4924 // CHECK: @llvm.ppc.altivec.stvx
4925 // CHECK-LE: @llvm.ppc.altivec.stvx
4926
4927 vec_stvx(vui, 0, ¶m_ui);
4928 // CHECK: @llvm.ppc.altivec.stvx
4929 // CHECK-LE: @llvm.ppc.altivec.stvx
4930
4931 vec_stvx(vbi, 0, ¶m_i);
4932 // CHECK: @llvm.ppc.altivec.stvx
4933 // CHECK-LE: @llvm.ppc.altivec.stvx
4934
4935 vec_stvx(vbi, 0, ¶m_ui);
4936 // CHECK: @llvm.ppc.altivec.stvx
4937 // CHECK-LE: @llvm.ppc.altivec.stvx
4938
4939 vec_stvx(vbi, 0, &vbi);
4940 // CHECK: @llvm.ppc.altivec.stvx
4941 // CHECK-LE: @llvm.ppc.altivec.stvx
4942
4943 vec_stvx(vf, 0, &vf);
4944 // CHECK: @llvm.ppc.altivec.stvx
4945 // CHECK-LE: @llvm.ppc.altivec.stvx
4946
4947 vec_stvx(vf, 0, ¶m_f);
4948 // CHECK: @llvm.ppc.altivec.stvx
4949 // CHECK-LE: @llvm.ppc.altivec.stvx
4950
4951 /* vec_ste */
4952 vec_ste(vsc, 0, ¶m_sc);
4953 // CHECK: @llvm.ppc.altivec.stvebx
4954 // CHECK-LE: @llvm.ppc.altivec.stvebx
4955
4956 vec_ste(vuc, 0, ¶m_uc);
4957 // CHECK: @llvm.ppc.altivec.stvebx
4958 // CHECK-LE: @llvm.ppc.altivec.stvebx
4959
4960 vec_ste(vbc, 0, ¶m_sc);
4961 // CHECK: @llvm.ppc.altivec.stvebx
4962 // CHECK-LE: @llvm.ppc.altivec.stvebx
4963
4964 vec_ste(vbc, 0, ¶m_uc);
4965 // CHECK: @llvm.ppc.altivec.stvebx
4966 // CHECK-LE: @llvm.ppc.altivec.stvebx
4967
4968 vec_ste(vs, 0, ¶m_s);
4969 // CHECK: @llvm.ppc.altivec.stvehx
4970 // CHECK-LE: @llvm.ppc.altivec.stvehx
4971
4972 vec_ste(vus, 0, ¶m_us);
4973 // CHECK: @llvm.ppc.altivec.stvehx
4974 // CHECK-LE: @llvm.ppc.altivec.stvehx
4975
4976 vec_ste(vbs, 0, ¶m_s);
4977 // CHECK: @llvm.ppc.altivec.stvehx
4978 // CHECK-LE: @llvm.ppc.altivec.stvehx
4979
4980 vec_ste(vbs, 0, ¶m_us);
4981 // CHECK: @llvm.ppc.altivec.stvehx
4982 // CHECK-LE: @llvm.ppc.altivec.stvehx
4983
4984 vec_ste(vp, 0, ¶m_s);
4985 // CHECK: @llvm.ppc.altivec.stvehx
4986 // CHECK-LE: @llvm.ppc.altivec.stvehx
4987
4988 vec_ste(vp, 0, ¶m_us);
4989 // CHECK: @llvm.ppc.altivec.stvehx
4990 // CHECK-LE: @llvm.ppc.altivec.stvehx
4991
4992 vec_ste(vi, 0, ¶m_i);
4993 // CHECK: @llvm.ppc.altivec.stvewx
4994 // CHECK-LE: @llvm.ppc.altivec.stvewx
4995
4996 vec_ste(vui, 0, ¶m_ui);
4997 // CHECK: @llvm.ppc.altivec.stvewx
4998 // CHECK-LE: @llvm.ppc.altivec.stvewx
4999
5000 vec_ste(vbi, 0, ¶m_i);
5001 // CHECK: @llvm.ppc.altivec.stvewx
5002 // CHECK-LE: @llvm.ppc.altivec.stvewx
5003
5004 vec_ste(vbi, 0, ¶m_ui);
5005 // CHECK: @llvm.ppc.altivec.stvewx
5006 // CHECK-LE: @llvm.ppc.altivec.stvewx
5007
5008 vec_ste(vf, 0, ¶m_f);
5009 // CHECK: @llvm.ppc.altivec.stvewx
5010 // CHECK-LE: @llvm.ppc.altivec.stvewx
5011
5012 vec_stvebx(vsc, 0, ¶m_sc);
5013 // CHECK: @llvm.ppc.altivec.stvebx
5014 // CHECK-LE: @llvm.ppc.altivec.stvebx
5015
5016 vec_stvebx(vuc, 0, ¶m_uc);
5017 // CHECK: @llvm.ppc.altivec.stvebx
5018 // CHECK-LE: @llvm.ppc.altivec.stvebx
5019
5020 vec_stvebx(vbc, 0, ¶m_sc);
5021 // CHECK: @llvm.ppc.altivec.stvebx
5022 // CHECK-LE: @llvm.ppc.altivec.stvebx
5023
5024 vec_stvebx(vbc, 0, ¶m_uc);
5025 // CHECK: @llvm.ppc.altivec.stvebx
5026 // CHECK-LE: @llvm.ppc.altivec.stvebx
5027
5028 vec_stvehx(vs, 0, ¶m_s);
5029 // CHECK: @llvm.ppc.altivec.stvehx
5030 // CHECK-LE: @llvm.ppc.altivec.stvehx
5031
5032 vec_stvehx(vus, 0, ¶m_us);
5033 // CHECK: @llvm.ppc.altivec.stvehx
5034 // CHECK-LE: @llvm.ppc.altivec.stvehx
5035
5036 vec_stvehx(vbs, 0, ¶m_s);
5037 // CHECK: @llvm.ppc.altivec.stvehx
5038 // CHECK-LE: @llvm.ppc.altivec.stvehx
5039
5040 vec_stvehx(vbs, 0, ¶m_us);
5041 // CHECK: @llvm.ppc.altivec.stvehx
5042 // CHECK-LE: @llvm.ppc.altivec.stvehx
5043
5044 vec_stvehx(vp, 0, ¶m_s);
5045 // CHECK: @llvm.ppc.altivec.stvehx
5046 // CHECK-LE: @llvm.ppc.altivec.stvehx
5047
5048 vec_stvehx(vp, 0, ¶m_us);
5049 // CHECK: @llvm.ppc.altivec.stvehx
5050 // CHECK-LE: @llvm.ppc.altivec.stvehx
5051
5052 vec_stvewx(vi, 0, ¶m_i);
5053 // CHECK: @llvm.ppc.altivec.stvewx
5054 // CHECK-LE: @llvm.ppc.altivec.stvewx
5055
5056 vec_stvewx(vui, 0, ¶m_ui);
5057 // CHECK: @llvm.ppc.altivec.stvewx
5058 // CHECK-LE: @llvm.ppc.altivec.stvewx
5059
5060 vec_stvewx(vbi, 0, ¶m_i);
5061 // CHECK: @llvm.ppc.altivec.stvewx
5062 // CHECK-LE: @llvm.ppc.altivec.stvewx
5063
5064 vec_stvewx(vbi, 0, ¶m_ui);
5065 // CHECK: @llvm.ppc.altivec.stvewx
5066 // CHECK-LE: @llvm.ppc.altivec.stvewx
5067
5068 vec_stvewx(vf, 0, ¶m_f);
5069 // CHECK: @llvm.ppc.altivec.stvewx
5070 // CHECK-LE: @llvm.ppc.altivec.stvewx
5071
5072 /* vec_stl */
5073 vec_stl(vsc, 0, &vsc);
5074 // CHECK: @llvm.ppc.altivec.stvxl
5075 // CHECK-LE: @llvm.ppc.altivec.stvxl
5076
5077 vec_stl(vsc, 0, ¶m_sc);
5078 // CHECK: @llvm.ppc.altivec.stvxl
5079 // CHECK-LE: @llvm.ppc.altivec.stvxl
5080
5081 vec_stl(vuc, 0, &vuc);
5082 // CHECK: @llvm.ppc.altivec.stvxl
5083 // CHECK-LE: @llvm.ppc.altivec.stvxl
5084
5085 vec_stl(vuc, 0, ¶m_uc);
5086 // CHECK: @llvm.ppc.altivec.stvxl
5087 // CHECK-LE: @llvm.ppc.altivec.stvxl
5088
5089 vec_stl(vbc, 0, ¶m_sc);
5090 // CHECK: @llvm.ppc.altivec.stvxl
5091 // CHECK-LE: @llvm.ppc.altivec.stvxl
5092
5093 vec_stl(vbc, 0, ¶m_uc);
5094 // CHECK: @llvm.ppc.altivec.stvxl
5095 // CHECK-LE: @llvm.ppc.altivec.stvxl
5096
5097 vec_stl(vbc, 0, &vbc);
5098 // CHECK: @llvm.ppc.altivec.stvxl
5099 // CHECK-LE: @llvm.ppc.altivec.stvxl
5100
5101 vec_stl(vs, 0, &vs);
5102 // CHECK: @llvm.ppc.altivec.stvxl
5103 // CHECK-LE: @llvm.ppc.altivec.stvxl
5104
5105 vec_stl(vs, 0, ¶m_s);
5106 // CHECK: @llvm.ppc.altivec.stvxl
5107 // CHECK-LE: @llvm.ppc.altivec.stvxl
5108
5109 vec_stl(vus, 0, &vus);
5110 // CHECK: @llvm.ppc.altivec.stvxl
5111 // CHECK-LE: @llvm.ppc.altivec.stvxl
5112
5113 vec_stl(vus, 0, ¶m_us);
5114 // CHECK: @llvm.ppc.altivec.stvxl
5115 // CHECK-LE: @llvm.ppc.altivec.stvxl
5116
5117 vec_stl(vbs, 0, ¶m_s);
5118 // CHECK: @llvm.ppc.altivec.stvxl
5119 // CHECK-LE: @llvm.ppc.altivec.stvxl
5120
5121 vec_stl(vbs, 0, ¶m_us);
5122 // CHECK: @llvm.ppc.altivec.stvxl
5123 // CHECK-LE: @llvm.ppc.altivec.stvxl
5124
5125 vec_stl(vbs, 0, &vbs);
5126 // CHECK: @llvm.ppc.altivec.stvxl
5127 // CHECK-LE: @llvm.ppc.altivec.stvxl
5128
5129 vec_stl(vp, 0, ¶m_s);
5130 // CHECK: @llvm.ppc.altivec.stvxl
5131 // CHECK-LE: @llvm.ppc.altivec.stvxl
5132
5133 vec_stl(vp, 0, ¶m_us);
5134 // CHECK: @llvm.ppc.altivec.stvxl
5135 // CHECK-LE: @llvm.ppc.altivec.stvxl
5136
5137 vec_stl(vp, 0, &vp);
5138 // CHECK: @llvm.ppc.altivec.stvxl
5139 // CHECK-LE: @llvm.ppc.altivec.stvxl
5140
5141 vec_stl(vi, 0, &vi);
5142 // CHECK: @llvm.ppc.altivec.stvxl
5143 // CHECK-LE: @llvm.ppc.altivec.stvxl
5144
5145 vec_stl(vi, 0, ¶m_i);
5146 // CHECK: @llvm.ppc.altivec.stvxl
5147 // CHECK-LE: @llvm.ppc.altivec.stvxl
5148
5149 vec_stl(vui, 0, &vui);
5150 // CHECK: @llvm.ppc.altivec.stvxl
5151 // CHECK-LE: @llvm.ppc.altivec.stvxl
5152
5153 vec_stl(vui, 0, ¶m_ui);
5154 // CHECK: @llvm.ppc.altivec.stvxl
5155 // CHECK-LE: @llvm.ppc.altivec.stvxl
5156
5157 vec_stl(vbi, 0, ¶m_i);
5158 // CHECK: @llvm.ppc.altivec.stvxl
5159 // CHECK-LE: @llvm.ppc.altivec.stvxl
5160
5161 vec_stl(vbi, 0, ¶m_ui);
5162 // CHECK: @llvm.ppc.altivec.stvxl
5163 // CHECK-LE: @llvm.ppc.altivec.stvxl
5164
5165 vec_stl(vbi, 0, &vbi);
5166 // CHECK: @llvm.ppc.altivec.stvxl
5167 // CHECK-LE: @llvm.ppc.altivec.stvxl
5168
5169 vec_stl(vf, 0, &vf);
5170 // CHECK: @llvm.ppc.altivec.stvxl
5171 // CHECK-LE: @llvm.ppc.altivec.stvxl
5172
5173 vec_stl(vf, 0, ¶m_f);
5174 // CHECK: @llvm.ppc.altivec.stvxl
5175 // CHECK-LE: @llvm.ppc.altivec.stvxl
5176
5177 vec_stvxl(vsc, 0, &vsc);
5178 // CHECK: @llvm.ppc.altivec.stvxl
5179 // CHECK-LE: @llvm.ppc.altivec.stvxl
5180
5181 vec_stvxl(vsc, 0, ¶m_sc);
5182 // CHECK: @llvm.ppc.altivec.stvxl
5183 // CHECK-LE: @llvm.ppc.altivec.stvxl
5184
5185 vec_stvxl(vuc, 0, &vuc);
5186 // CHECK: @llvm.ppc.altivec.stvxl
5187 // CHECK-LE: @llvm.ppc.altivec.stvxl
5188
5189 vec_stvxl(vuc, 0, ¶m_uc);
5190 // CHECK: @llvm.ppc.altivec.stvxl
5191 // CHECK-LE: @llvm.ppc.altivec.stvxl
5192
5193 vec_stvxl(vbc, 0, ¶m_sc);
5194 // CHECK: @llvm.ppc.altivec.stvxl
5195 // CHECK-LE: @llvm.ppc.altivec.stvxl
5196
5197 vec_stvxl(vbc, 0, ¶m_uc);
5198 // CHECK: @llvm.ppc.altivec.stvxl
5199 // CHECK-LE: @llvm.ppc.altivec.stvxl
5200
5201 vec_stvxl(vbc, 0, &vbc);
5202 // CHECK: @llvm.ppc.altivec.stvxl
5203 // CHECK-LE: @llvm.ppc.altivec.stvxl
5204
5205 vec_stvxl(vs, 0, &vs);
5206 // CHECK: @llvm.ppc.altivec.stvxl
5207 // CHECK-LE: @llvm.ppc.altivec.stvxl
5208
5209 vec_stvxl(vs, 0, ¶m_s);
5210 // CHECK: @llvm.ppc.altivec.stvxl
5211 // CHECK-LE: @llvm.ppc.altivec.stvxl
5212
5213 vec_stvxl(vus, 0, &vus);
5214 // CHECK: @llvm.ppc.altivec.stvxl
5215 // CHECK-LE: @llvm.ppc.altivec.stvxl
5216
5217 vec_stvxl(vus, 0, ¶m_us);
5218 // CHECK: @llvm.ppc.altivec.stvxl
5219 // CHECK-LE: @llvm.ppc.altivec.stvxl
5220
5221 vec_stvxl(vbs, 0, ¶m_s);
5222 // CHECK: @llvm.ppc.altivec.stvxl
5223 // CHECK-LE: @llvm.ppc.altivec.stvxl
5224
5225 vec_stvxl(vbs, 0, ¶m_us);
5226 // CHECK: @llvm.ppc.altivec.stvxl
5227 // CHECK-LE: @llvm.ppc.altivec.stvxl
5228
5229 vec_stvxl(vbs, 0, &vbs);
5230 // CHECK: @llvm.ppc.altivec.stvxl
5231 // CHECK-LE: @llvm.ppc.altivec.stvxl
5232
5233 vec_stvxl(vp, 0, ¶m_s);
5234 // CHECK: @llvm.ppc.altivec.stvxl
5235 // CHECK-LE: @llvm.ppc.altivec.stvxl
5236
5237 vec_stvxl(vp, 0, ¶m_us);
5238 // CHECK: @llvm.ppc.altivec.stvxl
5239 // CHECK-LE: @llvm.ppc.altivec.stvxl
5240
5241 vec_stvxl(vp, 0, &vp);
5242 // CHECK: @llvm.ppc.altivec.stvxl
5243 // CHECK-LE: @llvm.ppc.altivec.stvxl
5244
5245 vec_stvxl(vi, 0, &vi);
5246 // CHECK: @llvm.ppc.altivec.stvxl
5247 // CHECK-LE: @llvm.ppc.altivec.stvxl
5248
5249 vec_stvxl(vi, 0, ¶m_i);
5250 // CHECK: @llvm.ppc.altivec.stvxl
5251 // CHECK-LE: @llvm.ppc.altivec.stvxl
5252
5253 vec_stvxl(vui, 0, &vui);
5254 // CHECK: @llvm.ppc.altivec.stvxl
5255 // CHECK-LE: @llvm.ppc.altivec.stvxl
5256
5257 vec_stvxl(vui, 0, ¶m_ui);
5258 // CHECK: @llvm.ppc.altivec.stvxl
5259 // CHECK-LE: @llvm.ppc.altivec.stvxl
5260
5261 vec_stvxl(vbi, 0, ¶m_i);
5262 // CHECK: @llvm.ppc.altivec.stvxl
5263 // CHECK-LE: @llvm.ppc.altivec.stvxl
5264
5265 vec_stvxl(vbi, 0, ¶m_ui);
5266 // CHECK: @llvm.ppc.altivec.stvxl
5267 // CHECK-LE: @llvm.ppc.altivec.stvxl
5268
5269 vec_stvxl(vbi, 0, &vbi);
5270 // CHECK: @llvm.ppc.altivec.stvxl
5271 // CHECK-LE: @llvm.ppc.altivec.stvxl
5272
5273 vec_stvxl(vf, 0, &vf);
5274 // CHECK: @llvm.ppc.altivec.stvxl
5275 // CHECK-LE: @llvm.ppc.altivec.stvxl
5276
5277 vec_stvxl(vf, 0, ¶m_f);
5278 // CHECK: @llvm.ppc.altivec.stvxl
5279 // CHECK-LE: @llvm.ppc.altivec.stvxl
5280
5281 /* vec_sub */
5282 res_vsc = vec_sub(vsc, vsc);
5283 // CHECK: sub <16 x i8>
5284 // CHECK-LE: sub <16 x i8>
5285
5286 res_vsc = vec_sub(vbc, vsc);
5287 // CHECK: sub <16 x i8>
5288 // CHECK-LE: sub <16 x i8>
5289
5290 res_vsc = vec_sub(vsc, vbc);
5291 // CHECK: sub <16 x i8>
5292 // CHECK-LE: sub <16 x i8>
5293
5294 res_vuc = vec_sub(vuc, vuc);
5295 // CHECK: sub <16 x i8>
5296 // CHECK-LE: sub <16 x i8>
5297
5298 res_vuc = vec_sub(vbc, vuc);
5299 // CHECK: sub <16 x i8>
5300 // CHECK-LE: sub <16 x i8>
5301
5302 res_vuc = vec_sub(vuc, vbc);
5303 // CHECK: sub <16 x i8>
5304 // CHECK-LE: sub <16 x i8>
5305
5306 res_vs = vec_sub(vs, vs);
5307 // CHECK: sub <8 x i16>
5308 // CHECK-LE: sub <8 x i16>
5309
5310 res_vs = vec_sub(vbs, vs);
5311 // CHECK: sub <8 x i16>
5312 // CHECK-LE: sub <8 x i16>
5313
5314 res_vs = vec_sub(vs, vbs);
5315 // CHECK: sub <8 x i16>
5316 // CHECK-LE: sub <8 x i16>
5317
5318 res_vus = vec_sub(vus, vus);
5319 // CHECK: sub <8 x i16>
5320 // CHECK-LE: sub <8 x i16>
5321
5322 res_vus = vec_sub(vbs, vus);
5323 // CHECK: sub <8 x i16>
5324 // CHECK-LE: sub <8 x i16>
5325
5326 res_vus = vec_sub(vus, vbs);
5327 // CHECK: sub <8 x i16>
5328 // CHECK-LE: sub <8 x i16>
5329
5330 res_vi = vec_sub(vi, vi);
5331 // CHECK: sub <4 x i32>
5332 // CHECK-LE: sub <4 x i32>
5333
5334 res_vi = vec_sub(vbi, vi);
5335 // CHECK: sub <4 x i32>
5336 // CHECK-LE: sub <4 x i32>
5337
5338 res_vi = vec_sub(vi, vbi);
5339 // CHECK: sub <4 x i32>
5340 // CHECK-LE: sub <4 x i32>
5341
5342 res_vui = vec_sub(vui, vui);
5343 // CHECK: sub <4 x i32>
5344 // CHECK-LE: sub <4 x i32>
5345
5346 res_vui = vec_sub(vbi, vui);
5347 // CHECK: sub <4 x i32>
5348 // CHECK-LE: sub <4 x i32>
5349
5350 res_vui = vec_sub(vui, vbi);
5351 // CHECK: sub <4 x i32>
5352 // CHECK-LE: sub <4 x i32>
5353
5354 res_vf = vec_sub(vf, vf);
5355 // CHECK: fsub <4 x float>
5356 // CHECK-LE: fsub <4 x float>
5357
5358
5359
5360 res_vsc = vec_vsububm(vsc, vsc);
5361 // CHECK: sub <16 x i8>
5362 // CHECK-LE: sub <16 x i8>
5363
5364 res_vsc = vec_vsububm(vbc, vsc);
5365 // CHECK: sub <16 x i8>
5366 // CHECK-LE: sub <16 x i8>
5367
5368 res_vsc = vec_vsububm(vsc, vbc);
5369 // CHECK: sub <16 x i8>
5370 // CHECK-LE: sub <16 x i8>
5371
5372 res_vuc = vec_vsububm(vuc, vuc);
5373 // CHECK: sub <16 x i8>
5374 // CHECK-LE: sub <16 x i8>
5375
5376 res_vuc = vec_vsububm(vbc, vuc);
5377 // CHECK: sub <16 x i8>
5378 // CHECK-LE: sub <16 x i8>
5379
5380 res_vuc = vec_vsububm(vuc, vbc);
5381 // CHECK: sub <16 x i8>
5382 // CHECK-LE: sub <16 x i8>
5383
5384 res_vs = vec_vsubuhm(vs, vs);
5385 // CHECK: sub <8 x i16>
5386 // CHECK-LE: sub <8 x i16>
5387
5388 res_vs = vec_vsubuhm(vbs, vs);
5389 // CHECK: sub <8 x i16>
5390 // CHECK-LE: sub <8 x i16>
5391
5392 res_vs = vec_vsubuhm(vs, vbs);
5393 // CHECK: sub <8 x i16>
5394 // CHECK-LE: sub <8 x i16>
5395
5396 res_vus = vec_vsubuhm(vus, vus);
5397 // CHECK: sub <8 x i16>
5398 // CHECK-LE: sub <8 x i16>
5399
5400 res_vus = vec_vsubuhm(vbs, vus);
5401 // CHECK: sub <8 x i16>
5402 // CHECK-LE: sub <8 x i16>
5403
5404 res_vus = vec_vsubuhm(vus, vbs);
5405 // CHECK: sub <8 x i16>
5406 // CHECK-LE: sub <8 x i16>
5407
5408 res_vi = vec_vsubuwm(vi, vi);
5409 // CHECK: sub <4 x i32>
5410 // CHECK-LE: sub <4 x i32>
5411
5412 res_vi = vec_vsubuwm(vbi, vi);
5413 // CHECK: sub <4 x i32>
5414 // CHECK-LE: sub <4 x i32>
5415
5416 res_vi = vec_vsubuwm(vi, vbi);
5417 // CHECK: sub <4 x i32>
5418 // CHECK-LE: sub <4 x i32>
5419
5420 res_vui = vec_vsubuwm(vui, vui);
5421 // CHECK: sub <4 x i32>
5422 // CHECK-LE: sub <4 x i32>
5423
5424 res_vui = vec_vsubuwm(vbi, vui);
5425 // CHECK: sub <4 x i32>
5426 // CHECK-LE: sub <4 x i32>
5427
5428 res_vui = vec_vsubuwm(vui, vbi);
5429 // CHECK: sub <4 x i32>
5430 // CHECK-LE: sub <4 x i32>
5431
5432 res_vf = vec_vsubfp(vf, vf);
5433 // CHECK: fsub <4 x float>
5434 // CHECK-LE: fsub <4 x float>
5435
5436 /* vec_subc */
5437 res_vui = vec_subc(vui, vui);
5438 // CHECK: @llvm.ppc.altivec.vsubcuw
5439 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5440
5441 res_vi = vec_subc(vi, vi);
5442 // CHECK: @llvm.ppc.altivec.vsubcuw
5443 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5444
5445 res_vui = vec_vsubcuw(vui, vui);
5446 // CHECK: @llvm.ppc.altivec.vsubcuw
5447 // CHECK-LE: @llvm.ppc.altivec.vsubcuw
5448
5449 /* vec_subs */
5450 res_vsc = vec_subs(vsc, vsc);
5451 // CHECK: @llvm.ppc.altivec.vsubsbs
5452 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5453
5454 res_vsc = vec_subs(vbc, vsc);
5455 // CHECK: @llvm.ppc.altivec.vsubsbs
5456 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5457
5458 res_vsc = vec_subs(vsc, vbc);
5459 // CHECK: @llvm.ppc.altivec.vsubsbs
5460 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5461
5462 res_vuc = vec_subs(vuc, vuc);
5463 // CHECK: @llvm.ppc.altivec.vsububs
5464 // CHECK-LE: @llvm.ppc.altivec.vsububs
5465
5466 res_vuc = vec_subs(vbc, vuc);
5467 // CHECK: @llvm.ppc.altivec.vsububs
5468 // CHECK-LE: @llvm.ppc.altivec.vsububs
5469
5470 res_vuc = vec_subs(vuc, vbc);
5471 // CHECK: @llvm.ppc.altivec.vsububs
5472 // CHECK-LE: @llvm.ppc.altivec.vsububs
5473
5474 res_vs = vec_subs(vs, vs);
5475 // CHECK: @llvm.ppc.altivec.vsubshs
5476 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5477
5478 res_vs = vec_subs(vbs, vs);
5479 // CHECK: @llvm.ppc.altivec.vsubshs
5480 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5481
5482 res_vs = vec_subs(vs, vbs);
5483 // CHECK: @llvm.ppc.altivec.vsubshs
5484 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5485
5486 res_vus = vec_subs(vus, vus);
5487 // CHECK: @llvm.ppc.altivec.vsubuhs
5488 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5489
5490 res_vus = vec_subs(vbs, vus);
5491 // CHECK: @llvm.ppc.altivec.vsubuhs
5492 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5493
5494 res_vus = vec_subs(vus, vbs);
5495 // CHECK: @llvm.ppc.altivec.vsubuhs
5496 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5497
5498 res_vi = vec_subs(vi, vi);
5499 // CHECK: @llvm.ppc.altivec.vsubsws
5500 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5501
5502 res_vi = vec_subs(vbi, vi);
5503 // CHECK: @llvm.ppc.altivec.vsubsws
5504 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5505
5506 res_vi = vec_subs(vi, vbi);
5507 // CHECK: @llvm.ppc.altivec.vsubsws
5508 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5509
5510 res_vui = vec_subs(vui, vui);
5511 // CHECK: @llvm.ppc.altivec.vsubuws
5512 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5513
5514 res_vui = vec_subs(vbi, vui);
5515 // CHECK: @llvm.ppc.altivec.vsubuws
5516 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5517
5518 res_vui = vec_subs(vui, vbi);
5519 // CHECK: @llvm.ppc.altivec.vsubuws
5520 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5521
5522 res_vi = vec_sube(vi, vi, vi);
5523 // CHECK: and <4 x i32>
5524 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5525 // CHECK: add <4 x i32>
5526 // CHECK: add <4 x i32>
5527 // CHECK-LE: and <4 x i32>
5528 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5529 // CHECK-LE: add <4 x i32>
5530 // CHECK-LE: add <4 x i32>
5531
5532 res_vui = vec_sube(vui, vui, vui);
5533 // CHECK: and <4 x i32>
5534 // CHECK: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5535 // CHECK: add <4 x i32>
5536 // CHECK: add <4 x i32>
5537 // CHECK-LE: and <4 x i32>
5538 // CHECK-LE: xor <4 x i32> {{%[0-9]+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
5539 // CHECK-LE: add <4 x i32>
5540 // CHECK-LE: add <4 x i32>
5541
5542 res_vsc = vec_vsubsbs(vsc, vsc);
5543 // CHECK: @llvm.ppc.altivec.vsubsbs
5544 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5545
5546 res_vsc = vec_vsubsbs(vbc, vsc);
5547 // CHECK: @llvm.ppc.altivec.vsubsbs
5548 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5549
5550 res_vsc = vec_vsubsbs(vsc, vbc);
5551 // CHECK: @llvm.ppc.altivec.vsubsbs
5552 // CHECK-LE: @llvm.ppc.altivec.vsubsbs
5553
5554 res_vuc = vec_vsububs(vuc, vuc);
5555 // CHECK: @llvm.ppc.altivec.vsububs
5556 // CHECK-LE: @llvm.ppc.altivec.vsububs
5557
5558 res_vuc = vec_vsububs(vbc, vuc);
5559 // CHECK: @llvm.ppc.altivec.vsububs
5560 // CHECK-LE: @llvm.ppc.altivec.vsububs
5561
5562 res_vuc = vec_vsububs(vuc, vbc);
5563 // CHECK: @llvm.ppc.altivec.vsububs
5564 // CHECK-LE: @llvm.ppc.altivec.vsububs
5565
5566 res_vs = vec_vsubshs(vs, vs);
5567 // CHECK: @llvm.ppc.altivec.vsubshs
5568 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5569
5570 res_vs = vec_vsubshs(vbs, vs);
5571 // CHECK: @llvm.ppc.altivec.vsubshs
5572 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5573
5574 res_vs = vec_vsubshs(vs, vbs);
5575 // CHECK: @llvm.ppc.altivec.vsubshs
5576 // CHECK-LE: @llvm.ppc.altivec.vsubshs
5577
5578 res_vus = vec_vsubuhs(vus, vus);
5579 // CHECK: @llvm.ppc.altivec.vsubuhs
5580 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5581
5582 res_vus = vec_vsubuhs(vbs, vus);
5583 // CHECK: @llvm.ppc.altivec.vsubuhs
5584 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5585
5586 res_vus = vec_vsubuhs(vus, vbs);
5587 // CHECK: @llvm.ppc.altivec.vsubuhs
5588 // CHECK-LE: @llvm.ppc.altivec.vsubuhs
5589
5590 res_vi = vec_vsubsws(vi, vi);
5591 // CHECK: @llvm.ppc.altivec.vsubsws
5592 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5593
5594 res_vi = vec_vsubsws(vbi, vi);
5595 // CHECK: @llvm.ppc.altivec.vsubsws
5596 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5597
5598 res_vi = vec_vsubsws(vi, vbi);
5599 // CHECK: @llvm.ppc.altivec.vsubsws
5600 // CHECK-LE: @llvm.ppc.altivec.vsubsws
5601
5602 res_vui = vec_vsubuws(vui, vui);
5603 // CHECK: @llvm.ppc.altivec.vsubuws
5604 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5605
5606 res_vui = vec_vsubuws(vbi, vui);
5607 // CHECK: @llvm.ppc.altivec.vsubuws
5608 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5609
5610 res_vui = vec_vsubuws(vui, vbi);
5611 // CHECK: @llvm.ppc.altivec.vsubuws
5612 // CHECK-LE: @llvm.ppc.altivec.vsubuws
5613
5614 /* vec_sum4s */
5615 res_vi = vec_sum4s(vsc, vi);
5616 // CHECK: @llvm.ppc.altivec.vsum4sbs
5617 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5618
5619 res_vui = vec_sum4s(vuc, vui);
5620 // CHECK: @llvm.ppc.altivec.vsum4ubs
5621 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5622
5623 res_vi = vec_sum4s(vs, vi);
5624 // CHECK: @llvm.ppc.altivec.vsum4shs
5625 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5626
5627 res_vi = vec_vsum4sbs(vsc, vi);
5628 // CHECK: @llvm.ppc.altivec.vsum4sbs
5629 // CHECK-LE: @llvm.ppc.altivec.vsum4sbs
5630
5631 res_vui = vec_vsum4ubs(vuc, vui);
5632 // CHECK: @llvm.ppc.altivec.vsum4ubs
5633 // CHECK-LE: @llvm.ppc.altivec.vsum4ubs
5634
5635 res_vi = vec_vsum4shs(vs, vi);
5636 // CHECK: @llvm.ppc.altivec.vsum4shs
5637 // CHECK-LE: @llvm.ppc.altivec.vsum4shs
5638
5639 /* vec_sum2s */
5640 res_vi = vec_sum2s(vi, vi);
5641 // CHECK: @llvm.ppc.altivec.vsum2sws
5642 // CHECK-LE: @llvm.ppc.altivec.vperm
5643 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5644 // CHECK-LE: @llvm.ppc.altivec.vperm
5645
5646 res_vi = vec_vsum2sws(vi, vi);
5647 // CHECK: @llvm.ppc.altivec.vsum2sws
5648 // CHECK-LE: @llvm.ppc.altivec.vperm
5649 // CHECK-LE: @llvm.ppc.altivec.vsum2sws
5650 // CHECK-LE: @llvm.ppc.altivec.vperm
5651
5652 /* vec_sums */
5653 res_vi = vec_sums(vi, vi);
5654 // CHECK: @llvm.ppc.altivec.vsumsws
5655 // CHECK-LE: @llvm.ppc.altivec.vperm
5656 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5657
5658 res_vi = vec_vsumsws(vi, vi);
5659 // CHECK: @llvm.ppc.altivec.vsumsws
5660 // CHECK-LE: @llvm.ppc.altivec.vperm
5661 // CHECK-LE: @llvm.ppc.altivec.vsumsws
5662
5663 /* vec_trunc */
5664 res_vf = vec_trunc(vf);
5665 // CHECK: @llvm.ppc.altivec.vrfiz
5666 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5667
5668 res_vf = vec_vrfiz(vf);
5669 // CHECK: @llvm.ppc.altivec.vrfiz
5670 // CHECK-LE: @llvm.ppc.altivec.vrfiz
5671
5672 /* vec_unpackh */
5673 res_vs = vec_unpackh(vsc);
5674 // CHECK: @llvm.ppc.altivec.vupkhsb
5675 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5676
5677 res_vbs = vec_unpackh(vbc);
5678 // CHECK: @llvm.ppc.altivec.vupkhsb
5679 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5680
5681 res_vi = vec_unpackh(vs);
5682 // CHECK: @llvm.ppc.altivec.vupkhsh
5683 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5684
5685 res_vbi = vec_unpackh(vbs);
5686 // CHECK: @llvm.ppc.altivec.vupkhsh
5687 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5688
5689 res_vui = vec_unpackh(vp);
5690 // CHECK: @llvm.ppc.altivec.vupkhpx
5691 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5692
5693 res_vs = vec_vupkhsb(vsc);
5694 // CHECK: @llvm.ppc.altivec.vupkhsb
5695 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5696
5697 res_vbs = vec_vupkhsb(vbc);
5698 // CHECK: @llvm.ppc.altivec.vupkhsb
5699 // CHECK-LE: @llvm.ppc.altivec.vupklsb
5700
5701 res_vi = vec_vupkhsh(vs);
5702 // CHECK: @llvm.ppc.altivec.vupkhsh
5703 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5704
5705 res_vbi = vec_vupkhsh(vbs);
5706 // CHECK: @llvm.ppc.altivec.vupkhsh
5707 // CHECK-LE: @llvm.ppc.altivec.vupklsh
5708
5709 res_vui = vec_vupkhsh(vp);
5710 // CHECK: @llvm.ppc.altivec.vupkhpx
5711 // CHECK-LE: @llvm.ppc.altivec.vupklpx
5712
5713 /* vec_unpackl */
5714 res_vs = vec_unpackl(vsc);
5715 // CHECK: @llvm.ppc.altivec.vupklsb
5716 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5717
5718 res_vbs = vec_unpackl(vbc);
5719 // CHECK: @llvm.ppc.altivec.vupklsb
5720 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5721
5722 res_vi = vec_unpackl(vs);
5723 // CHECK: @llvm.ppc.altivec.vupklsh
5724 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5725
5726 res_vbi = vec_unpackl(vbs);
5727 // CHECK: @llvm.ppc.altivec.vupklsh
5728 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5729
5730 res_vui = vec_unpackl(vp);
5731 // CHECK: @llvm.ppc.altivec.vupklpx
5732 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5733
5734 res_vs = vec_vupklsb(vsc);
5735 // CHECK: @llvm.ppc.altivec.vupklsb
5736 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5737
5738 res_vbs = vec_vupklsb(vbc);
5739 // CHECK: @llvm.ppc.altivec.vupklsb
5740 // CHECK-LE: @llvm.ppc.altivec.vupkhsb
5741
5742 res_vi = vec_vupklsh(vs);
5743 // CHECK: @llvm.ppc.altivec.vupklsh
5744 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5745
5746 res_vbi = vec_vupklsh(vbs);
5747 // CHECK: @llvm.ppc.altivec.vupklsh
5748 // CHECK-LE: @llvm.ppc.altivec.vupkhsh
5749
5750 res_vui = vec_vupklsh(vp);
5751 // CHECK: @llvm.ppc.altivec.vupklpx
5752 // CHECK-LE: @llvm.ppc.altivec.vupkhpx
5753
5754 /* vec_xor */
5755 res_vsc = vec_xor(vsc, vsc);
5756 // CHECK: xor <16 x i8>
5757 // CHECK-LE: xor <16 x i8>
5758
5759 res_vsc = vec_xor(vbc, vsc);
5760 // CHECK: xor <16 x i8>
5761 // CHECK-LE: xor <16 x i8>
5762
5763 res_vsc = vec_xor(vsc, vbc);
5764 // CHECK: xor <16 x i8>
5765 // CHECK-LE: xor <16 x i8>
5766
5767 res_vuc = vec_xor(vuc, vuc);
5768 // CHECK: xor <16 x i8>
5769 // CHECK-LE: xor <16 x i8>
5770
5771 res_vuc = vec_xor(vbc, vuc);
5772 // CHECK: xor <16 x i8>
5773 // CHECK-LE: xor <16 x i8>
5774
5775 res_vuc = vec_xor(vuc, vbc);
5776 // CHECK: xor <16 x i8>
5777 // CHECK-LE: xor <16 x i8>
5778
5779 res_vbc = vec_xor(vbc, vbc);
5780 // CHECK: xor <16 x i8>
5781 // CHECK-LE: xor <16 x i8>
5782
5783 res_vs = vec_xor(vs, vs);
5784 // CHECK: xor <8 x i16>
5785 // CHECK-LE: xor <8 x i16>
5786
5787 res_vs = vec_xor(vbs, vs);
5788 // CHECK: xor <8 x i16>
5789 // CHECK-LE: xor <8 x i16>
5790
5791 res_vs = vec_xor(vs, vbs);
5792 // CHECK: xor <8 x i16>
5793 // CHECK-LE: xor <8 x i16>
5794
5795 res_vus = vec_xor(vus, vus);
5796 // CHECK: xor <8 x i16>
5797 // CHECK-LE: xor <8 x i16>
5798
5799 res_vus = vec_xor(vbs, vus);
5800 // CHECK: xor <8 x i16>
5801 // CHECK-LE: xor <8 x i16>
5802
5803 res_vus = vec_xor(vus, vbs);
5804 // CHECK: xor <8 x i16>
5805 // CHECK-LE: xor <8 x i16>
5806
5807 res_vbs = vec_xor(vbs, vbs);
5808 // CHECK: xor <8 x i16>
5809 // CHECK-LE: xor <8 x i16>
5810
5811 res_vi = vec_xor(vi, vi);
5812 // CHECK: xor <4 x i32>
5813 // CHECK-LE: xor <4 x i32>
5814
5815 res_vi = vec_xor(vbi, vi);
5816 // CHECK: xor <4 x i32>
5817 // CHECK-LE: xor <4 x i32>
5818
5819 res_vi = vec_xor(vi, vbi);
5820 // CHECK: xor <4 x i32>
5821 // CHECK-LE: xor <4 x i32>
5822
5823 res_vui = vec_xor(vui, vui);
5824 // CHECK: xor <4 x i32>
5825 // CHECK-LE: xor <4 x i32>
5826
5827 res_vui = vec_xor(vbi, vui);
5828 // CHECK: xor <4 x i32>
5829 // CHECK-LE: xor <4 x i32>
5830
5831 res_vui = vec_xor(vui, vbi);
5832 // CHECK: xor <4 x i32>
5833 // CHECK-LE: xor <4 x i32>
5834
5835 res_vbi = vec_xor(vbi, vbi);
5836 // CHECK: xor <4 x i32>
5837 // CHECK-LE: xor <4 x i32>
5838
5839 res_vf = vec_xor(vf, vf);
5840 // CHECK: xor <4 x i32>
5841 // CHECK-LE: xor <4 x i32>
5842
5843 res_vf = vec_xor(vbi, vf);
5844 // CHECK: xor <4 x i32>
5845 // CHECK-LE: xor <4 x i32>
5846
5847 res_vf = vec_xor(vf, vbi);
5848 // CHECK: xor <4 x i32>
5849 // CHECK-LE: xor <4 x i32>
5850
5851 res_vsc = vec_vxor(vsc, vsc);
5852 // CHECK: xor <16 x i8>
5853 // CHECK-LE: xor <16 x i8>
5854
5855 res_vsc = vec_vxor(vbc, vsc);
5856 // CHECK: xor <16 x i8>
5857 // CHECK-LE: xor <16 x i8>
5858
5859 res_vsc = vec_vxor(vsc, vbc);
5860 // CHECK: xor <16 x i8>
5861 // CHECK-LE: xor <16 x i8>
5862
5863 res_vuc = vec_vxor(vuc, vuc);
5864 // CHECK: xor <16 x i8>
5865 // CHECK-LE: xor <16 x i8>
5866
5867 res_vuc = vec_vxor(vbc, vuc);
5868 // CHECK: xor <16 x i8>
5869 // CHECK-LE: xor <16 x i8>
5870
5871 res_vuc = vec_vxor(vuc, vbc);
5872 // CHECK: xor <16 x i8>
5873 // CHECK-LE: xor <16 x i8>
5874
5875 res_vbc = vec_vxor(vbc, vbc);
5876 // CHECK: xor <16 x i8>
5877 // CHECK-LE: xor <16 x i8>
5878
5879 res_vs = vec_vxor(vs, vs);
5880 // CHECK: xor <8 x i16>
5881 // CHECK-LE: xor <8 x i16>
5882
5883 res_vs = vec_vxor(vbs, vs);
5884 // CHECK: xor <8 x i16>
5885 // CHECK-LE: xor <8 x i16>
5886
5887 res_vs = vec_vxor(vs, vbs);
5888 // CHECK: xor <8 x i16>
5889 // CHECK-LE: xor <8 x i16>
5890
5891 res_vus = vec_vxor(vus, vus);
5892 // CHECK: xor <8 x i16>
5893 // CHECK-LE: xor <8 x i16>
5894
5895 res_vus = vec_vxor(vbs, vus);
5896 // CHECK: xor <8 x i16>
5897 // CHECK-LE: xor <8 x i16>
5898
5899 res_vus = vec_vxor(vus, vbs);
5900 // CHECK: xor <8 x i16>
5901 // CHECK-LE: xor <8 x i16>
5902
5903 res_vbs = vec_vxor(vbs, vbs);
5904 // CHECK: xor <8 x i16>
5905 // CHECK-LE: xor <8 x i16>
5906
5907 res_vi = vec_vxor(vi, vi);
5908 // CHECK: xor <4 x i32>
5909 // CHECK-LE: xor <4 x i32>
5910
5911 res_vi = vec_vxor(vbi, vi);
5912 // CHECK: xor <4 x i32>
5913 // CHECK-LE: xor <4 x i32>
5914
5915 res_vi = vec_vxor(vi, vbi);
5916 // CHECK: xor <4 x i32>
5917 // CHECK-LE: xor <4 x i32>
5918
5919 res_vui = vec_vxor(vui, vui);
5920 // CHECK: xor <4 x i32>
5921 // CHECK-LE: xor <4 x i32>
5922
5923 res_vui = vec_vxor(vbi, vui);
5924 // CHECK: xor <4 x i32>
5925 // CHECK-LE: xor <4 x i32>
5926
5927 res_vui = vec_vxor(vui, vbi);
5928 // CHECK: xor <4 x i32>
5929 // CHECK-LE: xor <4 x i32>
5930
5931 res_vbi = vec_vxor(vbi, vbi);
5932 // CHECK: xor <4 x i32>
5933 // CHECK-LE: xor <4 x i32>
5934
5935 res_vf = vec_vxor(vf, vf);
5936 // CHECK: xor <4 x i32>
5937 // CHECK-LE: xor <4 x i32>
5938
5939 res_vf = vec_vxor(vbi, vf);
5940 // CHECK: xor <4 x i32>
5941 // CHECK-LE: xor <4 x i32>
5942
5943 res_vf = vec_vxor(vf, vbi);
5944 // CHECK: xor <4 x i32>
5945 // CHECK-LE: xor <4 x i32>
5946
5947 /* ------------------------------ extensions -------------------------------------- */
5948
5949 /* vec_extract */
5950 res_sc = vec_extract(vsc, param_i);
5951 // CHECK: extractelement <16 x i8>
5952 // CHECK-LE: extractelement <16 x i8>
5953
5954 res_uc = vec_extract(vuc, param_i);
5955 // CHECK: extractelement <16 x i8>
5956 // CHECK-LE: extractelement <16 x i8>
5957
5958 res_uc = vec_extract(vbc, param_i);
5959 // CHECK: extractelement <16 x i8>
5960 // CHECK-LE: extractelement <16 x i8>
5961
5962 res_s = vec_extract(vs, param_i);
5963 // CHECK: extractelement <8 x i16>
5964 // CHECK-LE: extractelement <8 x i16>
5965
5966 res_us = vec_extract(vus, param_i);
5967 // CHECK: extractelement <8 x i16>
5968 // CHECK-LE: extractelement <8 x i16>
5969
5970 res_us = vec_extract(vbs, param_i);
5971 // CHECK: extractelement <8 x i16>
5972 // CHECK-LE: extractelement <8 x i16>
5973
5974 res_i = vec_extract(vi, param_i);
5975 // CHECK: extractelement <4 x i32>
5976 // CHECK-LE: extractelement <4 x i32>
5977
5978 res_ui = vec_extract(vui, param_i);
5979 // CHECK: extractelement <4 x i32>
5980 // CHECK-LE: extractelement <4 x i32>
5981
5982 res_ui = vec_extract(vbi, param_i);
5983 // CHECK: extractelement <4 x i32>
5984 // CHECK-LE: extractelement <4 x i32>
5985
5986 res_f = vec_extract(vf, param_i);
5987 // CHECK: extractelement <4 x float>
5988 // CHECK-LE: extractelement <4 x float>
5989
5990 /* vec_insert */
5991 res_vsc = vec_insert(param_sc, vsc, param_i);
5992 // CHECK: insertelement <16 x i8>
5993 // CHECK-LE: insertelement <16 x i8>
5994
5995 res_vuc = vec_insert(param_uc, vuc, param_i);
5996 // CHECK: insertelement <16 x i8>
5997 // CHECK-LE: insertelement <16 x i8>
5998
5999 res_vbc = vec_insert(param_uc, vbc, param_i);
6000 // CHECK: insertelement <16 x i8>
6001 // CHECK-LE: insertelement <16 x i8>
6002
6003 res_vs = vec_insert(param_s, vs, param_i);
6004 // CHECK: insertelement <8 x i16>
6005 // CHECK-LE: insertelement <8 x i16>
6006
6007 res_vus = vec_insert(param_us, vus, param_i);
6008 // CHECK: insertelement <8 x i16>
6009 // CHECK-LE: insertelement <8 x i16>
6010
6011 res_vbs = vec_insert(param_us, vbs, param_i);
6012 // CHECK: insertelement <8 x i16>
6013 // CHECK-LE: insertelement <8 x i16>
6014
6015 res_vi = vec_insert(param_i, vi, param_i);
6016 // CHECK: insertelement <4 x i32>
6017 // CHECK-LE: insertelement <4 x i32>
6018
6019 res_vui = vec_insert(param_ui, vui, param_i);
6020 // CHECK: insertelement <4 x i32>
6021 // CHECK-LE: insertelement <4 x i32>
6022
6023 res_vbi = vec_insert(param_ui, vbi, param_i);
6024 // CHECK: insertelement <4 x i32>
6025 // CHECK-LE: insertelement <4 x i32>
6026
6027 res_vf = vec_insert(param_f, vf, param_i);
6028 // CHECK: insertelement <4 x float>
6029 // CHECK-LE: insertelement <4 x float>
6030
6031 /* vec_lvlx */
6032 res_vsc = vec_lvlx(0, ¶m_sc);
6033 // CHECK: @llvm.ppc.altivec.lvx
6034 // CHECK: @llvm.ppc.altivec.lvsl
6035 // CHECK: store <16 x i8> zeroinitializer
6036 // CHECK: @llvm.ppc.altivec.vperm
6037 // CHECK-LE: @llvm.ppc.altivec.lvx
6038 // CHECK-LE: @llvm.ppc.altivec.lvsl
6039 // CHECK-LE: store <16 x i8> zeroinitializer
6040 // CHECK-LE: @llvm.ppc.altivec.vperm
6041
6042 res_vsc = vec_lvlx(0, &vsc);
6043 // CHECK: @llvm.ppc.altivec.lvx
6044 // CHECK: @llvm.ppc.altivec.lvsl
6045 // CHECK: store <16 x i8> zeroinitializer
6046 // CHECK: @llvm.ppc.altivec.vperm
6047 // CHECK-LE: @llvm.ppc.altivec.lvx
6048 // CHECK-LE: @llvm.ppc.altivec.lvsl
6049 // CHECK-LE: store <16 x i8> zeroinitializer
6050 // CHECK-LE: @llvm.ppc.altivec.vperm
6051
6052 res_vuc = vec_lvlx(0, ¶m_uc);
6053 // CHECK: @llvm.ppc.altivec.lvx
6054 // CHECK: @llvm.ppc.altivec.lvsl
6055 // CHECK: store <16 x i8> zeroinitializer
6056 // CHECK: @llvm.ppc.altivec.vperm
6057 // CHECK-LE: @llvm.ppc.altivec.lvx
6058 // CHECK-LE: @llvm.ppc.altivec.lvsl
6059 // CHECK-LE: store <16 x i8> zeroinitializer
6060 // CHECK-LE: @llvm.ppc.altivec.vperm
6061
6062 res_vuc = vec_lvlx(0, &vuc);
6063 // CHECK: @llvm.ppc.altivec.lvx
6064 // CHECK: @llvm.ppc.altivec.lvsl
6065 // CHECK: store <16 x i8> zeroinitializer
6066 // CHECK: @llvm.ppc.altivec.vperm
6067 // CHECK-LE: @llvm.ppc.altivec.lvx
6068 // CHECK-LE: @llvm.ppc.altivec.lvsl
6069 // CHECK-LE: store <16 x i8> zeroinitializer
6070 // CHECK-LE: @llvm.ppc.altivec.vperm
6071
6072 res_vbc = vec_lvlx(0, &vbc);
6073 // CHECK: @llvm.ppc.altivec.lvx
6074 // CHECK: store <16 x i8> zeroinitializer
6075 // CHECK: @llvm.ppc.altivec.lvsl
6076 // CHECK: @llvm.ppc.altivec.vperm
6077 // CHECK-LE: @llvm.ppc.altivec.lvx
6078 // CHECK-LE: store <16 x i8> zeroinitializer
6079 // CHECK-LE: @llvm.ppc.altivec.lvsl
6080 // CHECK-LE: @llvm.ppc.altivec.vperm
6081
6082 res_vs = vec_lvlx(0, ¶m_s);
6083 // CHECK: @llvm.ppc.altivec.lvx
6084 // CHECK: @llvm.ppc.altivec.lvsl
6085 // CHECK: store <8 x i16> zeroinitializer
6086 // CHECK: @llvm.ppc.altivec.vperm
6087 // CHECK-LE: @llvm.ppc.altivec.lvx
6088 // CHECK-LE: @llvm.ppc.altivec.lvsl
6089 // CHECK-LE: store <8 x i16> zeroinitializer
6090 // CHECK-LE: @llvm.ppc.altivec.vperm
6091
6092 res_vs = vec_lvlx(0, &vs);
6093 // CHECK: @llvm.ppc.altivec.lvx
6094 // CHECK: @llvm.ppc.altivec.lvsl
6095 // CHECK: store <8 x i16> zeroinitializer
6096 // CHECK: @llvm.ppc.altivec.vperm
6097 // CHECK-LE: @llvm.ppc.altivec.lvx
6098 // CHECK-LE: @llvm.ppc.altivec.lvsl
6099 // CHECK-LE: store <8 x i16> zeroinitializer
6100 // CHECK-LE: @llvm.ppc.altivec.vperm
6101
6102 res_vus = vec_lvlx(0, ¶m_us);
6103 // CHECK: @llvm.ppc.altivec.lvx
6104 // CHECK: @llvm.ppc.altivec.lvsl
6105 // CHECK: store <8 x i16> zeroinitializer
6106 // CHECK: @llvm.ppc.altivec.vperm
6107 // CHECK-LE: @llvm.ppc.altivec.lvx
6108 // CHECK-LE: @llvm.ppc.altivec.lvsl
6109 // CHECK-LE: store <8 x i16> zeroinitializer
6110 // CHECK-LE: @llvm.ppc.altivec.vperm
6111
6112 res_vus = vec_lvlx(0, &vus);
6113 // CHECK: @llvm.ppc.altivec.lvx
6114 // CHECK: @llvm.ppc.altivec.lvsl
6115 // CHECK: store <8 x i16> zeroinitializer
6116 // CHECK: @llvm.ppc.altivec.vperm
6117 // CHECK-LE: @llvm.ppc.altivec.lvx
6118 // CHECK-LE: @llvm.ppc.altivec.lvsl
6119 // CHECK-LE: store <8 x i16> zeroinitializer
6120 // CHECK-LE: @llvm.ppc.altivec.vperm
6121
6122 res_vbs = vec_lvlx(0, &vbs);
6123 // CHECK: @llvm.ppc.altivec.lvx
6124 // CHECK: store <8 x i16> zeroinitializer
6125 // CHECK: @llvm.ppc.altivec.lvsl
6126 // CHECK: @llvm.ppc.altivec.vperm
6127 // CHECK-LE: @llvm.ppc.altivec.lvx
6128 // CHECK-LE: store <8 x i16> zeroinitializer
6129 // CHECK-LE: @llvm.ppc.altivec.lvsl
6130 // CHECK-LE: @llvm.ppc.altivec.vperm
6131
6132 res_vp = vec_lvlx(0, &vp);
6133 // CHECK: @llvm.ppc.altivec.lvx
6134 // CHECK: store <8 x i16> zeroinitializer
6135 // CHECK: @llvm.ppc.altivec.lvsl
6136 // CHECK: @llvm.ppc.altivec.vperm
6137 // CHECK-LE: @llvm.ppc.altivec.lvx
6138 // CHECK-LE: store <8 x i16> zeroinitializer
6139 // CHECK-LE: @llvm.ppc.altivec.lvsl
6140 // CHECK-LE: @llvm.ppc.altivec.vperm
6141
6142 res_vi = vec_lvlx(0, ¶m_i);
6143 // CHECK: @llvm.ppc.altivec.lvx
6144 // CHECK: @llvm.ppc.altivec.lvsl
6145 // CHECK: store <4 x i32> zeroinitializer
6146 // CHECK: @llvm.ppc.altivec.vperm
6147 // CHECK-LE: @llvm.ppc.altivec.lvx
6148 // CHECK-LE: @llvm.ppc.altivec.lvsl
6149 // CHECK-LE: store <4 x i32> zeroinitializer
6150 // CHECK-LE: @llvm.ppc.altivec.vperm
6151
6152 res_vi = vec_lvlx(0, &vi);
6153 // CHECK: @llvm.ppc.altivec.lvx
6154 // CHECK: @llvm.ppc.altivec.lvsl
6155 // CHECK: store <4 x i32> zeroinitializer
6156 // CHECK: @llvm.ppc.altivec.vperm
6157 // CHECK-LE: @llvm.ppc.altivec.lvx
6158 // CHECK-LE: @llvm.ppc.altivec.lvsl
6159 // CHECK-LE: store <4 x i32> zeroinitializer
6160 // CHECK-LE: @llvm.ppc.altivec.vperm
6161
6162 res_vui = vec_lvlx(0, ¶m_ui);
6163 // CHECK: @llvm.ppc.altivec.lvx
6164 // CHECK: @llvm.ppc.altivec.lvsl
6165 // CHECK: store <4 x i32> zeroinitializer
6166 // CHECK: @llvm.ppc.altivec.vperm
6167 // CHECK-LE: @llvm.ppc.altivec.lvx
6168 // CHECK-LE: @llvm.ppc.altivec.lvsl
6169 // CHECK-LE: store <4 x i32> zeroinitializer
6170 // CHECK-LE: @llvm.ppc.altivec.vperm
6171
6172 res_vui = vec_lvlx(0, &vui);
6173 // CHECK: @llvm.ppc.altivec.lvx
6174 // CHECK: @llvm.ppc.altivec.lvsl
6175 // CHECK: store <4 x i32> zeroinitializer
6176 // CHECK: @llvm.ppc.altivec.vperm
6177 // CHECK-LE: @llvm.ppc.altivec.lvx
6178 // CHECK-LE: @llvm.ppc.altivec.lvsl
6179 // CHECK-LE: store <4 x i32> zeroinitializer
6180 // CHECK-LE: @llvm.ppc.altivec.vperm
6181
6182 res_vbi = vec_lvlx(0, &vbi);
6183 // CHECK: @llvm.ppc.altivec.lvx
6184 // CHECK: store <4 x i32> zeroinitializer
6185 // CHECK: @llvm.ppc.altivec.lvsl
6186 // CHECK: @llvm.ppc.altivec.vperm
6187 // CHECK-LE: @llvm.ppc.altivec.lvx
6188 // CHECK-LE: store <4 x i32> zeroinitializer
6189 // CHECK-LE: @llvm.ppc.altivec.lvsl
6190 // CHECK-LE: @llvm.ppc.altivec.vperm
6191
6192 res_vf = vec_lvlx(0, &vf);
6193 // CHECK: @llvm.ppc.altivec.lvx
6194 // CHECK: @llvm.ppc.altivec.lvsl
6195 // CHECK: store <4 x float> zeroinitializer
6196 // CHECK: @llvm.ppc.altivec.vperm
6197 // CHECK-LE: @llvm.ppc.altivec.lvx
6198 // CHECK-LE: @llvm.ppc.altivec.lvsl
6199 // CHECK-LE: store <4 x float> zeroinitializer
6200 // CHECK-LE: @llvm.ppc.altivec.vperm
6201
6202 /* vec_lvlxl */
6203 res_vsc = vec_lvlxl(0, ¶m_sc);
6204 // CHECK: @llvm.ppc.altivec.lvxl
6205 // CHECK: @llvm.ppc.altivec.lvsl
6206 // CHECK: store <16 x i8> zeroinitializer
6207 // CHECK: @llvm.ppc.altivec.vperm
6208 // CHECK-LE: @llvm.ppc.altivec.lvxl
6209 // CHECK-LE: @llvm.ppc.altivec.lvsl
6210 // CHECK-LE: store <16 x i8> zeroinitializer
6211 // CHECK-LE: @llvm.ppc.altivec.vperm
6212
6213 res_vsc = vec_lvlxl(0, &vsc);
6214 // CHECK: @llvm.ppc.altivec.lvxl
6215 // CHECK: @llvm.ppc.altivec.lvsl
6216 // CHECK: store <16 x i8> zeroinitializer
6217 // CHECK: @llvm.ppc.altivec.vperm
6218 // CHECK-LE: @llvm.ppc.altivec.lvxl
6219 // CHECK-LE: @llvm.ppc.altivec.lvsl
6220 // CHECK-LE: store <16 x i8> zeroinitializer
6221 // CHECK-LE: @llvm.ppc.altivec.vperm
6222
6223 res_vuc = vec_lvlxl(0, ¶m_uc);
6224 // CHECK: @llvm.ppc.altivec.lvxl
6225 // CHECK: @llvm.ppc.altivec.lvsl
6226 // CHECK: store <16 x i8> zeroinitializer
6227 // CHECK: @llvm.ppc.altivec.vperm
6228 // CHECK-LE: @llvm.ppc.altivec.lvxl
6229 // CHECK-LE: @llvm.ppc.altivec.lvsl
6230 // CHECK-LE: store <16 x i8> zeroinitializer
6231 // CHECK-LE: @llvm.ppc.altivec.vperm
6232
6233 res_vuc = vec_lvlxl(0, &vuc);
6234 // CHECK: @llvm.ppc.altivec.lvxl
6235 // CHECK: @llvm.ppc.altivec.lvsl
6236 // CHECK: store <16 x i8> zeroinitializer
6237 // CHECK: @llvm.ppc.altivec.vperm
6238 // CHECK-LE: @llvm.ppc.altivec.lvxl
6239 // CHECK-LE: @llvm.ppc.altivec.lvsl
6240 // CHECK-LE: store <16 x i8> zeroinitializer
6241 // CHECK-LE: @llvm.ppc.altivec.vperm
6242
6243 res_vbc = vec_lvlxl(0, &vbc);
6244 // CHECK: @llvm.ppc.altivec.lvxl
6245 // CHECK: store <16 x i8> zeroinitializer
6246 // CHECK: @llvm.ppc.altivec.lvsl
6247 // CHECK: @llvm.ppc.altivec.vperm
6248 // CHECK-LE: @llvm.ppc.altivec.lvxl
6249 // CHECK-LE: store <16 x i8> zeroinitializer
6250 // CHECK-LE: @llvm.ppc.altivec.lvsl
6251 // CHECK-LE: @llvm.ppc.altivec.vperm
6252
6253 res_vs = vec_lvlxl(0, ¶m_s);
6254 // CHECK: @llvm.ppc.altivec.lvxl
6255 // CHECK: @llvm.ppc.altivec.lvsl
6256 // CHECK: store <8 x i16> zeroinitializer
6257 // CHECK: @llvm.ppc.altivec.vperm
6258 // CHECK-LE: @llvm.ppc.altivec.lvxl
6259 // CHECK-LE: @llvm.ppc.altivec.lvsl
6260 // CHECK-LE: store <8 x i16> zeroinitializer
6261 // CHECK-LE: @llvm.ppc.altivec.vperm
6262
6263 res_vs = vec_lvlxl(0, &vs);
6264 // CHECK: @llvm.ppc.altivec.lvxl
6265 // CHECK: @llvm.ppc.altivec.lvsl
6266 // CHECK: store <8 x i16> zeroinitializer
6267 // CHECK: @llvm.ppc.altivec.vperm
6268 // CHECK-LE: @llvm.ppc.altivec.lvxl
6269 // CHECK-LE: @llvm.ppc.altivec.lvsl
6270 // CHECK-LE: store <8 x i16> zeroinitializer
6271 // CHECK-LE: @llvm.ppc.altivec.vperm
6272
6273 res_vus = vec_lvlxl(0, ¶m_us);
6274 // CHECK: @llvm.ppc.altivec.lvxl
6275 // CHECK: @llvm.ppc.altivec.lvsl
6276 // CHECK: store <8 x i16> zeroinitializer
6277 // CHECK: @llvm.ppc.altivec.vperm
6278 // CHECK-LE: @llvm.ppc.altivec.lvxl
6279 // CHECK-LE: @llvm.ppc.altivec.lvsl
6280 // CHECK-LE: store <8 x i16> zeroinitializer
6281 // CHECK-LE: @llvm.ppc.altivec.vperm
6282
6283 res_vus = vec_lvlxl(0, &vus);
6284 // CHECK: @llvm.ppc.altivec.lvxl
6285 // CHECK: @llvm.ppc.altivec.lvsl
6286 // CHECK: store <8 x i16> zeroinitializer
6287 // CHECK: @llvm.ppc.altivec.vperm
6288 // CHECK-LE: @llvm.ppc.altivec.lvxl
6289 // CHECK-LE: @llvm.ppc.altivec.lvsl
6290 // CHECK-LE: store <8 x i16> zeroinitializer
6291 // CHECK-LE: @llvm.ppc.altivec.vperm
6292
6293 res_vbs = vec_lvlxl(0, &vbs);
6294 // CHECK: @llvm.ppc.altivec.lvxl
6295 // CHECK: store <8 x i16> zeroinitializer
6296 // CHECK: @llvm.ppc.altivec.lvsl
6297 // CHECK: @llvm.ppc.altivec.vperm
6298 // CHECK-LE: @llvm.ppc.altivec.lvxl
6299 // CHECK-LE: store <8 x i16> zeroinitializer
6300 // CHECK-LE: @llvm.ppc.altivec.lvsl
6301 // CHECK-LE: @llvm.ppc.altivec.vperm
6302
6303 res_vp = vec_lvlxl(0, &vp);
6304 // CHECK: @llvm.ppc.altivec.lvxl
6305 // CHECK: store <8 x i16> zeroinitializer
6306 // CHECK: @llvm.ppc.altivec.lvsl
6307 // CHECK: @llvm.ppc.altivec.vperm
6308 // CHECK-LE: @llvm.ppc.altivec.lvxl
6309 // CHECK-LE: store <8 x i16> zeroinitializer
6310 // CHECK-LE: @llvm.ppc.altivec.lvsl
6311 // CHECK-LE: @llvm.ppc.altivec.vperm
6312
6313 res_vi = vec_lvlxl(0, ¶m_i);
6314 // CHECK: @llvm.ppc.altivec.lvxl
6315 // CHECK: @llvm.ppc.altivec.lvsl
6316 // CHECK: store <4 x i32> zeroinitializer
6317 // CHECK: @llvm.ppc.altivec.vperm
6318 // CHECK-LE: @llvm.ppc.altivec.lvxl
6319 // CHECK-LE: @llvm.ppc.altivec.lvsl
6320 // CHECK-LE: store <4 x i32> zeroinitializer
6321 // CHECK-LE: @llvm.ppc.altivec.vperm
6322
6323 res_vi = vec_lvlxl(0, &vi);
6324 // CHECK: @llvm.ppc.altivec.lvxl
6325 // CHECK: @llvm.ppc.altivec.lvsl
6326 // CHECK: store <4 x i32> zeroinitializer
6327 // CHECK: @llvm.ppc.altivec.vperm
6328 // CHECK-LE: @llvm.ppc.altivec.lvxl
6329 // CHECK-LE: @llvm.ppc.altivec.lvsl
6330 // CHECK-LE: store <4 x i32> zeroinitializer
6331 // CHECK-LE: @llvm.ppc.altivec.vperm
6332
6333 res_vui = vec_lvlxl(0, ¶m_ui);
6334 // CHECK: @llvm.ppc.altivec.lvxl
6335 // CHECK: @llvm.ppc.altivec.lvsl
6336 // CHECK: store <4 x i32> zeroinitializer
6337 // CHECK: @llvm.ppc.altivec.vperm
6338 // CHECK-LE: @llvm.ppc.altivec.lvxl
6339 // CHECK-LE: @llvm.ppc.altivec.lvsl
6340 // CHECK-LE: store <4 x i32> zeroinitializer
6341 // CHECK-LE: @llvm.ppc.altivec.vperm
6342
6343 res_vui = vec_lvlxl(0, &vui);
6344 // CHECK: @llvm.ppc.altivec.lvxl
6345 // CHECK: @llvm.ppc.altivec.lvsl
6346 // CHECK: store <4 x i32> zeroinitializer
6347 // CHECK: @llvm.ppc.altivec.vperm
6348 // CHECK-LE: @llvm.ppc.altivec.lvxl
6349 // CHECK-LE: @llvm.ppc.altivec.lvsl
6350 // CHECK-LE: store <4 x i32> zeroinitializer
6351 // CHECK-LE: @llvm.ppc.altivec.vperm
6352
6353 res_vbi = vec_lvlxl(0, &vbi);
6354 // CHECK: @llvm.ppc.altivec.lvxl
6355 // CHECK: store <4 x i32> zeroinitializer
6356 // CHECK: @llvm.ppc.altivec.lvsl
6357 // CHECK: @llvm.ppc.altivec.vperm
6358 // CHECK-LE: @llvm.ppc.altivec.lvxl
6359 // CHECK-LE: store <4 x i32> zeroinitializer
6360 // CHECK-LE: @llvm.ppc.altivec.lvsl
6361 // CHECK-LE: @llvm.ppc.altivec.vperm
6362
6363 res_vf = vec_lvlxl(0, &vf);
6364 // CHECK: @llvm.ppc.altivec.lvxl
6365 // CHECK: @llvm.ppc.altivec.lvsl
6366 // CHECK: store <4 x float> zeroinitializer
6367 // CHECK: @llvm.ppc.altivec.vperm
6368 // CHECK-LE: @llvm.ppc.altivec.lvxl
6369 // CHECK-LE: @llvm.ppc.altivec.lvsl
6370 // CHECK-LE: store <4 x float> zeroinitializer
6371 // CHECK-LE: @llvm.ppc.altivec.vperm
6372
6373 /* vec_lvrx */
6374 res_vsc = vec_lvrx(0, ¶m_sc);
6375 // CHECK: @llvm.ppc.altivec.lvx
6376 // CHECK: @llvm.ppc.altivec.lvsl
6377 // CHECK: store <16 x i8> zeroinitializer
6378 // CHECK: @llvm.ppc.altivec.vperm
6379 // CHECK-LE: @llvm.ppc.altivec.lvx
6380 // CHECK-LE: @llvm.ppc.altivec.lvsl
6381 // CHECK-LE: store <16 x i8> zeroinitializer
6382 // CHECK-LE: @llvm.ppc.altivec.vperm
6383
6384 res_vsc = vec_lvrx(0, &vsc);
6385 // CHECK: @llvm.ppc.altivec.lvx
6386 // CHECK: @llvm.ppc.altivec.lvsl
6387 // CHECK: store <16 x i8> zeroinitializer
6388 // CHECK: @llvm.ppc.altivec.vperm
6389 // CHECK-LE: @llvm.ppc.altivec.lvx
6390 // CHECK-LE: @llvm.ppc.altivec.lvsl
6391 // CHECK-LE: store <16 x i8> zeroinitializer
6392 // CHECK-LE: @llvm.ppc.altivec.vperm
6393
6394 res_vuc = vec_lvrx(0, ¶m_uc);
6395 // CHECK: @llvm.ppc.altivec.lvx
6396 // CHECK: @llvm.ppc.altivec.lvsl
6397 // CHECK: store <16 x i8> zeroinitializer
6398 // CHECK: @llvm.ppc.altivec.vperm
6399 // CHECK-LE: @llvm.ppc.altivec.lvx
6400 // CHECK-LE: @llvm.ppc.altivec.lvsl
6401 // CHECK-LE: store <16 x i8> zeroinitializer
6402 // CHECK-LE: @llvm.ppc.altivec.vperm
6403
6404 res_vuc = vec_lvrx(0, &vuc);
6405 // CHECK: @llvm.ppc.altivec.lvx
6406 // CHECK: @llvm.ppc.altivec.lvsl
6407 // CHECK: store <16 x i8> zeroinitializer
6408 // CHECK: @llvm.ppc.altivec.vperm
6409 // CHECK-LE: @llvm.ppc.altivec.lvx
6410 // CHECK-LE: @llvm.ppc.altivec.lvsl
6411 // CHECK-LE: store <16 x i8> zeroinitializer
6412 // CHECK-LE: @llvm.ppc.altivec.vperm
6413
6414 res_vbc = vec_lvrx(0, &vbc);
6415 // CHECK: store <16 x i8> zeroinitializer
6416 // CHECK: @llvm.ppc.altivec.lvx
6417 // CHECK: @llvm.ppc.altivec.lvsl
6418 // CHECK: @llvm.ppc.altivec.vperm
6419 // CHECK-LE: store <16 x i8> zeroinitializer
6420 // CHECK-LE: @llvm.ppc.altivec.lvx
6421 // CHECK-LE: @llvm.ppc.altivec.lvsl
6422 // CHECK-LE: @llvm.ppc.altivec.vperm
6423
6424 res_vs = vec_lvrx(0, ¶m_s);
6425 // CHECK: @llvm.ppc.altivec.lvx
6426 // CHECK: @llvm.ppc.altivec.lvsl
6427 // CHECK: store <8 x i16> zeroinitializer
6428 // CHECK: @llvm.ppc.altivec.vperm
6429 // CHECK-LE: @llvm.ppc.altivec.lvx
6430 // CHECK-LE: @llvm.ppc.altivec.lvsl
6431 // CHECK-LE: store <8 x i16> zeroinitializer
6432 // CHECK-LE: @llvm.ppc.altivec.vperm
6433
6434 res_vs = vec_lvrx(0, &vs);
6435 // CHECK: @llvm.ppc.altivec.lvx
6436 // CHECK: @llvm.ppc.altivec.lvsl
6437 // CHECK: store <8 x i16> zeroinitializer
6438 // CHECK: @llvm.ppc.altivec.vperm
6439 // CHECK-LE: @llvm.ppc.altivec.lvx
6440 // CHECK-LE: @llvm.ppc.altivec.lvsl
6441 // CHECK-LE: store <8 x i16> zeroinitializer
6442 // CHECK-LE: @llvm.ppc.altivec.vperm
6443
6444 res_vus = vec_lvrx(0, ¶m_us);
6445 // CHECK: @llvm.ppc.altivec.lvx
6446 // CHECK: @llvm.ppc.altivec.lvsl
6447 // CHECK: store <8 x i16> zeroinitializer
6448 // CHECK: @llvm.ppc.altivec.vperm
6449 // CHECK-LE: @llvm.ppc.altivec.lvx
6450 // CHECK-LE: @llvm.ppc.altivec.lvsl
6451 // CHECK-LE: store <8 x i16> zeroinitializer
6452 // CHECK-LE: @llvm.ppc.altivec.vperm
6453
6454 res_vus = vec_lvrx(0, &vus);
6455 // CHECK: @llvm.ppc.altivec.lvx
6456 // CHECK: @llvm.ppc.altivec.lvsl
6457 // CHECK: store <8 x i16> zeroinitializer
6458 // CHECK: @llvm.ppc.altivec.vperm
6459 // CHECK-LE: @llvm.ppc.altivec.lvx
6460 // CHECK-LE: @llvm.ppc.altivec.lvsl
6461 // CHECK-LE: store <8 x i16> zeroinitializer
6462 // CHECK-LE: @llvm.ppc.altivec.vperm
6463
6464 res_vbs = vec_lvrx(0, &vbs);
6465 // CHECK: store <8 x i16> zeroinitializer
6466 // CHECK: @llvm.ppc.altivec.lvx
6467 // CHECK: @llvm.ppc.altivec.lvsl
6468 // CHECK: @llvm.ppc.altivec.vperm
6469 // CHECK-LE: store <8 x i16> zeroinitializer
6470 // CHECK-LE: @llvm.ppc.altivec.lvx
6471 // CHECK-LE: @llvm.ppc.altivec.lvsl
6472 // CHECK-LE: @llvm.ppc.altivec.vperm
6473
6474 res_vp = vec_lvrx(0, &vp);
6475 // CHECK: store <8 x i16> zeroinitializer
6476 // CHECK: @llvm.ppc.altivec.lvx
6477 // CHECK: @llvm.ppc.altivec.lvsl
6478 // CHECK: @llvm.ppc.altivec.vperm
6479 // CHECK-LE: store <8 x i16> zeroinitializer
6480 // CHECK-LE: @llvm.ppc.altivec.lvx
6481 // CHECK-LE: @llvm.ppc.altivec.lvsl
6482 // CHECK-LE: @llvm.ppc.altivec.vperm
6483
6484 res_vi = vec_lvrx(0, ¶m_i);
6485 // CHECK: @llvm.ppc.altivec.lvx
6486 // CHECK: @llvm.ppc.altivec.lvsl
6487 // CHECK: store <4 x i32> zeroinitializer
6488 // CHECK: @llvm.ppc.altivec.vperm
6489 // CHECK-LE: @llvm.ppc.altivec.lvx
6490 // CHECK-LE: @llvm.ppc.altivec.lvsl
6491 // CHECK-LE: store <4 x i32> zeroinitializer
6492 // CHECK-LE: @llvm.ppc.altivec.vperm
6493
6494 res_vi = vec_lvrx(0, &vi);
6495 // CHECK: @llvm.ppc.altivec.lvx
6496 // CHECK: @llvm.ppc.altivec.lvsl
6497 // CHECK: store <4 x i32> zeroinitializer
6498 // CHECK: @llvm.ppc.altivec.vperm
6499 // CHECK-LE: @llvm.ppc.altivec.lvx
6500 // CHECK-LE: @llvm.ppc.altivec.lvsl
6501 // CHECK-LE: store <4 x i32> zeroinitializer
6502 // CHECK-LE: @llvm.ppc.altivec.vperm
6503
6504 res_vui = vec_lvrx(0, ¶m_ui);
6505 // CHECK: @llvm.ppc.altivec.lvx
6506 // CHECK: @llvm.ppc.altivec.lvsl
6507 // CHECK: store <4 x i32> zeroinitializer
6508 // CHECK: @llvm.ppc.altivec.vperm
6509 // CHECK-LE: @llvm.ppc.altivec.lvx
6510 // CHECK-LE: @llvm.ppc.altivec.lvsl
6511 // CHECK-LE: store <4 x i32> zeroinitializer
6512 // CHECK-LE: @llvm.ppc.altivec.vperm
6513
6514 res_vui = vec_lvrx(0, &vui);
6515 // CHECK: @llvm.ppc.altivec.lvx
6516 // CHECK: @llvm.ppc.altivec.lvsl
6517 // CHECK: store <4 x i32> zeroinitializer
6518 // CHECK: @llvm.ppc.altivec.vperm
6519 // CHECK-LE: @llvm.ppc.altivec.lvx
6520 // CHECK-LE: @llvm.ppc.altivec.lvsl
6521 // CHECK-LE: store <4 x i32> zeroinitializer
6522 // CHECK-LE: @llvm.ppc.altivec.vperm
6523
6524 res_vbi = vec_lvrx(0, &vbi);
6525 // CHECK: store <4 x i32> zeroinitializer
6526 // CHECK: @llvm.ppc.altivec.lvx
6527 // CHECK: @llvm.ppc.altivec.lvsl
6528 // CHECK: @llvm.ppc.altivec.vperm
6529 // CHECK-LE: store <4 x i32> zeroinitializer
6530 // CHECK-LE: @llvm.ppc.altivec.lvx
6531 // CHECK-LE: @llvm.ppc.altivec.lvsl
6532 // CHECK-LE: @llvm.ppc.altivec.vperm
6533
6534 res_vf = vec_lvrx(0, &vf);
6535 // CHECK: @llvm.ppc.altivec.lvx
6536 // CHECK: @llvm.ppc.altivec.lvsl
6537 // CHECK: store <4 x float> zeroinitializer
6538 // CHECK: @llvm.ppc.altivec.vperm
6539 // CHECK-LE: @llvm.ppc.altivec.lvx
6540 // CHECK-LE: @llvm.ppc.altivec.lvsl
6541 // CHECK-LE: store <4 x float> zeroinitializer
6542 // CHECK-LE: @llvm.ppc.altivec.vperm
6543
6544 /* vec_lvrxl */
6545 res_vsc = vec_lvrxl(0, ¶m_sc);
6546 // CHECK: @llvm.ppc.altivec.lvxl
6547 // CHECK: @llvm.ppc.altivec.lvsl
6548 // CHECK: store <16 x i8> zeroinitializer
6549 // CHECK: @llvm.ppc.altivec.vperm
6550 // CHECK-LE: @llvm.ppc.altivec.lvxl
6551 // CHECK-LE: @llvm.ppc.altivec.lvsl
6552 // CHECK-LE: store <16 x i8> zeroinitializer
6553 // CHECK-LE: @llvm.ppc.altivec.vperm
6554
6555 res_vsc = vec_lvrxl(0, &vsc);
6556 // CHECK: @llvm.ppc.altivec.lvxl
6557 // CHECK: @llvm.ppc.altivec.lvsl
6558 // CHECK: store <16 x i8> zeroinitializer
6559 // CHECK: @llvm.ppc.altivec.vperm
6560 // CHECK-LE: @llvm.ppc.altivec.lvxl
6561 // CHECK-LE: @llvm.ppc.altivec.lvsl
6562 // CHECK-LE: store <16 x i8> zeroinitializer
6563 // CHECK-LE: @llvm.ppc.altivec.vperm
6564
6565 res_vuc = vec_lvrxl(0, ¶m_uc);
6566 // CHECK: @llvm.ppc.altivec.lvxl
6567 // CHECK: @llvm.ppc.altivec.lvsl
6568 // CHECK: store <16 x i8> zeroinitializer
6569 // CHECK: @llvm.ppc.altivec.vperm
6570 // CHECK-LE: @llvm.ppc.altivec.lvxl
6571 // CHECK-LE: @llvm.ppc.altivec.lvsl
6572 // CHECK-LE: store <16 x i8> zeroinitializer
6573 // CHECK-LE: @llvm.ppc.altivec.vperm
6574
6575 res_vuc = vec_lvrxl(0, &vuc);
6576 // CHECK: @llvm.ppc.altivec.lvxl
6577 // CHECK: @llvm.ppc.altivec.lvsl
6578 // CHECK: store <16 x i8> zeroinitializer
6579 // CHECK: @llvm.ppc.altivec.vperm
6580 // CHECK-LE: @llvm.ppc.altivec.lvxl
6581 // CHECK-LE: @llvm.ppc.altivec.lvsl
6582 // CHECK-LE: store <16 x i8> zeroinitializer
6583 // CHECK-LE: @llvm.ppc.altivec.vperm
6584
6585 res_vbc = vec_lvrxl(0, &vbc);
6586 // CHECK: store <16 x i8> zeroinitializer
6587 // CHECK: @llvm.ppc.altivec.lvxl
6588 // CHECK: @llvm.ppc.altivec.lvsl
6589 // CHECK: @llvm.ppc.altivec.vperm
6590 // CHECK-LE: store <16 x i8> zeroinitializer
6591 // CHECK-LE: @llvm.ppc.altivec.lvxl
6592 // CHECK-LE: @llvm.ppc.altivec.lvsl
6593 // CHECK-LE: @llvm.ppc.altivec.vperm
6594
6595 res_vs = vec_lvrxl(0, ¶m_s);
6596 // CHECK: @llvm.ppc.altivec.lvxl
6597 // CHECK: @llvm.ppc.altivec.lvsl
6598 // CHECK: store <8 x i16> zeroinitializer
6599 // CHECK: @llvm.ppc.altivec.vperm
6600 // CHECK-LE: @llvm.ppc.altivec.lvxl
6601 // CHECK-LE: @llvm.ppc.altivec.lvsl
6602 // CHECK-LE: store <8 x i16> zeroinitializer
6603 // CHECK-LE: @llvm.ppc.altivec.vperm
6604
6605 res_vs = vec_lvrxl(0, &vs);
6606 // CHECK: @llvm.ppc.altivec.lvxl
6607 // CHECK: @llvm.ppc.altivec.lvsl
6608 // CHECK: store <8 x i16> zeroinitializer
6609 // CHECK: @llvm.ppc.altivec.vperm
6610 // CHECK-LE: @llvm.ppc.altivec.lvxl
6611 // CHECK-LE: @llvm.ppc.altivec.lvsl
6612 // CHECK-LE: store <8 x i16> zeroinitializer
6613 // CHECK-LE: @llvm.ppc.altivec.vperm
6614
6615 res_vus = vec_lvrxl(0, ¶m_us);
6616 // CHECK: @llvm.ppc.altivec.lvxl
6617 // CHECK: @llvm.ppc.altivec.lvsl
6618 // CHECK: store <8 x i16> zeroinitializer
6619 // CHECK: @llvm.ppc.altivec.vperm
6620 // CHECK-LE: @llvm.ppc.altivec.lvxl
6621 // CHECK-LE: @llvm.ppc.altivec.lvsl
6622 // CHECK-LE: store <8 x i16> zeroinitializer
6623 // CHECK-LE: @llvm.ppc.altivec.vperm
6624
6625 res_vus = vec_lvrxl(0, &vus);
6626 // CHECK: @llvm.ppc.altivec.lvxl
6627 // CHECK: @llvm.ppc.altivec.lvsl
6628 // CHECK: store <8 x i16> zeroinitializer
6629 // CHECK: @llvm.ppc.altivec.vperm
6630 // CHECK-LE: @llvm.ppc.altivec.lvxl
6631 // CHECK-LE: @llvm.ppc.altivec.lvsl
6632 // CHECK-LE: store <8 x i16> zeroinitializer
6633 // CHECK-LE: @llvm.ppc.altivec.vperm
6634
6635 res_vbs = vec_lvrxl(0, &vbs);
6636 // CHECK: store <8 x i16> zeroinitializer
6637 // CHECK: @llvm.ppc.altivec.lvxl
6638 // CHECK: @llvm.ppc.altivec.lvsl
6639 // CHECK: @llvm.ppc.altivec.vperm
6640 // CHECK-LE: store <8 x i16> zeroinitializer
6641 // CHECK-LE: @llvm.ppc.altivec.lvxl
6642 // CHECK-LE: @llvm.ppc.altivec.lvsl
6643 // CHECK-LE: @llvm.ppc.altivec.vperm
6644
6645 res_vp = vec_lvrxl(0, &vp);
6646 // CHECK: store <8 x i16> zeroinitializer
6647 // CHECK: @llvm.ppc.altivec.lvxl
6648 // CHECK: @llvm.ppc.altivec.lvsl
6649 // CHECK: @llvm.ppc.altivec.vperm
6650 // CHECK-LE: store <8 x i16> zeroinitializer
6651 // CHECK-LE: @llvm.ppc.altivec.lvxl
6652 // CHECK-LE: @llvm.ppc.altivec.lvsl
6653 // CHECK-LE: @llvm.ppc.altivec.vperm
6654
6655 res_vi = vec_lvrxl(0, ¶m_i);
6656 // CHECK: @llvm.ppc.altivec.lvxl
6657 // CHECK: @llvm.ppc.altivec.lvsl
6658 // CHECK: store <4 x i32> zeroinitializer
6659 // CHECK: @llvm.ppc.altivec.vperm
6660 // CHECK-LE: @llvm.ppc.altivec.lvxl
6661 // CHECK-LE: @llvm.ppc.altivec.lvsl
6662 // CHECK-LE: store <4 x i32> zeroinitializer
6663 // CHECK-LE: @llvm.ppc.altivec.vperm
6664
6665 res_vi = vec_lvrxl(0, &vi);
6666 // CHECK: @llvm.ppc.altivec.lvxl
6667 // CHECK: @llvm.ppc.altivec.lvsl
6668 // CHECK: store <4 x i32> zeroinitializer
6669 // CHECK: @llvm.ppc.altivec.vperm
6670 // CHECK-LE: @llvm.ppc.altivec.lvxl
6671 // CHECK-LE: @llvm.ppc.altivec.lvsl
6672 // CHECK-LE: store <4 x i32> zeroinitializer
6673 // CHECK-LE: @llvm.ppc.altivec.vperm
6674
6675 res_vui = vec_lvrxl(0, ¶m_ui);
6676 // CHECK: @llvm.ppc.altivec.lvxl
6677 // CHECK: @llvm.ppc.altivec.lvsl
6678 // CHECK: store <4 x i32> zeroinitializer
6679 // CHECK: @llvm.ppc.altivec.vperm
6680 // CHECK-LE: @llvm.ppc.altivec.lvxl
6681 // CHECK-LE: @llvm.ppc.altivec.lvsl
6682 // CHECK-LE: store <4 x i32> zeroinitializer
6683 // CHECK-LE: @llvm.ppc.altivec.vperm
6684
6685 res_vui = vec_lvrxl(0, &vui);
6686 // CHECK: @llvm.ppc.altivec.lvxl
6687 // CHECK: @llvm.ppc.altivec.lvsl
6688 // CHECK: store <4 x i32> zeroinitializer
6689 // CHECK: @llvm.ppc.altivec.vperm
6690 // CHECK-LE: @llvm.ppc.altivec.lvxl
6691 // CHECK-LE: @llvm.ppc.altivec.lvsl
6692 // CHECK-LE: store <4 x i32> zeroinitializer
6693 // CHECK-LE: @llvm.ppc.altivec.vperm
6694
6695 res_vbi = vec_lvrxl(0, &vbi);
6696 // CHECK: store <4 x i32> zeroinitializer
6697 // CHECK: @llvm.ppc.altivec.lvxl
6698 // CHECK: @llvm.ppc.altivec.lvsl
6699 // CHECK: @llvm.ppc.altivec.vperm
6700 // CHECK-LE: store <4 x i32> zeroinitializer
6701 // CHECK-LE: @llvm.ppc.altivec.lvxl
6702 // CHECK-LE: @llvm.ppc.altivec.lvsl
6703 // CHECK-LE: @llvm.ppc.altivec.vperm
6704
6705 res_vf = vec_lvrxl(0, &vf);
6706 // CHECK: @llvm.ppc.altivec.lvxl
6707 // CHECK: @llvm.ppc.altivec.lvsl
6708 // CHECK: store <4 x float> zeroinitializer
6709 // CHECK: @llvm.ppc.altivec.vperm
6710 // CHECK-LE: @llvm.ppc.altivec.lvxl
6711 // CHECK-LE: @llvm.ppc.altivec.lvsl
6712 // CHECK-LE: store <4 x float> zeroinitializer
6713 // CHECK-LE: @llvm.ppc.altivec.vperm
6714
6715 /* vec_stvlx */
6716 vec_stvlx(vsc, 0, ¶m_sc);
6717 // CHECK: @llvm.ppc.altivec.lvx
6718 // CHECK: @llvm.ppc.altivec.lvsl
6719 // CHECK: store <16 x i8> zeroinitializer
6720 // CHECK: @llvm.ppc.altivec.vperm
6721 // CHECK: @llvm.ppc.altivec.lvsr
6722 // CHECK: @llvm.ppc.altivec.vperm
6723 // CHECK: @llvm.ppc.altivec.stvx
6724 // CHECK-LE: @llvm.ppc.altivec.lvx
6725 // CHECK-LE: @llvm.ppc.altivec.lvsl
6726 // CHECK-LE: store <16 x i8> zeroinitializer
6727 // CHECK-LE: @llvm.ppc.altivec.vperm
6728 // CHECK-LE: @llvm.ppc.altivec.lvsr
6729 // CHECK-LE: @llvm.ppc.altivec.vperm
6730 // CHECK-LE: @llvm.ppc.altivec.stvx
6731
6732 vec_stvlx(vsc, 0, &vsc);
6733 // CHECK: @llvm.ppc.altivec.lvx
6734 // CHECK: @llvm.ppc.altivec.lvsl
6735 // CHECK: store <16 x i8> zeroinitializer
6736 // CHECK: @llvm.ppc.altivec.vperm
6737 // CHECK: @llvm.ppc.altivec.lvsr
6738 // CHECK: @llvm.ppc.altivec.vperm
6739 // CHECK: @llvm.ppc.altivec.stvx
6740 // CHECK-LE: @llvm.ppc.altivec.lvx
6741 // CHECK-LE: @llvm.ppc.altivec.lvsl
6742 // CHECK-LE: store <16 x i8> zeroinitializer
6743 // CHECK-LE: @llvm.ppc.altivec.vperm
6744 // CHECK-LE: @llvm.ppc.altivec.lvsr
6745 // CHECK-LE: @llvm.ppc.altivec.vperm
6746 // CHECK-LE: @llvm.ppc.altivec.stvx
6747
6748 vec_stvlx(vuc, 0, ¶m_uc);
6749 // CHECK: @llvm.ppc.altivec.lvx
6750 // CHECK: @llvm.ppc.altivec.lvsl
6751 // CHECK: store <16 x i8> zeroinitializer
6752 // CHECK: @llvm.ppc.altivec.vperm
6753 // CHECK: @llvm.ppc.altivec.lvsr
6754 // CHECK: @llvm.ppc.altivec.vperm
6755 // CHECK: @llvm.ppc.altivec.stvx
6756 // CHECK-LE: @llvm.ppc.altivec.lvx
6757 // CHECK-LE: @llvm.ppc.altivec.lvsl
6758 // CHECK-LE: store <16 x i8> zeroinitializer
6759 // CHECK-LE: @llvm.ppc.altivec.vperm
6760 // CHECK-LE: @llvm.ppc.altivec.lvsr
6761 // CHECK-LE: @llvm.ppc.altivec.vperm
6762 // CHECK-LE: @llvm.ppc.altivec.stvx
6763
6764 vec_stvlx(vuc, 0, &vuc);
6765 // CHECK: @llvm.ppc.altivec.lvx
6766 // CHECK: @llvm.ppc.altivec.lvsl
6767 // CHECK: store <16 x i8> zeroinitializer
6768 // CHECK: @llvm.ppc.altivec.vperm
6769 // CHECK: @llvm.ppc.altivec.lvsr
6770 // CHECK: @llvm.ppc.altivec.vperm
6771 // CHECK: @llvm.ppc.altivec.stvx
6772 // CHECK-LE: @llvm.ppc.altivec.lvx
6773 // CHECK-LE: @llvm.ppc.altivec.lvsl
6774 // CHECK-LE: store <16 x i8> zeroinitializer
6775 // CHECK-LE: @llvm.ppc.altivec.vperm
6776 // CHECK-LE: @llvm.ppc.altivec.lvsr
6777 // CHECK-LE: @llvm.ppc.altivec.vperm
6778 // CHECK-LE: @llvm.ppc.altivec.stvx
6779
6780 vec_stvlx(vbc, 0, &vbc);
6781 // CHECK: store <16 x i8> zeroinitializer
6782 // CHECK: @llvm.ppc.altivec.lvx
6783 // CHECK: @llvm.ppc.altivec.lvsl
6784 // CHECK: @llvm.ppc.altivec.vperm
6785 // CHECK: @llvm.ppc.altivec.lvsr
6786 // CHECK: @llvm.ppc.altivec.vperm
6787 // CHECK: @llvm.ppc.altivec.stvx
6788 // CHECK-LE: store <16 x i8> zeroinitializer
6789 // CHECK-LE: @llvm.ppc.altivec.lvx
6790 // CHECK-LE: @llvm.ppc.altivec.lvsl
6791 // CHECK-LE: @llvm.ppc.altivec.vperm
6792 // CHECK-LE: @llvm.ppc.altivec.lvsr
6793 // CHECK-LE: @llvm.ppc.altivec.vperm
6794 // CHECK-LE: @llvm.ppc.altivec.stvx
6795
6796 vec_stvlx(vs, 0, ¶m_s);
6797 // CHECK: @llvm.ppc.altivec.lvx
6798 // CHECK: @llvm.ppc.altivec.lvsl
6799 // CHECK: store <8 x i16> zeroinitializer
6800 // CHECK: @llvm.ppc.altivec.vperm
6801 // CHECK: @llvm.ppc.altivec.lvsr
6802 // CHECK: @llvm.ppc.altivec.vperm
6803 // CHECK: @llvm.ppc.altivec.stvx
6804 // CHECK-LE: @llvm.ppc.altivec.lvx
6805 // CHECK-LE: @llvm.ppc.altivec.lvsl
6806 // CHECK-LE: store <8 x i16> zeroinitializer
6807 // CHECK-LE: @llvm.ppc.altivec.vperm
6808 // CHECK-LE: @llvm.ppc.altivec.lvsr
6809 // CHECK-LE: @llvm.ppc.altivec.vperm
6810 // CHECK-LE: @llvm.ppc.altivec.stvx
6811
6812 vec_stvlx(vs, 0, &vs);
6813 // CHECK: @llvm.ppc.altivec.lvx
6814 // CHECK: @llvm.ppc.altivec.lvsl
6815 // CHECK: store <8 x i16> zeroinitializer
6816 // CHECK: @llvm.ppc.altivec.vperm
6817 // CHECK: @llvm.ppc.altivec.lvsr
6818 // CHECK: @llvm.ppc.altivec.vperm
6819 // CHECK: @llvm.ppc.altivec.stvx
6820 // CHECK-LE: @llvm.ppc.altivec.lvx
6821 // CHECK-LE: @llvm.ppc.altivec.lvsl
6822 // CHECK-LE: store <8 x i16> zeroinitializer
6823 // CHECK-LE: @llvm.ppc.altivec.vperm
6824 // CHECK-LE: @llvm.ppc.altivec.lvsr
6825 // CHECK-LE: @llvm.ppc.altivec.vperm
6826 // CHECK-LE: @llvm.ppc.altivec.stvx
6827
6828 vec_stvlx(vus, 0, ¶m_us);
6829 // CHECK: @llvm.ppc.altivec.lvx
6830 // CHECK: @llvm.ppc.altivec.lvsl
6831 // CHECK: store <8 x i16> zeroinitializer
6832 // CHECK: @llvm.ppc.altivec.vperm
6833 // CHECK: @llvm.ppc.altivec.lvsr
6834 // CHECK: @llvm.ppc.altivec.vperm
6835 // CHECK: @llvm.ppc.altivec.stvx
6836 // CHECK-LE: @llvm.ppc.altivec.lvx
6837 // CHECK-LE: @llvm.ppc.altivec.lvsl
6838 // CHECK-LE: store <8 x i16> zeroinitializer
6839 // CHECK-LE: @llvm.ppc.altivec.vperm
6840 // CHECK-LE: @llvm.ppc.altivec.lvsr
6841 // CHECK-LE: @llvm.ppc.altivec.vperm
6842 // CHECK-LE: @llvm.ppc.altivec.stvx
6843
6844 vec_stvlx(vus, 0, &vus);
6845 // CHECK: @llvm.ppc.altivec.lvx
6846 // CHECK: @llvm.ppc.altivec.lvsl
6847 // CHECK: store <8 x i16> zeroinitializer
6848 // CHECK: @llvm.ppc.altivec.vperm
6849 // CHECK: @llvm.ppc.altivec.lvsr
6850 // CHECK: @llvm.ppc.altivec.vperm
6851 // CHECK: @llvm.ppc.altivec.stvx
6852 // CHECK-LE: @llvm.ppc.altivec.lvx
6853 // CHECK-LE: @llvm.ppc.altivec.lvsl
6854 // CHECK-LE: store <8 x i16> zeroinitializer
6855 // CHECK-LE: @llvm.ppc.altivec.vperm
6856 // CHECK-LE: @llvm.ppc.altivec.lvsr
6857 // CHECK-LE: @llvm.ppc.altivec.vperm
6858 // CHECK-LE: @llvm.ppc.altivec.stvx
6859
6860 vec_stvlx(vbs, 0, &vbs);
6861 // CHECK: store <8 x i16> zeroinitializer
6862 // CHECK: @llvm.ppc.altivec.lvx
6863 // CHECK: @llvm.ppc.altivec.lvsl
6864 // CHECK: @llvm.ppc.altivec.vperm
6865 // CHECK: @llvm.ppc.altivec.lvsr
6866 // CHECK: @llvm.ppc.altivec.vperm
6867 // CHECK: @llvm.ppc.altivec.stvx
6868 // CHECK-LE: store <8 x i16> zeroinitializer
6869 // CHECK-LE: @llvm.ppc.altivec.lvx
6870 // CHECK-LE: @llvm.ppc.altivec.lvsl
6871 // CHECK-LE: @llvm.ppc.altivec.vperm
6872 // CHECK-LE: @llvm.ppc.altivec.lvsr
6873 // CHECK-LE: @llvm.ppc.altivec.vperm
6874 // CHECK-LE: @llvm.ppc.altivec.stvx
6875
6876 vec_stvlx(vp, 0, &vp);
6877 // CHECK: store <8 x i16> zeroinitializer
6878 // CHECK: @llvm.ppc.altivec.lvx
6879 // CHECK: @llvm.ppc.altivec.lvsl
6880 // CHECK: @llvm.ppc.altivec.vperm
6881 // CHECK: @llvm.ppc.altivec.lvsr
6882 // CHECK: @llvm.ppc.altivec.vperm
6883 // CHECK: @llvm.ppc.altivec.stvx
6884 // CHECK-LE: store <8 x i16> zeroinitializer
6885 // CHECK-LE: @llvm.ppc.altivec.lvx
6886 // CHECK-LE: @llvm.ppc.altivec.lvsl
6887 // CHECK-LE: @llvm.ppc.altivec.vperm
6888 // CHECK-LE: @llvm.ppc.altivec.lvsr
6889 // CHECK-LE: @llvm.ppc.altivec.vperm
6890 // CHECK-LE: @llvm.ppc.altivec.stvx
6891
6892 vec_stvlx(vi, 0, ¶m_i);
6893 // CHECK: @llvm.ppc.altivec.lvx
6894 // CHECK: @llvm.ppc.altivec.lvsl
6895 // CHECK: store <4 x i32> zeroinitializer
6896 // CHECK: @llvm.ppc.altivec.vperm
6897 // CHECK: @llvm.ppc.altivec.lvsr
6898 // CHECK: @llvm.ppc.altivec.vperm
6899 // CHECK: @llvm.ppc.altivec.stvx
6900 // CHECK-LE: @llvm.ppc.altivec.lvx
6901 // CHECK-LE: @llvm.ppc.altivec.lvsl
6902 // CHECK-LE: store <4 x i32> zeroinitializer
6903 // CHECK-LE: @llvm.ppc.altivec.vperm
6904 // CHECK-LE: @llvm.ppc.altivec.lvsr
6905 // CHECK-LE: @llvm.ppc.altivec.vperm
6906 // CHECK-LE: @llvm.ppc.altivec.stvx
6907
6908 vec_stvlx(vi, 0, &vi);
6909 // CHECK: @llvm.ppc.altivec.lvx
6910 // CHECK: @llvm.ppc.altivec.lvsl
6911 // CHECK: store <4 x i32> zeroinitializer
6912 // CHECK: @llvm.ppc.altivec.vperm
6913 // CHECK: @llvm.ppc.altivec.lvsr
6914 // CHECK: @llvm.ppc.altivec.vperm
6915 // CHECK: @llvm.ppc.altivec.stvx
6916 // CHECK-LE: @llvm.ppc.altivec.lvx
6917 // CHECK-LE: @llvm.ppc.altivec.lvsl
6918 // CHECK-LE: store <4 x i32> zeroinitializer
6919 // CHECK-LE: @llvm.ppc.altivec.vperm
6920 // CHECK-LE: @llvm.ppc.altivec.lvsr
6921 // CHECK-LE: @llvm.ppc.altivec.vperm
6922 // CHECK-LE: @llvm.ppc.altivec.stvx
6923
6924 vec_stvlx(vui, 0, ¶m_ui);
6925 // CHECK: @llvm.ppc.altivec.lvx
6926 // CHECK: @llvm.ppc.altivec.lvsl
6927 // CHECK: store <4 x i32> zeroinitializer
6928 // CHECK: @llvm.ppc.altivec.vperm
6929 // CHECK: @llvm.ppc.altivec.lvsr
6930 // CHECK: @llvm.ppc.altivec.vperm
6931 // CHECK: @llvm.ppc.altivec.stvx
6932 // CHECK-LE: @llvm.ppc.altivec.lvx
6933 // CHECK-LE: @llvm.ppc.altivec.lvsl
6934 // CHECK-LE: store <4 x i32> zeroinitializer
6935 // CHECK-LE: @llvm.ppc.altivec.vperm
6936 // CHECK-LE: @llvm.ppc.altivec.lvsr
6937 // CHECK-LE: @llvm.ppc.altivec.vperm
6938 // CHECK-LE: @llvm.ppc.altivec.stvx
6939
6940 vec_stvlx(vui, 0, &vui);
6941 // CHECK: @llvm.ppc.altivec.lvx
6942 // CHECK: @llvm.ppc.altivec.lvsl
6943 // CHECK: store <4 x i32> zeroinitializer
6944 // CHECK: @llvm.ppc.altivec.vperm
6945 // CHECK: @llvm.ppc.altivec.lvsr
6946 // CHECK: @llvm.ppc.altivec.vperm
6947 // CHECK: @llvm.ppc.altivec.stvx
6948 // CHECK-LE: @llvm.ppc.altivec.lvx
6949 // CHECK-LE: @llvm.ppc.altivec.lvsl
6950 // CHECK-LE: store <4 x i32> zeroinitializer
6951 // CHECK-LE: @llvm.ppc.altivec.vperm
6952 // CHECK-LE: @llvm.ppc.altivec.lvsr
6953 // CHECK-LE: @llvm.ppc.altivec.vperm
6954 // CHECK-LE: @llvm.ppc.altivec.stvx
6955
6956 vec_stvlx(vbi, 0, &vbi);
6957 // CHECK: store <4 x i32> zeroinitializer
6958 // CHECK: @llvm.ppc.altivec.lvx
6959 // CHECK: @llvm.ppc.altivec.lvsl
6960 // CHECK: @llvm.ppc.altivec.vperm
6961 // CHECK: @llvm.ppc.altivec.lvsr
6962 // CHECK: @llvm.ppc.altivec.vperm
6963 // CHECK: @llvm.ppc.altivec.stvx
6964 // CHECK-LE: store <4 x i32> zeroinitializer
6965 // CHECK-LE: @llvm.ppc.altivec.lvx
6966 // CHECK-LE: @llvm.ppc.altivec.lvsl
6967 // CHECK-LE: @llvm.ppc.altivec.vperm
6968 // CHECK-LE: @llvm.ppc.altivec.lvsr
6969 // CHECK-LE: @llvm.ppc.altivec.vperm
6970 // CHECK-LE: @llvm.ppc.altivec.stvx
6971
6972 vec_stvlx(vf, 0, &vf);
6973 // CHECK: @llvm.ppc.altivec.lvx
6974 // CHECK: @llvm.ppc.altivec.lvsl
6975 // CHECK: store <4 x float> zeroinitializer
6976 // CHECK: @llvm.ppc.altivec.vperm
6977 // CHECK: @llvm.ppc.altivec.lvsr
6978 // CHECK: @llvm.ppc.altivec.vperm
6979 // CHECK: @llvm.ppc.altivec.stvx
6980 // CHECK-LE: @llvm.ppc.altivec.lvx
6981 // CHECK-LE: @llvm.ppc.altivec.lvsl
6982 // CHECK-LE: store <4 x float> zeroinitializer
6983 // CHECK-LE: @llvm.ppc.altivec.vperm
6984 // CHECK-LE: @llvm.ppc.altivec.lvsr
6985 // CHECK-LE: @llvm.ppc.altivec.vperm
6986 // CHECK-LE: @llvm.ppc.altivec.stvx
6987
6988 /* vec_stvlxl */
6989 vec_stvlxl(vsc, 0, ¶m_sc);
6990 // CHECK: @llvm.ppc.altivec.lvx
6991 // CHECK: @llvm.ppc.altivec.lvsl
6992 // CHECK: store <16 x i8> zeroinitializer
6993 // CHECK: @llvm.ppc.altivec.vperm
6994 // CHECK: @llvm.ppc.altivec.lvsr
6995 // CHECK: @llvm.ppc.altivec.vperm
6996 // CHECK: @llvm.ppc.altivec.stvxl
6997 // CHECK-LE: @llvm.ppc.altivec.lvx
6998 // CHECK-LE: @llvm.ppc.altivec.lvsl
6999 // CHECK-LE: store <16 x i8> zeroinitializer
7000 // CHECK-LE: @llvm.ppc.altivec.vperm
7001 // CHECK-LE: @llvm.ppc.altivec.lvsr
7002 // CHECK-LE: @llvm.ppc.altivec.vperm
7003 // CHECK-LE: @llvm.ppc.altivec.stvxl
7004
7005 vec_stvlxl(vsc, 0, &vsc);
7006 // CHECK: @llvm.ppc.altivec.lvx
7007 // CHECK: @llvm.ppc.altivec.lvsl
7008 // CHECK: store <16 x i8> zeroinitializer
7009 // CHECK: @llvm.ppc.altivec.vperm
7010 // CHECK: @llvm.ppc.altivec.lvsr
7011 // CHECK: @llvm.ppc.altivec.vperm
7012 // CHECK: @llvm.ppc.altivec.stvxl
7013 // CHECK-LE: @llvm.ppc.altivec.lvx
7014 // CHECK-LE: @llvm.ppc.altivec.lvsl
7015 // CHECK-LE: store <16 x i8> zeroinitializer
7016 // CHECK-LE: @llvm.ppc.altivec.vperm
7017 // CHECK-LE: @llvm.ppc.altivec.lvsr
7018 // CHECK-LE: @llvm.ppc.altivec.vperm
7019 // CHECK-LE: @llvm.ppc.altivec.stvxl
7020
7021 vec_stvlxl(vuc, 0, ¶m_uc);
7022 // CHECK: @llvm.ppc.altivec.lvx
7023 // CHECK: @llvm.ppc.altivec.lvsl
7024 // CHECK: store <16 x i8> zeroinitializer
7025 // CHECK: @llvm.ppc.altivec.vperm
7026 // CHECK: @llvm.ppc.altivec.lvsr
7027 // CHECK: @llvm.ppc.altivec.vperm
7028 // CHECK: @llvm.ppc.altivec.stvxl
7029 // CHECK-LE: @llvm.ppc.altivec.lvx
7030 // CHECK-LE: @llvm.ppc.altivec.lvsl
7031 // CHECK-LE: store <16 x i8> zeroinitializer
7032 // CHECK-LE: @llvm.ppc.altivec.vperm
7033 // CHECK-LE: @llvm.ppc.altivec.lvsr
7034 // CHECK-LE: @llvm.ppc.altivec.vperm
7035 // CHECK-LE: @llvm.ppc.altivec.stvxl
7036
7037 vec_stvlxl(vuc, 0, &vuc);
7038 // CHECK: @llvm.ppc.altivec.lvx
7039 // CHECK: @llvm.ppc.altivec.lvsl
7040 // CHECK: store <16 x i8> zeroinitializer
7041 // CHECK: @llvm.ppc.altivec.vperm
7042 // CHECK: @llvm.ppc.altivec.lvsr
7043 // CHECK: @llvm.ppc.altivec.vperm
7044 // CHECK: @llvm.ppc.altivec.stvxl
7045 // CHECK-LE: @llvm.ppc.altivec.lvx
7046 // CHECK-LE: @llvm.ppc.altivec.lvsl
7047 // CHECK-LE: store <16 x i8> zeroinitializer
7048 // CHECK-LE: @llvm.ppc.altivec.vperm
7049 // CHECK-LE: @llvm.ppc.altivec.lvsr
7050 // CHECK-LE: @llvm.ppc.altivec.vperm
7051 // CHECK-LE: @llvm.ppc.altivec.stvxl
7052
7053 vec_stvlxl(vbc, 0, &vbc);
7054 // CHECK: store <16 x i8> zeroinitializer
7055 // CHECK: @llvm.ppc.altivec.lvx
7056 // CHECK: @llvm.ppc.altivec.lvsl
7057 // CHECK: @llvm.ppc.altivec.vperm
7058 // CHECK: @llvm.ppc.altivec.lvsr
7059 // CHECK: @llvm.ppc.altivec.vperm
7060 // CHECK: @llvm.ppc.altivec.stvxl
7061 // CHECK-LE: store <16 x i8> zeroinitializer
7062 // CHECK-LE: @llvm.ppc.altivec.lvx
7063 // CHECK-LE: @llvm.ppc.altivec.lvsl
7064 // CHECK-LE: @llvm.ppc.altivec.vperm
7065 // CHECK-LE: @llvm.ppc.altivec.lvsr
7066 // CHECK-LE: @llvm.ppc.altivec.vperm
7067 // CHECK-LE: @llvm.ppc.altivec.stvxl
7068
7069 vec_stvlxl(vs, 0, ¶m_s);
7070 // CHECK: @llvm.ppc.altivec.lvx
7071 // CHECK: @llvm.ppc.altivec.lvsl
7072 // CHECK: store <8 x i16> zeroinitializer
7073 // CHECK: @llvm.ppc.altivec.vperm
7074 // CHECK: @llvm.ppc.altivec.lvsr
7075 // CHECK: @llvm.ppc.altivec.vperm
7076 // CHECK: @llvm.ppc.altivec.stvxl
7077 // CHECK-LE: @llvm.ppc.altivec.lvx
7078 // CHECK-LE: @llvm.ppc.altivec.lvsl
7079 // CHECK-LE: store <8 x i16> zeroinitializer
7080 // CHECK-LE: @llvm.ppc.altivec.vperm
7081 // CHECK-LE: @llvm.ppc.altivec.lvsr
7082 // CHECK-LE: @llvm.ppc.altivec.vperm
7083 // CHECK-LE: @llvm.ppc.altivec.stvxl
7084
7085 vec_stvlxl(vs, 0, &vs);
7086 // CHECK: @llvm.ppc.altivec.lvx
7087 // CHECK: @llvm.ppc.altivec.lvsl
7088 // CHECK: store <8 x i16> zeroinitializer
7089 // CHECK: @llvm.ppc.altivec.vperm
7090 // CHECK: @llvm.ppc.altivec.lvsr
7091 // CHECK: @llvm.ppc.altivec.vperm
7092 // CHECK: @llvm.ppc.altivec.stvxl
7093 // CHECK-LE: @llvm.ppc.altivec.lvx
7094 // CHECK-LE: @llvm.ppc.altivec.lvsl
7095 // CHECK-LE: store <8 x i16> zeroinitializer
7096 // CHECK-LE: @llvm.ppc.altivec.vperm
7097 // CHECK-LE: @llvm.ppc.altivec.lvsr
7098 // CHECK-LE: @llvm.ppc.altivec.vperm
7099 // CHECK-LE: @llvm.ppc.altivec.stvxl
7100
7101 vec_stvlxl(vus, 0, ¶m_us);
7102 // CHECK: @llvm.ppc.altivec.lvx
7103 // CHECK: @llvm.ppc.altivec.lvsl
7104 // CHECK: store <8 x i16> zeroinitializer
7105 // CHECK: @llvm.ppc.altivec.vperm
7106 // CHECK: @llvm.ppc.altivec.lvsr
7107 // CHECK: @llvm.ppc.altivec.vperm
7108 // CHECK: @llvm.ppc.altivec.stvxl
7109 // CHECK-LE: @llvm.ppc.altivec.lvx
7110 // CHECK-LE: @llvm.ppc.altivec.lvsl
7111 // CHECK-LE: store <8 x i16> zeroinitializer
7112 // CHECK-LE: @llvm.ppc.altivec.vperm
7113 // CHECK-LE: @llvm.ppc.altivec.lvsr
7114 // CHECK-LE: @llvm.ppc.altivec.vperm
7115 // CHECK-LE: @llvm.ppc.altivec.stvxl
7116
7117 vec_stvlxl(vus, 0, &vus);
7118 // CHECK: @llvm.ppc.altivec.lvx
7119 // CHECK: @llvm.ppc.altivec.lvsl
7120 // CHECK: store <8 x i16> zeroinitializer
7121 // CHECK: @llvm.ppc.altivec.vperm
7122 // CHECK: @llvm.ppc.altivec.lvsr
7123 // CHECK: @llvm.ppc.altivec.vperm
7124 // CHECK: @llvm.ppc.altivec.stvxl
7125 // CHECK-LE: @llvm.ppc.altivec.lvx
7126 // CHECK-LE: @llvm.ppc.altivec.lvsl
7127 // CHECK-LE: store <8 x i16> zeroinitializer
7128 // CHECK-LE: @llvm.ppc.altivec.vperm
7129 // CHECK-LE: @llvm.ppc.altivec.lvsr
7130 // CHECK-LE: @llvm.ppc.altivec.vperm
7131 // CHECK-LE: @llvm.ppc.altivec.stvxl
7132
7133 vec_stvlxl(vbs, 0, &vbs);
7134 // CHECK: store <8 x i16> zeroinitializer
7135 // CHECK: @llvm.ppc.altivec.lvx
7136 // CHECK: @llvm.ppc.altivec.lvsl
7137 // CHECK: @llvm.ppc.altivec.vperm
7138 // CHECK: @llvm.ppc.altivec.lvsr
7139 // CHECK: @llvm.ppc.altivec.vperm
7140 // CHECK: @llvm.ppc.altivec.stvxl
7141 // CHECK-LE: store <8 x i16> zeroinitializer
7142 // CHECK-LE: @llvm.ppc.altivec.lvx
7143 // CHECK-LE: @llvm.ppc.altivec.lvsl
7144 // CHECK-LE: @llvm.ppc.altivec.vperm
7145 // CHECK-LE: @llvm.ppc.altivec.lvsr
7146 // CHECK-LE: @llvm.ppc.altivec.vperm
7147 // CHECK-LE: @llvm.ppc.altivec.stvxl
7148
7149 vec_stvlxl(vp, 0, &vp);
7150 // CHECK: store <8 x i16> zeroinitializer
7151 // CHECK: @llvm.ppc.altivec.lvx
7152 // CHECK: @llvm.ppc.altivec.lvsl
7153 // CHECK: @llvm.ppc.altivec.vperm
7154 // CHECK: @llvm.ppc.altivec.lvsr
7155 // CHECK: @llvm.ppc.altivec.vperm
7156 // CHECK: @llvm.ppc.altivec.stvxl
7157 // CHECK-LE: store <8 x i16> zeroinitializer
7158 // CHECK-LE: @llvm.ppc.altivec.lvx
7159 // CHECK-LE: @llvm.ppc.altivec.lvsl
7160 // CHECK-LE: @llvm.ppc.altivec.vperm
7161 // CHECK-LE: @llvm.ppc.altivec.lvsr
7162 // CHECK-LE: @llvm.ppc.altivec.vperm
7163 // CHECK-LE: @llvm.ppc.altivec.stvxl
7164
7165 vec_stvlxl(vi, 0, ¶m_i);
7166 // CHECK: @llvm.ppc.altivec.lvx
7167 // CHECK: @llvm.ppc.altivec.lvsl
7168 // CHECK: store <4 x i32> zeroinitializer
7169 // CHECK: @llvm.ppc.altivec.vperm
7170 // CHECK: @llvm.ppc.altivec.lvsr
7171 // CHECK: @llvm.ppc.altivec.vperm
7172 // CHECK: @llvm.ppc.altivec.stvxl
7173 // CHECK-LE: @llvm.ppc.altivec.lvx
7174 // CHECK-LE: @llvm.ppc.altivec.lvsl
7175 // CHECK-LE: store <4 x i32> zeroinitializer
7176 // CHECK-LE: @llvm.ppc.altivec.vperm
7177 // CHECK-LE: @llvm.ppc.altivec.lvsr
7178 // CHECK-LE: @llvm.ppc.altivec.vperm
7179 // CHECK-LE: @llvm.ppc.altivec.stvxl
7180
7181 vec_stvlxl(vi, 0, &vi);
7182 // CHECK: @llvm.ppc.altivec.lvx
7183 // CHECK: @llvm.ppc.altivec.lvsl
7184 // CHECK: store <4 x i32> zeroinitializer
7185 // CHECK: @llvm.ppc.altivec.vperm
7186 // CHECK: @llvm.ppc.altivec.lvsr
7187 // CHECK: @llvm.ppc.altivec.vperm
7188 // CHECK: @llvm.ppc.altivec.stvxl
7189 // CHECK-LE: @llvm.ppc.altivec.lvx
7190 // CHECK-LE: @llvm.ppc.altivec.lvsl
7191 // CHECK-LE: store <4 x i32> zeroinitializer
7192 // CHECK-LE: @llvm.ppc.altivec.vperm
7193 // CHECK-LE: @llvm.ppc.altivec.lvsr
7194 // CHECK-LE: @llvm.ppc.altivec.vperm
7195 // CHECK-LE: @llvm.ppc.altivec.stvxl
7196
7197 vec_stvlxl(vui, 0, ¶m_ui);
7198 // CHECK: @llvm.ppc.altivec.lvx
7199 // CHECK: @llvm.ppc.altivec.lvsl
7200 // CHECK: store <4 x i32> zeroinitializer
7201 // CHECK: @llvm.ppc.altivec.vperm
7202 // CHECK: @llvm.ppc.altivec.lvsr
7203 // CHECK: @llvm.ppc.altivec.vperm
7204 // CHECK: @llvm.ppc.altivec.stvxl
7205 // CHECK-LE: @llvm.ppc.altivec.lvx
7206 // CHECK-LE: @llvm.ppc.altivec.lvsl
7207 // CHECK-LE: store <4 x i32> zeroinitializer
7208 // CHECK-LE: @llvm.ppc.altivec.vperm
7209 // CHECK-LE: @llvm.ppc.altivec.lvsr
7210 // CHECK-LE: @llvm.ppc.altivec.vperm
7211 // CHECK-LE: @llvm.ppc.altivec.stvxl
7212
7213 vec_stvlxl(vui, 0, &vui);
7214 // CHECK: @llvm.ppc.altivec.lvx
7215 // CHECK: @llvm.ppc.altivec.lvsl
7216 // CHECK: store <4 x i32> zeroinitializer
7217 // CHECK: @llvm.ppc.altivec.vperm
7218 // CHECK: @llvm.ppc.altivec.lvsr
7219 // CHECK: @llvm.ppc.altivec.vperm
7220 // CHECK: @llvm.ppc.altivec.stvxl
7221 // CHECK-LE: @llvm.ppc.altivec.lvx
7222 // CHECK-LE: @llvm.ppc.altivec.lvsl
7223 // CHECK-LE: store <4 x i32> zeroinitializer
7224 // CHECK-LE: @llvm.ppc.altivec.vperm
7225 // CHECK-LE: @llvm.ppc.altivec.lvsr
7226 // CHECK-LE: @llvm.ppc.altivec.vperm
7227 // CHECK-LE: @llvm.ppc.altivec.stvxl
7228
7229 vec_stvlxl(vbi, 0, &vbi);
7230 // CHECK: store <4 x i32> zeroinitializer
7231 // CHECK: @llvm.ppc.altivec.lvx
7232 // CHECK: @llvm.ppc.altivec.lvsl
7233 // CHECK: @llvm.ppc.altivec.vperm
7234 // CHECK: @llvm.ppc.altivec.lvsr
7235 // CHECK: @llvm.ppc.altivec.vperm
7236 // CHECK: @llvm.ppc.altivec.stvxl
7237 // CHECK-LE: store <4 x i32> zeroinitializer
7238 // CHECK-LE: @llvm.ppc.altivec.lvx
7239 // CHECK-LE: @llvm.ppc.altivec.lvsl
7240 // CHECK-LE: @llvm.ppc.altivec.vperm
7241 // CHECK-LE: @llvm.ppc.altivec.lvsr
7242 // CHECK-LE: @llvm.ppc.altivec.vperm
7243 // CHECK-LE: @llvm.ppc.altivec.stvxl
7244
7245 vec_stvlxl(vf, 0, &vf);
7246 // CHECK: @llvm.ppc.altivec.lvx
7247 // CHECK: @llvm.ppc.altivec.lvsl
7248 // CHECK: store <4 x float> zeroinitializer
7249 // CHECK: @llvm.ppc.altivec.vperm
7250 // CHECK: @llvm.ppc.altivec.lvsr
7251 // CHECK: @llvm.ppc.altivec.vperm
7252 // CHECK: @llvm.ppc.altivec.stvxl
7253 // CHECK-LE: @llvm.ppc.altivec.lvx
7254 // CHECK-LE: @llvm.ppc.altivec.lvsl
7255 // CHECK-LE: store <4 x float> zeroinitializer
7256 // CHECK-LE: @llvm.ppc.altivec.vperm
7257 // CHECK-LE: @llvm.ppc.altivec.lvsr
7258 // CHECK-LE: @llvm.ppc.altivec.vperm
7259 // CHECK-LE: @llvm.ppc.altivec.stvxl
7260
7261 /* vec_stvrx */
7262 vec_stvrx(vsc, 0, ¶m_sc);
7263 // CHECK: @llvm.ppc.altivec.lvx
7264 // CHECK: @llvm.ppc.altivec.lvsl
7265 // CHECK: store <16 x i8> zeroinitializer
7266 // CHECK: @llvm.ppc.altivec.vperm
7267 // CHECK: @llvm.ppc.altivec.lvsr
7268 // CHECK: @llvm.ppc.altivec.vperm
7269 // CHECK: @llvm.ppc.altivec.stvx
7270 // CHECK-LE: @llvm.ppc.altivec.lvx
7271 // CHECK-LE: @llvm.ppc.altivec.lvsl
7272 // CHECK-LE: store <16 x i8> zeroinitializer
7273 // CHECK-LE: @llvm.ppc.altivec.vperm
7274 // CHECK-LE: @llvm.ppc.altivec.lvsr
7275 // CHECK-LE: @llvm.ppc.altivec.vperm
7276 // CHECK-LE: @llvm.ppc.altivec.stvx
7277
7278 vec_stvrx(vsc, 0, &vsc);
7279 // CHECK: @llvm.ppc.altivec.lvx
7280 // CHECK: @llvm.ppc.altivec.lvsl
7281 // CHECK: store <16 x i8> zeroinitializer
7282 // CHECK: @llvm.ppc.altivec.vperm
7283 // CHECK: @llvm.ppc.altivec.lvsr
7284 // CHECK: @llvm.ppc.altivec.vperm
7285 // CHECK: @llvm.ppc.altivec.stvx
7286 // CHECK-LE: @llvm.ppc.altivec.lvx
7287 // CHECK-LE: @llvm.ppc.altivec.lvsl
7288 // CHECK-LE: store <16 x i8> zeroinitializer
7289 // CHECK-LE: @llvm.ppc.altivec.vperm
7290 // CHECK-LE: @llvm.ppc.altivec.lvsr
7291 // CHECK-LE: @llvm.ppc.altivec.vperm
7292 // CHECK-LE: @llvm.ppc.altivec.stvx
7293
7294 vec_stvrx(vuc, 0, ¶m_uc);
7295 // CHECK: @llvm.ppc.altivec.lvx
7296 // CHECK: @llvm.ppc.altivec.lvsl
7297 // CHECK: store <16 x i8> zeroinitializer
7298 // CHECK: @llvm.ppc.altivec.vperm
7299 // CHECK: @llvm.ppc.altivec.lvsr
7300 // CHECK: @llvm.ppc.altivec.vperm
7301 // CHECK: @llvm.ppc.altivec.stvx
7302 // CHECK-LE: @llvm.ppc.altivec.lvx
7303 // CHECK-LE: @llvm.ppc.altivec.lvsl
7304 // CHECK-LE: store <16 x i8> zeroinitializer
7305 // CHECK-LE: @llvm.ppc.altivec.vperm
7306 // CHECK-LE: @llvm.ppc.altivec.lvsr
7307 // CHECK-LE: @llvm.ppc.altivec.vperm
7308 // CHECK-LE: @llvm.ppc.altivec.stvx
7309
7310 vec_stvrx(vuc, 0, &vuc);
7311 // CHECK: @llvm.ppc.altivec.lvx
7312 // CHECK: @llvm.ppc.altivec.lvsl
7313 // CHECK: store <16 x i8> zeroinitializer
7314 // CHECK: @llvm.ppc.altivec.vperm
7315 // CHECK: @llvm.ppc.altivec.lvsr
7316 // CHECK: @llvm.ppc.altivec.vperm
7317 // CHECK: @llvm.ppc.altivec.stvx
7318 // CHECK-LE: @llvm.ppc.altivec.lvx
7319 // CHECK-LE: @llvm.ppc.altivec.lvsl
7320 // CHECK-LE: store <16 x i8> zeroinitializer
7321 // CHECK-LE: @llvm.ppc.altivec.vperm
7322 // CHECK-LE: @llvm.ppc.altivec.lvsr
7323 // CHECK-LE: @llvm.ppc.altivec.vperm
7324 // CHECK-LE: @llvm.ppc.altivec.stvx
7325
7326 vec_stvrx(vbc, 0, &vbc);
7327 // CHECK: @llvm.ppc.altivec.lvx
7328 // CHECK: store <16 x i8> zeroinitializer
7329 // CHECK: @llvm.ppc.altivec.lvsl
7330 // CHECK: @llvm.ppc.altivec.vperm
7331 // CHECK: @llvm.ppc.altivec.lvsr
7332 // CHECK: @llvm.ppc.altivec.vperm
7333 // CHECK: @llvm.ppc.altivec.stvx
7334 // CHECK-LE: @llvm.ppc.altivec.lvx
7335 // CHECK-LE: store <16 x i8> zeroinitializer
7336 // CHECK-LE: @llvm.ppc.altivec.lvsl
7337 // CHECK-LE: @llvm.ppc.altivec.vperm
7338 // CHECK-LE: @llvm.ppc.altivec.lvsr
7339 // CHECK-LE: @llvm.ppc.altivec.vperm
7340 // CHECK-LE: @llvm.ppc.altivec.stvx
7341
7342 vec_stvrx(vs, 0, ¶m_s);
7343 // CHECK: @llvm.ppc.altivec.lvx
7344 // CHECK: @llvm.ppc.altivec.lvsl
7345 // CHECK: store <8 x i16> zeroinitializer
7346 // CHECK: @llvm.ppc.altivec.vperm
7347 // CHECK: @llvm.ppc.altivec.lvsr
7348 // CHECK: @llvm.ppc.altivec.vperm
7349 // CHECK: @llvm.ppc.altivec.stvx
7350 // CHECK-LE: @llvm.ppc.altivec.lvx
7351 // CHECK-LE: @llvm.ppc.altivec.lvsl
7352 // CHECK-LE: store <8 x i16> zeroinitializer
7353 // CHECK-LE: @llvm.ppc.altivec.vperm
7354 // CHECK-LE: @llvm.ppc.altivec.lvsr
7355 // CHECK-LE: @llvm.ppc.altivec.vperm
7356 // CHECK-LE: @llvm.ppc.altivec.stvx
7357
7358 vec_stvrx(vs, 0, &vs);
7359 // CHECK: @llvm.ppc.altivec.lvx
7360 // CHECK: @llvm.ppc.altivec.lvsl
7361 // CHECK: store <8 x i16> zeroinitializer
7362 // CHECK: @llvm.ppc.altivec.vperm
7363 // CHECK: @llvm.ppc.altivec.lvsr
7364 // CHECK: @llvm.ppc.altivec.vperm
7365 // CHECK: @llvm.ppc.altivec.stvx
7366 // CHECK-LE: @llvm.ppc.altivec.lvx
7367 // CHECK-LE: @llvm.ppc.altivec.lvsl
7368 // CHECK-LE: store <8 x i16> zeroinitializer
7369 // CHECK-LE: @llvm.ppc.altivec.vperm
7370 // CHECK-LE: @llvm.ppc.altivec.lvsr
7371 // CHECK-LE: @llvm.ppc.altivec.vperm
7372 // CHECK-LE: @llvm.ppc.altivec.stvx
7373
7374 vec_stvrx(vus, 0, ¶m_us);
7375 // CHECK: @llvm.ppc.altivec.lvx
7376 // CHECK: @llvm.ppc.altivec.lvsl
7377 // CHECK: store <8 x i16> zeroinitializer
7378 // CHECK: @llvm.ppc.altivec.vperm
7379 // CHECK: @llvm.ppc.altivec.lvsr
7380 // CHECK: @llvm.ppc.altivec.vperm
7381 // CHECK: @llvm.ppc.altivec.stvx
7382 // CHECK-LE: @llvm.ppc.altivec.lvx
7383 // CHECK-LE: @llvm.ppc.altivec.lvsl
7384 // CHECK-LE: store <8 x i16> zeroinitializer
7385 // CHECK-LE: @llvm.ppc.altivec.vperm
7386 // CHECK-LE: @llvm.ppc.altivec.lvsr
7387 // CHECK-LE: @llvm.ppc.altivec.vperm
7388 // CHECK-LE: @llvm.ppc.altivec.stvx
7389
7390 vec_stvrx(vus, 0, &vus);
7391 // CHECK: @llvm.ppc.altivec.lvx
7392 // CHECK: @llvm.ppc.altivec.lvsl
7393 // CHECK: store <8 x i16> zeroinitializer
7394 // CHECK: @llvm.ppc.altivec.vperm
7395 // CHECK: @llvm.ppc.altivec.lvsr
7396 // CHECK: @llvm.ppc.altivec.vperm
7397 // CHECK: @llvm.ppc.altivec.stvx
7398 // CHECK-LE: @llvm.ppc.altivec.lvx
7399 // CHECK-LE: @llvm.ppc.altivec.lvsl
7400 // CHECK-LE: store <8 x i16> zeroinitializer
7401 // CHECK-LE: @llvm.ppc.altivec.vperm
7402 // CHECK-LE: @llvm.ppc.altivec.lvsr
7403 // CHECK-LE: @llvm.ppc.altivec.vperm
7404 // CHECK-LE: @llvm.ppc.altivec.stvx
7405
7406 vec_stvrx(vbs, 0, &vbs);
7407 // CHECK: @llvm.ppc.altivec.lvx
7408 // CHECK: store <8 x i16> zeroinitializer
7409 // CHECK: @llvm.ppc.altivec.lvsl
7410 // CHECK: @llvm.ppc.altivec.vperm
7411 // CHECK: @llvm.ppc.altivec.lvsr
7412 // CHECK: @llvm.ppc.altivec.vperm
7413 // CHECK: @llvm.ppc.altivec.stvx
7414 // CHECK-LE: @llvm.ppc.altivec.lvx
7415 // CHECK-LE: store <8 x i16> zeroinitializer
7416 // CHECK-LE: @llvm.ppc.altivec.lvsl
7417 // CHECK-LE: @llvm.ppc.altivec.vperm
7418 // CHECK-LE: @llvm.ppc.altivec.lvsr
7419 // CHECK-LE: @llvm.ppc.altivec.vperm
7420 // CHECK-LE: @llvm.ppc.altivec.stvx
7421
7422 vec_stvrx(vp, 0, &vp);
7423 // CHECK: @llvm.ppc.altivec.lvx
7424 // CHECK: store <8 x i16> zeroinitializer
7425 // CHECK: @llvm.ppc.altivec.lvsl
7426 // CHECK: @llvm.ppc.altivec.vperm
7427 // CHECK: @llvm.ppc.altivec.lvsr
7428 // CHECK: @llvm.ppc.altivec.vperm
7429 // CHECK: @llvm.ppc.altivec.stvx
7430 // CHECK-LE: @llvm.ppc.altivec.lvx
7431 // CHECK-LE: store <8 x i16> zeroinitializer
7432 // CHECK-LE: @llvm.ppc.altivec.lvsl
7433 // CHECK-LE: @llvm.ppc.altivec.vperm
7434 // CHECK-LE: @llvm.ppc.altivec.lvsr
7435 // CHECK-LE: @llvm.ppc.altivec.vperm
7436 // CHECK-LE: @llvm.ppc.altivec.stvx
7437
7438 vec_stvrx(vi, 0, ¶m_i);
7439 // CHECK: @llvm.ppc.altivec.lvx
7440 // CHECK: @llvm.ppc.altivec.lvsl
7441 // CHECK: store <4 x i32> zeroinitializer
7442 // CHECK: @llvm.ppc.altivec.vperm
7443 // CHECK: @llvm.ppc.altivec.lvsr
7444 // CHECK: @llvm.ppc.altivec.vperm
7445 // CHECK: @llvm.ppc.altivec.stvx
7446 // CHECK-LE: @llvm.ppc.altivec.lvx
7447 // CHECK-LE: @llvm.ppc.altivec.lvsl
7448 // CHECK-LE: store <4 x i32> zeroinitializer
7449 // CHECK-LE: @llvm.ppc.altivec.vperm
7450 // CHECK-LE: @llvm.ppc.altivec.lvsr
7451 // CHECK-LE: @llvm.ppc.altivec.vperm
7452 // CHECK-LE: @llvm.ppc.altivec.stvx
7453
7454 vec_stvrx(vi, 0, &vi);
7455 // CHECK: @llvm.ppc.altivec.lvx
7456 // CHECK: @llvm.ppc.altivec.lvsl
7457 // CHECK: store <4 x i32> zeroinitializer
7458 // CHECK: @llvm.ppc.altivec.vperm
7459 // CHECK: @llvm.ppc.altivec.lvsr
7460 // CHECK: @llvm.ppc.altivec.vperm
7461 // CHECK: @llvm.ppc.altivec.stvx
7462 // CHECK-LE: @llvm.ppc.altivec.lvx
7463 // CHECK-LE: @llvm.ppc.altivec.lvsl
7464 // CHECK-LE: store <4 x i32> zeroinitializer
7465 // CHECK-LE: @llvm.ppc.altivec.vperm
7466 // CHECK-LE: @llvm.ppc.altivec.lvsr
7467 // CHECK-LE: @llvm.ppc.altivec.vperm
7468 // CHECK-LE: @llvm.ppc.altivec.stvx
7469
7470 vec_stvrx(vui, 0, ¶m_ui);
7471 // CHECK: @llvm.ppc.altivec.lvx
7472 // CHECK: @llvm.ppc.altivec.lvsl
7473 // CHECK: store <4 x i32> zeroinitializer
7474 // CHECK: @llvm.ppc.altivec.vperm
7475 // CHECK: @llvm.ppc.altivec.lvsr
7476 // CHECK: @llvm.ppc.altivec.vperm
7477 // CHECK: @llvm.ppc.altivec.stvx
7478 // CHECK-LE: @llvm.ppc.altivec.lvx
7479 // CHECK-LE: @llvm.ppc.altivec.lvsl
7480 // CHECK-LE: store <4 x i32> zeroinitializer
7481 // CHECK-LE: @llvm.ppc.altivec.vperm
7482 // CHECK-LE: @llvm.ppc.altivec.lvsr
7483 // CHECK-LE: @llvm.ppc.altivec.vperm
7484 // CHECK-LE: @llvm.ppc.altivec.stvx
7485
7486 vec_stvrx(vui, 0, &vui);
7487 // CHECK: @llvm.ppc.altivec.lvx
7488 // CHECK: @llvm.ppc.altivec.lvsl
7489 // CHECK: store <4 x i32> zeroinitializer
7490 // CHECK: @llvm.ppc.altivec.vperm
7491 // CHECK: @llvm.ppc.altivec.lvsr
7492 // CHECK: @llvm.ppc.altivec.vperm
7493 // CHECK: @llvm.ppc.altivec.stvx
7494 // CHECK-LE: @llvm.ppc.altivec.lvx
7495 // CHECK-LE: @llvm.ppc.altivec.lvsl
7496 // CHECK-LE: store <4 x i32> zeroinitializer
7497 // CHECK-LE: @llvm.ppc.altivec.vperm
7498 // CHECK-LE: @llvm.ppc.altivec.lvsr
7499 // CHECK-LE: @llvm.ppc.altivec.vperm
7500 // CHECK-LE: @llvm.ppc.altivec.stvx
7501
7502 vec_stvrx(vbi, 0, &vbi);
7503 // CHECK: @llvm.ppc.altivec.lvx
7504 // CHECK: store <4 x i32> zeroinitializer
7505 // CHECK: @llvm.ppc.altivec.lvsl
7506 // CHECK: @llvm.ppc.altivec.vperm
7507 // CHECK: @llvm.ppc.altivec.lvsr
7508 // CHECK: @llvm.ppc.altivec.vperm
7509 // CHECK: @llvm.ppc.altivec.stvx
7510 // CHECK-LE: @llvm.ppc.altivec.lvx
7511 // CHECK-LE: store <4 x i32> zeroinitializer
7512 // CHECK-LE: @llvm.ppc.altivec.lvsl
7513 // CHECK-LE: @llvm.ppc.altivec.vperm
7514 // CHECK-LE: @llvm.ppc.altivec.lvsr
7515 // CHECK-LE: @llvm.ppc.altivec.vperm
7516 // CHECK-LE: @llvm.ppc.altivec.stvx
7517
7518 vec_stvrx(vf, 0, &vf);
7519 // CHECK: @llvm.ppc.altivec.lvx
7520 // CHECK: @llvm.ppc.altivec.lvsl
7521 // CHECK: store <4 x float> zeroinitializer
7522 // CHECK: @llvm.ppc.altivec.vperm
7523 // CHECK: @llvm.ppc.altivec.lvsr
7524 // CHECK: @llvm.ppc.altivec.vperm
7525 // CHECK: @llvm.ppc.altivec.stvx
7526 // CHECK-LE: @llvm.ppc.altivec.lvx
7527 // CHECK-LE: @llvm.ppc.altivec.lvsl
7528 // CHECK-LE: store <4 x float> zeroinitializer
7529 // CHECK-LE: @llvm.ppc.altivec.vperm
7530 // CHECK-LE: @llvm.ppc.altivec.lvsr
7531 // CHECK-LE: @llvm.ppc.altivec.vperm
7532 // CHECK-LE: @llvm.ppc.altivec.stvx
7533
7534 /* vec_stvrxl */
7535 vec_stvrxl(vsc, 0, ¶m_sc);
7536 // CHECK: @llvm.ppc.altivec.lvx
7537 // CHECK: @llvm.ppc.altivec.lvsl
7538 // CHECK: store <16 x i8> zeroinitializer
7539 // CHECK: @llvm.ppc.altivec.vperm
7540 // CHECK: @llvm.ppc.altivec.lvsr
7541 // CHECK: @llvm.ppc.altivec.vperm
7542 // CHECK: @llvm.ppc.altivec.stvxl
7543 // CHECK-LE: @llvm.ppc.altivec.lvx
7544 // CHECK-LE: @llvm.ppc.altivec.lvsl
7545 // CHECK-LE: store <16 x i8> zeroinitializer
7546 // CHECK-LE: @llvm.ppc.altivec.vperm
7547 // CHECK-LE: @llvm.ppc.altivec.lvsr
7548 // CHECK-LE: @llvm.ppc.altivec.vperm
7549 // CHECK-LE: @llvm.ppc.altivec.stvxl
7550
7551 vec_stvrxl(vsc, 0, &vsc);
7552 // CHECK: @llvm.ppc.altivec.lvx
7553 // CHECK: @llvm.ppc.altivec.lvsl
7554 // CHECK: store <16 x i8> zeroinitializer
7555 // CHECK: @llvm.ppc.altivec.vperm
7556 // CHECK: @llvm.ppc.altivec.lvsr
7557 // CHECK: @llvm.ppc.altivec.vperm
7558 // CHECK: @llvm.ppc.altivec.stvxl
7559 // CHECK-LE: @llvm.ppc.altivec.lvx
7560 // CHECK-LE: @llvm.ppc.altivec.lvsl
7561 // CHECK-LE: store <16 x i8> zeroinitializer
7562 // CHECK-LE: @llvm.ppc.altivec.vperm
7563 // CHECK-LE: @llvm.ppc.altivec.lvsr
7564 // CHECK-LE: @llvm.ppc.altivec.vperm
7565 // CHECK-LE: @llvm.ppc.altivec.stvxl
7566
7567 vec_stvrxl(vuc, 0, ¶m_uc);
7568 // CHECK: @llvm.ppc.altivec.lvx
7569 // CHECK: @llvm.ppc.altivec.lvsl
7570 // CHECK: store <16 x i8> zeroinitializer
7571 // CHECK: @llvm.ppc.altivec.vperm
7572 // CHECK: @llvm.ppc.altivec.lvsr
7573 // CHECK: @llvm.ppc.altivec.vperm
7574 // CHECK: @llvm.ppc.altivec.stvxl
7575 // CHECK-LE: @llvm.ppc.altivec.lvx
7576 // CHECK-LE: @llvm.ppc.altivec.lvsl
7577 // CHECK-LE: store <16 x i8> zeroinitializer
7578 // CHECK-LE: @llvm.ppc.altivec.vperm
7579 // CHECK-LE: @llvm.ppc.altivec.lvsr
7580 // CHECK-LE: @llvm.ppc.altivec.vperm
7581 // CHECK-LE: @llvm.ppc.altivec.stvxl
7582
7583 vec_stvrxl(vuc, 0, &vuc);
7584 // CHECK: @llvm.ppc.altivec.lvx
7585 // CHECK: @llvm.ppc.altivec.lvsl
7586 // CHECK: store <16 x i8> zeroinitializer
7587 // CHECK: @llvm.ppc.altivec.vperm
7588 // CHECK: @llvm.ppc.altivec.lvsr
7589 // CHECK: @llvm.ppc.altivec.vperm
7590 // CHECK: @llvm.ppc.altivec.stvxl
7591 // CHECK-LE: @llvm.ppc.altivec.lvx
7592 // CHECK-LE: @llvm.ppc.altivec.lvsl
7593 // CHECK-LE: store <16 x i8> zeroinitializer
7594 // CHECK-LE: @llvm.ppc.altivec.vperm
7595 // CHECK-LE: @llvm.ppc.altivec.lvsr
7596 // CHECK-LE: @llvm.ppc.altivec.vperm
7597 // CHECK-LE: @llvm.ppc.altivec.stvxl
7598
7599 vec_stvrxl(vbc, 0, &vbc);
7600 // CHECK: @llvm.ppc.altivec.lvx
7601 // CHECK: store <16 x i8> zeroinitializer
7602 // CHECK: @llvm.ppc.altivec.lvsl
7603 // CHECK: @llvm.ppc.altivec.vperm
7604 // CHECK: @llvm.ppc.altivec.lvsr
7605 // CHECK: @llvm.ppc.altivec.vperm
7606 // CHECK: @llvm.ppc.altivec.stvxl
7607 // CHECK-LE: @llvm.ppc.altivec.lvx
7608 // CHECK-LE: store <16 x i8> zeroinitializer
7609 // CHECK-LE: @llvm.ppc.altivec.lvsl
7610 // CHECK-LE: @llvm.ppc.altivec.vperm
7611 // CHECK-LE: @llvm.ppc.altivec.lvsr
7612 // CHECK-LE: @llvm.ppc.altivec.vperm
7613 // CHECK-LE: @llvm.ppc.altivec.stvxl
7614
7615 vec_stvrxl(vs, 0, ¶m_s);
7616 // CHECK: @llvm.ppc.altivec.lvx
7617 // CHECK: @llvm.ppc.altivec.lvsl
7618 // CHECK: store <8 x i16> zeroinitializer
7619 // CHECK: @llvm.ppc.altivec.vperm
7620 // CHECK: @llvm.ppc.altivec.lvsr
7621 // CHECK: @llvm.ppc.altivec.vperm
7622 // CHECK: @llvm.ppc.altivec.stvxl
7623 // CHECK-LE: @llvm.ppc.altivec.lvx
7624 // CHECK-LE: @llvm.ppc.altivec.lvsl
7625 // CHECK-LE: store <8 x i16> zeroinitializer
7626 // CHECK-LE: @llvm.ppc.altivec.vperm
7627 // CHECK-LE: @llvm.ppc.altivec.lvsr
7628 // CHECK-LE: @llvm.ppc.altivec.vperm
7629 // CHECK-LE: @llvm.ppc.altivec.stvxl
7630
7631 vec_stvrxl(vs, 0, &vs);
7632 // CHECK: @llvm.ppc.altivec.lvx
7633 // CHECK: @llvm.ppc.altivec.lvsl
7634 // CHECK: store <8 x i16> zeroinitializer
7635 // CHECK: @llvm.ppc.altivec.vperm
7636 // CHECK: @llvm.ppc.altivec.lvsr
7637 // CHECK: @llvm.ppc.altivec.vperm
7638 // CHECK: @llvm.ppc.altivec.stvxl
7639 // CHECK-LE: @llvm.ppc.altivec.lvx
7640 // CHECK-LE: @llvm.ppc.altivec.lvsl
7641 // CHECK-LE: store <8 x i16> zeroinitializer
7642 // CHECK-LE: @llvm.ppc.altivec.vperm
7643 // CHECK-LE: @llvm.ppc.altivec.lvsr
7644 // CHECK-LE: @llvm.ppc.altivec.vperm
7645 // CHECK-LE: @llvm.ppc.altivec.stvxl
7646
7647 vec_stvrxl(vus, 0, ¶m_us);
7648 // CHECK: @llvm.ppc.altivec.lvx
7649 // CHECK: @llvm.ppc.altivec.lvsl
7650 // CHECK: store <8 x i16> zeroinitializer
7651 // CHECK: @llvm.ppc.altivec.vperm
7652 // CHECK: @llvm.ppc.altivec.lvsr
7653 // CHECK: @llvm.ppc.altivec.vperm
7654 // CHECK: @llvm.ppc.altivec.stvxl
7655 // CHECK-LE: @llvm.ppc.altivec.lvx
7656 // CHECK-LE: @llvm.ppc.altivec.lvsl
7657 // CHECK-LE: store <8 x i16> zeroinitializer
7658 // CHECK-LE: @llvm.ppc.altivec.vperm
7659 // CHECK-LE: @llvm.ppc.altivec.lvsr
7660 // CHECK-LE: @llvm.ppc.altivec.vperm
7661 // CHECK-LE: @llvm.ppc.altivec.stvxl
7662
7663 vec_stvrxl(vus, 0, &vus);
7664 // CHECK: @llvm.ppc.altivec.lvx
7665 // CHECK: @llvm.ppc.altivec.lvsl
7666 // CHECK: store <8 x i16> zeroinitializer
7667 // CHECK: @llvm.ppc.altivec.vperm
7668 // CHECK: @llvm.ppc.altivec.lvsr
7669 // CHECK: @llvm.ppc.altivec.vperm
7670 // CHECK: @llvm.ppc.altivec.stvxl
7671 // CHECK-LE: @llvm.ppc.altivec.lvx
7672 // CHECK-LE: @llvm.ppc.altivec.lvsl
7673 // CHECK-LE: store <8 x i16> zeroinitializer
7674 // CHECK-LE: @llvm.ppc.altivec.vperm
7675 // CHECK-LE: @llvm.ppc.altivec.lvsr
7676 // CHECK-LE: @llvm.ppc.altivec.vperm
7677 // CHECK-LE: @llvm.ppc.altivec.stvxl
7678
7679 vec_stvrxl(vbs, 0, &vbs);
7680 // CHECK: @llvm.ppc.altivec.lvx
7681 // CHECK: store <8 x i16> zeroinitializer
7682 // CHECK: @llvm.ppc.altivec.lvsl
7683 // CHECK: @llvm.ppc.altivec.vperm
7684 // CHECK: @llvm.ppc.altivec.lvsr
7685 // CHECK: @llvm.ppc.altivec.vperm
7686 // CHECK: @llvm.ppc.altivec.stvxl
7687 // CHECK-LE: @llvm.ppc.altivec.lvx
7688 // CHECK-LE: store <8 x i16> zeroinitializer
7689 // CHECK-LE: @llvm.ppc.altivec.lvsl
7690 // CHECK-LE: @llvm.ppc.altivec.vperm
7691 // CHECK-LE: @llvm.ppc.altivec.lvsr
7692 // CHECK-LE: @llvm.ppc.altivec.vperm
7693 // CHECK-LE: @llvm.ppc.altivec.stvxl
7694
7695 vec_stvrxl(vp, 0, &vp);
7696 // CHECK: @llvm.ppc.altivec.lvx
7697 // CHECK: store <8 x i16> zeroinitializer
7698 // CHECK: @llvm.ppc.altivec.lvsl
7699 // CHECK: @llvm.ppc.altivec.vperm
7700 // CHECK: @llvm.ppc.altivec.lvsr
7701 // CHECK: @llvm.ppc.altivec.vperm
7702 // CHECK: @llvm.ppc.altivec.stvxl
7703 // CHECK-LE: @llvm.ppc.altivec.lvx
7704 // CHECK-LE: store <8 x i16> zeroinitializer
7705 // CHECK-LE: @llvm.ppc.altivec.lvsl
7706 // CHECK-LE: @llvm.ppc.altivec.vperm
7707 // CHECK-LE: @llvm.ppc.altivec.lvsr
7708 // CHECK-LE: @llvm.ppc.altivec.vperm
7709 // CHECK-LE: @llvm.ppc.altivec.stvxl
7710
7711 vec_stvrxl(vi, 0, ¶m_i);
7712 // CHECK: @llvm.ppc.altivec.lvx
7713 // CHECK: @llvm.ppc.altivec.lvsl
7714 // CHECK: store <4 x i32> zeroinitializer
7715 // CHECK: @llvm.ppc.altivec.vperm
7716 // CHECK: @llvm.ppc.altivec.lvsr
7717 // CHECK: @llvm.ppc.altivec.vperm
7718 // CHECK: @llvm.ppc.altivec.stvxl
7719 // CHECK-LE: @llvm.ppc.altivec.lvx
7720 // CHECK-LE: @llvm.ppc.altivec.lvsl
7721 // CHECK-LE: store <4 x i32> zeroinitializer
7722 // CHECK-LE: @llvm.ppc.altivec.vperm
7723 // CHECK-LE: @llvm.ppc.altivec.lvsr
7724 // CHECK-LE: @llvm.ppc.altivec.vperm
7725 // CHECK-LE: @llvm.ppc.altivec.stvxl
7726
7727 vec_stvrxl(vi, 0, &vi);
7728 // CHECK: @llvm.ppc.altivec.lvx
7729 // CHECK: @llvm.ppc.altivec.lvsl
7730 // CHECK: store <4 x i32> zeroinitializer
7731 // CHECK: @llvm.ppc.altivec.vperm
7732 // CHECK: @llvm.ppc.altivec.lvsr
7733 // CHECK: @llvm.ppc.altivec.vperm
7734 // CHECK: @llvm.ppc.altivec.stvxl
7735 // CHECK-LE: @llvm.ppc.altivec.lvx
7736 // CHECK-LE: @llvm.ppc.altivec.lvsl
7737 // CHECK-LE: store <4 x i32> zeroinitializer
7738 // CHECK-LE: @llvm.ppc.altivec.vperm
7739 // CHECK-LE: @llvm.ppc.altivec.lvsr
7740 // CHECK-LE: @llvm.ppc.altivec.vperm
7741 // CHECK-LE: @llvm.ppc.altivec.stvxl
7742
7743 vec_stvrxl(vui, 0, ¶m_ui);
7744 // CHECK: @llvm.ppc.altivec.lvx
7745 // CHECK: @llvm.ppc.altivec.lvsl
7746 // CHECK: store <4 x i32> zeroinitializer
7747 // CHECK: @llvm.ppc.altivec.vperm
7748 // CHECK: @llvm.ppc.altivec.lvsr
7749 // CHECK: @llvm.ppc.altivec.vperm
7750 // CHECK: @llvm.ppc.altivec.stvxl
7751 // CHECK-LE: @llvm.ppc.altivec.lvx
7752 // CHECK-LE: @llvm.ppc.altivec.lvsl
7753 // CHECK-LE: store <4 x i32> zeroinitializer
7754 // CHECK-LE: @llvm.ppc.altivec.vperm
7755 // CHECK-LE: @llvm.ppc.altivec.lvsr
7756 // CHECK-LE: @llvm.ppc.altivec.vperm
7757 // CHECK-LE: @llvm.ppc.altivec.stvxl
7758
7759 vec_stvrxl(vui, 0, &vui);
7760 // CHECK: @llvm.ppc.altivec.lvx
7761 // CHECK: @llvm.ppc.altivec.lvsl
7762 // CHECK: store <4 x i32> zeroinitializer
7763 // CHECK: @llvm.ppc.altivec.vperm
7764 // CHECK: @llvm.ppc.altivec.lvsr
7765 // CHECK: @llvm.ppc.altivec.vperm
7766 // CHECK: @llvm.ppc.altivec.stvxl
7767 // CHECK-LE: @llvm.ppc.altivec.lvx
7768 // CHECK-LE: @llvm.ppc.altivec.lvsl
7769 // CHECK-LE: store <4 x i32> zeroinitializer
7770 // CHECK-LE: @llvm.ppc.altivec.vperm
7771 // CHECK-LE: @llvm.ppc.altivec.lvsr
7772 // CHECK-LE: @llvm.ppc.altivec.vperm
7773 // CHECK-LE: @llvm.ppc.altivec.stvxl
7774
7775 vec_stvrxl(vbi, 0, &vbi);
7776 // CHECK: @llvm.ppc.altivec.lvx
7777 // CHECK: store <4 x i32> zeroinitializer
7778 // CHECK: @llvm.ppc.altivec.lvsl
7779 // CHECK: @llvm.ppc.altivec.vperm
7780 // CHECK: @llvm.ppc.altivec.lvsr
7781 // CHECK: @llvm.ppc.altivec.vperm
7782 // CHECK: @llvm.ppc.altivec.stvxl
7783 // CHECK-LE: @llvm.ppc.altivec.lvx
7784 // CHECK-LE: store <4 x i32> zeroinitializer
7785 // CHECK-LE: @llvm.ppc.altivec.lvsl
7786 // CHECK-LE: @llvm.ppc.altivec.vperm
7787 // CHECK-LE: @llvm.ppc.altivec.lvsr
7788 // CHECK-LE: @llvm.ppc.altivec.vperm
7789 // CHECK-LE: @llvm.ppc.altivec.stvxl
7790
7791 vec_stvrxl(vf, 0, &vf);
7792 // CHECK: @llvm.ppc.altivec.lvx
7793 // CHECK: @llvm.ppc.altivec.lvsl
7794 // CHECK: store <4 x float> zeroinitializer
7795 // CHECK: @llvm.ppc.altivec.vperm
7796 // CHECK: @llvm.ppc.altivec.lvsr
7797 // CHECK: @llvm.ppc.altivec.vperm
7798 // CHECK: @llvm.ppc.altivec.stvxl
7799 // CHECK-LE: @llvm.ppc.altivec.lvx
7800 // CHECK-LE: @llvm.ppc.altivec.lvsl
7801 // CHECK-LE: store <4 x float> zeroinitializer
7802 // CHECK-LE: @llvm.ppc.altivec.vperm
7803 // CHECK-LE: @llvm.ppc.altivec.lvsr
7804 // CHECK-LE: @llvm.ppc.altivec.vperm
7805 // CHECK-LE: @llvm.ppc.altivec.stvxl
7806
7807 /* vec_promote */
7808 res_vsc = vec_promote(param_sc, 0);
7809 // CHECK: store <16 x i8> zeroinitializer
7810 // CHECK: insertelement <16 x i8>
7811 // CHECK-LE: store <16 x i8> zeroinitializer
7812 // CHECK-LE: insertelement <16 x i8>
7813
7814 res_vuc = vec_promote(param_uc, 0);
7815 // CHECK: store <16 x i8> zeroinitializer
7816 // CHECK: insertelement <16 x i8>
7817 // CHECK-LE: store <16 x i8> zeroinitializer
7818 // CHECK-LE: insertelement <16 x i8>
7819
7820 res_vs = vec_promote(param_s, 0);
7821 // CHECK: store <8 x i16> zeroinitializer
7822 // CHECK: insertelement <8 x i16>
7823 // CHECK-LE: store <8 x i16> zeroinitializer
7824 // CHECK-LE: insertelement <8 x i16>
7825
7826 res_vus = vec_promote(param_us, 0);
7827 // CHECK: store <8 x i16> zeroinitializer
7828 // CHECK: insertelement <8 x i16>
7829 // CHECK-LE: store <8 x i16> zeroinitializer
7830 // CHECK-LE: insertelement <8 x i16>
7831
7832 res_vi = vec_promote(param_i, 0);
7833 // CHECK: store <4 x i32> zeroinitializer
7834 // CHECK: insertelement <4 x i32>
7835 // CHECK-LE: store <4 x i32> zeroinitializer
7836 // CHECK-LE: insertelement <4 x i32>
7837
7838 res_vui = vec_promote(param_ui, 0);
7839 // CHECK: store <4 x i32> zeroinitializer
7840 // CHECK: insertelement <4 x i32>
7841 // CHECK-LE: store <4 x i32> zeroinitializer
7842 // CHECK-LE: insertelement <4 x i32>
7843
7844 res_vf = vec_promote(param_f, 0);
7845 // CHECK: store <4 x float> zeroinitializer
7846 // CHECK: insertelement <4 x float>
7847 // CHECK-LE: store <4 x float> zeroinitializer
7848 // CHECK-LE: insertelement <4 x float>
7849
7850 /* vec_splats */
7851 res_vsc = vec_splats(param_sc);
7852 // CHECK: insertelement <16 x i8>
7853 // CHECK-LE: insertelement <16 x i8>
7854
7855 res_vuc = vec_splats(param_uc);
7856 // CHECK: insertelement <16 x i8>
7857 // CHECK-LE: insertelement <16 x i8>
7858
7859 res_vs = vec_splats(param_s);
7860 // CHECK: insertelement <8 x i16>
7861 // CHECK-LE: insertelement <8 x i16>
7862
7863 res_vus = vec_splats(param_us);
7864 // CHECK: insertelement <8 x i16>
7865 // CHECK-LE: insertelement <8 x i16>
7866
7867 res_vi = vec_splats(param_i);
7868 // CHECK: insertelement <4 x i32>
7869 // CHECK-LE: insertelement <4 x i32>
7870
7871 res_vui = vec_splats(param_ui);
7872 // CHECK: insertelement <4 x i32>
7873 // CHECK-LE: insertelement <4 x i32>
7874
7875 res_vf = vec_splats(param_f);
7876 // CHECK: insertelement <4 x float>
7877 // CHECK-LE: insertelement <4 x float>
7878
7879 /* ------------------------------ predicates -------------------------------------- */
7880
7881 /* vec_all_eq */
7882 res_i = vec_all_eq(vsc, vsc);
7883 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7884 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7885
7886 res_i = vec_all_eq(vsc, vbc);
7887 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7888 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7889
7890 res_i = vec_all_eq(vuc, vuc);
7891 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7892 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7893
7894 res_i = vec_all_eq(vuc, vbc);
7895 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7896 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7897
7898 res_i = vec_all_eq(vbc, vsc);
7899 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7900 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7901
7902 res_i = vec_all_eq(vbc, vuc);
7903 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7904 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7905
7906 res_i = vec_all_eq(vbc, vbc);
7907 // CHECK: @llvm.ppc.altivec.vcmpequb.p
7908 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
7909
7910 res_i = vec_all_eq(vs, vs);
7911 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7912 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7913
7914 res_i = vec_all_eq(vs, vbs);
7915 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7916 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7917
7918 res_i = vec_all_eq(vus, vus);
7919 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7920 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7921
7922 res_i = vec_all_eq(vus, vbs);
7923 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7924 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7925
7926 res_i = vec_all_eq(vbs, vs);
7927 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7928 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7929
7930 res_i = vec_all_eq(vbs, vus);
7931 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7932 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7933
7934 res_i = vec_all_eq(vbs, vbs);
7935 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7936 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7937
7938 res_i = vec_all_eq(vp, vp);
7939 // CHECK: @llvm.ppc.altivec.vcmpequh.p
7940 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
7941
7942 res_i = vec_all_eq(vi, vi);
7943 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7944 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7945
7946 res_i = vec_all_eq(vi, vbi);
7947 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7948 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7949
7950 res_i = vec_all_eq(vui, vui);
7951 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7952 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7953
7954 res_i = vec_all_eq(vui, vbi);
7955 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7956 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7957
7958 res_i = vec_all_eq(vbi, vi);
7959 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7960 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7961
7962 res_i = vec_all_eq(vbi, vui);
7963 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7964 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7965
7966 res_i = vec_all_eq(vbi, vbi);
7967 // CHECK: @llvm.ppc.altivec.vcmpequw.p
7968 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
7969
7970 res_i = vec_all_eq(vf, vf);
7971 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
7972 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
7973
7974 /* vec_all_ge */
7975 res_i = vec_all_ge(vsc, vsc);
7976 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7977 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7978
7979 res_i = vec_all_ge(vsc, vbc);
7980 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
7981 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
7982
7983 res_i = vec_all_ge(vuc, vuc);
7984 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7985 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7986
7987 res_i = vec_all_ge(vuc, vbc);
7988 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7989 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7990
7991 res_i = vec_all_ge(vbc, vsc);
7992 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7993 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7994
7995 res_i = vec_all_ge(vbc, vuc);
7996 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
7997 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
7998
7999 res_i = vec_all_ge(vbc, vbc);
8000 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8001 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8002
8003 res_i = vec_all_ge(vs, vs);
8004 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8005 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8006
8007 res_i = vec_all_ge(vs, vbs);
8008 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8009 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8010
8011 res_i = vec_all_ge(vus, vus);
8012 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8014
8015 res_i = vec_all_ge(vus, vbs);
8016 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8017 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8018
8019 res_i = vec_all_ge(vbs, vs);
8020 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8021 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8022
8023 res_i = vec_all_ge(vbs, vus);
8024 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8025 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8026
8027 res_i = vec_all_ge(vbs, vbs);
8028 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8029 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8030
8031 res_i = vec_all_ge(vi, vi);
8032 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8033 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8034
8035 res_i = vec_all_ge(vi, vbi);
8036 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8037 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8038
8039 res_i = vec_all_ge(vui, vui);
8040 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8041 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8042
8043 res_i = vec_all_ge(vui, vbi);
8044 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8045 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8046
8047 res_i = vec_all_ge(vbi, vi);
8048 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8049 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8050
8051 res_i = vec_all_ge(vbi, vui);
8052 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8053 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8054
8055 res_i = vec_all_ge(vbi, vbi);
8056 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8057 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8058
8059 res_i = vec_all_ge(vf, vf);
8060 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8061 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8062
8063 /* vec_all_gt */
8064 res_i = vec_all_gt(vsc, vsc);
8065 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8066 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8067
8068 res_i = vec_all_gt(vsc, vbc);
8069 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8070 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8071
8072 res_i = vec_all_gt(vuc, vuc);
8073 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8074 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8075
8076 res_i = vec_all_gt(vuc, vbc);
8077 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8078 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8079
8080 res_i = vec_all_gt(vbc, vsc);
8081 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8082 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8083
8084 res_i = vec_all_gt(vbc, vuc);
8085 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8086 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8087
8088 res_i = vec_all_gt(vbc, vbc);
8089 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8090 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8091
8092 res_i = vec_all_gt(vs, vs);
8093 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8094 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8095
8096 res_i = vec_all_gt(vs, vbs);
8097 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8098 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8099
8100 res_i = vec_all_gt(vus, vus);
8101 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8102 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8103
8104 res_i = vec_all_gt(vus, vbs);
8105 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8106 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8107
8108 res_i = vec_all_gt(vbs, vs);
8109 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8110 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8111
8112 res_i = vec_all_gt(vbs, vus);
8113 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8114 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8115
8116 res_i = vec_all_gt(vbs, vbs);
8117 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8118 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8119
8120 res_i = vec_all_gt(vi, vi);
8121 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8122 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8123
8124 res_i = vec_all_gt(vi, vbi);
8125 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8126 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8127
8128 res_i = vec_all_gt(vui, vui);
8129 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8130 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8131
8132 res_i = vec_all_gt(vui, vbi);
8133 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8134 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8135
8136 res_i = vec_all_gt(vbi, vi);
8137 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8138 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8139
8140 res_i = vec_all_gt(vbi, vui);
8141 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8142 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8143
8144 res_i = vec_all_gt(vbi, vbi);
8145 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8146 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8147
8148 res_i = vec_all_gt(vf, vf);
8149 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8150 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8151
8152 /* vec_all_in */
8153 res_i = vec_all_in(vf, vf);
8154 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
8155 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
8156
8157 /* vec_all_le */
8158 res_i = vec_all_le(vsc, vsc);
8159 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8160 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8161
8162 res_i = vec_all_le(vsc, vbc);
8163 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8164 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8165
8166 res_i = vec_all_le(vuc, vuc);
8167 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8168 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8169
8170 res_i = vec_all_le(vuc, vbc);
8171 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8172 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8173
8174 res_i = vec_all_le(vbc, vsc);
8175 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8176 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8177
8178 res_i = vec_all_le(vbc, vuc);
8179 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8180 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8181
8182 res_i = vec_all_le(vbc, vbc);
8183 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8184 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8185
8186 res_i = vec_all_le(vs, vs);
8187 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8189
8190 res_i = vec_all_le(vs, vbs);
8191 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8192 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8193
8194 res_i = vec_all_le(vus, vus);
8195 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8196 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8197
8198 res_i = vec_all_le(vus, vbs);
8199 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8200 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8201
8202 res_i = vec_all_le(vbs, vs);
8203 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8204 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8205
8206 res_i = vec_all_le(vbs, vus);
8207 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8208 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8209
8210 res_i = vec_all_le(vbs, vbs);
8211 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8212 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8213
8214 res_i = vec_all_le(vi, vi);
8215 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8216 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8217
8218 res_i = vec_all_le(vi, vbi);
8219 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8220 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8221
8222 res_i = vec_all_le(vui, vui);
8223 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8224 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8225
8226 res_i = vec_all_le(vui, vbi);
8227 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8228 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8229
8230 res_i = vec_all_le(vbi, vi);
8231 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8232 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8233
8234 res_i = vec_all_le(vbi, vui);
8235 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8236 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8237
8238 res_i = vec_all_le(vbi, vbi);
8239 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8240 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8241
8242 res_i = vec_all_le(vf, vf);
8243 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8244 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8245
8246 /* vec_all_lt */
8247 res_i = vec_all_lt(vsc, vsc);
8248 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8249 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8250
8251 res_i = vec_all_lt(vsc, vbc);
8252 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8253 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8254
8255 res_i = vec_all_lt(vuc, vuc);
8256 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8257 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8258
8259 res_i = vec_all_lt(vuc, vbc);
8260 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8261 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8262
8263 res_i = vec_all_lt(vbc, vsc);
8264 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8265 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8266
8267 res_i = vec_all_lt(vbc, vuc);
8268 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8269 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8270
8271 res_i = vec_all_lt(vbc, vbc);
8272 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8273 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8274
8275 res_i = vec_all_lt(vs, vs);
8276 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8277 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8278
8279 res_i = vec_all_lt(vs, vbs);
8280 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8281 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8282
8283 res_i = vec_all_lt(vus, vus);
8284 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8285 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8286
8287 res_i = vec_all_lt(vus, vbs);
8288 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8289 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8290
8291 res_i = vec_all_lt(vbs, vs);
8292 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8293 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8294
8295 res_i = vec_all_lt(vbs, vus);
8296 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8297 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8298
8299 res_i = vec_all_lt(vbs, vbs);
8300 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8301 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8302
8303 res_i = vec_all_lt(vi, vi);
8304 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8305 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8306
8307 res_i = vec_all_lt(vi, vbi);
8308 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8309 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8310
8311 res_i = vec_all_lt(vui, vui);
8312 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8313 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8314
8315 res_i = vec_all_lt(vui, vbi);
8316 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8317 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8318
8319 res_i = vec_all_lt(vbi, vi);
8320 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8321 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8322
8323 res_i = vec_all_lt(vbi, vui);
8324 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8325 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8326
8327 res_i = vec_all_lt(vbi, vbi);
8328 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8329 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8330
8331 res_i = vec_all_lt(vf, vf);
8332 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8333 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8334
8335 /* vec_all_nan */
8336 res_i = vec_all_nan(vf);
8337 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8338 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8339
8340 /* vec_all_ne */
8341 res_i = vec_all_ne(vsc, vsc);
8342 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8343 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8344
8345 res_i = vec_all_ne(vsc, vbc);
8346 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8347 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8348
8349 res_i = vec_all_ne(vuc, vuc);
8350 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8351 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8352
8353 res_i = vec_all_ne(vuc, vbc);
8354 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8355 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8356
8357 res_i = vec_all_ne(vbc, vsc);
8358 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8359 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8360
8361 res_i = vec_all_ne(vbc, vuc);
8362 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8363 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8364
8365 res_i = vec_all_ne(vbc, vbc);
8366 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8367 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8368
8369 res_i = vec_all_ne(vs, vs);
8370 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8371 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8372
8373 res_i = vec_all_ne(vs, vbs);
8374 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8375 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8376
8377 res_i = vec_all_ne(vus, vus);
8378 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8379 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8380
8381 res_i = vec_all_ne(vus, vbs);
8382 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8383 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8384
8385 res_i = vec_all_ne(vbs, vs);
8386 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8387 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8388
8389 res_i = vec_all_ne(vbs, vus);
8390 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8391 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8392
8393 res_i = vec_all_ne(vbs, vbs);
8394 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8395 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8396
8397 res_i = vec_all_ne(vp, vp);
8398 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8399 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8400
8401 res_i = vec_all_ne(vi, vi);
8402 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8403 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8404
8405 res_i = vec_all_ne(vi, vbi);
8406 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8407 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8408
8409 res_i = vec_all_ne(vui, vui);
8410 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8411 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8412
8413 res_i = vec_all_ne(vui, vbi);
8414 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8415 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8416
8417 res_i = vec_all_ne(vbi, vi);
8418 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8419 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8420
8421 res_i = vec_all_ne(vbi, vui);
8422 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8423 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8424
8425 res_i = vec_all_ne(vbi, vbi);
8426 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8427 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8428
8429 res_i = vec_all_ne(vf, vf);
8430 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8431 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8432
8433 /* vec_all_nge */
8434 res_i = vec_all_nge(vf, vf);
8435 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8436 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8437
8438 /* vec_all_ngt */
8439 res_i = vec_all_ngt(vf, vf);
8440 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8441 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8442
8443 /* vec_all_nle */
8444 res_i = vec_all_nle(vf, vf);
8445 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8446 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8447
8448 /* vec_all_nlt */
8449 res_i = vec_all_nlt(vf, vf);
8450 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8451 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8452
8453 /* vec_all_numeric */
8454 res_i = vec_all_numeric(vf);
8455 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8456 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8457
8458 /* vec_any_eq */
8459 res_i = vec_any_eq(vsc, vsc);
8460 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8461 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8462
8463 res_i = vec_any_eq(vsc, vbc);
8464 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8465 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8466
8467 res_i = vec_any_eq(vuc, vuc);
8468 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8469 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8470
8471 res_i = vec_any_eq(vuc, vbc);
8472 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8473 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8474
8475 res_i = vec_any_eq(vbc, vsc);
8476 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8477 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8478
8479 res_i = vec_any_eq(vbc, vuc);
8480 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8481 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8482
8483 res_i = vec_any_eq(vbc, vbc);
8484 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8485 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8486
8487 res_i = vec_any_eq(vs, vs);
8488 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8489 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8490
8491 res_i = vec_any_eq(vs, vbs);
8492 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8493 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8494
8495 res_i = vec_any_eq(vus, vus);
8496 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8497 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8498
8499 res_i = vec_any_eq(vus, vbs);
8500 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8501 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8502
8503 res_i = vec_any_eq(vbs, vs);
8504 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8505 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8506
8507 res_i = vec_any_eq(vbs, vus);
8508 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8509 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8510
8511 res_i = vec_any_eq(vbs, vbs);
8512 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8513 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8514
8515 res_i = vec_any_eq(vp, vp);
8516 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8517 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8518
8519 res_i = vec_any_eq(vi, vi);
8520 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8521 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8522
8523 res_i = vec_any_eq(vi, vbi);
8524 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8525 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8526
8527 res_i = vec_any_eq(vui, vui);
8528 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8529 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8530
8531 res_i = vec_any_eq(vui, vbi);
8532 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8533 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8534
8535 res_i = vec_any_eq(vbi, vi);
8536 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8537 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8538
8539 res_i = vec_any_eq(vbi, vui);
8540 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8541 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8542
8543 res_i = vec_any_eq(vbi, vbi);
8544 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8545 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8546
8547 res_i = vec_any_eq(vf, vf);
8548 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8549 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8550
8551 /* vec_any_ge */
8552 res_i = vec_any_ge(vsc, vsc);
8553 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8554 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8555
8556 res_i = vec_any_ge(vsc, vbc);
8557 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8558 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8559
8560 res_i = vec_any_ge(vuc, vuc);
8561 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8562 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8563
8564 res_i = vec_any_ge(vuc, vbc);
8565 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8566 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8567
8568 res_i = vec_any_ge(vbc, vsc);
8569 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8570 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8571
8572 res_i = vec_any_ge(vbc, vuc);
8573 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8574 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8575
8576 res_i = vec_any_ge(vbc, vbc);
8577 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8578 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8579
8580 res_i = vec_any_ge(vs, vs);
8581 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8582 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8583
8584 res_i = vec_any_ge(vs, vbs);
8585 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8586 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8587
8588 res_i = vec_any_ge(vus, vus);
8589 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8590 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8591
8592 res_i = vec_any_ge(vus, vbs);
8593 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8594 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8595
8596 res_i = vec_any_ge(vbs, vs);
8597 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8598 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8599
8600 res_i = vec_any_ge(vbs, vus);
8601 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8602 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8603
8604 res_i = vec_any_ge(vbs, vbs);
8605 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8606 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8607
8608 res_i = vec_any_ge(vi, vi);
8609 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8610 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8611
8612 res_i = vec_any_ge(vi, vbi);
8613 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8614 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8615
8616 res_i = vec_any_ge(vui, vui);
8617 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8618 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8619
8620 res_i = vec_any_ge(vui, vbi);
8621 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8622 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8623
8624 res_i = vec_any_ge(vbi, vi);
8625 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8626 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8627
8628 res_i = vec_any_ge(vbi, vui);
8629 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8630 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8631
8632 res_i = vec_any_ge(vbi, vbi);
8633 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8634 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8635
8636 res_i = vec_any_ge(vf, vf);
8637 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8638 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8639
8640 /* vec_any_gt */
8641 res_i = vec_any_gt(vsc, vsc);
8642 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8643 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8644
8645 res_i = vec_any_gt(vsc, vbc);
8646 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8647 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8648
8649 res_i = vec_any_gt(vuc, vuc);
8650 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8651 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8652
8653 res_i = vec_any_gt(vuc, vbc);
8654 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8655 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8656
8657 res_i = vec_any_gt(vbc, vsc);
8658 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8659 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8660
8661 res_i = vec_any_gt(vbc, vuc);
8662 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8663 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8664
8665 res_i = vec_any_gt(vbc, vbc);
8666 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8667 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8668
8669 res_i = vec_any_gt(vs, vs);
8670 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8671 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8672
8673 res_i = vec_any_gt(vs, vbs);
8674 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8675 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8676
8677 res_i = vec_any_gt(vus, vus);
8678 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8679 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8680
8681 res_i = vec_any_gt(vus, vbs);
8682 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8683 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8684
8685 res_i = vec_any_gt(vbs, vs);
8686 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8687 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8688
8689 res_i = vec_any_gt(vbs, vus);
8690 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8691 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8692
8693 res_i = vec_any_gt(vbs, vbs);
8694 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8695 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8696
8697 res_i = vec_any_gt(vi, vi);
8698 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8699 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8700
8701 res_i = vec_any_gt(vi, vbi);
8702 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8703 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8704
8705 res_i = vec_any_gt(vui, vui);
8706 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8707 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8708
8709 res_i = vec_any_gt(vui, vbi);
8710 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8711 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8712
8713 res_i = vec_any_gt(vbi, vi);
8714 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8715 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8716
8717 res_i = vec_any_gt(vbi, vui);
8718 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8719 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8720
8721 res_i = vec_any_gt(vbi, vbi);
8722 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8723 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8724
8725 res_i = vec_any_gt(vf, vf);
8726 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8727 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8728
8729 /* vec_any_le */
8730 res_i = vec_any_le(vsc, vsc);
8731 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8732 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8733
8734 res_i = vec_any_le(vsc, vbc);
8735 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8736 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8737
8738 res_i = vec_any_le(vuc, vuc);
8739 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8740 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8741
8742 res_i = vec_any_le(vuc, vbc);
8743 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8744 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8745
8746 res_i = vec_any_le(vbc, vsc);
8747 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8748 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8749
8750 res_i = vec_any_le(vbc, vuc);
8751 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8752 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8753
8754 res_i = vec_any_le(vbc, vbc);
8755 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8756 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8757
8758 res_i = vec_any_le(vs, vs);
8759 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8760 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8761
8762 res_i = vec_any_le(vs, vbs);
8763 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8764 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8765
8766 res_i = vec_any_le(vus, vus);
8767 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8768 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8769
8770 res_i = vec_any_le(vus, vbs);
8771 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8772 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8773
8774 res_i = vec_any_le(vbs, vs);
8775 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8776 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8777
8778 res_i = vec_any_le(vbs, vus);
8779 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8780 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8781
8782 res_i = vec_any_le(vbs, vbs);
8783 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8784 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8785
8786 res_i = vec_any_le(vi, vi);
8787 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8788 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8789
8790 res_i = vec_any_le(vi, vbi);
8791 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8792 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8793
8794 res_i = vec_any_le(vui, vui);
8795 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8796 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8797
8798 res_i = vec_any_le(vui, vbi);
8799 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8800 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8801
8802 res_i = vec_any_le(vbi, vi);
8803 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8804 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8805
8806 res_i = vec_any_le(vbi, vui);
8807 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8808 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8809
8810 res_i = vec_any_le(vbi, vbi);
8811 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8812 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8813
8814 res_i = vec_any_le(vf, vf);
8815 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
8816 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
8817
8818 /* vec_any_lt */
8819 res_i = vec_any_lt(vsc, vsc);
8820 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8821 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8822
8823 res_i = vec_any_lt(vsc, vbc);
8824 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
8825 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p
8826
8827 res_i = vec_any_lt(vuc, vuc);
8828 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8829 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8830
8831 res_i = vec_any_lt(vuc, vbc);
8832 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8833 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8834
8835 res_i = vec_any_lt(vbc, vsc);
8836 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8837 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8838
8839 res_i = vec_any_lt(vbc, vuc);
8840 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8841 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8842
8843 res_i = vec_any_lt(vbc, vbc);
8844 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
8845 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p
8846
8847 res_i = vec_any_lt(vs, vs);
8848 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8849 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8850
8851 res_i = vec_any_lt(vs, vbs);
8852 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
8853 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p
8854
8855 res_i = vec_any_lt(vus, vus);
8856 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8857 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8858
8859 res_i = vec_any_lt(vus, vbs);
8860 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8861 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8862
8863 res_i = vec_any_lt(vbs, vs);
8864 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8865 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8866
8867 res_i = vec_any_lt(vbs, vus);
8868 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8869 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8870
8871 res_i = vec_any_lt(vbs, vbs);
8872 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
8873 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p
8874
8875 res_i = vec_any_lt(vi, vi);
8876 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8877 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8878
8879 res_i = vec_any_lt(vi, vbi);
8880 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
8881 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p
8882
8883 res_i = vec_any_lt(vui, vui);
8884 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8885 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8886
8887 res_i = vec_any_lt(vui, vbi);
8888 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8889 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8890
8891 res_i = vec_any_lt(vbi, vi);
8892 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8893 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8894
8895 res_i = vec_any_lt(vbi, vui);
8896 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8897 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8898
8899 res_i = vec_any_lt(vbi, vbi);
8900 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
8901 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p
8902
8903 res_i = vec_any_lt(vf, vf);
8904 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
8905 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
8906
8907 /* vec_any_nan */
8908 res_i = vec_any_nan(vf);
8909 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
8910 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
8911
8912 /* vec_any_ne */
8913 res_i = vec_any_ne(vsc, vsc);
8914 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8915 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8916
8917 res_i = vec_any_ne(vsc, vbc);
8918 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8919 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8920
8921 res_i = vec_any_ne(vuc, vuc);
8922 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8923 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8924
8925 res_i = vec_any_ne(vuc, vbc);
8926 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8927 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8928
8929 res_i = vec_any_ne(vbc, vsc);
8930 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8931 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8932
8933 res_i = vec_any_ne(vbc, vuc);
8934 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8935 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8936
8937 res_i = vec_any_ne(vbc, vbc);
8938 // CHECK: @llvm.ppc.altivec.vcmpequb.p
8939 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p
8940
8941 res_i = vec_any_ne(vs, vs);
8942 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8943 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8944
8945 res_i = vec_any_ne(vs, vbs);
8946 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8947 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8948
8949 res_i = vec_any_ne(vus, vus);
8950 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8951 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8952
8953 res_i = vec_any_ne(vus, vbs);
8954 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8955 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8956
8957 res_i = vec_any_ne(vbs, vs);
8958 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8959 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8960
8961 res_i = vec_any_ne(vbs, vus);
8962 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8963 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8964
8965 res_i = vec_any_ne(vbs, vbs);
8966 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8967 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8968
8969 res_i = vec_any_ne(vp, vp);
8970 // CHECK: @llvm.ppc.altivec.vcmpequh.p
8971 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p
8972
8973 res_i = vec_any_ne(vi, vi);
8974 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8975 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8976
8977 res_i = vec_any_ne(vi, vbi);
8978 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8979 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8980
8981 res_i = vec_any_ne(vui, vui);
8982 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8983 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8984
8985 res_i = vec_any_ne(vui, vbi);
8986 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8987 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8988
8989 res_i = vec_any_ne(vbi, vi);
8990 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8991 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8992
8993 res_i = vec_any_ne(vbi, vui);
8994 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8995 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
8996
8997 res_i = vec_any_ne(vbi, vbi);
8998 // CHECK: @llvm.ppc.altivec.vcmpequw.p
8999 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p
9000
9001 res_i = vec_any_ne(vf, vf);
9002 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9003 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9004
9005 /* vec_any_nge */
9006 res_i = vec_any_nge(vf, vf);
9007 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9008 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9009
9010 /* vec_any_ngt */
9011 res_i = vec_any_ngt(vf, vf);
9012 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9013 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9014
9015 /* vec_any_nle */
9016 res_i = vec_any_nle(vf, vf);
9017 // CHECK: @llvm.ppc.altivec.vcmpgefp.p
9018 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p
9019
9020 /* vec_any_nlt */
9021 res_i = vec_any_nlt(vf, vf);
9022 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
9023 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p
9024
9025 /* vec_any_numeric */
9026 res_i = vec_any_numeric(vf);
9027 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
9028 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p
9029
9030 /* vec_any_out */
9031 res_i = vec_any_out(vf, vf);
9032 // CHECK: @llvm.ppc.altivec.vcmpbfp.p
9033 // CHECK-LE: @llvm.ppc.altivec.vcmpbfp.p
9034 }
9035
9036 /* ------------------------------ Relational Operators ------------------------------ */
9037 // CHECK-LABEL: define void @test7
test7()9038 void test7() {
9039 vector signed char vsc1 = (vector signed char)(-1);
9040 vector signed char vsc2 = (vector signed char)(-2);
9041 res_i = (vsc1 == vsc2);
9042 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9043 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9044
9045 res_i = (vsc1 != vsc2);
9046 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9047 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9048
9049 res_i = (vsc1 < vsc2);
9050 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9051 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9052
9053 res_i = (vsc1 > vsc2);
9054 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9055 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
9056
9057 res_i = (vsc1 <= vsc2);
9058 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9059 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9060
9061 res_i = (vsc1 >= vsc2);
9062 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9063 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
9064
9065 vector unsigned char vuc1 = (vector unsigned char)(1);
9066 vector unsigned char vuc2 = (vector unsigned char)(2);
9067 res_i = (vuc1 == vuc2);
9068 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
9069 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 2
9070
9071 res_i = (vuc1 != vuc2);
9072 // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
9073 // CHECK-LE: @llvm.ppc.altivec.vcmpequb.p(i32 0
9074
9075 res_i = (vuc1 < vuc2);
9076 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9077 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9078
9079 res_i = (vuc1 > vuc2);
9080 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9081 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 2
9082
9083 res_i = (vuc1 <= vuc2);
9084 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9085 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9086
9087 res_i = (vuc1 >= vuc2);
9088 // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9089 // CHECK-LE: @llvm.ppc.altivec.vcmpgtub.p(i32 0
9090
9091 vector short vs1 = (vector short)(-1);
9092 vector short vs2 = (vector short)(-2);
9093 res_i = (vs1 == vs2);
9094 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9095 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9096
9097 res_i = (vs1 != vs2);
9098 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9099 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9100
9101 res_i = (vs1 < vs2);
9102 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9103 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9104
9105 res_i = (vs1 > vs2);
9106 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9107 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
9108
9109 res_i = (vs1 <= vs2);
9110 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9111 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9112
9113 res_i = (vs1 >= vs2);
9114 // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9115 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
9116
9117 vector unsigned short vus1 = (vector unsigned short)(1);
9118 vector unsigned short vus2 = (vector unsigned short)(2);
9119 res_i = (vus1 == vus2);
9120 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
9121 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 2
9122
9123 res_i = (vus1 != vus2);
9124 // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
9125 // CHECK-LE: @llvm.ppc.altivec.vcmpequh.p(i32 0
9126
9127 res_i = (vus1 < vus2);
9128 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9129 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9130
9131 res_i = (vus1 > vus2);
9132 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9133 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
9134
9135 res_i = (vus1 <= vus2);
9136 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9137 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9138
9139 res_i = (vus1 >= vus2);
9140 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9141 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
9142
9143 vector int vi1 = (vector int)(-1);
9144 vector int vi2 = (vector int)(-2);
9145 res_i = (vi1 == vi2);
9146 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9147 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9148
9149 res_i = (vi1 != vi2);
9150 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9151 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9152
9153 res_i = (vi1 < vi2);
9154 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9155 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9156
9157 res_i = (vi1 > vi2);
9158 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9159 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
9160
9161 res_i = (vi1 <= vi2);
9162 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9163 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9164
9165 res_i = (vi1 >= vi2);
9166 // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9167 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
9168
9169 vector unsigned int vui1 = (vector unsigned int)(1);
9170 vector unsigned int vui2 = (vector unsigned int)(2);
9171 res_i = (vui1 == vui2);
9172 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
9173 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 2
9174
9175 res_i = (vui1 != vui2);
9176 // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
9177 // CHECK-LE: @llvm.ppc.altivec.vcmpequw.p(i32 0
9178
9179 res_i = (vui1 < vui2);
9180 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9181 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9182
9183 res_i = (vui1 > vui2);
9184 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9185 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
9186
9187 res_i = (vui1 <= vui2);
9188 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9189 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9190
9191 res_i = (vui1 >= vui2);
9192 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9193 // CHECK-LE: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
9194
9195 vector float vf1 = (vector float)(1.0);
9196 vector float vf2 = (vector float)(2.0);
9197 res_i = (vf1 == vf2);
9198 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9199 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
9200
9201 res_i = (vf1 != vf2);
9202 // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9203 // CHECK-LE: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
9204
9205 res_i = (vf1 < vf2);
9206 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9207 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9208
9209 res_i = (vf1 > vf2);
9210 // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9211 // CHECK-LE: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
9212
9213 res_i = (vf1 <= vf2);
9214 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9215 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9216
9217 res_i = (vf1 >= vf2);
9218 // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9219 // CHECK-LE: @llvm.ppc.altivec.vcmpgefp.p(i32 2
9220 }
9221
9222 /* ------------------------------ optional ---------------------------------- */
test8()9223 void test8() {
9224 // CHECK-LABEL: define void @test8
9225 // CHECK-LE-LABEL: define void @test8
9226 res_vbc = vec_reve(vbc);
9227 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9228 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9229
9230 res_vsc = vec_reve(vsc);
9231 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9232 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9233
9234 res_vuc = vec_reve(vuc);
9235 // CHECK: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9236 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9237
9238 res_vbi = vec_reve(vbi);
9239 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9240 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9241
9242 res_vi = vec_reve(vi);
9243 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9244 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9245
9246 res_vui = vec_reve(vui);
9247 // CHECK: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9248 // CHECK-LE: shufflevector <4 x i32> %{{[0-9]+}}, <4 x i32> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9249
9250 res_vbs = vec_reve(vbs);
9251 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9252 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9253
9254 res_vs = vec_reve(vs);
9255 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9256 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9257
9258 res_vus = vec_reve(vus);
9259 // CHECK: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9260 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
9261
9262 res_vf = vec_reve(vf);
9263 // CHECK: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9264 // CHECK-LE: shufflevector <4 x float> %{{[0-9]+}}, <4 x float> %{{[0-9]+}}, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
9265
9266 res_vbc = vec_revb(vbc);
9267 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9268 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9269 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9270 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9271 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vbc, align 16
9272 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9273 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9274 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vbc, align 16
9275
9276 res_vsc = vec_revb(vsc);
9277 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9278 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9279 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9280 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9281 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vsc, align 16
9282 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9283 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9284 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vsc, align 16
9285
9286 res_vuc = vec_revb(vuc);
9287 // CHECK: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9288 // CHECK: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9289 // CHECK: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9290 // CHECK: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9291 // CHECK-LE: [[T1:%.+]] = load <16 x i8>, <16 x i8>* @vuc, align 16
9292 // CHECK-LE: store <16 x i8> [[T1]], <16 x i8>* [[T2:%.+]], align 16
9293 // CHECK-LE: [[T3:%.+]] = load <16 x i8>, <16 x i8>* [[T2]], align 16
9294 // CHECK-LE: store <16 x i8> [[T3]], <16 x i8>* @res_vuc, align 16
9295
9296 res_vbs = vec_revb(vbs);
9297 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9298 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9299 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9300 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9301 // CHECK-LE: xor <16 x i8>
9302 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9303
9304 res_vs = vec_revb(vs);
9305 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9306 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9307 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9308 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9309 // CHECK-LE: xor <16 x i8>
9310 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9311
9312 res_vus = vec_revb(vus);
9313 // CHECK: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9314 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9315 // CHECK-LE: store <16 x i8> <i8 1, i8 0, i8 3, i8 2, i8 5, i8 4, i8 7, i8 6, i8 9, i8 8, i8 11, i8 10, i8 13, i8 12, i8 15, i8 14>, <16 x i8>* {{%.+}}, align 16
9316 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9317 // CHECK-LE: xor <16 x i8>
9318 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9319
9320 res_vbi = vec_revb(vbi);
9321 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9322 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9323 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9324 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9325 // CHECK-LE: xor <16 x i8>
9326 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9327
9328 res_vi = vec_revb(vi);
9329 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9330 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9331 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9332 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9333 // CHECK-LE: xor <16 x i8>
9334 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9335
9336 res_vui = vec_revb(vui);
9337 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9338 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9339 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9340 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9341 // CHECK-LE: xor <16 x i8>
9342 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9343
9344 res_vf = vec_revb(vf);
9345 // CHECK: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9346 // CHECK: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9347 // CHECK-LE: store <16 x i8> <i8 3, i8 2, i8 1, i8 0, i8 7, i8 6, i8 5, i8 4, i8 11, i8 10, i8 9, i8 8, i8 15, i8 14, i8 13, i8 12>, <16 x i8>* {{%.+}}, align 16
9348 // CHECK-LE: store <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <16 x i8>* {{%.+}}, align 16
9349 // CHECK-LE: xor <16 x i8>
9350 // CHECK-LE: call <4 x i32> @llvm.ppc.altivec.vperm(<4 x i32> {{%.+}}, <4 x i32> {{%.+}}, <16 x i8> {{%.+}})
9351 }
9352
9353 /* ------------------------------ vec_xl ------------------------------------ */
test9()9354 void test9() {
9355 // CHECK-LABEL: define void @test9
9356 // CHECK-LE-LABEL: define void @test9
9357 res_vsc = vec_xl(param_sll, ¶m_sc);
9358 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9359 // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9360
9361 res_vuc = vec_xl(param_sll, ¶m_uc);
9362 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9363 // CHECK-LE: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9364
9365 res_vs = vec_xl(param_sll, ¶m_s);
9366 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9367 // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9368
9369 res_vus = vec_xl(param_sll, ¶m_us);
9370 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9371 // CHECK-LE: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9372
9373 res_vi = vec_xl(param_sll, ¶m_i);
9374 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9375 // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9376
9377 res_vui = vec_xl(param_sll, ¶m_ui);
9378 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9379 // CHECK-LE: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9380
9381 res_vf = vec_xl(param_sll, ¶m_f);
9382 // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9383 // CHECK-LE: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9384 }
9385
9386 /* ------------------------------ vec_xst ----------------------------------- */
test10()9387 void test10() {
9388 // CHECK-LABEL: define void @test10
9389 // CHECK-LE-LABEL: define void @test10
9390 vec_xst(vsc, param_sll, ¶m_sc);
9391 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9392 // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9393
9394 vec_xst(vuc, param_sll, ¶m_uc);
9395 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9396 // CHECK-LE: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9397
9398 vec_xst(vs, param_sll, ¶m_s);
9399 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9400 // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9401
9402 vec_xst(vus, param_sll, ¶m_us);
9403 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9404 // CHECK-LE: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9405
9406 vec_xst(vi, param_sll, ¶m_i);
9407 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9408 // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9409
9410 vec_xst(vui, param_sll, ¶m_ui);
9411 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9412 // CHECK-LE: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9413
9414 vec_xst(vf, param_sll, ¶m_f);
9415 // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9416 // CHECK-LE: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9417 }
9418
9419 /* ----------------------------- vec_xl_be ---------------------------------- */
test11()9420 void test11() {
9421 // CHECK-LABEL: define void @test11
9422 // CHECK-LE-LABEL: define void @test11
9423 res_vsc = vec_xl_be(param_sll, ¶m_sc);
9424 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9425 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9426 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9427
9428 res_vuc = vec_xl_be(param_sll, ¶m_uc);
9429 // CHECK: load <16 x i8>, <16 x i8>* %{{[0-9]+}}, align 1
9430 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9431 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9432
9433 res_vs = vec_xl_be(param_sll, ¶m_s);
9434 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9435 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9436 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9437
9438 res_vus = vec_xl_be(param_sll, ¶m_us);
9439 // CHECK: load <8 x i16>, <8 x i16>* %{{[0-9]+}}, align 1
9440 // CHECK-LE: call <2 x double> @llvm.ppc.vsx.lxvd2x.be(i8* %{{[0-9]+}})
9441 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9442
9443 res_vi = vec_xl_be(param_sll, ¶m_i);
9444 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9445 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9446
9447 res_vui = vec_xl_be(param_sll, ¶m_ui);
9448 // CHECK: load <4 x i32>, <4 x i32>* %{{[0-9]+}}, align 1
9449 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9450
9451 res_vf = vec_xl_be(param_sll, ¶m_f);
9452 // CHECK: load <4 x float>, <4 x float>* %{{[0-9]+}}, align 1
9453 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.lxvw4x.be(i8* %{{[0-9]+}})
9454 }
9455
9456 /* ----------------------------- vec_xst_be --------------------------------- */
test12()9457 void test12() {
9458 // CHECK-LABEL: define void @test12
9459 // CHECK-LE-LABEL: define void @test12
9460 vec_xst_be(vsc, param_sll, ¶m_sc);
9461 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9462 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9463 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9464
9465 vec_xst_be(vuc, param_sll, ¶m_uc);
9466 // CHECK: store <16 x i8> %{{[0-9]+}}, <16 x i8>* %{{[0-9]+}}, align 1
9467 // CHECK-LE: shufflevector <16 x i8> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0, i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8>
9468 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9469
9470 vec_xst_be(vs, param_sll, ¶m_s);
9471 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9472 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9473 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9474
9475 vec_xst_be(vus, param_sll, ¶m_us);
9476 // CHECK: store <8 x i16> %{{[0-9]+}}, <8 x i16>* %{{[0-9]+}}, align 1
9477 // CHECK-LE: shufflevector <8 x i16> %{{[0-9]+}}, <8 x i16> %{{[0-9]+}}, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
9478 // CHECK-LE: call void @llvm.ppc.vsx.stxvd2x.be(<2 x double> %{{[0-9]+}}, i8* %{{[0-9]+}})
9479
9480 vec_xst_be(vi, param_sll, ¶m_i);
9481 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9482 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9483
9484 vec_xst_be(vui, param_sll, ¶m_ui);
9485 // CHECK: store <4 x i32> %{{[0-9]+}}, <4 x i32>* %{{[0-9]+}}, align 1
9486 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9487
9488 vec_xst_be(vf, param_sll, ¶m_f);
9489 // CHECK: store <4 x float> %{{[0-9]+}}, <4 x float>* %{{[0-9]+}}, align 1
9490 // CHECK-LE: call void @llvm.ppc.vsx.stxvw4x.be(<4 x i32> %{{[0-9]+}}, i8* %{{[0-9]+}})
9491 }
9492