Intel 253666-024US Computer Hardware User Manual


 
3-402 Vol. 2A FSUBR/FSUBRP/FISUBR—Reverse Subtract
INSTRUCTION SET REFERENCE, A-M
FSUBR/FSUBRP/FISUBR—Reverse Subtract
Description
Subtracts the destination operand from the source operand and stores the difference
in the destination location. The destination operand is always an FPU register; the
source operand can be a register or a memory location. Source operands in memory
can be in single-precision or double-precision floating-point format or in word or
doubleword integer format.
These instructions perform the reverse operations of the FSUB, FSUBP, and FISUB
instructions. They are provided to support more efficient coding.
The no-operand version of the instruction subtracts the contents of the ST(1) register
from the ST(0) register and stores the result in ST(1). The one-operand version
subtracts the contents of the ST(0) register from the contents of a memory location
(either a floating-point or an integer value) and stores the result in ST(0). The two-
operand version, subtracts the contents of the ST(i) register from the ST(0) register
or vice versa.
The FSUBRP instructions perform the additional operation of popping the FPU register
stack following the subtraction. To pop the register stack, the processor marks the
ST(0) register as empty and increments the stack pointer (TOP) by 1. The no-
operand version of the floating-point reverse subtract instructions always results in
Opcode Instruction 64-Bit
Mode
Compat/
Leg Mode
Description
D8 /5 FSUBR m32fp Valid Valid Subtract ST(0) from m32fp and
store result in ST(0).
DC /5 FSUBR m64fp Valid Valid Subtract ST(0) from m64fp and
store result in ST(0).
D8 E8+i FSUBR ST(0), ST(i) Valid Valid Subtract ST(0) from ST(i) and
store result in ST(0).
DC E0+i FSUBR ST(i), ST(0) Valid Valid Subtract ST(i) from ST(0) and
store result in ST(i).
DE E0+i FSUBRP ST(i), ST(0) Valid Valid Subtract ST(i) from ST(0), store
result in ST(i), and pop register
stack.
DE E1 FSUBRP Valid Valid Subtract ST(1) from ST(0), store
result in ST(1), and pop register
stack.
DA /5 FISUBR m32int Valid Valid Subtract ST(0) from m32int and
store result in ST(0).
DE /5 FISUBR m16int Valid Valid Subtract ST(0) from m16int and
store result in ST(0).