[gcc]
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / fold-vec-shift-longlong.c
blob97b82cf3117142dd7fcd51cab49489fae0086f55
1 /* Verify that overloaded built-ins for vec_sl with long long
2 inputs produce the right results. */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_p8vector_ok } */
6 /* { dg-options "-mpower8-vector -O2" } */
8 #include <altivec.h>
10 vector signed long long
11 testsl_signed (vector signed long long x, vector unsigned long long y)
13 return vec_sl (x, y);
16 vector unsigned long long
17 testsl_unsigned (vector unsigned long long x, vector unsigned long long y)
19 return vec_sl (x, y);
22 vector signed long long
23 testsr_signed (vector signed long long x, vector unsigned long long y)
25 return vec_sr (x, y);
28 vector unsigned long long
29 testsr_unsigned (vector unsigned long long x, vector unsigned long long y)
31 return vec_sr (x, y);
34 vector signed long long
35 testsra_signed (vector signed long long x, vector unsigned long long y)
37 return vec_sra (x, y);
40 /* watch for PR 79544 here (vsrd / vsrad issue) */
41 vector unsigned long long
42 testsra_unsigned (vector unsigned long long x, vector unsigned long long y)
44 return vec_sra (x, y);
47 vector signed long long
48 testrl_signed (vector signed long long x, vector unsigned long long y)
50 return vec_rl (x, y);
53 vector unsigned long long
54 testrl_unsigned (vector unsigned long long x, vector unsigned long long y)
56 return vec_rl (x, y);
59 /* { dg-final { scan-assembler-times "vsld" 2 } } */
60 /* { dg-final { scan-assembler-times "vsrd" 2 } } */
61 /* { dg-final { scan-assembler-times "vsrad" 2 } } */
62 /* { dg-final { scan-assembler-times "vrld" 2 } } */