[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / fold-vec-extract-longlong.p8.c
bloba49822d52aafc9e0fbebf307b1275aee86342ce7
1 /* Verify that overloaded built-ins for vec_extract() with long long
2 inputs produce the right code with a P8 (LE or BE) target. */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_vsx_ok } */
6 /* { dg-options "-mdejagnu-cpu=power8 -mvsx -O2" } */
8 // Targeting P8LE and P8BE, six tests total.
9 // P8 (LE) constants: mfvsrd
10 // P8 (LE) variables: xori, rldic, mtvsrd, xxpermdi, vslo, mfvsrd
11 // P8 (BE) constants: xxpermdi, mfvsrd
12 // P8 (BE) Variables: rldic, mtvsrd, xxpermdi, vslo, mfvsrd
14 /* results. */
15 /* { dg-final { scan-assembler-times {\mxori\M} 3 { target le } } } */
16 /* { dg-final { scan-assembler-times {\mrldic\M|\mrlwinm\M} 3 } } */
17 /* { dg-final { scan-assembler-times {\mstxvd2x\M|\mstxvw4x\M} 4 { target ilp32 } } } */
18 /* { dg-final { scan-assembler-times {\madd\M} 3 { target ilp32 } } } */
19 /* { dg-final { scan-assembler-times {\mlwz\M} 11 { target ilp32 } } } */
20 /* { dg-final { scan-assembler-times {\mmfvsrd\M} 6 { target lp64 } } } */
21 /* { dg-final { scan-assembler-times {\mmtvsrd\M} 3 { target lp64 } } } */
22 /* { dg-final { scan-assembler-times {\mxxpermdi\M} 3 { target le } } } */
23 /* { dg-final { scan-assembler-times {\mxxpermdi\M} 6 { target { be && lp64 } } } } */
24 /* { dg-final { scan-assembler-times {\mxxpermdi\M} 2 { target { be && ilp32 } } } } */
25 /* { dg-final { scan-assembler-times {\mvslo\M} 3 { target lp64 } } } */
27 #include <altivec.h>
29 unsigned long long
30 testbl_var (vector bool long long vbl2, signed int si)
32 return vec_extract (vbl2, si);
35 signed long long
36 testsl_var (vector signed long long vsl2, signed int si)
38 return vec_extract (vsl2, si);
41 unsigned long long
42 testul_var (vector unsigned long long vul2, signed int si)
44 return vec_extract (vul2, si);
47 unsigned long long
48 testbl_cst (vector bool long long vbl2)
50 return vec_extract (vbl2, 1);
53 signed long long
54 testsl_cst (vector signed long long vsl2)
56 return vec_extract (vsl2, 1);
59 unsigned long long
60 testul_cst (vector unsigned long vul2)
62 return vec_extract (vul2, 1);