SIMPLY FPU
by Raymond Filiatreault

Appendix 1
Alphabetical list of FPU instructions
```F2XM1     2 to the X power minus 1

FABS      Absolute value of ST(0)

FBLD      Load BCD data from memory

FBSTP     Store BCD data to memory

FCHS      Change the sign of ST(0)

FCLEX     Clear exceptions

FCMOVcc   Conditional move based on CPU flags

FCOM      Compare ST(0) to a floating point value

FCOMI     Compare ST(0) to ST(i) and set CPU flags

FCOMIP    Compare ST(0) to ST(i) and set CPU flags and pop ST(0)

FCOMP     Compare ST(0) to a floating point value and pop ST(0)

FCOMPP    Compare ST(0) to ST(1) and pop both registers

FCOS      Cosine of the angle value in ST(0)

FDECSTP   Decrease stack pointer

FDIV      Divide two floating point values

FDIVP     Divide two floating point values and pop ST(0)

FDIVR     Divide in reverse two floating point values

FDIVRP    Divide in reverse two floating point values and pop ST(0)

FFREE     Free a data register

FICOM     Compare ST(0) to an integer value

FICOMP    Compare ST(0) to an integer value and pop ST(0)

FIDIV     Divide ST(0) by an Integer located in memory

FIDIVR    Divide an Integer located in memory by ST(0)

FIMUL     Multiply ST(0) by an Integer located in memory

FINCSTP   Increase stack pointer

FINIT     Initialize the FPU

FIST      Store integer to memory

FISTP     Store integer to memory and pop ST(0)

FISUB     Subtract an Integer located in memory from ST(0)

FISUBR    Subtract ST(0) from an Integer located in memory

FLD1      Load the value of 1

FLDL2E    Load the log base 2 of e (Napierian constant)

FLDL2T    Load the log base 2 of Ten

FLDLG2    Load the log base 10 of 2 (common log of 2)

FLDLN2    Load the log base e of 2 (natural log of 2)

FLDPI     Load the value of PI

FLDZ      Load the value of Zero

FMUL      Multiply two floating point values

FMULP     Multiply two floating point values and pop ST(0)

FNCLEX    Clear exceptions (no wait)

FNINIT    Initialize the FPU (no wait)

FNOP      No operation

FNSAVE    Save state of FPU (no wait)

FNSTCW    Store control word (no wait)

FNSTENV   Store environment (no wait)

FNSTSW    Store status word (no wait)

FPATAN    Partial arctangent of the ratio ST(1)/ST(0)

FPREM     Partial remainder

FPREM1    Partial remainder 1

FPTAN     Partial tangent of the angle value in ST(0)

FRNDINT   Round ST(0) to an integer

FRSTOR    Restore all registers

FSAVE     Save state of FPU

FSCALE    Scale ST(0) by ST(1)

FSIN      Sine of the angle value in ST(0)

FSINCOS   Sine and cosine of the angle value in ST(0)

FSQRT     Square root of ST(0)

FST       Store real number

FSTCW     Store control word

FSTENV    Store environment

FSTP      Store real number and pop ST(0)

FSTSW     Store status word

FSUB      Subtract two floating point values

FSUBP     Subtract two floating point values and pop ST(0)

FSUBR     Subtract in reverse two floating point values

FSUBRP    Subtract in reverse two floating point values and Pop ST(0)

FTST      Test ST(0) by comparing it to +0.0

FUCOM     Unordered Compare ST(0) to a floating point value

FUCOMI    Unordered Compare ST(0) to ST(i) and set CPU flags

FUCOMIP   Unordered Compare ST(0) to ST(i) and set CPU flags and pop ST(0)

FUCOMP    Unordered Compare ST(0) to a floating point value and pop ST(0)

FUCOMPP   Unordered Compare ST(0) to ST(1) and pop both registers

FWAIT     Wait while FPU is busy

FXAM      Examine the content of ST(0)

FXCH      Exchange the top data register with another data register

FXTRACT   Extract exponent and significand

FYL2X     Y*Log2X

FYL2XP1   Y*Log2(X+1)```