diff options
author | Geoffrey Keating <geoffk@apple.com> | 2003-05-05 19:33:52 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2003-05-05 19:33:52 +0000 |
commit | bc9ec0e06b4e074b2a5c75c21f8f7eefbdb88c8f (patch) | |
tree | 0e5be2a8db71f0d0635751e3cb960ed2c9c73e7b /gcc/testsuite/gcc.dg | |
parent | e3e9f1084699af912b12b5a63c64c72dc868854f (diff) | |
download | gcc-bc9ec0e06b4e074b2a5c75c21f8f7eefbdb88c8f.zip gcc-bc9ec0e06b4e074b2a5c75c21f8f7eefbdb88c8f.tar.gz gcc-bc9ec0e06b4e074b2a5c75c21f8f7eefbdb88c8f.tar.bz2 |
rs6000.c (validate_condition_mode): Use flag_finite_math_only.
2003-05-05 Geoffrey Keating <geoffk@apple.com>
* config/rs6000/rs6000.c (validate_condition_mode): Use
flag_finite_math_only.
(rs6000_reverse_condition): Never return UNKNOWN; use
flag_finite_math_only.
(rs6000_generate_compare): Use flag_finite_math_only.
(rs6000_emit_cmove): Handle UNLE. Support UNEQ under -ffast-math.
Use HONOR_* rather than flag_unsafe_math_optimizations. Correct
UNGE and GT cases. Handle UNEQ and LTGT when ! HONOR_NANS.
Index: testsuite/ChangeLog
2003-05-05 Geoffrey Keating <geoffk@apple.com>
* gcc.c-torture/execute/ieee/fp-cmp-8.c: New test.
* gcc.dg/ppc-fsel-2.c: New test.
From-SVN: r66499
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r-- | gcc/testsuite/gcc.dg/ppc-fsel-2.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/ppc-fsel-2.c b/gcc/testsuite/gcc.dg/ppc-fsel-2.c new file mode 100644 index 0000000..9768b16 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ppc-fsel-2.c @@ -0,0 +1,80 @@ +/* { dg-do compile { target powerpc*-*-* } } */ +/* { dg-options "-O -mpowerpc-gfxopt -g0 -ffinite-math-only" } */ +/* { dg-final { scan-assembler-not "^L" } } */ + +/* Every single one of these should be compiled into straight-line + code using fsel (or, in a few cases, hardwired to 'true' or + 'false'), no branches anywhere. */ + +double +test_isunordered(double x, double y, double a, double b) +{ + return __builtin_isunordered(x, y) ? a : b; +} + +double +test_not_isunordered(double x, double y, double a, double b) +{ + return !__builtin_isunordered(x, y) ? a : b; +} + +double +test_isless(double x, double y, double a, double b) +{ + return __builtin_isless(x, y) ? a : b; +} + +double +test_not_isless(double x, double y, double a, double b) +{ + return !__builtin_isless(x, y) ? a : b; +} + +double +test_islessequal(double x, double y, double a, double b) +{ + return __builtin_islessequal(x, y) ? a : b; +} + +double +test_not_islessequal(double x, double y, double a, double b) +{ + return !__builtin_islessequal(x, y) ? a : b; +} + +double +test_isgreater(double x, double y, double a, double b) +{ + return __builtin_isgreater(x, y) ? a : b; +} + +double +test_not_isgreater(double x, double y, double a, double b) +{ + return !__builtin_isgreater(x, y) ? a : b; +} + +double +test_isgreaterequal(double x, double y, double a, double b) +{ + return __builtin_isgreaterequal(x, y) ? a : b; +} + +double +test_not_isgreaterequal(double x, double y, double a, double b) +{ + return !__builtin_isgreaterequal(x, y) ? a : b; +} + +double +test_islessgreater(double x, double y, double a, double b) +{ + return __builtin_islessgreater(x, y) ? a : b; +} + +double +test_not_islessgreater(double x, double y, double a, double b) +{ + return !__builtin_islessgreater(x, y) ? a : b; +} + |