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
10 vector signed char vsc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
11 vector unsigned char vuc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
12 vector int vi = { -1, 2, -3, 4 };
13 vector unsigned int vui = { 1, 2, 3, 4 };
14 vector bool int vbi = {0, -1, -1, 0};
15 vector bool long long vbll = { 1, 0 };
16 vector signed long long vsll = { 1, 2 };
17 vector unsigned long long vull = { 1, 2 };
18 vector double vda = { 1.e-11, -132.23e10 };
21 vector signed char res_vsc;
22 vector unsigned char res_vuc;
24 vector unsigned int res_vui;
25 vector bool int res_vbi;
26 vector bool long long res_vbll;
27 vector signed long long res_vsll;
28 vector unsigned long long res_vull;
31 // CHECK-LABEL: define void @test1
35 res_vsll = vec_abs(vsll);
36 // CHECK: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
37 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
38 // CHECK-PPC: error: call to 'vec_abs' is ambiguous
40 res_vd = vec_abs(vda);
41 // CHECK: store <2 x i64> <i64 9223372036854775807, i64 9223372036854775807>, <2 x i64>*
42 // CHECK: and <2 x i64>
43 // CHECK-LE: store <2 x i64> <i64 9223372036854775807, i64 9223372036854775807>, <2 x i64>*
44 // CHECK-LE: and <2 x i64>
45 // CHECK-PPC: error: call to 'vec_abs' is ambiguous
48 res_vsll = vec_add(vsll, vsll);
49 // CHECK: add <2 x i64>
50 // CHECK-LE: add <2 x i64>
51 // CHECK-PPC: error: call to 'vec_add' is ambiguous
53 res_vull = vec_add(vull, vull);
54 // CHECK: add <2 x i64>
55 // CHECK-LE: add <2 x i64>
56 // CHECK-PPC: error: call to 'vec_add' is ambiguous
59 res_vbi = vec_mergee(vbi, vbi);
60 // CHECK: @llvm.ppc.altivec.vperm
61 // CHECK-LE: @llvm.ppc.altivec.vperm
63 res_vi = vec_mergee(vi, vi);
64 // CHECK: @llvm.ppc.altivec.vperm
65 // CHECK-LE: @llvm.ppc.altivec.vperm
67 res_vui = vec_mergee(vui, vui);
68 // CHECK: @llvm.ppc.altivec.vperm
69 // CHECK-LE: @llvm.ppc.altivec.vperm
70 // CHECK-PPC: warning: implicit declaration of function 'vec_mergee'
73 res_vbi = vec_mergeo(vbi, vbi);
74 // CHECK: @llvm.ppc.altivec.vperm
75 // CHECK-LE: @llvm.ppc.altivec.vperm
77 res_vi = vec_mergeo(vi, vi);
78 // CHECK: @llvm.ppc.altivec.vperm
79 // CHECK-LE: @llvm.ppc.altivec.vperm
81 res_vui = vec_mergeo(vui, vui);
82 // CHECK: @llvm.ppc.altivec.vperm
83 // CHECK-LE: @llvm.ppc.altivec.vperm
84 // CHECK-PPC: warning: implicit declaration of function 'vec_mergeo'
87 res_vbll = vec_cmpeq(vsll, vsll);
88 // CHECK: @llvm.ppc.altivec.vcmpequd
89 // CHECK-LE: @llvm.ppc.altivec.vcmpequd
90 // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
92 res_vbll = vec_cmpeq(vull, vull);
93 // CHECK: @llvm.ppc.altivec.vcmpequd
94 // CHECK-LE: @llvm.ppc.altivec.vcmpequd
95 // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
98 res_vbll = vec_cmpge(vsll, vsll);
99 // CHECK: @llvm.ppc.altivec.vcmpgtsd
100 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
101 // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
103 res_vbll = vec_cmpge(vull, vull);
104 // CHECK: @llvm.ppc.altivec.vcmpgtud
105 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
106 // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
109 res_vbll = vec_cmple(vsll, vsll);
110 // CHECK: @llvm.ppc.altivec.vcmpgtsd
111 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
112 // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
114 res_vbll = vec_cmple(vull, vull);
115 // CHECK: @llvm.ppc.altivec.vcmpgtud
116 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
117 // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
120 res_vbll = vec_cmpgt(vsll, vsll);
121 // CHECK: @llvm.ppc.altivec.vcmpgtsd
122 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
123 // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
125 res_vbll = vec_cmpgt(vull, vull);
126 // CHECK: @llvm.ppc.altivec.vcmpgtud
127 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
128 // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
131 res_vbll = vec_cmplt(vsll, vsll);
132 // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
133 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
134 // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
136 res_vbll = vec_cmplt(vull, vull);
137 // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
138 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
139 // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
141 /* ----------------------- predicates --------------------------- */
143 res_i = vec_all_eq(vsll, vsll);
144 // CHECK: @llvm.ppc.altivec.vcmpequd.p
145 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
146 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
148 res_i = vec_all_eq(vsll, vbll);
149 // CHECK: @llvm.ppc.altivec.vcmpequd.p
150 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
151 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
153 res_i = vec_all_eq(vull, vull);
154 // CHECK: @llvm.ppc.altivec.vcmpequd.p
155 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
156 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
158 res_i = vec_all_eq(vull, vbll);
159 // CHECK: @llvm.ppc.altivec.vcmpequd.p
160 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
161 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
163 res_i = vec_all_eq(vbll, vsll);
164 // CHECK: @llvm.ppc.altivec.vcmpequd.p
165 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
166 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
168 res_i = vec_all_eq(vbll, vull);
169 // CHECK: @llvm.ppc.altivec.vcmpequd.p
170 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
171 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
173 res_i = vec_all_eq(vbll, vbll);
174 // CHECK: @llvm.ppc.altivec.vcmpequd.p
175 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
176 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
179 res_i = vec_all_ne(vsll, vsll);
180 // CHECK: @llvm.ppc.altivec.vcmpequd.p
181 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
182 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
184 res_i = vec_all_ne(vsll, vbll);
185 // CHECK: @llvm.ppc.altivec.vcmpequd.p
186 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
187 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
189 res_i = vec_all_ne(vull, vull);
190 // CHECK: @llvm.ppc.altivec.vcmpequd.p
191 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
192 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
194 res_i = vec_all_ne(vull, vbll);
195 // CHECK: @llvm.ppc.altivec.vcmpequd.p
196 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
197 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
199 res_i = vec_all_ne(vbll, vsll);
200 // CHECK: @llvm.ppc.altivec.vcmpequd.p
201 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
202 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
204 res_i = vec_all_ne(vbll, vull);
205 // CHECK: @llvm.ppc.altivec.vcmpequd.p
206 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
207 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
209 res_i = vec_all_ne(vbll, vbll);
210 // CHECK: @llvm.ppc.altivec.vcmpequd.p
211 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
212 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
215 res_i = vec_any_eq(vsll, vsll);
216 // CHECK: @llvm.ppc.altivec.vcmpequd.p
217 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
218 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
220 res_i = vec_any_eq(vsll, vbll);
221 // CHECK: @llvm.ppc.altivec.vcmpequd.p
222 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
223 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
225 res_i = vec_any_eq(vull, vull);
226 // CHECK: @llvm.ppc.altivec.vcmpequd.p
227 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
228 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
230 res_i = vec_any_eq(vull, vbll);
231 // CHECK: @llvm.ppc.altivec.vcmpequd.p
232 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
233 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
235 res_i = vec_any_eq(vbll, vsll);
236 // CHECK: @llvm.ppc.altivec.vcmpequd.p
237 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
238 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
240 res_i = vec_any_eq(vbll, vull);
241 // CHECK: @llvm.ppc.altivec.vcmpequd.p
242 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
243 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
245 res_i = vec_any_eq(vbll, vbll);
246 // CHECK: @llvm.ppc.altivec.vcmpequd.p
247 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
248 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
251 res_i = vec_any_ne(vsll, vsll);
252 // CHECK: @llvm.ppc.altivec.vcmpequd.p
253 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
254 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
256 res_i = vec_any_ne(vsll, vbll);
257 // CHECK: @llvm.ppc.altivec.vcmpequd.p
258 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
259 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
261 res_i = vec_any_ne(vull, vull);
262 // CHECK: @llvm.ppc.altivec.vcmpequd.p
263 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
264 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
266 res_i = vec_any_ne(vull, vbll);
267 // CHECK: @llvm.ppc.altivec.vcmpequd.p
268 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
269 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
271 res_i = vec_any_ne(vbll, vsll);
272 // CHECK: @llvm.ppc.altivec.vcmpequd.p
273 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
274 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
276 res_i = vec_any_ne(vbll, vull);
277 // CHECK: @llvm.ppc.altivec.vcmpequd.p
278 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
279 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
281 res_i = vec_any_ne(vbll, vbll);
282 // CHECK: @llvm.ppc.altivec.vcmpequd.p
283 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
284 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
287 res_i = vec_all_ge(vsll, vsll);
288 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
289 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
290 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
292 res_i = vec_all_ge(vsll, vbll);
293 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
294 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
295 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
297 res_i = vec_all_ge(vull, vull);
298 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
299 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
300 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
302 res_i = vec_all_ge(vull, vbll);
303 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
304 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
305 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
307 res_i = vec_all_ge(vbll, vsll);
308 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
309 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
310 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
312 res_i = vec_all_ge(vbll, vull);
313 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
314 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
315 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
317 res_i = vec_all_ge(vbll, vbll);
318 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
319 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
320 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
323 res_i = vec_all_gt(vsll, vsll);
324 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
325 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
326 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
328 res_i = vec_all_gt(vsll, vbll);
329 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
330 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
331 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
333 res_i = vec_all_gt(vull, vull);
334 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
335 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
336 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
338 res_i = vec_all_gt(vull, vbll);
339 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
340 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
341 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
343 res_i = vec_all_gt(vbll, vsll);
344 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
345 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
346 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
348 res_i = vec_all_gt(vbll, vull);
349 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
350 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
351 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
353 res_i = vec_all_gt(vbll, vbll);
354 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
355 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
356 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
359 res_i = vec_all_le(vsll, vsll);
360 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
361 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
362 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
364 res_i = vec_all_le(vsll, vbll);
365 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
366 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
367 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
369 res_i = vec_all_le(vull, vull);
370 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
371 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
372 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
374 res_i = vec_all_le(vull, vbll);
375 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
376 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
377 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
379 res_i = vec_all_le(vbll, vsll);
380 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
381 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
382 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
384 res_i = vec_all_le(vbll, vull);
385 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
386 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
387 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
389 res_i = vec_all_le(vbll, vbll);
390 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
391 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
392 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
395 res_i = vec_all_lt(vsll, vsll);
396 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
397 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
398 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
400 res_i = vec_all_lt(vsll, vbll);
401 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
402 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
403 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
405 res_i = vec_all_lt(vull, vull);
406 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
407 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
408 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
410 res_i = vec_all_lt(vull, vbll);
411 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
412 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
413 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
415 res_i = vec_all_lt(vbll, vsll);
416 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
417 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
418 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
420 res_i = vec_all_lt(vbll, vull);
421 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
422 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
423 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
425 res_i = vec_all_lt(vbll, vbll);
426 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
427 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
428 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
431 res_i = vec_any_ge(vsll, vsll);
432 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
433 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
434 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
436 res_i = vec_any_ge(vsll, vbll);
437 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
438 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
439 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
441 res_i = vec_any_ge(vull, vull);
442 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
443 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
444 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
446 res_i = vec_any_ge(vull, vbll);
447 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
448 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
449 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
451 res_i = vec_any_ge(vbll, vsll);
452 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
453 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
454 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
456 res_i = vec_any_ge(vbll, vull);
457 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
458 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
459 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
461 res_i = vec_any_ge(vbll, vbll);
462 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
463 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
464 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
467 res_i = vec_any_gt(vsll, vsll);
468 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
469 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
470 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
472 res_i = vec_any_gt(vsll, vbll);
473 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
474 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
475 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
477 res_i = vec_any_gt(vull, vull);
478 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
479 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
480 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
482 res_i = vec_any_gt(vull, vbll);
483 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
484 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
485 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
487 res_i = vec_any_gt(vbll, vsll);
488 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
489 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
490 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
492 res_i = vec_any_gt(vbll, vull);
493 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
494 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
495 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
497 res_i = vec_any_gt(vbll, vbll);
498 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
499 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
500 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
503 res_i = vec_any_le(vsll, vsll);
504 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
505 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
506 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
508 res_i = vec_any_le(vsll, vbll);
509 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
510 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
511 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
513 res_i = vec_any_le(vull, vull);
514 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
515 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
516 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
518 res_i = vec_any_le(vull, vbll);
519 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
520 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
521 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
523 res_i = vec_any_le(vbll, vsll);
524 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
525 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
526 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
528 res_i = vec_any_le(vbll, vull);
529 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
530 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
531 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
533 res_i = vec_any_le(vbll, vbll);
534 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
535 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
536 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
539 res_i = vec_any_lt(vsll, vsll);
540 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
541 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
542 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
544 res_i = vec_any_lt(vsll, vbll);
545 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
546 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
547 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
549 res_i = vec_any_lt(vull, vull);
550 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
551 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
552 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
554 res_i = vec_any_lt(vull, vbll);
555 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
556 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
557 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
559 res_i = vec_any_lt(vbll, vsll);
560 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
561 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
562 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
564 res_i = vec_any_lt(vbll, vull);
565 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
566 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
567 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
569 res_i = vec_any_lt(vbll, vbll);
570 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
571 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
572 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
575 res_vsll = vec_max(vsll, vsll);
576 // CHECK: @llvm.ppc.altivec.vmaxsd
577 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
578 // CHECK-PPC: error: call to 'vec_max' is ambiguous
580 res_vsll = vec_max(vbll, vsll);
581 // CHECK: @llvm.ppc.altivec.vmaxsd
582 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
583 // CHECK-PPC: error: call to 'vec_max' is ambiguous
585 res_vsll = vec_max(vsll, vbll);
586 // CHECK: @llvm.ppc.altivec.vmaxsd
587 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
588 // CHECK-PPC: error: call to 'vec_max' is ambiguous
590 res_vull = vec_max(vull, vull);
591 // CHECK: @llvm.ppc.altivec.vmaxud
592 // CHECK-LE: @llvm.ppc.altivec.vmaxud
593 // CHECK-PPC: error: call to 'vec_max' is ambiguous
595 res_vull = vec_max(vbll, vull);
596 // CHECK: @llvm.ppc.altivec.vmaxud
597 // CHECK-LE: @llvm.ppc.altivec.vmaxud
598 // CHECK-PPC: error: call to 'vec_max' is ambiguous
600 res_vull = vec_max(vull, vbll);
601 // CHECK: @llvm.ppc.altivec.vmaxud
602 // CHECK-LE: @llvm.ppc.altivec.vmaxud
603 // CHECK-PPC: error: call to 'vec_max' is ambiguous
606 res_vsll = vec_min(vsll, vsll);
607 // CHECK: @llvm.ppc.altivec.vminsd
608 // CHECK-LE: @llvm.ppc.altivec.vminsd
609 // CHECK-PPC: error: call to 'vec_min' is ambiguous
611 res_vsll = vec_min(vbll, vsll);
612 // CHECK: @llvm.ppc.altivec.vminsd
613 // CHECK-LE: @llvm.ppc.altivec.vminsd
614 // CHECK-PPC: error: call to 'vec_min' is ambiguous
616 res_vsll = vec_min(vsll, vbll);
617 // CHECK: @llvm.ppc.altivec.vminsd
618 // CHECK-LE: @llvm.ppc.altivec.vminsd
619 // CHECK-PPC: error: call to 'vec_min' is ambiguous
621 res_vull = vec_min(vull, vull);
622 // CHECK: @llvm.ppc.altivec.vminud
623 // CHECK-LE: @llvm.ppc.altivec.vminud
624 // CHECK-PPC: error: call to 'vec_min' is ambiguous
626 res_vull = vec_min(vbll, vull);
627 // CHECK: @llvm.ppc.altivec.vminud
628 // CHECK-LE: @llvm.ppc.altivec.vminud
629 // CHECK-PPC: error: call to 'vec_min' is ambiguous
631 res_vull = vec_min(vull, vbll);
632 // CHECK: @llvm.ppc.altivec.vminud
633 // CHECK-LE: @llvm.ppc.altivec.vminud
634 // CHECK-PPC: error: call to 'vec_min' is ambiguous
637 res_vsll = vec_mule(vi, vi);
638 // CHECK: @llvm.ppc.altivec.vmulesw
639 // CHECK-LE: @llvm.ppc.altivec.vmulosw
640 // CHECK-PPC: error: call to 'vec_mule' is ambiguous
642 res_vull = vec_mule(vui , vui);
643 // CHECK: @llvm.ppc.altivec.vmuleuw
644 // CHECK-LE: @llvm.ppc.altivec.vmulouw
645 // CHECK-PPC: error: call to 'vec_mule' is ambiguous
648 res_vsll = vec_mulo(vi, vi);
649 // CHECK: @llvm.ppc.altivec.vmulosw
650 // CHECK-LE: @llvm.ppc.altivec.vmulesw
651 // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
653 res_vull = vec_mulo(vui, vui);
654 // CHECK: @llvm.ppc.altivec.vmulouw
655 // CHECK-LE: @llvm.ppc.altivec.vmuleuw
656 // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
659 res_vi = vec_packs(vsll, vsll);
660 // CHECK: @llvm.ppc.altivec.vpksdss
661 // CHECK-LE: @llvm.ppc.altivec.vpksdss
662 // CHECK-PPC: error: call to 'vec_packs' is ambiguous
664 res_vui = vec_packs(vull, vull);
665 // CHECK: @llvm.ppc.altivec.vpkudus
666 // CHECK-LE: @llvm.ppc.altivec.vpkudus
667 // CHECK-PPC: error: call to 'vec_packs' is ambiguous
670 res_vui = vec_packsu(vsll, vsll);
671 // CHECK: @llvm.ppc.altivec.vpksdus
672 // CHECK-LE: @llvm.ppc.altivec.vpksdus
673 // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
675 res_vui = vec_packsu(vull, vull);
676 // CHECK: @llvm.ppc.altivec.vpkudus
677 // CHECK-LE: @llvm.ppc.altivec.vpkudus
678 // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
681 res_vsll = vec_rl(vsll, vull);
682 // CHECK: @llvm.ppc.altivec.vrld
683 // CHECK-LE: @llvm.ppc.altivec.vrld
684 // CHECK-PPC: error: call to 'vec_rl' is ambiguous
686 res_vull = vec_rl(vull, vull);
687 // CHECK: @llvm.ppc.altivec.vrld
688 // CHECK-LE: @llvm.ppc.altivec.vrld
689 // CHECK-PPC: error: call to 'vec_rl' is ambiguous
692 res_vsll = vec_sl(vsll, vull);
693 // CHECK: shl <2 x i64>
694 // CHECK-LE: shl <2 x i64>
695 // CHECK-PPC: error: call to 'vec_sl' is ambiguous
697 res_vull = vec_sl(vull, vull);
698 // CHECK: shl <2 x i64>
699 // CHECK-LE: shl <2 x i64>
700 // CHECK-PPC: error: call to 'vec_sl' is ambiguous
703 res_vsll = vec_sr(vsll, vull);
704 // CHECK: ashr <2 x i64>
705 // CHECK-LE: ashr <2 x i64>
706 // CHECK-PPC: error: call to 'vec_sr' is ambiguous
708 res_vull = vec_sr(vull, vull);
709 // CHECK: lshr <2 x i64>
710 // CHECK-LE: lshr <2 x i64>
711 // CHECK-PPC: error: call to 'vec_sr' is ambiguous
714 res_vsll = vec_sra(vsll, vull);
715 // CHECK: ashr <2 x i64>
716 // CHECK-LE: ashr <2 x i64>
717 // CHECK-PPC: error: call to 'vec_sra' is ambiguous
719 res_vull = vec_sra(vull, vull);
720 // CHECK: ashr <2 x i64>
721 // CHECK-LE: ashr <2 x i64>
722 // CHECK-PPC: error: call to 'vec_sra' is ambiguous
725 res_vsll = vec_unpackh(vi);
726 // CHECK: llvm.ppc.altivec.vupkhsw
727 // CHECK-LE: llvm.ppc.altivec.vupklsw
728 // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
730 res_vbll = vec_unpackh(vbi);
731 // CHECK: llvm.ppc.altivec.vupkhsw
732 // CHECK-LE: llvm.ppc.altivec.vupklsw
733 // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
736 res_vsll = vec_unpackl(vi);
737 // CHECK: llvm.ppc.altivec.vupklsw
738 // CHECK-LE: llvm.ppc.altivec.vupkhsw
739 // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
741 res_vbll = vec_unpackl(vbi);
742 // CHECK: llvm.ppc.altivec.vupklsw
743 // CHECK-LE: llvm.ppc.altivec.vupkhsw
744 // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
747 res_vi = vec_vpksdss(vsll, vsll);
748 // CHECK: llvm.ppc.altivec.vpksdss
749 // CHECK-LE: llvm.ppc.altivec.vpksdss
750 // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdss'
753 res_vui = vec_vpksdus(vsll, vsll);
754 // CHECK: llvm.ppc.altivec.vpksdus
755 // CHECK-LE: llvm.ppc.altivec.vpksdus
756 // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdus'
759 res_vi = vec_vpkudum(vsll, vsll);
762 // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudum'
764 res_vui = vec_vpkudum(vull, vull);
768 res_vui = vec_vpkudus(vull, vull);
769 // CHECK: llvm.ppc.altivec.vpkudus
770 // CHECK-LE: llvm.ppc.altivec.vpkudus
771 // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudus'
774 res_vsll = vec_vupkhsw(vi);
775 // CHECK: llvm.ppc.altivec.vupkhsw
776 // CHECK-LE: llvm.ppc.altivec.vupklsw
777 // CHECK-PPC: warning: implicit declaration of function 'vec_vupkhsw'
779 res_vbll = vec_vupkhsw(vbi);
780 // CHECK: llvm.ppc.altivec.vupkhsw
781 // CHECK-LE: llvm.ppc.altivec.vupklsw
784 res_vsll = vec_vupklsw(vi);
785 // CHECK: llvm.ppc.altivec.vupklsw
786 // CHECK-LE: llvm.ppc.altivec.vupkhsw
787 // CHECK-PPC: warning: implicit declaration of function 'vec_vupklsw'
789 res_vbll = vec_vupklsw(vbi);
790 // CHECK: llvm.ppc.altivec.vupklsw
791 // CHECK-LE: llvm.ppc.altivec.vupkhsw
794 res_vsll = vec_max(vsll, vsll);
795 // CHECK: @llvm.ppc.altivec.vmaxsd
796 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
798 res_vsll = vec_max(vbll, vsll);
799 // CHECK: @llvm.ppc.altivec.vmaxsd
800 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
802 res_vsll = vec_max(vsll, vbll);
803 // CHECK: @llvm.ppc.altivec.vmaxsd
804 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
806 res_vull = vec_max(vull, vull);
807 // CHECK: @llvm.ppc.altivec.vmaxud
808 // CHECK-LE: @llvm.ppc.altivec.vmaxud
810 res_vull = vec_max(vbll, vull);
811 // CHECK: @llvm.ppc.altivec.vmaxud
812 // CHECK-LE: @llvm.ppc.altivec.vmaxud
815 res_vsll = vec_min(vsll, vsll);
816 // CHECK: @llvm.ppc.altivec.vminsd
817 // CHECK-LE: @llvm.ppc.altivec.vminsd
819 res_vsll = vec_min(vbll, vsll);
820 // CHECK: @llvm.ppc.altivec.vminsd
821 // CHECK-LE: @llvm.ppc.altivec.vminsd
823 res_vsll = vec_min(vsll, vbll);
824 // CHECK: @llvm.ppc.altivec.vminsd
825 // CHECK-LE: @llvm.ppc.altivec.vminsd
827 res_vull = vec_min(vull, vull);
828 // CHECK: @llvm.ppc.altivec.vminud
829 // CHECK-LE: @llvm.ppc.altivec.vminud
831 res_vull = vec_min(vbll, vull);
832 // CHECK: @llvm.ppc.altivec.vminud
833 // CHECK-LE: @llvm.ppc.altivec.vminud
836 res_vsll = vec_vbpermq(vsc, vsc);
837 // CHECK: llvm.ppc.altivec.vbpermq
838 // CHECK-LE: llvm.ppc.altivec.vbpermq
840 res_vull = vec_vbpermq(vuc, vuc);
841 // CHECK: llvm.ppc.altivec.vbpermq
842 // CHECK-LE: llvm.ppc.altivec.vbpermq
843 // CHECK-PPC: warning: implicit declaration of function 'vec_vbpermq'
846 res_vsc = vec_vgbbd(vsc);
847 // CHECK: llvm.ppc.altivec.vgbbd
848 // CHECK-LE: llvm.ppc.altivec.vgbbd
850 res_vuc = vec_vgbbd(vuc);
851 // CHECK: llvm.ppc.altivec.vgbbd
852 // CHECK-LE: llvm.ppc.altivec.vgbbd
853 // CHECK-PPC: warning: implicit declaration of function 'vec_vgbbd'