aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-03-27 08:21:59 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-03-27 08:21:59 -0500
commite76e75bb709e93a84d55a3f0366b3ade0d532e7f (patch)
treeb454df860de4422ab15c5de9c7b5b572df8d94ad /gcc
parent6ac2ba936e54e9f0f934bb39e5672cc186e2af09 (diff)
downloadgcc-e76e75bb709e93a84d55a3f0366b3ade0d532e7f.zip
gcc-e76e75bb709e93a84d55a3f0366b3ade0d532e7f.tar.gz
gcc-e76e75bb709e93a84d55a3f0366b3ade0d532e7f.tar.bz2
(mov[qhs]i): Allow moving a special reg to itself.
From-SVN: r3891
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.md27
1 files changed, 15 insertions, 12 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 23a7f3c..f6a9d21 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -2103,8 +2103,8 @@
}")
(define_insn ""
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*c*q,*l")
- (match_operand:SI 1 "input_operand" "r,m,r,I,J,*h,r,r"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*c*q,*l,*h")
+ (match_operand:SI 1 "input_operand" "r,m,r,I,J,*h,r,r,0"))]
"gpc_reg_operand (operands[0], SImode)
|| gpc_reg_operand (operands[1], SImode)"
"@
@@ -2115,8 +2115,9 @@
cau %0,0,%u1
mf%1 %0
mt%0 %1
- mt%0 %1"
- [(set_attr "type" "*,load,*,*,*,*,*,mtlr")])
+ mt%0 %1
+ cror 0,0,0"
+ [(set_attr "type" "*,load,*,*,*,*,*,mtlr,*")])
;; Split a load of a large constant into the appropriate two-insn
;; sequence.
@@ -2161,8 +2162,8 @@
}")
(define_insn ""
- [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r,r,*h")
- (match_operand:HI 1 "input_operand" "r,m,r,i,*h,r"))]
+ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r,r,*h,*h")
+ (match_operand:HI 1 "input_operand" "r,m,r,i,*h,r,0"))]
"gpc_reg_operand (operands[0], HImode)
|| gpc_reg_operand (operands[1], HImode)"
"@
@@ -2171,8 +2172,9 @@
sth%U0%X0 %1,%0
cal %0,%w1(0)
mf%1 %0
- mt%0 %1"
- [(set_attr "type" "*,load,*,*,*,*")])
+ mt%0 %1
+ cror 0,0,0"
+ [(set_attr "type" "*,load,*,*,*,*,*")])
(define_expand "movqi"
[(set (match_operand:QI 0 "general_operand" "")
@@ -2188,8 +2190,8 @@
}")
(define_insn ""
- [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r,r,*h")
- (match_operand:QI 1 "input_operand" "r,m,r,i,*h,r"))]
+ [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r,r,*h,*h")
+ (match_operand:QI 1 "input_operand" "r,m,r,i,*h,r,0"))]
"gpc_reg_operand (operands[0], QImode)
|| gpc_reg_operand (operands[1], QImode)"
"@
@@ -2198,8 +2200,9 @@
stb%U0%X0 %1,%0
cal %0,%1(0)
mf%1 %0
- mt%0 %1"
- [(set_attr "type" "*,load,*,*,*,*")])
+ mt%0 %1
+ cror 0,0,0"
+ [(set_attr "type" "*,load,*,*,*,*,*")])
;; Here is how to move condition codes around. When we store CC data in
;; an integer register or memory, we store just the high-order 4 bits.