87 Control Word rounding modes
Operators OPc_r and OPc_i
Do the following opcodes: OPd_u32
Do the following opcodes: OPd_u64 OPld_u64
OPnegass
Do OPrndtol.
Do OPscale, OPyl2x, OPyl2xp1.
Round 80 bit precision to 32 or 64 bits. OPtoprec
Reset statics for another .obj file.
Load complex operand into ST01 or flags or both.
Determine if a compare is to be done forwards (return 0) or backwards (return 1). Must follow same logic as load87().
Do the following opcodes: OPd_s16 OPd_s32 OPd_u16 OPd_s64
Perform an assignment to a long double/double/float.
Reload common subexpression.
Perform an assignment to a long double/double/float.
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs.
Given the result of an expression is in retregs, generate necessary code to return result in *pretregs.
Decide if we need to gen an FWAIT.
Save/restore ST0 or ST01
If op == -1, load expression e into ST0. else compute (eleft op e), eleft is in ST0. Must follow same logic as cmporder87();
Load OPpair or OPrpair into mST01
Determine if there is a special 8087 instruction to load constant e. Input: im 0 load real part 1 load imaginary part
Unary -, absolute value, square root, sine, cosine
Unary - for complex operands
Note elem e as being in ST(i) as being a value we want to keep.
Perform +=, -=, *= and /= for doubles.
Pop 8087 stack.
Take care of OPpostinc and OPpostdec.
Push 8087 stack. Generate and return any code necessary to preserve anything that might run off the end of the stack.
Save in memory any values in the 8087 that we want to keep.
Save any noted values that would be destroyed by n pushes
Exchange two entries in 8087 stack.
Generate in-line 8087 code for the following operators: add min mul div cmp
x87 FPU code generation
Compiler implementation of the D programming language.