aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNick Clifton <nickc@cygnus.com>1998-07-29 14:11:16 +0000
committerNick Clifton <nickc@gcc.gnu.org>1998-07-29 14:11:16 +0000
commite0d75375e722d868b1544fe69b3cb2f7b35ce434 (patch)
treef34d4167c0c8ebad49df2756bc19ddcdfc5ee4c9 /gcc
parent53fdbb3b3697b6688745bcb2628eb1873f46cec0 (diff)
downloadgcc-e0d75375e722d868b1544fe69b3cb2f7b35ce434.zip
gcc-e0d75375e722d868b1544fe69b3cb2f7b35ce434.tar.gz
gcc-e0d75375e722d868b1544fe69b3cb2f7b35ce434.tar.bz2
remove earlyclobber constraint from extendqisi2_insn
From-SVN: r21471
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/thumb.md11
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc00c84..0b87938 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 29 11:47:10 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/arm/thumb.md (extendqisi2_insn): Remove earlyclobber
+ constraint from second alternative.
+
Tue Jul 28 23:29:04 1998 Jason Merrill <jason@yorick.cygnus.com>
* configure.in: Fix --without/--disable cases for local-prefix,
diff --git a/gcc/config/arm/thumb.md b/gcc/config/arm/thumb.md
index 6886b8e..0369bb1 100644
--- a/gcc/config/arm/thumb.md
+++ b/gcc/config/arm/thumb.md
@@ -470,7 +470,7 @@
")
(define_insn "*extendqisi2_insn"
- [(set (match_operand:SI 0 "register_operand" "=l,&l")
+ [(set (match_operand:SI 0 "register_operand" "=l,l")
(sign_extend:SI (match_operand:QI 1 "memory_operand" "V,m")))]
""
"*
@@ -484,16 +484,21 @@
{
ops[1] = XEXP (XEXP (operands[1], 0), 0);
ops[2] = XEXP (XEXP (operands[1], 0), 1);
+ output_asm_insn (\"ldrsb\\t%0, [%1, %2]\", ops);
+ }
+ else if (REGNO (operands[0]) == REGNO (XEXP (operands[1], 0)))
+ {
+ output_asm_insn (\"ldrb\\t%0, [%0, #0]\;lsl\\t%0, %0, #24\;asr\\t%0, %0, #24\", ops);
}
else
{
ops[1] = XEXP (operands[1], 0);
ops[2] = const0_rtx;
+ output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
}
- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
return \"\";
}"
-[(set_attr "length" "2,4")])
+[(set_attr "length" "2,6")])
;; We don't really have extzv, but defining this using shifts helps
;; to reduce register pressure later on.