Commit 4a8c52e0 by Andreas Schwab Committed by Jeff Law

* m68k.c (output_scc_di): Use cmpw #0 only for address registers.

From-SVN: r21119
parent 42801468
Mon Jul 13 23:31:04 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* m68k.c (output_scc_di): Use cmpw #0 only for address registers.
Mon Jul 13 23:26:43 1998 Jeffrey A Law (law@cygnus.com)
* tree.h (tree_common): Note front-end dependencies on layout of
......
......@@ -1046,39 +1046,52 @@ output_scc_di(op, operand1, operand2, dest)
}
loperands[4] = gen_label_rtx();
if (operand2 != const0_rtx)
{
#ifdef MOTOROLA
#ifdef SGS_CMP_ORDER
output_asm_insn ("cmp%.l %0,%2\n\tjbne %l4\n\tcmp%.l %1,%3", loperands);
output_asm_insn ("cmp%.l %0,%2\n\tjbne %l4\n\tcmp%.l %1,%3", loperands);
#else
output_asm_insn ("cmp%.l %2,%0\n\tjbne %l4\n\tcmp%.l %3,%1", loperands);
output_asm_insn ("cmp%.l %2,%0\n\tjbne %l4\n\tcmp%.l %3,%1", loperands);
#endif
#else
#ifdef SGS_CMP_ORDER
output_asm_insn ("cmp%.l %0,%2\n\tjne %l4\n\tcmp%.l %1,%3", loperands);
output_asm_insn ("cmp%.l %0,%2\n\tjne %l4\n\tcmp%.l %1,%3", loperands);
#else
output_asm_insn ("cmp%.l %2,%0\n\tjne %l4\n\tcmp%.l %3,%1", loperands);
output_asm_insn ("cmp%.l %2,%0\n\tjne %l4\n\tcmp%.l %3,%1", loperands);
#endif
#endif
else if (TARGET_68020 || TARGET_5200)
#ifdef MOTOROLA
output_asm_insn ("tst%.l %0\n\tjbne %l4\n\ttst%.l %1", loperands);
#else
output_asm_insn ("tst%.l %0\n\tjne %l4\n\ttst%.l %1", loperands);
#endif
}
else
#ifdef MOTOROLA
{
if (TARGET_68020 || TARGET_5200 || ! ADDRESS_REG_P (loperands[0]))
output_asm_insn ("tst%.l %0", loperands);
else
{
#ifdef SGS_CMP_ORDER
output_asm_insn ("cmp%.w %0,%#0\n\tjbne %l4\n\tcmp%.w %1,%#0", loperands);
output_asm_insn ("cmp%.w %0,%#0", loperands);
#else
output_asm_insn ("cmp%.w %#0,%0\n\tjbne %l4\n\tcmp%.w %#0,%1", loperands);
output_asm_insn ("cmp%.w %#0,%0", loperands);
#endif
}
#ifdef MOTOROLA
output_asm_insn ("jbne %l4", loperands);
#else
output_asm_insn ("jne %l4", loperands);
#endif
if (TARGET_68020 || TARGET_5200 || ! ADDRESS_REG_P (loperands[1]))
output_asm_insn ("tst%.l %1", loperands);
else
{
#ifdef SGS_CMP_ORDER
output_asm_insn ("cmp%.w %0,%#0\n\tjne %l4\n\tcmp%.w %1,%#0", loperands);
output_asm_insn ("cmp%.w %1,%#0", loperands);
#else
output_asm_insn ("cmp%.w %#0,%0\n\tjne %l4\n\tcmp%.w %#0,%1", loperands);
#endif
output_asm_insn ("cmp%.w %#0,%1", loperands);
#endif
}
}
loperands[5] = dest;
switch (op_code)
......
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