summaryrefslogtreecommitdiff
path: root/gcc/config/arm/ldmstm.md
diff options
context:
space:
mode:
authorramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-02 12:09:04 +0000
committerramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-02 12:09:04 +0000
commit9811ae10cfcf56216986ad57f3cb972587ec9ac7 (patch)
tree69b90070e353abc45cd2c8d08168172fb39949c8 /gcc/config/arm/ldmstm.md
parent97abc1ffba1054e7074287e832472d8284fe7b8f (diff)
downloadgcc-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.md22
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))