aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1997-02-01 19:11:01 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1997-02-01 19:11:01 -0500
commit2c5447d988ec4cc8eaa4d2bf029e46b6e939d654 (patch)
tree16934abcc263159a1cb0c9579ad3e22413b0f0d7
parent0cb7cfedce465edfecb1777302e7fff431d91c95 (diff)
downloadgcc-2c5447d988ec4cc8eaa4d2bf029e46b6e939d654.zip
gcc-2c5447d988ec4cc8eaa4d2bf029e46b6e939d654.tar.gz
gcc-2c5447d988ec4cc8eaa4d2bf029e46b6e939d654.tar.bz2
(movqi): Enable use of clr and st insns on TARGET_5200.
From-SVN: r13576
-rw-r--r--gcc/config/m68k/m68k.md9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md
index c242f42..83d3879 100644
--- a/gcc/config/m68k/m68k.md
+++ b/gcc/config/m68k/m68k.md
@@ -993,12 +993,13 @@
/* clr and st insns on 68000 read before writing.
This isn't so on the 68010, but we have no TARGET_68010. */
if (!ADDRESS_REG_P (operands[0])
- && (TARGET_68020
+ && ((TARGET_68020 || TARGET_5200)
|| !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0]))))
{
if (operands[1] == const0_rtx)
return \"clr%.b %0\";
- if (GET_CODE (operands[1]) == CONST_INT
+ if ((!TARGET_5200 || DATA_REG_P (operands[0]))
+ && GET_CODE (operands[1]) == CONST_INT
&& (INTVAL (operands[1]) & 255) == 255)
{
CC_STATUS_INIT;
@@ -4356,13 +4357,13 @@
"!TARGET_5200"
"lsl%.b %1,%0")
-;; On all 68k models, this makes faster code in a special case.
+;; On most 68k models, this makes faster code in a special case.
(define_insn "ashrsi_16"
[(set (match_operand:SI 0 "register_operand" "=d")
(ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
(const_int 16)))]
- ""
+ "!TARGET_68060"
"swap %0\;ext%.l %0")
;; On the 68000, this makes faster code in a special case.