xops[2] = stack_pointer_rtx;
output_asm_insn (AS2 (sub%L2,%1,%2), xops);
- if (find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
- output_asm_insn (AS1 (fstp%T0,%0), xops);
- else
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- output_asm_insn (AS1 (fstp%T0,%y0), xops);
- }
+ output_asm_insn (AS1 (fstp%T0,%0), xops);
+ if (! find_regno_note (insn, REG_DEAD, FIRST_STACK_REG))
+ output_asm_insn (AS1 (fld%T0,%0), xops);
+
RET;
}
else
if (STACK_TOP_P (operands[1]) && NON_STACK_REG_P (operands[0]))
{
- if (stack_top_dies == 0)
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- stack_top_dies = 1;
- }
output_to_reg (operands[0], stack_top_dies);
RET;
}
if (STACK_TOP_P (operands[1]))
{
- if (stack_top_dies)
- return AS1 (fstp%z0,%y0);
- else
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- return AS1 (fstp%z0,%y0);
- }
+ output_asm_insn (AS1 (fstp%z0,%y0), operands);
+ if (! stack_top_dies)
+ return AS1 (fld%z0,%y0);
+
+ RET;
}
/* Handle other kinds of reads to the 387 */
if (NON_STACK_REG_P (operands[0]))
{
- if (stack_top_dies == 0)
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- stack_top_dies = 1;
- }
output_to_reg (operands[0], stack_top_dies);
RET;
}
if (GET_CODE (operands[0]) == MEM)
{
- if (stack_top_dies)
- return AS1 (fstp%z0,%y0);
- else
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- return AS1 (fstp%z0,%0);
- }
+ output_asm_insn (AS1 (fstp%z0,%y0), operands);
+ if (! stack_top_dies)
+ return AS1 (fld%z0,%y0);
+ RET;
}
abort ();
if (NON_STACK_REG_P (operands[0]))
{
- if (stack_top_dies == 0)
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- stack_top_dies = 1;
- }
output_to_reg (operands[0], stack_top_dies);
RET;
}
if (GET_CODE (operands[0]) == MEM)
{
- if (stack_top_dies)
- return AS1 (fstp%z0,%y0);
- else
- {
- output_asm_insn (AS1 (fld,%y1), operands);
- return AS1 (fstp%z0,%0);
- }
+ output_asm_insn (AS1 (fstp%z0,%y0), operands);
+ if (! stack_top_dies)
+ return AS1 (fld%z0,%y0);
+ RET;
}
abort ();