]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/builtins-ppc-p8vector.c
Vendor import of clang trunk r241361:
[FreeBSD/FreeBSD.git] / test / CodeGen / builtins-ppc-p8vector.c
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
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 };
19
20 int res_i;
21 vector signed char res_vsc;
22 vector unsigned char res_vuc;
23 vector int res_vi;
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;
29 vector double res_vd;
30
31 // CHECK-LABEL: define void @test1
32 void test1() {
33
34   /* vec_abs */
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
39
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
46
47   /* vec_add */
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
52
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
57
58   /* vec_mergee */  
59   res_vbi = vec_mergee(vbi, vbi);
60 // CHECK: @llvm.ppc.altivec.vperm
61 // CHECK-LE: @llvm.ppc.altivec.vperm
62   
63   res_vi = vec_mergee(vi, vi);
64 // CHECK: @llvm.ppc.altivec.vperm
65 // CHECK-LE: @llvm.ppc.altivec.vperm
66
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'
71
72   /* vec_mergeo */
73   res_vbi = vec_mergeo(vbi, vbi);
74 // CHECK: @llvm.ppc.altivec.vperm
75 // CHECK-LE: @llvm.ppc.altivec.vperm
76
77   res_vi = vec_mergeo(vi, vi);
78 // CHECK: @llvm.ppc.altivec.vperm
79 // CHECK-LE: @llvm.ppc.altivec.vperm
80
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'
85   
86   /* vec_cmpeq */
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
91
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
96
97   /* vec_cmpge */
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
102
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
107
108   /* vec_cmple */
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
113
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
118
119   /* vec_cmpgt */
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
124
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
129
130   /* vec_cmplt */
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
135
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
140
141   /* ----------------------- predicates --------------------------- */
142   /* vec_all_eq */
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
147
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
152
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
157
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
162
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
167
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
172
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
177
178   /* vec_all_ne */
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
183
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
188
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
193
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
198
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
203
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
208
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
213
214   /* vec_any_eq */
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
219
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
224
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
229
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
234
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
239
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
244
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
249
250   /* vec_any_ne */
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
255
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
260
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
265
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
270
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
275
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
280
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
285
286   /* vec_all_ge */
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
291
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
296
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
301
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
306
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
311
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
316
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
321
322   /* vec_all_gt */
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
327
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
332
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
337
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
342
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
347
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
352
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
357
358   /* vec_all_le */
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
363
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
368
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
373
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
378
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
383
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
388
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
393
394   /* vec_all_lt */
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
399
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
404
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
409
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
414
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
419
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
424
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
429
430   /* vec_any_ge */
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
435
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
440
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
445
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
450
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
455
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
460
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
465
466   /* vec_any_gt */
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
471
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
476
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
481
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
486
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
491
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
496
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
501
502   /* vec_any_le */
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
507
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
512
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
517
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
522
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
527
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
532
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
537
538   /* vec_any_lt */
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
543
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
548
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
553
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
558
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
563
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
568
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
573
574   /* vec_max */
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
579
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
584
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
589
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
594
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
599
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
604
605   /* vec_min */
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
610
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
615
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
620
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
625
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
630
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
635
636   /* vec_mule */
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
641
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
646
647   /* vec_mulo */
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
652
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
657
658   /* vec_packs */
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
663
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
668
669   /* vec_packsu */
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
674
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
679
680   /* vec_rl */
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
685
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
690
691   /* vec_sl */
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
696
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
701
702   /* vec_sr */
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
707
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
712
713   /* vec_sra */
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
718
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
723
724   /* vec_unpackh */
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
729
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
734
735   /* vec_unpackl */
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
740
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
745
746   /* vec_vpksdss */
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'
751
752   /* vec_vpksdus */
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'
757
758   /* vec_vpkudum */
759   res_vi = vec_vpkudum(vsll, vsll);
760 // CHECK: vperm
761 // CHECK-LE: vperm
762 // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudum'
763
764   res_vui = vec_vpkudum(vull, vull);
765 // CHECK: vperm
766 // CHECK-LE: vperm
767
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'
772
773   /* vec_vupkhsw */
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'
778
779   res_vbll = vec_vupkhsw(vbi);
780 // CHECK: llvm.ppc.altivec.vupkhsw
781 // CHECK-LE: llvm.ppc.altivec.vupklsw
782
783   /* vec_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'
788
789   res_vbll = vec_vupklsw(vbi);
790 // CHECK: llvm.ppc.altivec.vupklsw
791 // CHECK-LE: llvm.ppc.altivec.vupkhsw
792
793   /* vec_max */
794   res_vsll = vec_max(vsll, vsll);
795 // CHECK: @llvm.ppc.altivec.vmaxsd
796 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
797
798   res_vsll = vec_max(vbll, vsll);
799 // CHECK: @llvm.ppc.altivec.vmaxsd
800 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
801
802   res_vsll = vec_max(vsll, vbll);
803 // CHECK: @llvm.ppc.altivec.vmaxsd
804 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
805
806   res_vull = vec_max(vull, vull);
807 // CHECK: @llvm.ppc.altivec.vmaxud
808 // CHECK-LE: @llvm.ppc.altivec.vmaxud
809
810   res_vull = vec_max(vbll, vull);
811 // CHECK: @llvm.ppc.altivec.vmaxud
812 // CHECK-LE: @llvm.ppc.altivec.vmaxud
813
814   /* vec_min */
815   res_vsll = vec_min(vsll, vsll);
816 // CHECK: @llvm.ppc.altivec.vminsd
817 // CHECK-LE: @llvm.ppc.altivec.vminsd
818
819   res_vsll = vec_min(vbll, vsll);
820 // CHECK: @llvm.ppc.altivec.vminsd
821 // CHECK-LE: @llvm.ppc.altivec.vminsd
822
823   res_vsll = vec_min(vsll, vbll);
824 // CHECK: @llvm.ppc.altivec.vminsd
825 // CHECK-LE: @llvm.ppc.altivec.vminsd
826
827   res_vull = vec_min(vull, vull);
828 // CHECK: @llvm.ppc.altivec.vminud
829 // CHECK-LE: @llvm.ppc.altivec.vminud
830
831   res_vull = vec_min(vbll, vull);
832 // CHECK: @llvm.ppc.altivec.vminud
833 // CHECK-LE: @llvm.ppc.altivec.vminud
834
835   /* vec_vbpermq */
836   res_vsll = vec_vbpermq(vsc, vsc);
837 // CHECK: llvm.ppc.altivec.vbpermq
838 // CHECK-LE: llvm.ppc.altivec.vbpermq
839
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'
844
845   /* vec_vgbbd */
846   res_vsc = vec_vgbbd(vsc);
847 // CHECK: llvm.ppc.altivec.vgbbd
848 // CHECK-LE: llvm.ppc.altivec.vgbbd
849
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'
854 }