Commit 43a72755 by Stephane Carrez Committed by Stephane Carrez

m68hc11.md ("*ashlsi3"): Operand 1 can be a memory reference using the stack pointer...

	* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
	reference using the stack pointer, adjust it since we push Y
	temporarily.
	("*ashrsi3"): Likewise.
	("*lshrsi3"): Likewise.

From-SVN: r43791
parent 35f0a736
2001-07-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
reference using the stack pointer, adjust it since we push Y
temporarily.
("*ashrsi3"): Likewise.
("*lshrsi3"): Likewise.
2001-07-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
......
......@@ -4190,8 +4190,15 @@
is true for 68hc11 only, we save temporary the value of Y. */
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
output_asm_insn (\"ldy\\t%1\", 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\";
}
......@@ -4591,8 +4598,15 @@
is true for 68hc11 only, we save temporary the value of Y. */
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
output_asm_insn (\"ldy\\t%1\", 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\";
}
......@@ -4928,8 +4942,15 @@
is true for 68hc11 only, we save temporary the value of Y. */
if (!Y_REG_P (operands[2]))
{
rtx ops[1];
ops[0] = operands[1];
output_asm_insn (\"pshy\", operands);
output_asm_insn (\"ldy\\t%1\", 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\";
}
......
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