m68hc11.md ("*ashlsi3"): Avoid saving y if we know it is dead.

* config/m68hc11/m68hc11.md ("*ashlsi3"): Avoid saving y if we know
	it is dead.
	("*ashrsi3"): Likewise.
	("*lshrsi3"): Likewise.

From-SVN: r55270
This commit is contained in:
Stephane Carrez 2002-07-05 23:59:17 +02:00 committed by Stephane Carrez
parent 99ed68ea7f
commit 4c8aed1419
2 changed files with 26 additions and 13 deletions

View File

@ -1,9 +1,16 @@
2002-07-05 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.md ("*ashlsi3"): Avoid saving y if we know
it is dead.
("*ashrsi3"): Likewise.
("*lshrsi3"): Likewise.
2002-07-05 Vladimir Makarov <vmakarov@redhat.com>
* genautomata.c (output_max_insn_queue_index_def): Take latencies
into account.
2002-07-06 Stephane Carrez <stcarrez@nerim.fr>
2002-07-05 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.md (peephole2): New peephole2 to optimize
address computation and memory moves.

View File

@ -4697,16 +4697,18 @@
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
int y_dead = dead_register_here (insn, iy_reg);
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
if (y_dead == 0)
{
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
}
output_asm_insn (\"ldy\\t%0\", ops);
output_asm_insn (\"bsr\\t___ashlsi3\", operands);
return \"puly\";
return y_dead == 0 ? \"puly\" : \"\";
}
return \"bsr\\t___ashlsi3\";
}")
@ -5105,16 +5107,18 @@
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
int y_dead = dead_register_here (insn, iy_reg);
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
if (y_dead == 0)
{
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
}
output_asm_insn (\"ldy\\t%0\", ops);
output_asm_insn (\"bsr\\t___ashrsi3\", operands);
return \"puly\";
return y_dead == 0 ? \"puly\" : \"\";
}
return \"bsr\\t___ashrsi3\";
}")
@ -5449,16 +5453,18 @@
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
int y_dead = dead_register_here (insn, iy_reg);
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
if (y_dead == 0)
{
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
output_asm_insn (\"pshy\", operands);
if (reg_mentioned_p (stack_pointer_rtx, operands[1]))
ops[0] = adjust_address (operands[1], GET_MODE (operands[1]), 2);
}
output_asm_insn (\"ldy\\t%0\", ops);
output_asm_insn (\"bsr\\t___lshrsi3\", operands);
return \"puly\";
return y_dead == 0 ? \"puly\" : \"\";
}
return \"bsr\\t___lshrsi3\";
}")