aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@cygnus.com>2000-04-21 21:14:13 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2000-04-21 21:14:13 +0000
commit8ca173309f26e82badc456eeeff6fe20a63676c1 (patch)
tree344cd32d33320e2a693da4c0f71cf4911d78334a
parentaad2919faeeb4582f3b0dd3299f19e40c863950a (diff)
downloadgcc-8ca173309f26e82badc456eeeff6fe20a63676c1.zip
gcc-8ca173309f26e82badc456eeeff6fe20a63676c1.tar.gz
gcc-8ca173309f26e82badc456eeeff6fe20a63676c1.tar.bz2
mn10300.md (movdi, movdf): Do not use `movu' when the operand is not constant.
* config/mn10300/mn10300.md (movdi, movdf): Do not use `movu' when the operand is not constant. From-SVN: r33321
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mn10300/mn10300.md24
2 files changed, 21 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 008a523..4697137 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Fri Apr 21 18:11:56 2000 Alexandre Oliva <aoliva@cygnus.com>
+
+ * config/mn10300/mn10300.md (movdi, movdf): Do not use `movu' when
+ the operand is not constant.
+
Fri Apr 21 14:58:29 2000 Denis Chertykov <denisc@overta.ru>
* reload.c (find_equiv_reg): Checks all valueno and regno regs
diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md
index 750d30a..5606437 100644
--- a/gcc/config/mn10300/mn10300.md
+++ b/gcc/config/mn10300/mn10300.md
@@ -499,8 +499,10 @@
else
output_asm_insn (\"mov %L1,%L0\", operands);
}
- else if ((REGNO_REG_CLASS (true_regnum (operands[0]))
- == EXTENDED_REGS)
+ else if ((GET_CODE (operands[1]) == CONST_INT
+ || GET_CODE (operands[1]) == CONST_DOUBLE)
+ && (REGNO_REG_CLASS (true_regnum (operands[0]))
+ == EXTENDED_REGS)
&& (((val[0] & 0x80) && ! (val[0] & 0xffffff00))
|| ((val[0] & 0x800000) && ! (val[0] & 0xff000000))))
output_asm_insn (\"movu %1,%0\", operands);
@@ -520,8 +522,10 @@
|| GET_CODE (operands[1]) == CONST_DOUBLE)
&& val[0] == val[1])
output_asm_insn (\"mov %L0,%H0\", operands);
- else if ((REGNO_REG_CLASS (true_regnum (operands[0]))
- == EXTENDED_REGS)
+ else if ((GET_CODE (operands[1]) == CONST_INT
+ || GET_CODE (operands[1]) == CONST_DOUBLE)
+ && (REGNO_REG_CLASS (true_regnum (operands[0]))
+ == EXTENDED_REGS)
&& (((val[1] & 0x80) && ! (val[1] & 0xffffff00))
|| ((val[1] & 0x800000) && ! (val[1] & 0xff000000))))
output_asm_insn (\"movu %1,%0\", operands);
@@ -643,8 +647,10 @@
else
output_asm_insn (\"mov %L1,%L0\", operands);
}
- else if ((REGNO_REG_CLASS (true_regnum (operands[0]))
- == EXTENDED_REGS)
+ else if ((GET_CODE (operands[1]) == CONST_INT
+ || GET_CODE (operands[1]) == CONST_DOUBLE)
+ && (REGNO_REG_CLASS (true_regnum (operands[0]))
+ == EXTENDED_REGS)
&& (((val[0] & 0x80) && ! (val[0] & 0xffffff00))
|| ((val[0] & 0x800000) && ! (val[0] & 0xff000000))))
output_asm_insn (\"movu %1,%0\", operands);
@@ -664,8 +670,10 @@
|| GET_CODE (operands[1]) == CONST_DOUBLE)
&& val[0] == val[1])
output_asm_insn (\"mov %L0,%H0\", operands);
- else if ((REGNO_REG_CLASS (true_regnum (operands[0]))
- == EXTENDED_REGS)
+ else if ((GET_CODE (operands[1]) == CONST_INT
+ || GET_CODE (operands[1]) == CONST_DOUBLE)
+ && (REGNO_REG_CLASS (true_regnum (operands[0]))
+ == EXTENDED_REGS)
&& (((val[1] & 0x80) && ! (val[1] & 0xffffff00))
|| ((val[1] & 0x800000) && ! (val[1] & 0xff000000))))
output_asm_insn (\"movu %1,%0\", operands);