
4:480
Volume 4: IA-32 SSE Instruction Reference
4.7.1.9
Indefinite
In response to a masked invalid-operation floating-point exceptions, the indefinite
value QNAN is produced. The integer indefinite, which can be produced during
conversion from single-precision floating-point to 32-bit integer, is defined to be
80000000H.
4.7.2
Operating on NaNs
As was described in
Section 4.7.1.8, “NaNs” on page 4:479
, the Intel SSE architecture
supports two types of NaNs: SNaNs and QNaNs. An SNaN is any NaN value with its
most-significant fraction bit set to 0 and at least one other fraction bit set to 1. (If all
the fraction bits are set to 0, the value is an
.) A QNaN is any NaN value with the
most-significant fraction bit set to 1. The sign bit of a NaN is not interpreted.
As a general rule, when a QNaN is used in one or more arithmetic floating-point
instructions, it is allowed to propagate through a computation. An SNaN on the other
hand causes a floating-point invalid-operation exception to be signaled. SNaNs are
typically used to trap or invoke an exception handler.
The invalid operation exception has a flag and a mask bit associated with it in MXCSR.
The mask bit determines how the an SNaN value is handled. If the invalid operation
mask bit is set, the SNaN is converted to a QNaN by setting the most-significant
fraction bit of the value to 1. The result is then stored in the destination operand and
the invalid operation flag is set. If the invalid operation mask is clear, an invalid
operation fault is signaled and no result is stored in the destination operand.
When a real operation or exception delivers a QNaN result, the value of the result
depends on the source operands, as shown in
. The exceptions to the behavior
described in
are the MINPS and MAXPS instructions. If only one source is a
NaN for these instructions, the Src2 operand (either NaN or real value) is written to the
result; this differs from the behavior for other instructions as defined in
,
which is to always write the NaN to the result, regardless of which source operand
contains the NaN. This approach for MINPS/MAXPS allows NaN data to be screened out
of the bounds-checking portion of an algorithm. If instead of this behavior, it is required
that the NaN source operand be returned, the min/max functionality can be emulated
using a sequence of instructions: comparison followed by AND, ANDN and OR.
In general Src1 and Src2 relate to an SSE instruction as follows:
ADDPS Src1, Src2/m128
Except for the rules given at the beginning of this section for encoding SNaNs and
QNaNs, software is free to use the bits in the significand of a NaN for any purpose. Both
SNaNs and QNaNs can be encoded to carry and store data, such as diagnostic
information.
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...