2017-08-28 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / builtins-3.c
blobbddd0ac91ccdf93d65520743e01db7b50c72477c
1 /* { dg-do compile } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-maltivec -mvsx" } */
5 #include <altivec.h>
7 vector bool char
8 test_eq_char (vector bool char x, vector bool char y)
10 return vec_cmpeq (x, y);
13 vector bool short
14 test_eq_short (vector bool short x, vector bool short y)
16 return vec_cmpeq (x, y);
19 vector bool int
20 test_eq_int (vector bool int x, vector bool int y)
22 return vec_cmpeq (x, y);
25 vector double
26 test_shift_left_double (vector double x, vector double y)
28 return vec_sld (x, y, /* shift_by */ 10);
31 vector signed char
32 test_nabs_char (vector signed char x)
34 return vec_nabs (x);
37 vector short
38 test_nabs_short (vector short x)
40 return vec_nabs (x);
43 vector int
44 test_nabs_int (vector int x)
46 return vec_nabs (x);
49 vector float
50 test_nabs_float (vector float x)
52 return vec_nabs (x);
55 vector double
56 test_nabs_double (vector double x)
58 return vec_nabs (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 } } */