1/* { dg-do compile { target powerpc*-*-* } } */
2/* { dg-options "-O -mpowerpc-gfxopt -g0 -ffinite-math-only" } */
3/* { dg-final { scan-assembler-not "^L" } } */
4
5/* Every single one of these should be compiled into straight-line
6   code using fsel (or, in a few cases, hardwired to 'true' or
7   'false'), no branches anywhere.  */
8
9double
10test_isunordered(double x, double y, double a, double b)
11{
12  return __builtin_isunordered(x, y) ? a : b;
13}
14
15double
16test_not_isunordered(double x, double y, double a, double b)
17{
18  return !__builtin_isunordered(x, y) ? a : b;
19}
20
21double
22test_isless(double x, double y, double a, double b)
23{
24  return __builtin_isless(x, y) ? a : b;
25}
26
27double
28test_not_isless(double x, double y, double a, double b)
29{
30  return !__builtin_isless(x, y) ? a : b;
31}
32
33double
34test_islessequal(double x, double y, double a, double b)
35{
36  return __builtin_islessequal(x, y) ? a : b;
37}
38
39double
40test_not_islessequal(double x, double y, double a, double b)
41{
42  return !__builtin_islessequal(x, y) ? a : b;
43}
44
45double
46test_isgreater(double x, double y, double a, double b)
47{
48  return __builtin_isgreater(x, y) ? a : b;
49}
50
51double
52test_not_isgreater(double x, double y, double a, double b)
53{
54  return !__builtin_isgreater(x, y) ? a : b;
55}
56
57double
58test_isgreaterequal(double x, double y, double a, double b)
59{
60  return __builtin_isgreaterequal(x, y) ? a : b;
61}
62
63double
64test_not_isgreaterequal(double x, double y, double a, double b)
65{
66  return !__builtin_isgreaterequal(x, y) ? a : b;
67}
68
69double
70test_islessgreater(double x, double y, double a, double b)
71{
72  return __builtin_islessgreater(x, y) ? a : b;
73}
74
75double
76test_not_islessgreater(double x, double y, double a, double b)
77{
78  return !__builtin_islessgreater(x, y) ? a : b;
79}
80
81