aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2003-09-18 17:37:51 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2003-09-18 15:37:51 +0000
commit1d6ba901bb9f2ba51a1306da18762a28779c299d (patch)
tree188ac675df942f058a0c2366fa83db75cd50b4c2
parent96123432ff850b1e62e60e429605b0b98a17bf68 (diff)
downloadgcc-1d6ba901bb9f2ba51a1306da18762a28779c299d.zip
gcc-1d6ba901bb9f2ba51a1306da18762a28779c299d.tar.gz
gcc-1d6ba901bb9f2ba51a1306da18762a28779c299d.tar.bz2
* config/i386/i386.c (x86_emit_floatuns): Also handle SImode operand.
From-SVN: r71526
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/i386/i386.c11
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3f2cff3..bd1772a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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,
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 04baa3c..de867f3 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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 ();