From e76e75bb709e93a84d55a3f0366b3ade0d532e7f Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Sat, 27 Mar 1993 08:21:59 -0500 Subject: [PATCH] (mov[qhs]i): Allow moving a special reg to itself. From-SVN: r3891 --- gcc/config/rs6000/rs6000.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 23a7f3c5afd..f6a9d21d342 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. -- 2.30.2