* config/i386/i386.c (x86_emit_floatuns): Also handle SImode operand.
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
Thu, 18 Sep 2003 15:37:51 +0000 (17:37 +0200)
committerZdenek Dvorak <rakdver@gcc.gnu.org>
Thu, 18 Sep 2003 15:37:51 +0000 (15:37 +0000)
From-SVN: r71526

gcc/ChangeLog
gcc/config/i386/i386.c

index 3f2cff373748f6398e0dbfb8f55a63b7b47769c6..bd1772a779d778e39ea4ce16ac55dbe009f10e5c 100644 (file)
@@ -1,3 +1,7 @@
+2003-09-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
+
+       * config/i386/i386.c (x86_emit_floatuns): Also handle SImode operand.
+
 2003-09-18  Roger Sayle  <roger@eyesopen.com>
 
        * tree.def (FFS_EXPR, CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR,
index 04baa3c2365f9ea03309ba1dc7dd08f006d0235f..de867f3e25f95a898fe3582471ec4dc313a57317 100644 (file)
@@ -15621,17 +15621,22 @@ x86_extended_reg_mentioned_p (rtx insn)
   return for_each_rtx (&PATTERN (insn), extended_reg_mentioned_1, NULL);
 }
 
-/* Generate an unsigned DImode to FP conversion.  This is the same code
+/* Generate an unsigned DImode/SImode to FP conversion.  This is the same code
    optabs would emit if we didn't have TFmode patterns.  */
 
 void
 x86_emit_floatuns (rtx operands[2])
 {
   rtx neglab, donelab, i0, i1, f0, in, out;
-  enum machine_mode mode;
+  enum machine_mode mode, inmode;
+
+  inmode = GET_MODE (operands[1]);
+  if (inmode != SImode
+      && inmode != DImode)
+    abort ();
 
   out = operands[0];
-  in = force_reg (DImode, operands[1]);
+  in = force_reg (inmode, operands[1]);
   mode = GET_MODE (out);
   neglab = gen_label_rtx ();
   donelab = gen_label_rtx ();