![Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3 Manual Download Page 55](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_2073404055.webp)
1:44
Volume 1, Part 1: Execution Environment
3.4.3
WAR Dependency Special Cases
The WAR dependency between the reading of predicate register 63 by any B-type
instruction and the subsequent writing of predicate register 63 by a modulo-scheduled
loop type branch (
br.ctop
,
br.cexit
,
br.wtop
, or
br.wexit
) without an intervening
stop is not allowed. Otherwise, WAR dependencies within an instruction group are
allowed.
3.4.4
Processor Behavior on Dependency Violations
If a program violates read-after-write, write-after-write or write-after-read resource
dependency rules within an instruction group, then processor behavior is undefined.
Constraints on undefined behavior are described in
“Undefined Behavior” on page 1:44
To help debug code that violates the architectural resource dependency rules, some
processor implementations may provide dependency violation detection hardware that
may cause an instruction group that contains an illegal dependency to take an Illegal
Dependency fault (defined in
Chapter 5, “Interruptions” in Volume 2
). However, even
in implementations that provide such checking, software can not assume the processor
will catch all dependency violations or even catch the same violation every time it
occurs.
However, all processor models that provide dependency violation detection hardware
are required to satisfy the following dependency violation reporting constraints:
• All detected dependency violations must be reported as Illegal Dependency Faults
(defined in
Chapter 5, “Interruptions” in Volume 2
). When an Illegal Dependency
fault is taken, the value of the resource subject to the dependency violation is
undefined. Undetected dependency violations cause undefined program behavior as
described in
“Undefined Behavior” on page 1:44
• All detected read-after-write and write-after-write dependency violations must be
delivered as Illegal Dependency Faults on the second operation, i.e. on the reader
in the RAW case, and on second resource writer in the WAW case.
• All detected write-after-read dependency violations (on predicate register 63) must
be delivered as Illegal Dependency faults on the second operation, the predicate
writer.
• Illegal Dependency faults are delivered strictly in program order. If an interruption,
branch or speculation check are taken between the first and the second operation
of a dependency violation, then the Illegal Dependency fault is not taken.
Note:
Since an instruction group starts at a given entry point (stop or target of a con-
trol flow transfer), instructions that precede the entry point are not considered
part of the instruction group and must not take part in any dependency viola-
tion checking. For example, if an
rfi
is done to slot 1 of a bundle, the instruc-
tion in slot 0 and instructions in bundles with lower memory addresses are not
part of the new instruction group, and must not take part in any dependency
violation checking.
3.5
Undefined Behavior
Architecturally undefined behavior that applies to one or more instructions is listed
below:
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 ...