m68hc11.c (m68hc11_gen_rotate): Set carry before each 16-bit rotation.

* config/m68hc11/m68hc11.c (m68hc11_gen_rotate): Set carry before
	each 16-bit rotation.

From-SVN: r64125
This commit is contained in:
Stephane Carrez 2003-03-10 22:27:46 +01:00 committed by Stephane Carrez
parent 88849449f3
commit ae5b570e57
2 changed files with 16 additions and 13 deletions

View File

@ -1,3 +1,8 @@
2003-03-10 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.c (m68hc11_gen_rotate): Set carry before
each 16-bit rotation.
2003-03-10 Zack Weinberg <zack@codesourcery.com>
* c-opts.c (add_prefixed_path): Don't use concat. When

View File

@ -3855,15 +3855,15 @@ m68hc11_gen_rotate (code, insn, operands)
if (val > 0)
{
/* Set the carry to bit-15, but don't change D yet. */
if (GET_MODE (operands[0]) != QImode)
{
output_asm_insn ("asra", operands);
output_asm_insn ("rola", operands);
}
while (--val >= 0)
{
/* Set the carry to bit-15, but don't change D yet. */
if (GET_MODE (operands[0]) != QImode)
{
output_asm_insn ("asra", operands);
output_asm_insn ("rola", operands);
}
/* Rotate B first to move the carry to bit-0. */
if (D_REG_P (operands[0]))
output_asm_insn ("rolb", operands);
@ -3874,14 +3874,12 @@ m68hc11_gen_rotate (code, insn, operands)
}
else
{
/* Set the carry to bit-8 of D. */
if (val != 0 && GET_MODE (operands[0]) != QImode)
{
output_asm_insn ("tap", operands);
}
while (++val <= 0)
{
/* Set the carry to bit-8 of D. */
if (GET_MODE (operands[0]) != QImode)
output_asm_insn ("tap", operands);
/* Rotate B first to move the carry to bit-7. */
if (D_REG_P (operands[0]))
output_asm_insn ("rorb", operands);