aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2003-05-05 19:33:52 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2003-05-05 19:33:52 +0000
commitbc9ec0e06b4e074b2a5c75c21f8f7eefbdb88c8f (patch)
tree0e5be2a8db71f0d0635751e3cb960ed2c9c73e7b /gcc/testsuite/gcc.dg
parente3e9f1084699af912b12b5a63c64c72dc868854f (diff)
downloadgcc-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.c80
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;
+}
+