1 /* { dg-do compile } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-maltivec -mvsx" } */
8 test_eq_char (vector
bool char x
, vector
bool char y
)
10 return vec_cmpeq (x
, y
);
14 test_eq_short (vector
bool short x
, vector
bool short y
)
16 return vec_cmpeq (x
, y
);
20 test_eq_int (vector
bool int x
, vector
bool int y
)
22 return vec_cmpeq (x
, y
);
26 test_shift_left_double (vector
double x
, vector
double y
)
28 return vec_sld (x
, y
, /* shift_by */ 10);
32 test_nabs_char (vector
signed char x
)
38 test_nabs_short (vector
short x
)
44 test_nabs_int (vector
int x
)
50 test_nabs_float (vector
float x
)
56 test_nabs_double (vector
double x
)
61 /* Expected test results:
63 test_eq_char 1 vcmpequb inst
64 test_eq_short 1 vcmpequh inst
65 test_eq_int 1 vcmpequw inst
66 test_shift_left_double 1 vsldoi inst
67 test_nabs_char 1 vspltisw, 1 vsububm, 1 vminsb
68 test_nabs_short 1 vspltisw, 1 vsubuhm, 1 vminsh
69 test_nabs_int 1 vspltisw, 1 vsubuwm, 1 vminsw
70 test_nabs_float 1 xvnabssp
71 test_nabs_double 1 xvnabsdp */
73 /* { dg-final { scan-assembler-times "vcmpequb" 1 } } */
74 /* { dg-final { scan-assembler-times "vcmpequh" 1 } } */
75 /* { dg-final { scan-assembler-times "vcmpequw" 1 } } */
76 /* { dg-final { scan-assembler-times "vsldoi" 1 } } */
77 /* { dg-final { scan-assembler-times "vsububm" 1 } } */
78 /* { dg-final { scan-assembler-times "vsubuhm" 1 } } */
79 /* { dg-final { scan-assembler-times "vsubuwm" 1 } } */
80 /* { dg-final { scan-assembler-times "vminsb" 1 } } */
81 /* { dg-final { scan-assembler-times "vminsh" 1 } } */
82 /* { dg-final { scan-assembler-times "vminsw" 1 } } */
83 /* { dg-final { scan-assembler-times "vspltisw" 3 } } */
84 /* { dg-final { scan-assembler-times "xvnabssp" 1 } } */
85 /* { dg-final { scan-assembler-times "xvnabsdp" 1 } } */