Commit ce8882e6 by Stephane Carrez Committed by Stephane Carrez

m68hc11.c (m68hc11_gen_movhi): Optimize moves between X and Y by using sequences of xgdx and xgdy.

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Optimize moves
	between X and Y by using sequences of xgdx and xgdy.

From-SVN: r41861
parent a1fdc802
2001-05-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Optimize moves
between X and Y by using sequences of xgdx and xgdy.
2001-05-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("*logicalsi3_silshr16"): Use '?' instead
of '!' for the 'D' alternative ('!' is too strong).
("*logicalsi3_silshl16"): Likewise.
......
......@@ -3135,8 +3135,20 @@ m68hc11_gen_movhi (insn, operands)
}
else if (Y_REG_P (operands[1]))
{
output_asm_insn ("sty\t%t1", operands);
output_asm_insn ("ldx\t%t1", operands);
/* When both D and Y are dead, use the sequence xgdy, xgdx
to move Y into X. The D and Y registers are modified. */
if (optimize && find_regno_note (insn, REG_DEAD, HARD_Y_REGNUM)
&& dead_register_here (insn, d_reg))
{
output_asm_insn ("xgdy", operands);
output_asm_insn ("xgdx", operands);
CC_STATUS_INIT;
}
else
{
output_asm_insn ("sty\t%t1", operands);
output_asm_insn ("ldx\t%t1", operands);
}
}
else if (SP_REG_P (operands[1]))
{
......@@ -3165,8 +3177,20 @@ m68hc11_gen_movhi (insn, operands)
}
else if (X_REG_P (operands[1]))
{
output_asm_insn ("stx\t%t1", operands);
output_asm_insn ("ldy\t%t1", operands);
/* When both D and X are dead, use the sequence xgdx, xgdy
to move X into Y. The D and X registers are modified. */
if (optimize && find_regno_note (insn, REG_DEAD, HARD_X_REGNUM)
&& dead_register_here (insn, d_reg))
{
output_asm_insn ("xgdx", operands);
output_asm_insn ("xgdy", operands);
CC_STATUS_INIT;
}
else
{
output_asm_insn ("stx\t%t1", operands);
output_asm_insn ("ldy\t%t1", operands);
}
}
else if (SP_REG_P (operands[1]))
{
......
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