1 /* Verify that overloaded built-ins for vec_cmp with long long
2 inputs produce the right code. */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_vsx_ok } */
6 /* { dg-options "-mvsx -O2" } */
7 /* { dg-additional-options "-mdejagnu-cpu=power8" { target { ! has_arch_pwr8 } } } */
12 test3_eq (vector
signed long long x
, vector
signed long long y
)
14 return vec_cmpeq (x
, y
);
18 test6_eq (vector
unsigned long long x
, vector
unsigned long long y
)
20 return vec_cmpeq (x
, y
);
24 test3_ge (vector
signed long long x
, vector
signed long long y
)
26 return vec_cmpge (x
, y
);
30 test6_ge (vector
unsigned long long x
, vector
unsigned long long y
)
32 return vec_cmpge (x
, y
);
36 test3_gt (vector
signed long long x
, vector
signed long long y
)
38 return vec_cmpgt (x
, y
);
42 test6_gt (vector
unsigned long long x
, vector
unsigned long long y
)
44 return vec_cmpgt (x
, y
);
48 test3_le (vector
signed long long x
, vector
signed long long y
)
50 return vec_cmple (x
, y
);
54 test6_le (vector
unsigned long long x
, vector
unsigned long long y
)
56 return vec_cmple (x
, y
);
60 test3_lt (vector
signed long long x
, vector
signed long long y
)
62 return vec_cmplt (x
, y
);
66 test6_lt (vector
unsigned long long x
, vector
unsigned long long y
)
68 return vec_cmplt (x
, y
);
72 test3_ne (vector
signed long long x
, vector
signed long long y
)
74 return vec_cmpne (x
, y
);
78 test6_ne (vector
unsigned long long x
, vector
unsigned long long y
)
80 return vec_cmpne (x
, y
);
83 /* { dg-final { scan-assembler-times "vcmpequd" 4 } } */
84 /* { dg-final { scan-assembler-times "vcmpgtsd" 4 } } */
85 /* { dg-final { scan-assembler-times "vcmpgtud" 4 } } */
86 /* { dg-final { scan-assembler-times "xxlnor" 6 } } */