[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / vsx-vector-6-func-cmp-all-run.c
blob223f5bd422acaad7d831a1320f425e281916649e
1 /* { dg-do run { target lp64 } } */
2 /* { dg-require-effective-target vsx_hw } */
3 /* { dg-options "-O2 -mvsx" } */
5 #define DEBUG 0
7 #include "vsx-vector-6-func-cmp-all.h"
9 #define FLOAT_1ARG_CHECK(NAME) \
10 f_result = vec_##NAME (f_src); \
12 if (f_result != f_##NAME##_expected) \
13 { \
14 if (DEBUG) \
15 { \
16 printf("ERROR: vec_%s (float) expected value does not match\n", \
17 #NAME); \
18 printf(" expected = %d; result = %d\n", \
19 f_##NAME##_expected, f_result); \
20 } \
21 else \
22 abort(); \
25 #define FLOAT_2ARG_CHECK(NAME) \
26 f_result = vec_##NAME (f_src_a, f_src_b); \
28 if (f_result != f_##NAME##_expected) \
29 { \
30 if (DEBUG) \
31 { \
32 printf("ERROR: vec_%s (float, float) expected value does not match\n", \
33 #NAME); \
34 printf(" expected = %d; result = %d\n", \
35 f_##NAME##_expected, f_result); \
36 } \
37 else \
38 abort(); \
41 #define DOUBLE_1ARG_CHECK(NAME ) \
42 d_result = vec_##NAME (d_src); \
44 if (d_result != d_##NAME##_expected) \
45 { \
46 if (DEBUG) \
47 { \
48 printf("ERROR: vec_%s (double) expected value does not match\n", \
49 #NAME); \
50 printf(" expected = %d; result = %d\n", \
51 d_##NAME##_expected, d_result); \
52 } \
53 else \
54 abort(); \
57 #define DOUBLE_2ARG_CHECK(NAME) \
58 d_result = vec_##NAME (d_src_a, d_src_b); \
60 if (d_result != d_##NAME##_expected) \
61 { \
62 if (DEBUG) \
63 { \
64 printf("ERROR: vec_%s (double, double) expected value does not match\n", \
65 #NAME); \
66 printf(" expected = %d; result = %d\n", \
67 d_##NAME##_expected, d_result); \
68 } \
69 else \
70 abort(); \
73 int
74 main () {
75 vector float f_src = {126.0, 23.0, -338.0, 17.0};
76 vector float f_src_a = {126.0, 23.0, -338.0, 17.0};
77 vector float f_src_b = {2.00, 23.0, 1.0, 4.0};
78 bool f_result;
79 bool f_all_eq_expected = 0;
80 bool f_all_gt_expected = 0;
81 bool f_all_ge_expected = 0;
82 bool f_all_lt_expected = 0;
83 bool f_all_le_expected = 0;
84 bool f_all_nan_expected = 0;
85 bool f_all_numeric_expected = 1;
86 bool f_any_eq_expected = 1;
87 bool f_any_gt_expected = 1;
88 bool f_any_ge_expected = 1;
89 bool f_any_lt_expected = 1;
90 bool f_any_le_expected = 1;
91 bool f_any_nan_expected = 0;
92 bool f_any_numeric_expected = 1;
94 vector double d_src = { 125.44, -338.56};
95 vector double d_src_a = { 125.44, -338.56};
96 vector double d_src_b = d_src_a;
97 bool d_result;
98 bool d_all_eq_expected = 1;
99 bool d_all_gt_expected = 0;
100 bool d_all_ge_expected = 1;
101 bool d_all_lt_expected = 0;
102 bool d_all_le_expected = 1;
103 bool d_all_nan_expected = 0;
104 bool d_all_numeric_expected = 1;
105 bool d_any_eq_expected = 1;
106 bool d_any_gt_expected = 0;
107 bool d_any_ge_expected = 1;
108 bool d_any_lt_expected = 0;
109 bool d_any_le_expected = 1;
110 bool d_any_nan_expected = 0;
111 bool d_any_numeric_expected = 1;
113 /* Run tests. */
114 FLOAT_1ARG_CHECK (all_nan)
115 FLOAT_1ARG_CHECK (all_numeric)
116 FLOAT_1ARG_CHECK (any_nan)
117 FLOAT_1ARG_CHECK (any_numeric)
119 FLOAT_2ARG_CHECK (all_eq)
120 FLOAT_2ARG_CHECK (all_gt)
121 FLOAT_2ARG_CHECK (all_ge)
122 FLOAT_2ARG_CHECK (all_lt)
123 FLOAT_2ARG_CHECK (all_le)
124 FLOAT_2ARG_CHECK (any_eq)
125 FLOAT_2ARG_CHECK (any_gt)
126 FLOAT_2ARG_CHECK (any_ge)
127 FLOAT_2ARG_CHECK (any_lt)
128 FLOAT_2ARG_CHECK (any_le)
130 DOUBLE_1ARG_CHECK (all_nan)
131 DOUBLE_1ARG_CHECK (all_numeric)
132 DOUBLE_1ARG_CHECK (any_nan)
133 DOUBLE_1ARG_CHECK (any_numeric)
135 DOUBLE_2ARG_CHECK (all_eq)
136 DOUBLE_2ARG_CHECK (all_gt)
137 DOUBLE_2ARG_CHECK (all_ge)
138 DOUBLE_2ARG_CHECK (all_lt)
139 DOUBLE_2ARG_CHECK (all_le)
140 DOUBLE_2ARG_CHECK (any_eq)
141 DOUBLE_2ARG_CHECK (any_gt)
142 DOUBLE_2ARG_CHECK (any_ge)
143 DOUBLE_2ARG_CHECK (any_lt)
144 DOUBLE_2ARG_CHECK (any_le)
146 return 0;