1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-require-effective-target powerpc_p8vector_ok } */
4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
5 /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */
18 #define ATTR_ALIGN __attribute__((__aligned__(ALIGN)))
21 #define DOIT(TYPE, PREFIX) \
22 TYPE PREFIX ## _eqv_builtin (TYPE a, TYPE b) \
24 return vec_eqv (a, b); \
27 TYPE PREFIX ## _eqv_arith (TYPE a, TYPE b) \
32 TYPE PREFIX ## _nand_builtin (TYPE a, TYPE b) \
34 return vec_nand (a, b); \
37 TYPE PREFIX ## _nand_arith1 (TYPE a, TYPE b) \
42 TYPE PREFIX ## _nand_arith2 (TYPE a, TYPE b) \
47 TYPE PREFIX ## _orc_builtin (TYPE a, TYPE b) \
49 return vec_orc (a, b); \
52 TYPE PREFIX ## _orc_arith1 (TYPE a, TYPE b) \
57 TYPE PREFIX ## _orc_arith2 (TYPE a, TYPE b) \
62 #define DOIT_FLOAT(TYPE, PREFIX) \
63 TYPE PREFIX ## _eqv_builtin (TYPE a, TYPE b) \
65 return vec_eqv (a, b); \
68 TYPE PREFIX ## _nand_builtin (TYPE a, TYPE b) \
70 return vec_nand (a, b); \
73 TYPE PREFIX ## _orc_builtin (TYPE a, TYPE b) \
75 return vec_orc (a, b); \
78 typedef vector
signed char sign_char_vec
;
79 typedef vector
short sign_short_vec
;
80 typedef vector
int sign_int_vec
;
81 typedef vector
long long sign_llong_vec
;
83 typedef vector
unsigned char uns_char_vec
;
84 typedef vector
unsigned short uns_short_vec
;
85 typedef vector
unsigned int uns_int_vec
;
86 typedef vector
unsigned long long uns_llong_vec
;
88 typedef vector
float float_vec
;
89 typedef vector
double double_vec
;
91 DOIT(sign_char_vec
, sign_char
)
92 DOIT(sign_short_vec
, sign_short
)
93 DOIT(sign_int_vec
, sign_int
)
94 DOIT(sign_llong_vec
, sign_llong
)
96 DOIT(uns_char_vec
, uns_char
)
97 DOIT(uns_short_vec
, uns_short
)
98 DOIT(uns_int_vec
, uns_int
)
99 DOIT(uns_llong_vec
, uns_llong
)
101 DOIT_FLOAT(float_vec
, float)
102 DOIT_FLOAT(double_vec
, double)
104 /* { dg-final { scan-assembler-times "xxleqv" 18 } } */
105 /* { dg-final { scan-assembler-times "xxlnand" 26 } } */
106 /* { dg-final { scan-assembler-times "xxlorc" 26 } } */