else
operands[1] = adj_offsettable_operand (operands[2], 4);
xoperands[0] = operands[3];
- xoperands[1] = operands[2];
+ if (GET_CODE (operands[1]) == CONST_INT
+ && INTVAL (operands[1]) >= -8 && INTVAL (operands[1]) < 0)
+ xoperands[1] = GEN_INT (-INTVAL (operands[2]) - 1);
+ else
+ xoperands[1] = operands[2];
output_asm_insn (output_move_simode (xoperands), xoperands);
if (GET_CODE (operands[1]) == CONST_INT)
{
{
operands[1] = GEN_INT (-INTVAL (operands[1]));
#ifdef NO_ADDSUB_Q
- return \"sub%.l %1,%R0\;addx%.l %3,%0\";
+ return \"sub%.l %1,%R0\;subx%.l %3,%0\";
#else
- return \"subq%.l %1,%R0\;addx%.l %3,%0\";
+ return \"subq%.l %1,%R0\;subx%.l %3,%0\";
#endif
}
}
else
operands[1] = adj_offsettable_operand (operands[2], 4);
xoperands[0] = operands[3];
- xoperands[1] = operands[2];
+ if (GET_CODE (operands[1]) == CONST_INT
+ && INTVAL (operands[1]) >= -8 && INTVAL (operands[1]) < 0)
+ xoperands[1] = GEN_INT (-INTVAL (operands[2]) - 1);
+ else
+ xoperands[1] = operands[2];
output_asm_insn (output_move_simode (xoperands), xoperands);
if (GET_CODE (operands[1]) == CONST_INT)
{
{
operands[1] = GEN_INT (-INTVAL (operands[1]));
#ifdef NO_ADDSUB_Q
- return \"add%.l %1,%R0\;subx%.l %3,%0\";
+ return \"add%.l %1,%R0\;addx%.l %3,%0\";
#else
- return \"addq%.l %1,%R0\;subx%.l %3,%0\";
+ return \"addq%.l %1,%R0\;addx%.l %3,%0\";
#endif
}
}