User Guide

288 x87 Floating-Point Programming
AMD64 Technology 24592—Rev. 3.15—November 2009
Unmasked Responses. The processor handles unmasked exceptions as shown in Table 6-22 on
page 288.
Table 6-22. Unmasked Responses to x87 Floating-Point Exceptions
Exception and
Mnemonic
Type of
Operation
Processor Response
1
Invalid-operation exception (IE)
Set IE and ES flags, and call the #MF service routine
2
. The
destination and the TOP are not changed.
Invalid-operation exception (IE)
with stack fault (SF)
Denormalized-operand exception (DE)
Set DE and ES flags, and call the #MF service routine
2
. The
destination and the TOP are not changed.
Zero-divide exception (ZE)
Set ZE and ES flags, and call the #MF service routine
2
. The
destination and the TOP are not changed.
Overflow exception (OE)
If the destination is memory, set OE and ES flags, and
call the #MF service routine
2
. The destination and the
TOP are not changed.
If the destination is an x87 register:
- divide true result by 2
24576
,
- round significand according to PC precision control
and RC rounding control (or round to double-extended
precision for instructions not observing PC precision
control),
- write C1 condition code according to rounding (C1 = 1
for round up, C1=0forround toward zero),
- write result to destination,
- pop or push stack if specified by the instruction,
- set OE and ES flags, and call the #MF service routine
2
.
Note:
1. For all unmasked exceptions, the processor’s response also includes assertion of the FERR# output signal at the
completion of the instruction that caused the exception.
2. When CR0.NE is set to 1, the #MF service routine is taken at the next non-control x87 instruction. If CR0.NE is
cleared to zero, x87 floating-point instructions are handled by setting the FERR# input signal to 1, which external
logic can use to handle the interrupt.