
1:62
Volume 1, Part 1: Application Programming Model
For these instructions, if any source contains a deferred exception token, all predicate
targets are either cleared or left unchanged, depending on the compare type (see
). Software can use this behavior to ensure that any dependent
conditional branches are not taken and any dependent predicated instructions are
nullified. See
.
Deferred exception tokens can also be tested for with certain compare instructions. The
test NaT (
tnat
) instruction tests the NaT bit corresponding to the specified general
register and writes two predicate results. The floating-point class (
fclass
) instruction
can be used to test for a NaTVal in a floating-point register and write the result to two
predicate registers.
fclass
does not clear both predicate targets in the presence of a
NaTVal input if NaTVal is one of the classes being tested for.
4.4.4.4
Control Speculation without Recovery
A non-speculative instruction that reads a register containing a deferred exception
token will raise a Register NaT Consumption fault. Such instructions can be thought of
as performing a non-recoverable speculation check operation. In some compilation
environments, it may be true that the only exceptions that are deferred are fatal errors.
In such a program, if the result of a speculative calculation is checked and a deferred
exception token is found, execution of the program is terminated. For such a program,
the results of speculative calculations can be checked simply by using non-speculative
instructions.
4.4.4.5
Operating System Control over Exception Deferral
An additional mechanism is defined that allows the operating system to control the
exception behavior of speculative loads. The operating system has the option to select
which exceptions are deferred automatically in hardware and which exceptions will be
handled (and possibly deferred) by software. See
Speculative Load Faults” on page 2:105
.
4.4.4.6
Register Spill and Fill
Special store and load instructions are provided for spilling a register to memory and
preserving any deferred exception token, and for restoring a spilled register.
The spill and fill general register instructions (
st8.spill
,
ld8.fill
) are defined to
save/restore a general register along with the corresponding NaT bit.
The
st8.spill
instruction writes a general register’s NaT bit into the User NaT
Collection application register (UNAT), and, if the NaT bit was 0, writes the register’s
64-bit data portion to memory. If the register’s NaT bit was 1, the UNAT is updated, but
the memory update is implementation specific. As stated in
, software cannot rely on the 64-bit data portion spilled to
memory for a NaT'ed GR. Although guidance is given here for processor
implementations, other allowed implementation strategies may be added in the future,
and software should not rely on the implementation guidance.
Processor implementations (hardware and firmware) must consistently follow one of
two spill behaviors (but software should not count on implementations being limited to
these behaviors):
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 ...