diff options
author | ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-02 12:09:04 +0000 |
---|---|---|
committer | ramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-02 12:09:04 +0000 |
commit | 9811ae10cfcf56216986ad57f3cb972587ec9ac7 (patch) | |
tree | 69b90070e353abc45cd2c8d08168172fb39949c8 /gcc/config/arm/ldmstm.md | |
parent | 97abc1ffba1054e7074287e832472d8284fe7b8f (diff) | |
download | gcc-9811ae10cfcf56216986ad57f3cb972587ec9ac7.tar.gz |
For Greta Yorsh.
2012-03-02 Greta Yorsh <Greta.Yorsh@arm.com>
* config/arm/arm-ldmstm.ml (write_ldm_commutative_peephole):
Improve conditions for peepholes of loads followed by commutative
operators.
* config/arm/ldmstm.md: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184783 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/ldmstm.md')
-rw-r--r-- | gcc/config/arm/ldmstm.md | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/gcc/config/arm/ldmstm.md b/gcc/config/arm/ldmstm.md index 5db4a326996..0835f1637a8 100644 --- a/gcc/config/arm/ldmstm.md +++ b/gcc/config/arm/ldmstm.md @@ -1160,9 +1160,14 @@ [(match_operand:SI 6 "s_register_operand" "") (match_operand:SI 7 "s_register_operand" "")])) (clobber (reg:CC CC_REGNUM))])] - "(((operands[6] == operands[0] && operands[7] == operands[1]) - || (operands[7] == operands[0] && operands[6] == operands[1])) - && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))" + "((((REGNO (operands[6]) == REGNO (operands[0])) + && (REGNO (operands[7]) == REGNO (operands[1]))) + || ((REGNO (operands[7]) == REGNO (operands[0])) + && (REGNO (operands[6]) == REGNO (operands[1])))) + && (peep2_regno_dead_p (3, REGNO (operands[0])) + || (REGNO (operands[0]) == REGNO (operands[4]))) + && (peep2_regno_dead_p (3, REGNO (operands[1])) + || (REGNO (operands[1]) == REGNO (operands[4]))))" [(parallel [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)])) (clobber (reg:CC CC_REGNUM))])] @@ -1180,9 +1185,14 @@ (match_operator:SI 5 "commutative_binary_operator" [(match_operand:SI 6 "s_register_operand" "") (match_operand:SI 7 "s_register_operand" "")]))] - "(((operands[6] == operands[0] && operands[7] == operands[1]) - || (operands[7] == operands[0] && operands[6] == operands[1])) - && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))" + "((((REGNO (operands[6]) == REGNO (operands[0])) + && (REGNO (operands[7]) == REGNO (operands[1]))) + || ((REGNO (operands[7]) == REGNO (operands[0])) + && (REGNO (operands[6]) == REGNO (operands[1])))) + && (peep2_regno_dead_p (3, REGNO (operands[0])) + || (REGNO (operands[0]) == REGNO (operands[4]))) + && (peep2_regno_dead_p (3, REGNO (operands[1])) + || (REGNO (operands[1]) == REGNO (operands[4]))))" [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))] { if (!gen_ldm_seq (operands, 2, true)) |