1*67e74705SXin Li // REQUIRES: powerpc-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 -faltivec -target-feature +power8-vector -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
3*67e74705SXin Li // RUN: %clang_cc1 -faltivec -target-feature +power8-vector -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s -check-prefix=CHECK-LE
4*67e74705SXin Li // RUN: not %clang_cc1 -faltivec -target-feature +vsx -triple powerpc64-unknown-unknown -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-PPC
5*67e74705SXin Li // Added -target-feature +vsx above to avoid errors about "vector double" and to
6*67e74705SXin Li // generate the correct errors for functions that are only overloaded with VSX
7*67e74705SXin Li // (vec_cmpge, vec_cmple). Without this option, there is only one overload so
8*67e74705SXin Li // it is selected.
9*67e74705SXin Li #include <altivec.h>
10*67e74705SXin Li
dummy()11*67e74705SXin Li void dummy() { }
12*67e74705SXin Li signed int si;
13*67e74705SXin Li signed long long sll;
14*67e74705SXin Li unsigned long long ull;
15*67e74705SXin Li signed __int128 sx;
16*67e74705SXin Li unsigned __int128 ux;
17*67e74705SXin Li double d;
18*67e74705SXin Li vector signed char vsc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
19*67e74705SXin Li vector unsigned char vuc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
20*67e74705SXin Li vector bool char vbc = { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1 };
21*67e74705SXin Li
22*67e74705SXin Li vector signed short vss = { 0, 1, 2, 3, 4, 5, 6, 7 };
23*67e74705SXin Li vector unsigned short vus = { 0, 1, 2, 3, 4, 5, 6, 7 };
24*67e74705SXin Li vector bool short vbs = { 1, 1, 0, 0, 0, 0, 1, 1 };
25*67e74705SXin Li
26*67e74705SXin Li vector signed int vsi = { -1, 2, -3, 4 };
27*67e74705SXin Li vector unsigned int vui = { 1, 2, 3, 4 };
28*67e74705SXin Li vector bool int vbi = {0, -1, -1, 0};
29*67e74705SXin Li
30*67e74705SXin Li vector signed long long vsll = { 1, 2 };
31*67e74705SXin Li vector unsigned long long vull = { 1, 2 };
32*67e74705SXin Li vector bool long long vbll = { 1, 0 };
33*67e74705SXin Li
34*67e74705SXin Li vector signed __int128 vsx = { 1 };
35*67e74705SXin Li vector unsigned __int128 vux = { 1 };
36*67e74705SXin Li
37*67e74705SXin Li vector float vfa = { 1.e-4f, -132.23f, -22.1, 32.00f };
38*67e74705SXin Li vector double vda = { 1.e-11, -132.23e10 };
39*67e74705SXin Li
40*67e74705SXin Li int res_i;
41*67e74705SXin Li double res_d;
42*67e74705SXin Li signed long long res_sll;
43*67e74705SXin Li unsigned long long res_ull;
44*67e74705SXin Li
45*67e74705SXin Li vector signed char res_vsc;
46*67e74705SXin Li vector unsigned char res_vuc;
47*67e74705SXin Li vector bool char res_vbc;
48*67e74705SXin Li
49*67e74705SXin Li vector signed short res_vss;
50*67e74705SXin Li vector unsigned short res_vus;
51*67e74705SXin Li vector bool short res_vbs;
52*67e74705SXin Li
53*67e74705SXin Li vector signed int res_vsi;
54*67e74705SXin Li vector unsigned int res_vui;
55*67e74705SXin Li vector bool int res_vbi;
56*67e74705SXin Li
57*67e74705SXin Li vector signed long long res_vsll;
58*67e74705SXin Li vector unsigned long long res_vull;
59*67e74705SXin Li vector bool long long res_vbll;
60*67e74705SXin Li
61*67e74705SXin Li vector signed __int128 res_vsx;
62*67e74705SXin Li vector unsigned __int128 res_vux;
63*67e74705SXin Li
64*67e74705SXin Li vector float res_vf;
65*67e74705SXin Li vector double res_vd;
66*67e74705SXin Li
67*67e74705SXin Li // CHECK-LABEL: define void @test1
test1()68*67e74705SXin Li void test1() {
69*67e74705SXin Li
70*67e74705SXin Li /* vec_abs */
71*67e74705SXin Li res_vsll = vec_abs(vsll);
72*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
73*67e74705SXin Li // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
74*67e74705SXin Li // CHECK-PPC: error: call to 'vec_abs' is ambiguous
75*67e74705SXin Li
76*67e74705SXin Li res_vd = vec_abs(vda);
77*67e74705SXin Li // CHECK: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
78*67e74705SXin Li // CHECK: store <2 x double> %{{.*}}, <2 x double>* @res_vd
79*67e74705SXin Li // CHECK-LE: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
80*67e74705SXin Li // CHECK-LE: store <2 x double> %{{.*}}, <2 x double>* @res_vd
81*67e74705SXin Li // CHECK-PPC: error: call to 'vec_abs' is ambiguous
82*67e74705SXin Li
83*67e74705SXin Li /* vec_add */
84*67e74705SXin Li res_vsll = vec_add(vsll, vsll);
85*67e74705SXin Li // CHECK: add <2 x i64>
86*67e74705SXin Li // CHECK-LE: add <2 x i64>
87*67e74705SXin Li // CHECK-PPC: error: call to 'vec_add' is ambiguous
88*67e74705SXin Li
89*67e74705SXin Li res_vull = vec_add(vull, vull);
90*67e74705SXin Li // CHECK: add <2 x i64>
91*67e74705SXin Li // CHECK-LE: add <2 x i64>
92*67e74705SXin Li // CHECK-PPC: error: call to 'vec_add' is ambiguous
93*67e74705SXin Li
94*67e74705SXin Li /* vec_addc */
95*67e74705SXin Li res_vsi = vec_addc(vsi, vsi);
96*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddcuw
97*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddcuw
98*67e74705SXin Li
99*67e74705SXin Li res_vui = vec_addc(vui, vui);
100*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddcuw
101*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddcuw
102*67e74705SXin Li
103*67e74705SXin Li res_vsx = vec_addc(vsx, vsx);
104*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddcuq
105*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddcuq
106*67e74705SXin Li
107*67e74705SXin Li res_vux = vec_addc(vux, vux);
108*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddcuq
109*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddcuq
110*67e74705SXin Li
111*67e74705SXin Li /* vec_adde */
112*67e74705SXin Li res_vsx = vec_adde(vsx, vsx, vsx);
113*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddeuqm
114*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddeuqm
115*67e74705SXin Li
116*67e74705SXin Li res_vux = vec_adde(vux, vux, vux);
117*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddeuqm
118*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddeuqm
119*67e74705SXin Li
120*67e74705SXin Li /* vec_addec */
121*67e74705SXin Li res_vsx = vec_addec(vsx, vsx, vsx);
122*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vaddecuq
123*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vaddecuq
124*67e74705SXin Li
125*67e74705SXin Li /* vec_mergee */
126*67e74705SXin Li res_vbi = vec_mergee(vbi, vbi);
127*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
128*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
129*67e74705SXin Li
130*67e74705SXin Li res_vsi = vec_mergee(vsi, vsi);
131*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
132*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
133*67e74705SXin Li
134*67e74705SXin Li res_vui = vec_mergee(vui, vui);
135*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
136*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
137*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_mergee'
138*67e74705SXin Li
139*67e74705SXin Li /* vec_mergeo */
140*67e74705SXin Li res_vbi = vec_mergeo(vbi, vbi);
141*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
142*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
143*67e74705SXin Li
144*67e74705SXin Li res_vsi = vec_mergeo(vsi, vsi);
145*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
146*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
147*67e74705SXin Li
148*67e74705SXin Li res_vui = vec_mergeo(vui, vui);
149*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
150*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
151*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_mergeo'
152*67e74705SXin Li
153*67e74705SXin Li /* vec_cmpeq */
154*67e74705SXin Li res_vbll = vec_cmpeq(vsll, vsll);
155*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd
156*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd
157*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
158*67e74705SXin Li
159*67e74705SXin Li res_vbll = vec_cmpeq(vull, vull);
160*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd
161*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd
162*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
163*67e74705SXin Li
164*67e74705SXin Li /* vec_cmpge */
165*67e74705SXin Li res_vbll = vec_cmpge(vsll, vsll);
166*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd
167*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
168*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
169*67e74705SXin Li
170*67e74705SXin Li res_vbll = vec_cmpge(vull, vull);
171*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud
172*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
173*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
174*67e74705SXin Li
175*67e74705SXin Li /* vec_cmple */
176*67e74705SXin Li res_vbll = vec_cmple(vsll, vsll);
177*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd
178*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
179*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
180*67e74705SXin Li
181*67e74705SXin Li res_vbll = vec_cmple(vull, vull);
182*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud
183*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
184*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
185*67e74705SXin Li
186*67e74705SXin Li /* vec_cmpgt */
187*67e74705SXin Li res_vbll = vec_cmpgt(vsll, vsll);
188*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd
189*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
190*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
191*67e74705SXin Li
192*67e74705SXin Li res_vbll = vec_cmpgt(vull, vull);
193*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud
194*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
195*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
196*67e74705SXin Li
197*67e74705SXin Li /* vec_cmplt */
198*67e74705SXin Li res_vbll = vec_cmplt(vsll, vsll);
199*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
200*67e74705SXin Li // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
201*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
202*67e74705SXin Li
203*67e74705SXin Li res_vbll = vec_cmplt(vull, vull);
204*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
205*67e74705SXin Li // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
206*67e74705SXin Li // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
207*67e74705SXin Li
208*67e74705SXin Li /* vec_double */
209*67e74705SXin Li res_vd = vec_double(vsll);
210*67e74705SXin Li // CHECK: sitofp i64 {{.+}} to double
211*67e74705SXin Li // CHECK-BE: sitofp i64 {{.+}} to double
212*67e74705SXin Li
213*67e74705SXin Li res_vd = vec_double(vull);
214*67e74705SXin Li // CHECK: uitofp i64 {{.+}} to double
215*67e74705SXin Li // CHECK-BE: uitofp i64 {{.+}} to double
216*67e74705SXin Li
217*67e74705SXin Li /* vec_eqv */
218*67e74705SXin Li res_vsc = vec_eqv(vsc, vsc);
219*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
220*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
221*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
222*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
223*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
224*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
225*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
226*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
227*67e74705SXin Li // CHECK-PPC: error: assigning to
228*67e74705SXin Li
229*67e74705SXin Li res_vsc = vec_eqv(vbc, vbc);
230*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
231*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
232*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
233*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
234*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
235*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
236*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
237*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
238*67e74705SXin Li // CHECK-PPC: error: assigning to
239*67e74705SXin Li
240*67e74705SXin Li res_vuc = vec_eqv(vuc, vuc);
241*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
242*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
243*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
244*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
245*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
246*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
247*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
248*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
249*67e74705SXin Li // CHECK-PPC: error: assigning to
250*67e74705SXin Li
251*67e74705SXin Li res_vss = vec_eqv(vss, vss);
252*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
253*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
254*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
255*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
256*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
257*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
258*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
259*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
260*67e74705SXin Li // CHECK-PPC: error: assigning to
261*67e74705SXin Li
262*67e74705SXin Li res_vss = vec_eqv(vbs, vbs);
263*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
264*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
265*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
266*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
267*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
268*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
269*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
270*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
271*67e74705SXin Li // CHECK-PPC: error: assigning to
272*67e74705SXin Li
273*67e74705SXin Li res_vus = vec_eqv(vus, vus);
274*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
275*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
276*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
277*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
278*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
279*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
280*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
281*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
282*67e74705SXin Li // CHECK-PPC: error: assigning to
283*67e74705SXin Li
284*67e74705SXin Li res_vsi = vec_eqv(vsi, vsi);
285*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
286*67e74705SXin Li // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
287*67e74705SXin Li // CHECK-PPC: error: assigning to
288*67e74705SXin Li
289*67e74705SXin Li res_vsi = vec_eqv(vbi, vbi);
290*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
291*67e74705SXin Li // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
292*67e74705SXin Li // CHECK-PPC: error: assigning to
293*67e74705SXin Li
294*67e74705SXin Li res_vui = vec_eqv(vui, vui);
295*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
296*67e74705SXin Li // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
297*67e74705SXin Li // CHECK-PPC: error: assigning to
298*67e74705SXin Li
299*67e74705SXin Li res_vsll = vec_eqv(vsll, vsll);
300*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
301*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
302*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
303*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
304*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
305*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
306*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
307*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
308*67e74705SXin Li // CHECK-PPC: error: assigning to
309*67e74705SXin Li
310*67e74705SXin Li res_vsll = vec_eqv(vbll, vbll);
311*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
312*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
313*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
314*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
315*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
316*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
317*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
318*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
319*67e74705SXin Li // CHECK-PPC: error: assigning to
320*67e74705SXin Li
321*67e74705SXin Li res_vull = vec_eqv(vull, vull);
322*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
323*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
324*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
325*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
326*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
327*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
328*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
329*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
330*67e74705SXin Li // CHECK-PPC: error: assigning to
331*67e74705SXin Li
332*67e74705SXin Li res_vf = vec_eqv(vfa, vfa);
333*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
334*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
335*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
336*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <4 x float>
337*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
338*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
339*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
340*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <4 x float>
341*67e74705SXin Li // CHECK-PPC: error: assigning to
342*67e74705SXin Li
343*67e74705SXin Li res_vd = vec_eqv(vda, vda);
344*67e74705SXin Li // CHECK: [[T1:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
345*67e74705SXin Li // CHECK: [[T2:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
346*67e74705SXin Li // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
347*67e74705SXin Li // CHECK: bitcast <4 x i32> [[T3]] to <2 x double>
348*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
349*67e74705SXin Li // CHECK-LE: [[T2:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
350*67e74705SXin Li // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
351*67e74705SXin Li // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x double>
352*67e74705SXin Li // CHECK-PPC: error: assigning to
353*67e74705SXin Li
354*67e74705SXin Li /* vec_extract */
355*67e74705SXin Li res_sll = vec_extract(vsll, si);
356*67e74705SXin Li // CHECK: extractelement <2 x i64>
357*67e74705SXin Li // CHECK-LE: extractelement <2 x i64>
358*67e74705SXin Li
359*67e74705SXin Li res_ull = vec_extract(vull, si);
360*67e74705SXin Li // CHECK: extractelement <2 x i64>
361*67e74705SXin Li // CHECK-LE: extractelement <2 x i64>
362*67e74705SXin Li
363*67e74705SXin Li res_ull = vec_extract(vbll, si);
364*67e74705SXin Li // CHECK: extractelement <2 x i64>
365*67e74705SXin Li // CHECK-LE: extractelement <2 x i64>
366*67e74705SXin Li
367*67e74705SXin Li res_d = vec_extract(vda, si);
368*67e74705SXin Li // CHECK: extractelement <2 x double>
369*67e74705SXin Li // CHECK-LE: extractelement <2 x double>
370*67e74705SXin Li
371*67e74705SXin Li /* vec_insert */
372*67e74705SXin Li res_vsll = vec_insert(sll, vsll, si);
373*67e74705SXin Li // CHECK: insertelement <2 x i64>
374*67e74705SXin Li // CHECK-LE: insertelement <2 x i64>
375*67e74705SXin Li
376*67e74705SXin Li res_vbll = vec_insert(ull, vbll, si);
377*67e74705SXin Li // CHECK: insertelement <2 x i64>
378*67e74705SXin Li // CHECK-LE: insertelement <2 x i64>
379*67e74705SXin Li
380*67e74705SXin Li res_vull = vec_insert(ull, vull, si);
381*67e74705SXin Li // CHECK: insertelement <2 x i64>
382*67e74705SXin Li // CHECK-LE: insertelement <2 x i64>
383*67e74705SXin Li
384*67e74705SXin Li res_vd = vec_insert(d, vda, si);
385*67e74705SXin Li // CHECK: insertelement <2 x double>
386*67e74705SXin Li // CHECK-LE: insertelement <2 x double>
387*67e74705SXin Li
388*67e74705SXin Li /* vec_cntlz */
389*67e74705SXin Li res_vsc = vec_cntlz(vsc);
390*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
391*67e74705SXin Li // CHECK-LE: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
392*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_cntlz' is invalid in C99
393*67e74705SXin Li
394*67e74705SXin Li res_vuc = vec_cntlz(vuc);
395*67e74705SXin Li // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
396*67e74705SXin Li // CHECK-LE: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
397*67e74705SXin Li
398*67e74705SXin Li res_vss = vec_cntlz(vss);
399*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
400*67e74705SXin Li // CHECK-LE: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
401*67e74705SXin Li
402*67e74705SXin Li res_vus = vec_cntlz(vus);
403*67e74705SXin Li // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
404*67e74705SXin Li // CHECK-LE: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
405*67e74705SXin Li
406*67e74705SXin Li res_vsi = vec_cntlz(vsi);
407*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
408*67e74705SXin Li // CHECK-LE: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
409*67e74705SXin Li
410*67e74705SXin Li res_vui = vec_cntlz(vui);
411*67e74705SXin Li // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
412*67e74705SXin Li // CHECK-LE: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
413*67e74705SXin Li
414*67e74705SXin Li res_vsll = vec_cntlz(vsll);
415*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
416*67e74705SXin Li // CHECK-LE: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
417*67e74705SXin Li
418*67e74705SXin Li res_vull = vec_cntlz(vull);
419*67e74705SXin Li // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
420*67e74705SXin Li // CHECK-LE: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
421*67e74705SXin Li
422*67e74705SXin Li /* ----------------------- predicates --------------------------- */
423*67e74705SXin Li /* vec_all_eq */
424*67e74705SXin Li res_i = vec_all_eq(vsll, vsll);
425*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
426*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
427*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
428*67e74705SXin Li
429*67e74705SXin Li res_i = vec_all_eq(vsll, vbll);
430*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
431*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
432*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
433*67e74705SXin Li
434*67e74705SXin Li res_i = vec_all_eq(vull, vull);
435*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
436*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
437*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
438*67e74705SXin Li
439*67e74705SXin Li res_i = vec_all_eq(vull, vbll);
440*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
441*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
442*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
443*67e74705SXin Li
444*67e74705SXin Li res_i = vec_all_eq(vbll, vsll);
445*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
446*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
447*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
448*67e74705SXin Li
449*67e74705SXin Li res_i = vec_all_eq(vbll, vull);
450*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
451*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
452*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
453*67e74705SXin Li
454*67e74705SXin Li res_i = vec_all_eq(vbll, vbll);
455*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
456*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
457*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
458*67e74705SXin Li
459*67e74705SXin Li res_i = vec_all_eq(vda, vda);
460*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
461*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
462*67e74705SXin Li
463*67e74705SXin Li /* vec_all_ne */
464*67e74705SXin Li res_i = vec_all_ne(vsll, vsll);
465*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
466*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
467*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
468*67e74705SXin Li
469*67e74705SXin Li res_i = vec_all_ne(vsll, vbll);
470*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
471*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
472*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
473*67e74705SXin Li
474*67e74705SXin Li res_i = vec_all_ne(vull, vull);
475*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
476*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
477*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
478*67e74705SXin Li
479*67e74705SXin Li res_i = vec_all_ne(vull, vbll);
480*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
481*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
482*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
483*67e74705SXin Li
484*67e74705SXin Li res_i = vec_all_ne(vbll, vsll);
485*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
486*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
487*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
488*67e74705SXin Li
489*67e74705SXin Li res_i = vec_all_ne(vbll, vull);
490*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
491*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
492*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
493*67e74705SXin Li
494*67e74705SXin Li res_i = vec_all_ne(vbll, vbll);
495*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
496*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
497*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
498*67e74705SXin Li
499*67e74705SXin Li dummy();
500*67e74705SXin Li // CHECK: @dummy
501*67e74705SXin Li
502*67e74705SXin Li res_i = vec_all_ne(vda, vda);
503*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
504*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
505*67e74705SXin Li
506*67e74705SXin Li dummy();
507*67e74705SXin Li // CHECK: @dummy
508*67e74705SXin Li
509*67e74705SXin Li res_i = vec_all_nge(vda, vda);
510*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
511*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
512*67e74705SXin Li
513*67e74705SXin Li res_i = vec_all_ngt(vda, vda);
514*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
515*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
516*67e74705SXin Li
517*67e74705SXin Li /* vec_any_eq */
518*67e74705SXin Li res_i = vec_any_eq(vsll, vsll);
519*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
520*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
521*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
522*67e74705SXin Li
523*67e74705SXin Li res_i = vec_any_eq(vsll, vbll);
524*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
525*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
526*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
527*67e74705SXin Li
528*67e74705SXin Li res_i = vec_any_eq(vull, vull);
529*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
530*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
531*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
532*67e74705SXin Li
533*67e74705SXin Li res_i = vec_any_eq(vull, vbll);
534*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
535*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
536*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
537*67e74705SXin Li
538*67e74705SXin Li res_i = vec_any_eq(vbll, vsll);
539*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
540*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
541*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
542*67e74705SXin Li
543*67e74705SXin Li res_i = vec_any_eq(vbll, vull);
544*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
545*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
546*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
547*67e74705SXin Li
548*67e74705SXin Li res_i = vec_any_eq(vbll, vbll);
549*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
550*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
551*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
552*67e74705SXin Li
553*67e74705SXin Li res_i = vec_any_eq(vda, vda);
554*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
555*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
556*67e74705SXin Li
557*67e74705SXin Li /* vec_any_ne */
558*67e74705SXin Li res_i = vec_any_ne(vsll, vsll);
559*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
560*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
561*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
562*67e74705SXin Li
563*67e74705SXin Li res_i = vec_any_ne(vsll, vbll);
564*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
565*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
566*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
567*67e74705SXin Li
568*67e74705SXin Li res_i = vec_any_ne(vull, vull);
569*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
570*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
571*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
572*67e74705SXin Li
573*67e74705SXin Li res_i = vec_any_ne(vull, vbll);
574*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
575*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
576*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
577*67e74705SXin Li
578*67e74705SXin Li res_i = vec_any_ne(vbll, vsll);
579*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
580*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
581*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
582*67e74705SXin Li
583*67e74705SXin Li res_i = vec_any_ne(vbll, vull);
584*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
585*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
586*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
587*67e74705SXin Li
588*67e74705SXin Li res_i = vec_any_ne(vbll, vbll);
589*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpequd.p
590*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
591*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
592*67e74705SXin Li
593*67e74705SXin Li res_i = vec_any_ne(vda, vda);
594*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
595*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
596*67e74705SXin Li
597*67e74705SXin Li /* vec_all_ge */
598*67e74705SXin Li res_i = vec_all_ge(vsll, vsll);
599*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
600*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
601*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
602*67e74705SXin Li
603*67e74705SXin Li res_i = vec_all_ge(vsll, vbll);
604*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
605*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
606*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
607*67e74705SXin Li
608*67e74705SXin Li res_i = vec_all_ge(vull, vull);
609*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
610*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
611*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
612*67e74705SXin Li
613*67e74705SXin Li res_i = vec_all_ge(vull, vbll);
614*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
615*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
616*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
617*67e74705SXin Li
618*67e74705SXin Li res_i = vec_all_ge(vbll, vsll);
619*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
620*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
621*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
622*67e74705SXin Li
623*67e74705SXin Li res_i = vec_all_ge(vbll, vull);
624*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
625*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
626*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
627*67e74705SXin Li
628*67e74705SXin Li res_i = vec_all_ge(vbll, vbll);
629*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
630*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
631*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
632*67e74705SXin Li
633*67e74705SXin Li res_i = vec_all_ge(vda, vda);
634*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
635*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
636*67e74705SXin Li
637*67e74705SXin Li /* vec_all_gt */
638*67e74705SXin Li res_i = vec_all_gt(vsll, vsll);
639*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
640*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
641*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
642*67e74705SXin Li
643*67e74705SXin Li res_i = vec_all_gt(vsll, vbll);
644*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
645*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
646*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
647*67e74705SXin Li
648*67e74705SXin Li res_i = vec_all_gt(vull, vull);
649*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
650*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
651*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
652*67e74705SXin Li
653*67e74705SXin Li res_i = vec_all_gt(vull, vbll);
654*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
655*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
656*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
657*67e74705SXin Li
658*67e74705SXin Li res_i = vec_all_gt(vbll, vsll);
659*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
660*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
661*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
662*67e74705SXin Li
663*67e74705SXin Li res_i = vec_all_gt(vbll, vull);
664*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
665*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
666*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
667*67e74705SXin Li
668*67e74705SXin Li res_i = vec_all_gt(vbll, vbll);
669*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
670*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
671*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
672*67e74705SXin Li
673*67e74705SXin Li res_i = vec_all_gt(vda, vda);
674*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
675*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
676*67e74705SXin Li
677*67e74705SXin Li /* vec_all_le */
678*67e74705SXin Li res_i = vec_all_le(vsll, vsll);
679*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
680*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
681*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
682*67e74705SXin Li
683*67e74705SXin Li res_i = vec_all_le(vsll, vbll);
684*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
685*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
686*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
687*67e74705SXin Li
688*67e74705SXin Li res_i = vec_all_le(vull, vull);
689*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
690*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
691*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
692*67e74705SXin Li
693*67e74705SXin Li res_i = vec_all_le(vull, vbll);
694*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
695*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
696*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
697*67e74705SXin Li
698*67e74705SXin Li res_i = vec_all_le(vbll, vsll);
699*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
700*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
701*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
702*67e74705SXin Li
703*67e74705SXin Li res_i = vec_all_le(vbll, vull);
704*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
705*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
706*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
707*67e74705SXin Li
708*67e74705SXin Li res_i = vec_all_le(vbll, vbll);
709*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
710*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
711*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
712*67e74705SXin Li
713*67e74705SXin Li res_i = vec_all_le(vda, vda);
714*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
715*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
716*67e74705SXin Li
717*67e74705SXin Li /* vec_all_lt */
718*67e74705SXin Li res_i = vec_all_lt(vsll, vsll);
719*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
720*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
721*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
722*67e74705SXin Li
723*67e74705SXin Li res_i = vec_all_lt(vsll, vbll);
724*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
725*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
726*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
727*67e74705SXin Li
728*67e74705SXin Li res_i = vec_all_lt(vull, vull);
729*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
730*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
731*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
732*67e74705SXin Li
733*67e74705SXin Li res_i = vec_all_lt(vull, vbll);
734*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
735*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
736*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
737*67e74705SXin Li
738*67e74705SXin Li res_i = vec_all_lt(vbll, vsll);
739*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
740*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
741*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
742*67e74705SXin Li
743*67e74705SXin Li res_i = vec_all_lt(vbll, vull);
744*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
745*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
746*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
747*67e74705SXin Li
748*67e74705SXin Li res_i = vec_all_lt(vbll, vbll);
749*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
750*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
751*67e74705SXin Li // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
752*67e74705SXin Li
753*67e74705SXin Li res_i = vec_all_lt(vda, vda);
754*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
755*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
756*67e74705SXin Li
757*67e74705SXin Li res_i = vec_all_nan(vda);
758*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
759*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
760*67e74705SXin Li
761*67e74705SXin Li /* vec_any_ge */
762*67e74705SXin Li res_i = vec_any_ge(vsll, vsll);
763*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
764*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
765*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
766*67e74705SXin Li
767*67e74705SXin Li res_i = vec_any_ge(vsll, vbll);
768*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
769*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
770*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
771*67e74705SXin Li
772*67e74705SXin Li res_i = vec_any_ge(vull, vull);
773*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
774*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
775*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
776*67e74705SXin Li
777*67e74705SXin Li res_i = vec_any_ge(vull, vbll);
778*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
779*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
780*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
781*67e74705SXin Li
782*67e74705SXin Li res_i = vec_any_ge(vbll, vsll);
783*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
784*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
785*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
786*67e74705SXin Li
787*67e74705SXin Li res_i = vec_any_ge(vbll, vull);
788*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
789*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
790*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
791*67e74705SXin Li
792*67e74705SXin Li res_i = vec_any_ge(vbll, vbll);
793*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
794*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
795*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
796*67e74705SXin Li
797*67e74705SXin Li res_i = vec_any_ge(vda, vda);
798*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
799*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
800*67e74705SXin Li
801*67e74705SXin Li /* vec_any_gt */
802*67e74705SXin Li res_i = vec_any_gt(vsll, vsll);
803*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
804*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
805*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
806*67e74705SXin Li
807*67e74705SXin Li res_i = vec_any_gt(vsll, vbll);
808*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
809*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
810*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
811*67e74705SXin Li
812*67e74705SXin Li res_i = vec_any_gt(vull, vull);
813*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
814*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
815*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
816*67e74705SXin Li
817*67e74705SXin Li res_i = vec_any_gt(vull, vbll);
818*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
819*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
820*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
821*67e74705SXin Li
822*67e74705SXin Li res_i = vec_any_gt(vbll, vsll);
823*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
824*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
825*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
826*67e74705SXin Li
827*67e74705SXin Li res_i = vec_any_gt(vbll, vull);
828*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
829*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
830*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
831*67e74705SXin Li
832*67e74705SXin Li res_i = vec_any_gt(vbll, vbll);
833*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
834*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
835*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
836*67e74705SXin Li
837*67e74705SXin Li res_i = vec_any_gt(vda, vda);
838*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
839*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
840*67e74705SXin Li
841*67e74705SXin Li /* vec_any_le */
842*67e74705SXin Li res_i = vec_any_le(vsll, vsll);
843*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
844*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
845*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
846*67e74705SXin Li
847*67e74705SXin Li res_i = vec_any_le(vsll, vbll);
848*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
849*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
850*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
851*67e74705SXin Li
852*67e74705SXin Li res_i = vec_any_le(vull, vull);
853*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
854*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
855*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
856*67e74705SXin Li
857*67e74705SXin Li res_i = vec_any_le(vull, vbll);
858*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
859*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
860*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
861*67e74705SXin Li
862*67e74705SXin Li res_i = vec_any_le(vbll, vsll);
863*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
864*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
865*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
866*67e74705SXin Li
867*67e74705SXin Li res_i = vec_any_le(vbll, vull);
868*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
869*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
870*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
871*67e74705SXin Li
872*67e74705SXin Li res_i = vec_any_le(vbll, vbll);
873*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
874*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
875*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
876*67e74705SXin Li
877*67e74705SXin Li res_i = vec_any_le(vda, vda);
878*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
879*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
880*67e74705SXin Li
881*67e74705SXin Li /* vec_any_lt */
882*67e74705SXin Li res_i = vec_any_lt(vsll, vsll);
883*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
884*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
885*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
886*67e74705SXin Li
887*67e74705SXin Li res_i = vec_any_lt(vsll, vbll);
888*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
889*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
890*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
891*67e74705SXin Li
892*67e74705SXin Li res_i = vec_any_lt(vull, vull);
893*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
894*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
895*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
896*67e74705SXin Li
897*67e74705SXin Li res_i = vec_any_lt(vull, vbll);
898*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
899*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
900*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
901*67e74705SXin Li
902*67e74705SXin Li res_i = vec_any_lt(vbll, vsll);
903*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
904*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
905*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
906*67e74705SXin Li
907*67e74705SXin Li res_i = vec_any_lt(vbll, vull);
908*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
909*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
910*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
911*67e74705SXin Li
912*67e74705SXin Li res_i = vec_any_lt(vbll, vbll);
913*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vcmpgtud.p
914*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
915*67e74705SXin Li // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
916*67e74705SXin Li
917*67e74705SXin Li res_i = vec_any_lt(vda, vda);
918*67e74705SXin Li // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
919*67e74705SXin Li // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
920*67e74705SXin Li
921*67e74705SXin Li /* vec_max */
922*67e74705SXin Li res_vsll = vec_max(vsll, vsll);
923*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
924*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
925*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
926*67e74705SXin Li
927*67e74705SXin Li res_vsll = vec_max(vbll, vsll);
928*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
929*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
930*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
931*67e74705SXin Li
932*67e74705SXin Li res_vsll = vec_max(vsll, vbll);
933*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
934*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
935*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
936*67e74705SXin Li
937*67e74705SXin Li res_vull = vec_max(vull, vull);
938*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxud
939*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxud
940*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
941*67e74705SXin Li
942*67e74705SXin Li res_vull = vec_max(vbll, vull);
943*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxud
944*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxud
945*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
946*67e74705SXin Li
947*67e74705SXin Li res_vull = vec_max(vull, vbll);
948*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxud
949*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxud
950*67e74705SXin Li // CHECK-PPC: error: call to 'vec_max' is ambiguous
951*67e74705SXin Li
952*67e74705SXin Li /* vec_mergeh */
953*67e74705SXin Li res_vbll = vec_mergeh(vbll, vbll);
954*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
955*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
956*67e74705SXin Li
957*67e74705SXin Li res_vbll = vec_mergel(vbll, vbll);
958*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vperm
959*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vperm
960*67e74705SXin Li
961*67e74705SXin Li /* vec_min */
962*67e74705SXin Li res_vsll = vec_min(vsll, vsll);
963*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
964*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
965*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
966*67e74705SXin Li
967*67e74705SXin Li res_vsll = vec_min(vbll, vsll);
968*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
969*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
970*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
971*67e74705SXin Li
972*67e74705SXin Li res_vsll = vec_min(vsll, vbll);
973*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
974*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
975*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
976*67e74705SXin Li
977*67e74705SXin Li res_vull = vec_min(vull, vull);
978*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminud
979*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminud
980*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
981*67e74705SXin Li
982*67e74705SXin Li res_vull = vec_min(vbll, vull);
983*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminud
984*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminud
985*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
986*67e74705SXin Li
987*67e74705SXin Li res_vull = vec_min(vull, vbll);
988*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminud
989*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminud
990*67e74705SXin Li // CHECK-PPC: error: call to 'vec_min' is ambiguous
991*67e74705SXin Li
992*67e74705SXin Li /* vec_mule */
993*67e74705SXin Li res_vsll = vec_mule(vsi, vsi);
994*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmulesw
995*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmulosw
996*67e74705SXin Li // CHECK-PPC: error: call to 'vec_mule' is ambiguous
997*67e74705SXin Li
998*67e74705SXin Li res_vull = vec_mule(vui , vui);
999*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmuleuw
1000*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmulouw
1001*67e74705SXin Li // CHECK-PPC: error: call to 'vec_mule' is ambiguous
1002*67e74705SXin Li
1003*67e74705SXin Li /* vec_mulo */
1004*67e74705SXin Li res_vsll = vec_mulo(vsi, vsi);
1005*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmulosw
1006*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmulesw
1007*67e74705SXin Li // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
1008*67e74705SXin Li
1009*67e74705SXin Li res_vull = vec_mulo(vui, vui);
1010*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmulouw
1011*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmuleuw
1012*67e74705SXin Li // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
1013*67e74705SXin Li
1014*67e74705SXin Li /* vec_packs */
1015*67e74705SXin Li res_vsi = vec_packs(vsll, vsll);
1016*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vpksdss
1017*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vpksdss
1018*67e74705SXin Li // CHECK-PPC: error: call to 'vec_packs' is ambiguous
1019*67e74705SXin Li
1020*67e74705SXin Li res_vui = vec_packs(vull, vull);
1021*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vpkudus
1022*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vpkudus
1023*67e74705SXin Li // CHECK-PPC: error: call to 'vec_packs' is ambiguous
1024*67e74705SXin Li
1025*67e74705SXin Li /* vec_packsu */
1026*67e74705SXin Li res_vui = vec_packsu(vsll, vsll);
1027*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vpksdus
1028*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vpksdus
1029*67e74705SXin Li // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
1030*67e74705SXin Li
1031*67e74705SXin Li res_vui = vec_packsu(vull, vull);
1032*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vpkudus
1033*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vpkudus
1034*67e74705SXin Li // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
1035*67e74705SXin Li
1036*67e74705SXin Li /* vec_rl */
1037*67e74705SXin Li res_vsll = vec_rl(vsll, vull);
1038*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vrld
1039*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vrld
1040*67e74705SXin Li // CHECK-PPC: error: call to 'vec_rl' is ambiguous
1041*67e74705SXin Li
1042*67e74705SXin Li res_vull = vec_rl(vull, vull);
1043*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vrld
1044*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vrld
1045*67e74705SXin Li // CHECK-PPC: error: call to 'vec_rl' is ambiguous
1046*67e74705SXin Li
1047*67e74705SXin Li /* vec_sl */
1048*67e74705SXin Li res_vsll = vec_sl(vsll, vull);
1049*67e74705SXin Li // CHECK: shl <2 x i64>
1050*67e74705SXin Li // CHECK-LE: shl <2 x i64>
1051*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sl' is ambiguous
1052*67e74705SXin Li
1053*67e74705SXin Li res_vull = vec_sl(vull, vull);
1054*67e74705SXin Li // CHECK: shl <2 x i64>
1055*67e74705SXin Li // CHECK-LE: shl <2 x i64>
1056*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sl' is ambiguous
1057*67e74705SXin Li
1058*67e74705SXin Li /* vec_sr */
1059*67e74705SXin Li res_vsll = vec_sr(vsll, vull);
1060*67e74705SXin Li // CHECK: lshr <2 x i64>
1061*67e74705SXin Li // CHECK-LE: lshr <2 x i64>
1062*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sr' is ambiguous
1063*67e74705SXin Li
1064*67e74705SXin Li res_vull = vec_sr(vull, vull);
1065*67e74705SXin Li // CHECK: lshr <2 x i64>
1066*67e74705SXin Li // CHECK-LE: lshr <2 x i64>
1067*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sr' is ambiguous
1068*67e74705SXin Li
1069*67e74705SXin Li /* vec_sra */
1070*67e74705SXin Li res_vsll = vec_sra(vsll, vull);
1071*67e74705SXin Li // CHECK: ashr <2 x i64>
1072*67e74705SXin Li // CHECK-LE: ashr <2 x i64>
1073*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sra' is ambiguous
1074*67e74705SXin Li
1075*67e74705SXin Li res_vull = vec_sra(vull, vull);
1076*67e74705SXin Li // CHECK: ashr <2 x i64>
1077*67e74705SXin Li // CHECK-LE: ashr <2 x i64>
1078*67e74705SXin Li // CHECK-PPC: error: call to 'vec_sra' is ambiguous
1079*67e74705SXin Li
1080*67e74705SXin Li /* vec_splats */
1081*67e74705SXin Li res_vsll = vec_splats(sll);
1082*67e74705SXin Li // CHECK: insertelement <2 x i64>
1083*67e74705SXin Li // CHECK-LE: insertelement <2 x i64>
1084*67e74705SXin Li
1085*67e74705SXin Li res_vull = vec_splats(ull);
1086*67e74705SXin Li // CHECK: insertelement <2 x i64>
1087*67e74705SXin Li // CHECK-LE: insertelement <2 x i64>
1088*67e74705SXin Li
1089*67e74705SXin Li res_vsx = vec_splats(sx);
1090*67e74705SXin Li // CHECK: insertelement <1 x i128>
1091*67e74705SXin Li // CHECK-LE: insertelement <1 x i128>
1092*67e74705SXin Li
1093*67e74705SXin Li res_vux = vec_splats(ux);
1094*67e74705SXin Li // CHECK: insertelement <1 x i128>
1095*67e74705SXin Li // CHECK-LE: insertelement <1 x i128>
1096*67e74705SXin Li
1097*67e74705SXin Li res_vd = vec_splats(d);
1098*67e74705SXin Li // CHECK: insertelement <2 x double>
1099*67e74705SXin Li // CHECK-LE: insertelement <2 x double>
1100*67e74705SXin Li
1101*67e74705SXin Li
1102*67e74705SXin Li /* vec_unpackh */
1103*67e74705SXin Li res_vsll = vec_unpackh(vsi);
1104*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupkhsw
1105*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupklsw
1106*67e74705SXin Li // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
1107*67e74705SXin Li
1108*67e74705SXin Li res_vbll = vec_unpackh(vbi);
1109*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupkhsw
1110*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupklsw
1111*67e74705SXin Li // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
1112*67e74705SXin Li
1113*67e74705SXin Li /* vec_unpackl */
1114*67e74705SXin Li res_vsll = vec_unpackl(vsi);
1115*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupklsw
1116*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupkhsw
1117*67e74705SXin Li // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
1118*67e74705SXin Li
1119*67e74705SXin Li res_vbll = vec_unpackl(vbi);
1120*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupklsw
1121*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupkhsw
1122*67e74705SXin Li // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
1123*67e74705SXin Li
1124*67e74705SXin Li /* vec_vpksdss */
1125*67e74705SXin Li res_vsi = vec_vpksdss(vsll, vsll);
1126*67e74705SXin Li // CHECK: llvm.ppc.altivec.vpksdss
1127*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vpksdss
1128*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdss'
1129*67e74705SXin Li
1130*67e74705SXin Li /* vec_vpksdus */
1131*67e74705SXin Li res_vui = vec_vpksdus(vsll, vsll);
1132*67e74705SXin Li // CHECK: llvm.ppc.altivec.vpksdus
1133*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vpksdus
1134*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdus'
1135*67e74705SXin Li
1136*67e74705SXin Li /* vec_vpkudum */
1137*67e74705SXin Li res_vsi = vec_vpkudum(vsll, vsll);
1138*67e74705SXin Li // CHECK: vperm
1139*67e74705SXin Li // CHECK-LE: vperm
1140*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudum'
1141*67e74705SXin Li
1142*67e74705SXin Li res_vui = vec_vpkudum(vull, vull);
1143*67e74705SXin Li // CHECK: vperm
1144*67e74705SXin Li // CHECK-LE: vperm
1145*67e74705SXin Li
1146*67e74705SXin Li res_vui = vec_vpkudus(vull, vull);
1147*67e74705SXin Li // CHECK: llvm.ppc.altivec.vpkudus
1148*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vpkudus
1149*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudus'
1150*67e74705SXin Li
1151*67e74705SXin Li /* vec_vupkhsw */
1152*67e74705SXin Li res_vsll = vec_vupkhsw(vsi);
1153*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupkhsw
1154*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupklsw
1155*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vupkhsw'
1156*67e74705SXin Li
1157*67e74705SXin Li res_vbll = vec_vupkhsw(vbi);
1158*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupkhsw
1159*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupklsw
1160*67e74705SXin Li
1161*67e74705SXin Li /* vec_vupklsw */
1162*67e74705SXin Li res_vsll = vec_vupklsw(vsi);
1163*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupklsw
1164*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupkhsw
1165*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vupklsw'
1166*67e74705SXin Li
1167*67e74705SXin Li res_vbll = vec_vupklsw(vbi);
1168*67e74705SXin Li // CHECK: llvm.ppc.altivec.vupklsw
1169*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vupkhsw
1170*67e74705SXin Li
1171*67e74705SXin Li /* vec_max */
1172*67e74705SXin Li res_vsll = vec_max(vsll, vsll);
1173*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
1174*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
1175*67e74705SXin Li
1176*67e74705SXin Li res_vsll = vec_max(vbll, vsll);
1177*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
1178*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
1179*67e74705SXin Li
1180*67e74705SXin Li res_vsll = vec_max(vsll, vbll);
1181*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxsd
1182*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxsd
1183*67e74705SXin Li
1184*67e74705SXin Li res_vull = vec_max(vull, vull);
1185*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxud
1186*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxud
1187*67e74705SXin Li
1188*67e74705SXin Li res_vull = vec_max(vbll, vull);
1189*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vmaxud
1190*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vmaxud
1191*67e74705SXin Li
1192*67e74705SXin Li /* vec_min */
1193*67e74705SXin Li res_vsll = vec_min(vsll, vsll);
1194*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
1195*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
1196*67e74705SXin Li
1197*67e74705SXin Li res_vsll = vec_min(vbll, vsll);
1198*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
1199*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
1200*67e74705SXin Li
1201*67e74705SXin Li res_vsll = vec_min(vsll, vbll);
1202*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminsd
1203*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminsd
1204*67e74705SXin Li
1205*67e74705SXin Li res_vull = vec_min(vull, vull);
1206*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminud
1207*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminud
1208*67e74705SXin Li
1209*67e74705SXin Li res_vull = vec_min(vbll, vull);
1210*67e74705SXin Li // CHECK: @llvm.ppc.altivec.vminud
1211*67e74705SXin Li // CHECK-LE: @llvm.ppc.altivec.vminud
1212*67e74705SXin Li
1213*67e74705SXin Li /* vec_nand */
1214*67e74705SXin Li res_vsc = vec_nand(vsc, vsc);
1215*67e74705SXin Li // CHECK: [[T1:%.+]] = and <16 x i8>
1216*67e74705SXin Li // CHECK: xor <16 x i8> [[T1]], <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>
1217*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <16 x i8>
1218*67e74705SXin Li // CHECK-LE: xor <16 x i8> [[T1]], <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>
1219*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_nand' is invalid in C99
1220*67e74705SXin Li
1221*67e74705SXin Li res_vsc = vec_nand(vbc, vbc);
1222*67e74705SXin Li // CHECK: [[T1:%.+]] = and <16 x i8>
1223*67e74705SXin Li // CHECK: xor <16 x i8> [[T1]], <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>
1224*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <16 x i8>
1225*67e74705SXin Li // CHECK-LE: xor <16 x i8> [[T1]], <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>
1226*67e74705SXin Li
1227*67e74705SXin Li res_vuc = vec_nand(vuc, vuc);
1228*67e74705SXin Li // CHECK: [[T1:%.+]] = and <16 x i8>
1229*67e74705SXin Li // CHECK: xor <16 x i8> [[T1]], <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>
1230*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <16 x i8>
1231*67e74705SXin Li // CHECK-LE: xor <16 x i8> [[T1]], <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>
1232*67e74705SXin Li
1233*67e74705SXin Li res_vss = vec_nand(vss, vss);
1234*67e74705SXin Li // CHECK: [[T1:%.+]] = and <8 x i16>
1235*67e74705SXin Li // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1236*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <8 x i16>
1237*67e74705SXin Li // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1238*67e74705SXin Li
1239*67e74705SXin Li res_vss = vec_nand(vbs, vbs);
1240*67e74705SXin Li // CHECK: [[T1:%.+]] = and <8 x i16>
1241*67e74705SXin Li // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1242*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <8 x i16>
1243*67e74705SXin Li // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1244*67e74705SXin Li
1245*67e74705SXin Li res_vus = vec_nand(vus, vus);
1246*67e74705SXin Li // CHECK: [[T1:%.+]] = and <8 x i16>
1247*67e74705SXin Li // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1248*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <8 x i16>
1249*67e74705SXin Li // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1250*67e74705SXin Li
1251*67e74705SXin Li res_vsi = vec_nand(vsi, vsi);
1252*67e74705SXin Li // CHECK: [[T1:%.+]] = and <4 x i32>
1253*67e74705SXin Li // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1254*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <4 x i32>
1255*67e74705SXin Li // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1256*67e74705SXin Li
1257*67e74705SXin Li res_vsi = vec_nand(vbi, vbi);
1258*67e74705SXin Li // CHECK: [[T1:%.+]] = and <4 x i32>
1259*67e74705SXin Li // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1260*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <4 x i32>
1261*67e74705SXin Li // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1262*67e74705SXin Li
1263*67e74705SXin Li res_vui = vec_nand(vui, vui);
1264*67e74705SXin Li // CHECK: [[T1:%.+]] = and <4 x i32>
1265*67e74705SXin Li // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1266*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <4 x i32>
1267*67e74705SXin Li // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
1268*67e74705SXin Li
1269*67e74705SXin Li res_vsll = vec_nand(vsll, vsll);
1270*67e74705SXin Li // CHECK: [[T1:%.+]] = and <2 x i64>
1271*67e74705SXin Li // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1272*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <2 x i64>
1273*67e74705SXin Li // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1274*67e74705SXin Li
1275*67e74705SXin Li res_vsll = vec_nand(vbll, vbll);
1276*67e74705SXin Li // CHECK: [[T1:%.+]] = and <2 x i64>
1277*67e74705SXin Li // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1278*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <2 x i64>
1279*67e74705SXin Li // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1280*67e74705SXin Li
1281*67e74705SXin Li res_vull = vec_nand(vull, vull);
1282*67e74705SXin Li // CHECK: [[T1:%.+]] = and <2 x i64>
1283*67e74705SXin Li // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1284*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = and <2 x i64>
1285*67e74705SXin Li // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
1286*67e74705SXin Li
1287*67e74705SXin Li /* vec_orc */
1288*67e74705SXin Li res_vsc = vec_orc(vsc, vsc);
1289*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1290*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1291*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1292*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1293*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_orc' is invalid in C99
1294*67e74705SXin Li
1295*67e74705SXin Li res_vsc = vec_orc(vsc, vbc);
1296*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1297*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1298*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1299*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1300*67e74705SXin Li
1301*67e74705SXin Li res_vsc = vec_orc(vbc, vsc);
1302*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1303*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1304*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1305*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1306*67e74705SXin Li
1307*67e74705SXin Li res_vuc = vec_orc(vuc, vuc);
1308*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1309*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1310*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1311*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1312*67e74705SXin Li
1313*67e74705SXin Li res_vuc = vec_orc(vuc, vbc);
1314*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1315*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1316*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1317*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1318*67e74705SXin Li
1319*67e74705SXin Li res_vuc = vec_orc(vbc, vuc);
1320*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1321*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1322*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1323*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1324*67e74705SXin Li
1325*67e74705SXin Li res_vbc = vec_orc(vbc, vbc);
1326*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <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>
1327*67e74705SXin Li // CHECK: or <16 x i8> {{%.+}}, [[T1]]
1328*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <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>
1329*67e74705SXin Li // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
1330*67e74705SXin Li
1331*67e74705SXin Li res_vss = vec_orc(vss, vss);
1332*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1333*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1334*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1335*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1336*67e74705SXin Li
1337*67e74705SXin Li res_vss = vec_orc(vss, vbs);
1338*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1339*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1340*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1341*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1342*67e74705SXin Li
1343*67e74705SXin Li res_vss = vec_orc(vbs, vss);
1344*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1345*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1346*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1347*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1348*67e74705SXin Li
1349*67e74705SXin Li res_vus = vec_orc(vus, vus);
1350*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1351*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1352*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1353*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1354*67e74705SXin Li
1355*67e74705SXin Li res_vus = vec_orc(vus, vbs);
1356*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1357*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1358*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1359*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1360*67e74705SXin Li
1361*67e74705SXin Li res_vus = vec_orc(vbs, vus);
1362*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1363*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1364*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1365*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1366*67e74705SXin Li
1367*67e74705SXin Li res_vbs = vec_orc(vbs, vbs);
1368*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1369*67e74705SXin Li // CHECK: or <8 x i16> {{%.+}}, [[T1]]
1370*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
1371*67e74705SXin Li // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
1372*67e74705SXin Li
1373*67e74705SXin Li res_vsi = vec_orc(vsi, vsi);
1374*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1375*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1376*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1377*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1378*67e74705SXin Li
1379*67e74705SXin Li res_vsi = vec_orc(vsi, vbi);
1380*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1381*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1382*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1383*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1384*67e74705SXin Li
1385*67e74705SXin Li res_vsi = vec_orc(vbi, vsi);
1386*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1387*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1388*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1389*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1390*67e74705SXin Li
1391*67e74705SXin Li res_vui = vec_orc(vui, vui);
1392*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1393*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1394*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1395*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1396*67e74705SXin Li
1397*67e74705SXin Li res_vui = vec_orc(vui, vbi);
1398*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1399*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1400*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1401*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1402*67e74705SXin Li
1403*67e74705SXin Li res_vui = vec_orc(vbi, vui);
1404*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1405*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1406*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1407*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1408*67e74705SXin Li
1409*67e74705SXin Li res_vbi = vec_orc(vbi, vbi);
1410*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1411*67e74705SXin Li // CHECK: or <4 x i32> {{%.+}}, [[T1]]
1412*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1413*67e74705SXin Li // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1414*67e74705SXin Li
1415*67e74705SXin Li res_vsll = vec_orc(vsll, vsll);
1416*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1417*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1418*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1419*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1420*67e74705SXin Li
1421*67e74705SXin Li res_vsll = vec_orc(vsll, vbll);
1422*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1423*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1424*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1425*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1426*67e74705SXin Li
1427*67e74705SXin Li res_vsll = vec_orc(vbll, vsll);
1428*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1429*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1430*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1431*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1432*67e74705SXin Li
1433*67e74705SXin Li res_vull = vec_orc(vull, vull);
1434*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1435*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1436*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1437*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1438*67e74705SXin Li
1439*67e74705SXin Li res_vull = vec_orc(vull, vbll);
1440*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1441*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1442*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1443*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1444*67e74705SXin Li
1445*67e74705SXin Li res_vull = vec_orc(vbll, vull);
1446*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1447*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1448*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1449*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1450*67e74705SXin Li
1451*67e74705SXin Li res_vbll = vec_orc(vbll, vbll);
1452*67e74705SXin Li // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1453*67e74705SXin Li // CHECK: or <2 x i64> {{%.+}}, [[T1]]
1454*67e74705SXin Li // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1455*67e74705SXin Li // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1456*67e74705SXin Li
1457*67e74705SXin Li /* vec_sub */
1458*67e74705SXin Li res_vsll = vec_sub(vsll, vsll);
1459*67e74705SXin Li // CHECK: sub <2 x i64>
1460*67e74705SXin Li // CHECK-LE: sub <2 x i64>
1461*67e74705SXin Li
1462*67e74705SXin Li res_vull = vec_sub(vull, vull);
1463*67e74705SXin Li // CHECK: sub <2 x i64>
1464*67e74705SXin Li // CHECK-LE: sub <2 x i64>
1465*67e74705SXin Li
1466*67e74705SXin Li res_vd = vec_sub(vda, vda);
1467*67e74705SXin Li // CHECK: fsub <2 x double>
1468*67e74705SXin Li // CHECK-LE: fsub <2 x double>
1469*67e74705SXin Li
1470*67e74705SXin Li res_vsx = vec_sub(vsx, vsx);
1471*67e74705SXin Li // CHECK: sub <1 x i128>
1472*67e74705SXin Li // CHECK-LE: sub <1 x i128>
1473*67e74705SXin Li
1474*67e74705SXin Li res_vux = vec_sub(vux, vux);
1475*67e74705SXin Li // CHECK: sub <1 x i128>
1476*67e74705SXin Li // CHECK-LE: sub <1 x i128>
1477*67e74705SXin Li
1478*67e74705SXin Li /* vec_vbpermq */
1479*67e74705SXin Li res_vsll = vec_vbpermq(vsc, vsc);
1480*67e74705SXin Li // CHECK: llvm.ppc.altivec.vbpermq
1481*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vbpermq
1482*67e74705SXin Li
1483*67e74705SXin Li res_vull = vec_vbpermq(vuc, vuc);
1484*67e74705SXin Li // CHECK: llvm.ppc.altivec.vbpermq
1485*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vbpermq
1486*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vbpermq'
1487*67e74705SXin Li
1488*67e74705SXin Li /* vec_vgbbd */
1489*67e74705SXin Li res_vsc = vec_vgbbd(vsc);
1490*67e74705SXin Li // CHECK: llvm.ppc.altivec.vgbbd
1491*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vgbbd
1492*67e74705SXin Li
1493*67e74705SXin Li res_vuc = vec_vgbbd(vuc);
1494*67e74705SXin Li // CHECK: llvm.ppc.altivec.vgbbd
1495*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vgbbd
1496*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_vgbbd'
1497*67e74705SXin Li
1498*67e74705SXin Li res_vuc = vec_gb(vuc);
1499*67e74705SXin Li // CHECK: llvm.ppc.altivec.vgbbd
1500*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vgbbd
1501*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_gb'
1502*67e74705SXin Li
1503*67e74705SXin Li res_vull = vec_bperm(vux, vux);
1504*67e74705SXin Li // CHECK: llvm.ppc.altivec.vbpermq
1505*67e74705SXin Li // CHECK-LE: llvm.ppc.altivec.vbpermq
1506*67e74705SXin Li // CHECK-PPC: warning: implicit declaration of function 'vec_bperm'
1507*67e74705SXin Li }
1508