Commit 2d68f67f by Greta Yorsh Committed by Ramana Radhakrishnan

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.

From-SVN: r184783
parent 7167a501
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.
2012-03-02 Richard Guenther <rguenther@suse.de> 2012-03-02 Richard Guenther <rguenther@suse.de>
* BASE-VER: Set to 4.8.0. * BASE-VER: Set to 4.8.0.
......
...@@ -216,9 +216,14 @@ let write_ldm_commutative_peephole thumb = ...@@ -216,9 +216,14 @@ let write_ldm_commutative_peephole thumb =
Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))\n" indent (nregs * 2 + 3); Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))\n" indent (nregs * 2 + 3);
Printf.printf "%s (clobber (reg:CC CC_REGNUM))])]\n" indent Printf.printf "%s (clobber (reg:CC CC_REGNUM))])]\n" indent
end; end;
Printf.printf " \"(((operands[%d] == operands[0] && operands[%d] == operands[1])\n" (nregs * 2 + 2) (nregs * 2 + 3); Printf.printf " \"((((REGNO (operands[%d]) == REGNO (operands[0]))\n" (nregs * 2 + 2);
Printf.printf " || (operands[%d] == operands[0] && operands[%d] == operands[1]))\n" (nregs * 2 + 3) (nregs * 2 + 2); Printf.printf " && (REGNO (operands[%d]) == REGNO (operands[1])))\n" (nregs * 2 + 3);
Printf.printf " && peep2_reg_dead_p (%d, operands[0]) && peep2_reg_dead_p (%d, operands[1]))\"\n" (nregs + 1) (nregs + 1); Printf.printf " || ((REGNO (operands[%d]) == REGNO (operands[0]))\n" (nregs * 2 + 3);
Printf.printf " && (REGNO (operands[%d]) == REGNO (operands[1]))))\n" (nregs * 2 + 2);
Printf.printf " && (peep2_regno_dead_p (%d, REGNO (operands[0]))\n" (nregs + 1);
Printf.printf " || (REGNO (operands[0]) == REGNO (operands[%d])))\n" (nregs * 2);
Printf.printf " && (peep2_regno_dead_p (%d, REGNO (operands[1]))\n" (nregs + 1);
Printf.printf " || (REGNO (operands[1]) == REGNO (operands[%d]))))\"\n" (nregs * 2);
begin begin
if thumb then if thumb then
Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))]\n" Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))]\n"
......
...@@ -1160,9 +1160,14 @@ ...@@ -1160,9 +1160,14 @@
[(match_operand:SI 6 "s_register_operand" "") [(match_operand:SI 6 "s_register_operand" "")
(match_operand:SI 7 "s_register_operand" "")])) (match_operand:SI 7 "s_register_operand" "")]))
(clobber (reg:CC CC_REGNUM))])] (clobber (reg:CC CC_REGNUM))])]
"(((operands[6] == operands[0] && operands[7] == operands[1]) "((((REGNO (operands[6]) == REGNO (operands[0]))
|| (operands[7] == operands[0] && operands[6] == operands[1])) && (REGNO (operands[7]) == REGNO (operands[1])))
&& peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, 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 [(parallel
[(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)])) [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))
(clobber (reg:CC CC_REGNUM))])] (clobber (reg:CC CC_REGNUM))])]
...@@ -1180,9 +1185,14 @@ ...@@ -1180,9 +1185,14 @@
(match_operator:SI 5 "commutative_binary_operator" (match_operator:SI 5 "commutative_binary_operator"
[(match_operand:SI 6 "s_register_operand" "") [(match_operand:SI 6 "s_register_operand" "")
(match_operand:SI 7 "s_register_operand" "")]))] (match_operand:SI 7 "s_register_operand" "")]))]
"(((operands[6] == operands[0] && operands[7] == operands[1]) "((((REGNO (operands[6]) == REGNO (operands[0]))
|| (operands[7] == operands[0] && operands[6] == operands[1])) && (REGNO (operands[7]) == REGNO (operands[1])))
&& peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, 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)]))] [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))]
{ {
if (!gen_ldm_seq (operands, 2, true)) if (!gen_ldm_seq (operands, 2, true))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment