2002-06-07 Chris Demetriou <cgd@broadcom.com>
authorChris Demetriou <cgd@google.com>
Fri, 7 Jun 2002 16:50:42 +0000 (16:50 +0000)
committerChris Demetriou <cgd@google.com>
Fri, 7 Jun 2002 16:50:42 +0000 (16:50 +0000)
* cp1.c (convert): Remove unusable debugging code, and move MIPS
rounding mode to sim FP rounding mode flag conversion code into...
(rounding_mode): New function.

sim/mips/ChangeLog
sim/mips/cp1.c

index 0afcde955529cbec7d642ff62f513579c472c40b..8d8e30e15aa761ebefbf3a7d08355ff579709a27 100644 (file)
@@ -1,3 +1,9 @@
+2002-06-07  Chris Demetriou  <cgd@broadcom.com>
+
+       * cp1.c (convert): Remove unusable debugging code, and move MIPS
+       rounding mode to sim FP rounding mode flag conversion code into...
+       (rounding_mode): New function.
+
 2002-06-07  Chris Demetriou  <cgd@broadcom.com>
 
        * cp1.c: Clean up formatting of a few comments.
index e4bfba2b028a75d5fdda7618c25dc0e9502f6332..362bcefeadafc8569c7afd005301ebabcb461c33 100644 (file)
@@ -426,6 +426,42 @@ update_fcsr (sim_cpu *cpu,
   return;
 }
 
+static sim_fpu_round
+rounding_mode(int rm)
+{
+  sim_fpu_round round;
+
+  switch (rm)
+    {
+    case FP_RM_NEAREST:
+      /* Round result to nearest representable value. When two
+        representable values are equally near, round to the value
+        that has a least significant bit of zero (i.e. is even). */
+      round = sim_fpu_round_near;
+      break;
+    case FP_RM_TOZERO:
+      /* Round result to the value closest to, and not greater in
+        magnitude than, the result. */
+      round = sim_fpu_round_zero;
+      break;
+    case FP_RM_TOPINF:
+      /* Round result to the value closest to, and not less than,
+        the result. */
+      round = sim_fpu_round_up;
+      break;
+    case FP_RM_TOMINF:
+      /* Round result to the value closest to, and not greater than,
+        the result. */
+      round = sim_fpu_round_down;
+      break;
+    default:
+      round = 0;
+      fprintf (stderr, "Bad switch\n");
+      abort ();
+    }
+  return round;
+}
+
 
 /* Comparison operations.  */
 
@@ -694,48 +730,10 @@ convert (sim_cpu *cpu,
         FP_formats to)
 {
   sim_fpu wop;
-  sim_fpu_round round;
+  sim_fpu_round round = rounding_mode (rm);
   unsigned32 result32;
   unsigned64 result64;
 
-#ifdef DEBUG
-#if 0 /* FIXME: doesn't compile */
-  printf ("DBG: Convert: mode %s : op 0x%s : from %s : to %s : (PC = 0x%s)\n",
-         fpu_rounding_mode_name (rm), pr_addr (op), fpu_format_name (from),
-         fpu_format_name (to), pr_addr (IPC));
-#endif
-#endif /* DEBUG */
-
-  switch (rm)
-    {
-    case FP_RM_NEAREST:
-      /* Round result to nearest representable value. When two
-        representable values are equally near, round to the value
-        that has a least significant bit of zero (i.e. is even).  */
-      round = sim_fpu_round_near;
-      break;
-    case FP_RM_TOZERO:
-      /* Round result to the value closest to, and not greater in
-        magnitude than, the result.  */
-      round = sim_fpu_round_zero;
-      break;
-    case FP_RM_TOPINF:
-      /* Round result to the value closest to, and not less than,
-        the result.  */
-      round = sim_fpu_round_up;
-      break;
-
-    case FP_RM_TOMINF:
-      /* Round result to the value closest to, and not greater than,
-        the result.  */
-      round = sim_fpu_round_down;
-      break;
-    default:
-      round = 0;
-      fprintf (stderr, "Bad switch\n");
-      abort ();
-    }
-
   /* Convert the input to sim_fpu internal format */
   switch (from)
     {