diff options
author | Torbjorn Granlund <tege@gnu.org> | 1994-02-12 01:06:14 +0000 |
---|---|---|
committer | Torbjorn Granlund <tege@gnu.org> | 1994-02-12 01:06:14 +0000 |
commit | 324e52cc5b57fdc9a0e529ae97cba33109a08791 (patch) | |
tree | 70962808566cfd28e67afd70baa37f7f164b595d | |
parent | 5c5e36c5446aaa7a3ead6385a100ad76bf2a42a8 (diff) | |
download | gcc-324e52cc5b57fdc9a0e529ae97cba33109a08791.zip gcc-324e52cc5b57fdc9a0e529ae97cba33109a08791.tar.gz gcc-324e52cc5b57fdc9a0e529ae97cba33109a08791.tar.bz2 |
(definition of "type"): Add "jmpreg" as new type.
Change "mtlr" to "mtjmpr".
(movsi matcher): Pair `c' and `l' in the same constraint alternative.
(return): Set attribute to "jmpreg".
(indirect_jump): Likewise.
From-SVN: r6534
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 7c5388f..b481463 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -22,7 +22,7 @@ ;; Define an insn type attribute. This is used in function unit delay ;; computations. -(define_attr "type" "integer,load,fpload,imul,idiv,branch,compare,delayed_compare,fpcompare,mtlr,fp,dmul,sdiv,ddiv,ssqrt,dsqrt" +(define_attr "type" "integer,load,fpload,imul,idiv,branch,compare,delayed_compare,fpcompare,mtjmpr,fp,dmul,sdiv,ddiv,ssqrt,dsqrt,jmpreg" (const_string "integer")) ;; Length (in bytes). @@ -104,12 +104,12 @@ 4 0) (define_function_unit "bpu" 1 0 - (and (eq_attr "type" "mtlr") + (and (eq_attr "type" "mtjmpr") (eq_attr "cpu" "rios1,rios2")) 5 0) (define_function_unit "bpu" 1 0 - (and (eq_attr "type" "mtlr") + (and (eq_attr "type" "mtjmpr") (eq_attr "cpu" "ppc601,ppc603,ppc604,ppc620")) 4 0) @@ -2866,7 +2866,7 @@ }") (define_insn "" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*c*q,*l,*h") + [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*q,*c*l,*h") (match_operand:SI 1 "input_operand" "r,m,r,I,J,*h,r,r,0"))] "TARGET_POWER && (gpc_reg_operand (operands[0], SImode) || gpc_reg_operand (operands[1], SImode))" @@ -2880,7 +2880,7 @@ mt%0 %1 mt%0 %1 cror 0,0,0" - [(set_attr "type" "*,load,*,*,*,*,*,mtlr,*")]) + [(set_attr "type" "*,load,*,*,*,*,*,mtjmpr,*")]) (define_insn "" [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,*h") @@ -5492,14 +5492,16 @@ (define_insn "return" [(return)] "direct_return ()" - "{br|blr}") + "{br|blr}" + [(set_attr "type" "jmpreg")]) (define_insn "indirect_jump" [(set (pc) (match_operand:SI 0 "register_operand" "c,l"))] "" "@ bctr - {br|blr}") + {br|blr}" + [(set_attr "type" "jmpreg")]) ;; Table jump for switch statements: (define_expand "tablejump" |