]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* sim-fpu.c (pack_fpu): If SIM_QUIET_NAN_NEGATED is defined, use a
authorIan Lance Taylor <ian@airs.com>
Fri, 8 Jul 2005 18:41:54 +0000 (18:41 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 8 Jul 2005 18:41:54 +0000 (18:41 +0000)
different fraction for a quiet NaN.
(unpack_fpu): Likewise.

sim/common/ChangeLog
sim/common/sim-fpu.c

index 7a43a29bfcddf07b94b2c9ff425b147f475278e4..c2ef9e0a8df631656a661e13fbc9e34e2fe67157 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-08  Ian Lance Taylor  <ian@airs.com>
+
+       * sim-fpu.c (pack_fpu): If SIM_QUIET_NAN_NEGATED is defined, use a
+       different fraction for a quiet NaN.
+       (unpack_fpu): Likewise.
+
 2005-07-08  Ben Elliston  <bje@au.ibm.com>
 
        * callback.c: Remove ANSI_PROTOTYPES conditional code.
index 845248adb590e9b5619348ad511855c15535a69c..c9678bdc0937838aec5ab77c51de47ad5acf2c47 100644 (file)
@@ -201,7 +201,11 @@ pack_fpu (const sim_fpu *src,
       /* force fraction to correct class */
       fraction = src->fraction;
       fraction >>= NR_GUARDS;
+#ifdef SIM_QUIET_NAN_NEGATED
+      fraction |= QUIET_NAN - 1;
+#else
       fraction |= QUIET_NAN;
+#endif
       break;
     case sim_fpu_class_snan:
       sign = src->sign;
@@ -362,10 +366,17 @@ unpack_fpu (sim_fpu *dst, unsigned64 packed, int is_double)
        }
       else
        {
+         int qnan;
+
          /* Non zero fraction, means NaN */
          dst->sign = sign;
          dst->fraction = (fraction << NR_GUARDS);
-         if (fraction >= QUIET_NAN)
+#ifdef SIM_QUIET_NAN_NEGATED
+         qnan = (fraction & QUIET_NAN) == 0;
+#else
+         qnan = fraction >= QUIET_NAN;
+#endif
+         if (qnan)
            dst->class = sim_fpu_class_qnan;
          else
            dst->class = sim_fpu_class_snan;