FADD            Add real                             Exceptions: I D O U P
FADDP Add real and pop C3 C2 C1 C0: ? ? * ?

FADD [[destination,] source]
FADDP [destination, ST]

Logic ; FADD source ; FADD and FADDP
ST ← ST + source ST(1) ← ST(1) + ST
pop ST

; FADD dest, source ; FADDP dest, ST
ST(dest) ← ST(dest) + ST(src) ST(dest) ← ST(dest) + ST
pop ST

FADD/FADDP add the source operand to the destination operand.

The one-operand form of FADD adds a (single or double real) memory
operand to ST.
The two-operand form of FADD adds two register operands (ST must
be one of these) and stores the sum in the destination register.
FADDP works like the two-operand FADD but requires ST to be the
source operand; it also pops the stack.
The no-operand forms FADD and FADDP equal 'FADDP ST(1), ST'.


Opcode Format
D8 /0 FADD m32
DC /0 FADD m64
D8 C0 + i FADD ST,ST(i)
DC C0 + i FADD ST(i),ST
DE C0 + i FADDP ST(i),ST
DE C1 FADD
DE C1 FADDP


Timing
Variations/
operand 8087 287 387 486 Pentium
fadd 70-100 70-100 23-34 8-20 3/1 FX
fadd m32 90-120+EA 90-120 24-32 8-20 3/1 FX
fadd m64 95-125+EA 95-125 29-37 8-20 3/1 FX
faddp 75-105 75-105 23-31 8-20 3/1 FX