Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / p9-minmax-1.c
blobc182da9470e46a9ef0c3aeaee76c4feeacfe67af
1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
3 /* { dg-require-effective-target powerpc_p9vector_ok } */
4 /* { dg-options "-mcpu=power9 -O2 -mpower9-minmax -ffast-math" } */
5 /* { dg-final { scan-assembler-not "fsel" } } */
6 /* { dg-final { scan-assembler "xscmpeqdp" } } */
7 /* { dg-final { scan-assembler "xscmpgtdp" } } */
8 /* { dg-final { scan-assembler "xscmpgedp" } } */
9 /* { dg-final { scan-assembler-not "xscmpodp" } } */
10 /* { dg-final { scan-assembler-not "xscmpudp" } } */
11 /* { dg-final { scan-assembler "xsmaxcdp" } } */
12 /* { dg-final { scan-assembler-not "xsmaxdp" } } */
13 /* { dg-final { scan-assembler "xsmincdp" } } */
14 /* { dg-final { scan-assembler-not "xsmindp" } } */
15 /* { dg-final { scan-assembler "xxsel" } } */
17 double
18 dbl_max1 (double a, double b)
20 return (a >= b) ? a : b;
23 double
24 dbl_max2 (double a, double b)
26 return (a > b) ? a : b;
29 double
30 dbl_min1 (double a, double b)
32 return (a < b) ? a : b;
35 double
36 dbl_min2 (double a, double b)
38 return (a <= b) ? a : b;
41 double
42 dbl_cmp_eq (double a, double b, double c, double d)
44 return (a == b) ? c : d;
47 double
48 dbl_cmp_ne (double a, double b, double c, double d)
50 return (a != b) ? c : d;
53 double
54 dbl_cmp_gt (double a, double b, double c, double d)
56 return (a > b) ? c : d;
59 double
60 dbl_cmp_ge (double a, double b, double c, double d)
62 return (a >= b) ? c : d;
65 double
66 dbl_cmp_lt (double a, double b, double c, double d)
68 return (a < b) ? c : d;
71 double
72 dbl_cmp_le (double a, double b, double c, double d)
74 return (a <= b) ? c : d;
77 float
78 flt_max1 (float a, float b)
80 return (a >= b) ? a : b;
83 float
84 flt_max2 (float a, float b)
86 return (a > b) ? a : b;
89 float
90 flt_min1 (float a, float b)
92 return (a < b) ? a : b;
95 float
96 flt_min2 (float a, float b)
98 return (a <= b) ? a : b;
101 float
102 flt_cmp_eq (float a, float b, float c, float d)
104 return (a == b) ? c : d;
107 float
108 flt_cmp_ne (float a, float b, float c, float d)
110 return (a != b) ? c : d;
113 float
114 flt_cmp_gt (float a, float b, float c, float d)
116 return (a > b) ? c : d;
119 float
120 flt_cmp_ge (float a, float b, float c, float d)
122 return (a >= b) ? c : d;
125 float
126 flt_cmp_lt (float a, float b, float c, float d)
128 return (a < b) ? c : d;
131 float
132 flt_cmp_le (float a, float b, float c, float d)
134 return (a <= b) ? c : d;
137 double
138 dbl_flt_max1 (float a, float b)
140 return (a > b) ? a : b;
143 double
144 dbl_flt_max2 (double a, float b)
146 return (a > b) ? a : b;
149 double
150 dbl_flt_max3 (float a, double b)
152 return (a > b) ? a : b;
155 double
156 dbl_flt_min1 (float a, float b)
158 return (a < b) ? a : b;
161 double
162 dbl_flt_min2 (double a, float b)
164 return (a < b) ? a : b;
167 double
168 dbl_flt_min3 (float a, double b)
170 return (a < b) ? a : b;