[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / p9-minmax-1.c
blob616c2f01151e8f498cd5ee4f9cefd8cbff6f93d2
1 /* { dg-do compile } */
2 /* { dg-require-effective-target powerpc_vsx_ok } */
3 /* { dg-options "-mdejagnu-cpu=power9 -mvsx -O2 -mpower9-minmax -ffast-math" } */
4 /* { dg-final { scan-assembler-not "fsel" } } */
5 /* { dg-final { scan-assembler "xscmpeqdp" } } */
6 /* { dg-final { scan-assembler "xscmpgtdp" } } */
7 /* { dg-final { scan-assembler "xscmpgedp" } } */
8 /* { dg-final { scan-assembler-not "xscmpodp" } } */
9 /* { dg-final { scan-assembler-not "xscmpudp" } } */
10 /* { dg-final { scan-assembler "xsmaxcdp" } } */
11 /* { dg-final { scan-assembler-not "xsmaxdp" } } */
12 /* { dg-final { scan-assembler "xsmincdp" } } */
13 /* { dg-final { scan-assembler-not "xsmindp" } } */
14 /* { dg-final { scan-assembler "xxsel" } } */
16 double
17 dbl_max1 (double a, double b)
19 return (a >= b) ? a : b;
22 double
23 dbl_max2 (double a, double b)
25 return (a > b) ? a : b;
28 double
29 dbl_min1 (double a, double b)
31 return (a < b) ? a : b;
34 double
35 dbl_min2 (double a, double b)
37 return (a <= b) ? a : b;
40 double
41 dbl_cmp_eq (double a, double b, double c, double d)
43 return (a == b) ? c : d;
46 double
47 dbl_cmp_ne (double a, double b, double c, double d)
49 return (a != b) ? c : d;
52 double
53 dbl_cmp_gt (double a, double b, double c, double d)
55 return (a > b) ? c : d;
58 double
59 dbl_cmp_ge (double a, double b, double c, double d)
61 return (a >= b) ? c : d;
64 double
65 dbl_cmp_lt (double a, double b, double c, double d)
67 return (a < b) ? c : d;
70 double
71 dbl_cmp_le (double a, double b, double c, double d)
73 return (a <= b) ? c : d;
76 float
77 flt_max1 (float a, float b)
79 return (a >= b) ? a : b;
82 float
83 flt_max2 (float a, float b)
85 return (a > b) ? a : b;
88 float
89 flt_min1 (float a, float b)
91 return (a < b) ? a : b;
94 float
95 flt_min2 (float a, float b)
97 return (a <= b) ? a : b;
100 float
101 flt_cmp_eq (float a, float b, float c, float d)
103 return (a == b) ? c : d;
106 float
107 flt_cmp_ne (float a, float b, float c, float d)
109 return (a != b) ? c : d;
112 float
113 flt_cmp_gt (float a, float b, float c, float d)
115 return (a > b) ? c : d;
118 float
119 flt_cmp_ge (float a, float b, float c, float d)
121 return (a >= b) ? c : d;
124 float
125 flt_cmp_lt (float a, float b, float c, float d)
127 return (a < b) ? c : d;
130 float
131 flt_cmp_le (float a, float b, float c, float d)
133 return (a <= b) ? c : d;
136 double
137 dbl_flt_max1 (float a, float b)
139 return (a > b) ? a : b;
142 double
143 dbl_flt_max2 (double a, float b)
145 return (a > b) ? a : b;
148 double
149 dbl_flt_max3 (float a, double b)
151 return (a > b) ? a : b;
154 double
155 dbl_flt_min1 (float a, float b)
157 return (a < b) ? a : b;
160 double
161 dbl_flt_min2 (double a, float b)
163 return (a < b) ? a : b;
166 double
167 dbl_flt_min3 (float a, double b)
169 return (a < b) ? a : b;