Commit d9832fd2 by Richard Kenner

(output_scc_di): Swap operands when needed.

From-SVN: r10408
parent 241fa1a2
...@@ -706,7 +706,19 @@ output_scc_di(op, operand1, operand2, dest) ...@@ -706,7 +706,19 @@ output_scc_di(op, operand1, operand2, dest)
rtx dest; rtx dest;
{ {
rtx loperands[7]; rtx loperands[7];
enum rtx_code op_code = GET_CODE (op);
/* The m68k cmp.l instruction requires operand1 to be a reg as used
below. Swap the operands and change the op if these requirements
are not fulfilled. */
if (GET_CODE (operand2) == REG && GET_CODE (operand1) != REG)
{
rtx tmp = operand1;
operand1 = operand2;
operand2 = tmp;
op_code = swap_condition (op_code);
}
loperands[0] = operand1; loperands[0] = operand1;
if (GET_CODE (operand1) == REG) if (GET_CODE (operand1) == REG)
loperands[1] = gen_rtx (REG, SImode, REGNO (operand1) + 1); loperands[1] = gen_rtx (REG, SImode, REGNO (operand1) + 1);
...@@ -743,7 +755,7 @@ output_scc_di(op, operand1, operand2, dest) ...@@ -743,7 +755,7 @@ output_scc_di(op, operand1, operand2, dest)
#endif #endif
loperands[5] = dest; loperands[5] = dest;
switch (GET_CODE (op)) switch (op_code)
{ {
case EQ: case EQ:
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L", ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
......
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