The mutually exclusive (mutex) relation indicates that not more than one predicate in a group of predicates can be true simultaneously.
In the following example, if predicates p1, p2 and p3 are mutex, there is no write-after-write dependency violation because only one of these instructions actually executes.
(p1) mov r4 = 2
(p2) mov r4 = 5
(p3) mov r4 = 7
IAS creates mutex relations in the following cases:
non-predicated regular compare instructions
In the following code, the predicates p1 and p2
are mutex only when the qualifying
predicate (qp) is p0.
(qp) cmp.eq p1, p2 = r1, r2
Regular compare instructions include all the
instructions that write to a pair of predicates:
cmp, fcmp,
tbit, and tnat.
Parallel compare and compare unconditional instructions do
not belong in this category.
unconditional compare instructions
In the following code, the predicates p1 and p2
are mutex (regardless of the qualifying
predicate value).
(p3) cmp.eq.unc p1, p2 = r1, r2
relation definition “mutex“
In the following code, the user annotation pred.rel
sets mutex relations between predicates
p1, p2,
and p3:
.pred.rel “mutex“, p1, p2, p3