diff mbox

[087/111] m68k: fcmp correctly compares infinity.

Message ID 1313614076-28878-88-git-send-email-blanham@gmail.com
State New
Headers show

Commit Message

Bryce Lanham Aug. 17, 2011, 8:47 p.m. UTC
From: Laurent Vivier <laurent@vivier.eu>

seen with gcc testsuite,
gcc-4.1.2/gcc/testsuite/gcc.c-torture/execute/960405-1.c

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 target-m68k/helper.c |    4 ++--
 tests/m68k/Makefile  |    2 +-
 tests/m68k/inf.S     |   17 +++++++++++++++++
 3 files changed, 20 insertions(+), 3 deletions(-)
 create mode 100644 tests/m68k/inf.S
diff mbox

Patch

diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index 62aadfd..6cc4202 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -1581,8 +1581,8 @@  void HELPER(fcmp_FP0_FP1)(CPUState *env)
         /* +/-inf compares equal against itself, but sub returns nan.  */
         if (!floatx80_is_any_nan(FP0_to_floatx80(env))
             && !floatx80_is_any_nan(FP1_to_floatx80(env))) {
-            if (floatx80_lt_quiet(FP1_to_floatx80(env), floatx80_zero,
-		&env->fp_status))
+            res = floatx80_zero;
+            if (floatx80_lt_quiet(FP1_to_floatx80(env), res, &env->fp_status))
                 res = floatx80_chs(res);
         }
     }
diff --git a/tests/m68k/Makefile b/tests/m68k/Makefile
index d043aeb..27525d3 100644
--- a/tests/m68k/Makefile
+++ b/tests/m68k/Makefile
@@ -1,5 +1,5 @@ 
 TESTS=fmovecr fmove fmovem fsub fdiv fmul fabs fgetexp fscale flogn fetox \
-      bfins
+      bfins inf
 
 all: $(TESTS)
 
diff --git a/tests/m68k/inf.S b/tests/m68k/inf.S
new file mode 100644
index 0000000..2b2de84
--- /dev/null
+++ b/tests/m68k/inf.S
@@ -0,0 +1,17 @@ 
+	.include "trap.i"
+
+	.data
+X:	.long 0x7ffe0000, 0x80000000, 0x00000000
+
+	.text
+	.globl _start
+_start:
+	fmove.x X, %fp0
+	fmove.x X, %fp1
+	fadd.x %fp0, %fp1
+	fmul.l #2,%fp0
+	fcmp.x %fp0, %fp1
+	fbeq a
+	nop
+a:
+	exit 0