aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sh/sh.md
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1999-03-16 15:47:06 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1999-03-16 15:47:06 +0000
commit3ca0a5247e4180390d82b28433f16a98dbcdb00d (patch)
treecd2cbf3de58338577503bacb7614ec0b85da7a5b /gcc/config/sh/sh.md
parentbbecc1d6a762c1da720573b1a95848c545c2ec27 (diff)
downloadgcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.zip
gcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.tar.gz
gcc-3ca0a5247e4180390d82b28433f16a98dbcdb00d.tar.bz2
* sh.md (movsi_i): Move t/r alternative after r/rI alternative.
From-SVN: r25804
Diffstat (limited to 'gcc/config/sh/sh.md')
-rw-r--r--gcc/config/sh/sh.md13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index a3b8e91..f572d6f 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -2143,19 +2143,20 @@
""
"sett")
-;; t/r is first, so that it will be preferred over r/r when reloading a move
-;; of a pseudo-reg into the T reg
+;; t/r must come after r/r, lest reload will try to reload stuff like
+;; (set (subreg:SI (mem:QI (plus:SI (reg:SI 15 r15) (const_int 12)) 0) 0)
+;; (made from (set (subreg:SI (reg:QI 73) 0) ) into T.
(define_insn "movsi_i"
- [(set (match_operand:SI 0 "general_movdst_operand" "=t,r,r,r,r,r,m,<,<,xl,x,l,r")
- (match_operand:SI 1 "general_movsrc_operand" "r,Q,rI,mr,xl,t,r,x,l,r,>,>,i"))]
+ [(set (match_operand:SI 0 "general_movdst_operand" "=r,r,t,r,r,r,m,<,<,xl,x,l,r")
+ (match_operand:SI 1 "general_movsrc_operand" "Q,rI,r,mr,xl,t,r,x,l,r,>,>,i"))]
"
! TARGET_SH3E
&& (register_operand (operands[0], SImode)
|| register_operand (operands[1], SImode))"
"@
- cmp/pl %1
mov.l %1,%0
mov %1,%0
+ cmp/pl %1
mov.l %1,%0
sts %1,%0
movt %0
@@ -2166,7 +2167,7 @@
lds.l %1,%0
lds.l %1,%0
fake %1,%0"
- [(set_attr "type" "*,pcload_si,move,load_si,move,move,store,store,pstore,move,load,pload,pcload_si")
+ [(set_attr "type" "pcload_si,move,*,load_si,move,move,store,store,pstore,move,load,pload,pcload_si")
(set_attr "length" "*,*,*,*,*,*,*,*,*,*,*,*,*")])
;; t/r must come after r/r, lest reload will try to reload stuff like