diff options
author | Dale Johannesen <dalej@apple.com> | 2005-06-04 21:32:40 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2005-06-04 21:32:40 +0000 |
commit | 5e41ef34d333517d52f9cee640f3906096839d39 (patch) | |
tree | ccca894d71424c49311d2ee1f04b0a5f65066eb3 /gcc/config/rs6000/rs6000.md | |
parent | df389a8f6fa3d01f318fa1cd06187a616471f146 (diff) |
2005-06-04 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.c (no_global_regs_above): New.
(rs6000_emit_prologue): Use it; cosmetic formatting fixes.
(rs6000_emit_epilogue): Use it; cosmetic formatting fixes.
(rs6000_conditional_register_usage): Don't put Darwin PIC
register in global_regs.
(rs6000_stack_info): Don't set lr_save_p just because Darwin
PIC reg used.
(rs6000_emit_prologue): Save LR in R0 around Darwin PIC setup,
if not done by lr_save_p.
* config/rs6000/rs6000.md (insnv1_internal1): Back out 05-18 patch.
Use rotate instead of ashift.
(call_indirect_nonlocal_sysv): Prefer CTR to LR.
(call_value_indirect_nonlocal_sysv): Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@100601 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/rs6000/rs6000.md')
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 15426d96f63..97ac84ba753 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -3004,7 +3004,7 @@ [(set (zero_extract:SI (match_operand:SI 0 "gpc_reg_operand" "+r") (match_operand:SI 1 "const_int_operand" "i") (match_operand:SI 2 "const_int_operand" "i")) - (ashift:SI (match_operand:SI 3 "gpc_reg_operand" "r") + (rotate:SI (match_operand:SI 3 "gpc_reg_operand" "r") (match_operand:SI 4 "const_int_operand" "i")))] "(32 - (INTVAL (operands[4]) & 31)) >= INTVAL (operands[1])" "* @@ -3014,7 +3014,7 @@ int size = INTVAL (operands[1]) & 31; operands[4] = GEN_INT (shift - start - size); - operands[1] = GEN_INT (start + size - 1 - shift); + operands[1] = GEN_INT (start + size - 1); return \"{rlimi|rlwimi} %0,%3,%h4,%h2,%h1\"; }" [(set_attr "type" "insert_word")]) @@ -10328,10 +10328,10 @@ ;; which indicates how to set cr1 (define_insn "*call_indirect_nonlocal_sysv" - [(call (mem:SI (match_operand:SI 0 "register_operand" "cl,cl")) - (match_operand 1 "" "g,g")) - (use (match_operand:SI 2 "immediate_operand" "O,n")) - (clobber (match_scratch:SI 3 "=l,l"))] + [(call (mem:SI (match_operand:SI 0 "register_operand" "c,*l,c,*l")) + (match_operand 1 "" "g,g,g,g")) + (use (match_operand:SI 2 "immediate_operand" "O,O,n,n")) + (clobber (match_scratch:SI 3 "=l,l,l,l"))] "DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN" { @@ -10343,8 +10343,8 @@ return "b%T0l"; } - [(set_attr "type" "jmpreg,jmpreg") - (set_attr "length" "4,8")]) + [(set_attr "type" "jmpreg,jmpreg,jmpreg,jmpreg") + (set_attr "length" "4,4,8,8")]) (define_insn "*call_nonlocal_sysv" [(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s,s")) @@ -10383,10 +10383,10 @@ (define_insn "*call_value_indirect_nonlocal_sysv" [(set (match_operand 0 "" "") - (call (mem:SI (match_operand:SI 1 "register_operand" "cl,cl")) - (match_operand 2 "" "g,g"))) - (use (match_operand:SI 3 "immediate_operand" "O,n")) - (clobber (match_scratch:SI 4 "=l,l"))] + (call (mem:SI (match_operand:SI 1 "register_operand" "c,*l,c,*l")) + (match_operand 2 "" "g,g,g,g"))) + (use (match_operand:SI 3 "immediate_operand" "O,O,n,n")) + (clobber (match_scratch:SI 4 "=l,l,l,l"))] "DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN" { @@ -10398,8 +10398,8 @@ return "b%T1l"; } - [(set_attr "type" "jmpreg,jmpreg") - (set_attr "length" "4,8")]) + [(set_attr "type" "jmpreg,jmpreg,jmpreg,jmpreg") + (set_attr "length" "4,4,8,8")]) (define_insn "*call_value_nonlocal_sysv" [(set (match_operand 0 "" "") |