
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):
Содержание 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 ...