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