![Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3 Manual Download Page 1782](http://html.mh-extra.com/html/intel/itanium-architecture-software-developers-volume-3-rev-2-3/itanium-architecture-software-developers-volume-3-rev-2-3_manual_20734041782.webp)
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.
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...