c++: normalizing ttp constraints [PR115656]
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / vsx-vector-6-func-cmp-all.h
blobefd26889ddda53b3552a57c2f3a0396a6f577614
1 /* The goal is to have both compile tests which verify the desired instruction
2 generation and to functionally test the builtins for correctness. This is
3 done in separate test files, vsx-vector-6-func-cmp-all.c and
4 vsx-vector-6-func-cmp-all-run.c. The vsx-vector-6-func-cmp-all.c test file
5 only generates the calls so the instruction counts do not include the counts
6 of the instructions generated as part of the result testing. The result
7 checking code differs for BE/LE. */
9 #include <altivec.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <stdbool.h>
14 void abort (void);
16 #define FLOAT_1ARG_TEST(NAME) \
17 bool __attribute__ ((noipa)) \
18 float_1arg_##NAME (vector float f_src, bool f_##NAME##_expected) \
19 { \
20 return vec_##NAME (f_src); \
23 FLOAT_1ARG_TEST (all_nan)
24 FLOAT_1ARG_TEST (all_numeric)
25 FLOAT_1ARG_TEST (any_nan)
26 FLOAT_1ARG_TEST (any_numeric)
28 #define FLOAT_2ARG_TEST(NAME) \
29 bool __attribute__ ((noipa)) \
30 float_2arg_##NAME (vector float f_src_a, vector float f_src_b, \
31 bool f_##NAME##_expected) \
32 { \
33 return vec_##NAME (f_src_a, f_src_b); \
36 FLOAT_2ARG_TEST (all_eq)
37 FLOAT_2ARG_TEST (all_gt)
38 FLOAT_2ARG_TEST (all_ge)
39 FLOAT_2ARG_TEST (all_lt)
40 FLOAT_2ARG_TEST (all_le)
41 FLOAT_2ARG_TEST (any_eq)
42 FLOAT_2ARG_TEST (any_gt)
43 FLOAT_2ARG_TEST (any_ge)
44 FLOAT_2ARG_TEST (any_lt)
45 FLOAT_2ARG_TEST (any_le)
47 #define DOUBLE_1ARG_TEST(NAME ) \
48 bool __attribute__ ((noipa)) \
49 double_1arg_##NAME (vector double d_src, bool d_##NAME##_expected) \
50 { \
51 return vec_##NAME (d_src); \
54 DOUBLE_1ARG_TEST (all_nan)
55 DOUBLE_1ARG_TEST (all_numeric)
56 DOUBLE_1ARG_TEST (any_nan)
57 DOUBLE_1ARG_TEST (any_numeric)
59 #define DOUBLE_2ARG_TEST(NAME) \
60 bool __attribute__ ((noipa)) \
61 double_2arg_##NAME (vector double d_src_a, vector double d_src_b, \
62 bool d_##NAME##_expected) \
63 { \
64 return vec_##NAME (d_src_a, d_src_b); \
67 DOUBLE_2ARG_TEST (all_eq)
68 DOUBLE_2ARG_TEST (all_gt)
69 DOUBLE_2ARG_TEST (all_ge)
70 DOUBLE_2ARG_TEST (all_lt)
71 DOUBLE_2ARG_TEST (all_le)
72 DOUBLE_2ARG_TEST (any_eq)
73 DOUBLE_2ARG_TEST (any_gt)
74 DOUBLE_2ARG_TEST (any_ge)
75 DOUBLE_2ARG_TEST (any_lt)
76 DOUBLE_2ARG_TEST (any_le)