Mutex Relation

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:

  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.

  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

  In the following code, the user annotation pred.rel sets mutex relations between predicates
  p1, p2, and p3:

  .pred.rel “mutex“, p1, p2, p3