User Guide

x87 Floating-Point Programming 281
24592—Rev. 3.15—November 2009 AMD64 Technology
Denormalized-Operand Exception (DE). The DE exception occurs in any of the following cases:
Denormalized Operand (any precision)—An arithmetic instruction uses an operand of any
precision that is in denormalized form, as described in “Denormalized (Tiny) Numbers” on
page 254.
Denormalized Single-Precision or Double-Precision Load—An instruction loads a single-
precision or double-precision (but not double-extended-precision) operand, which is in
denormalized form, into an x87 register.
Zero-Divide Exception (ZE). The ZE exception occurs when:
Divisor is Zero—An FDIV, FDIVP, FDIVR, FDIVRP, FIDIV, or FIDIVR instruction attempts to
divide zero into a non-zero finite dividend.
Source Operand is Zero—An FYL2X or FXTRACT instruction uses a source operand that is zero.
Table 6-18. Invalid-Operation Exception (IE) Causes
Operation Condition
Arithmetic
(IE exception)
Any Arithmetic Operation
A source operand is an SNaN, or
A source operand is an unsupported data type (pseudo-
NaN, pseudo-infinity, or unnormal).
FADD, FADDP Source operands are infinities with opposite signs.
FSUB, FSUBP, FSUBR,
FSUBRP
Source operands are infinities with same sign.
FMUL, FMULP Source operands are zero and infinity.
FDIV, FDIVP, FDIVR,
FDIVRP
Source operands are both infinities or both zeros.
FSQRT
Source operand is less than zero (except ±0 which returns
±0).
FYL2X
Source operand is less than zero (except ±0 which returns
±).
FYL2XP1 Source operand is less than minus one.
FCOS, FPTAN, FSIN,
FSINCOS
Source operand is infinity.
FCOM, FCOMP,
FCOMPP, FCOMI,
FCOMIP
A source operand is a QNaN.
FPREM, FPREM1 Dividend is infinity or divisor is zero.
FIST, FISTP, FISTTP Source operand overflows the destination size.
FBSTP Source operand overflows packed BCD data size.
Stack
(IE and SF exceptions)
Stack overflow or underflow.
1
Note:
1. The processor sets condition code C1 = 1 for overflow, C1 = 0 for underflow.