Safe Across Calls

The annotation .pred.safe_across_calls allows predicate relations to be retained, even after calls to other procedures. Use this annotation to specify which predicates should have their relations preserved. The scope of the annotation is within the current procedure or module.

You can specify several individual predicates and a range of predicates, all in the one statement.

Format:

.pred.safe_across_calls p1, p2, ...

where P1, P2, etc. can represent specific predicate registers or ranges of registers.

In the following example, if the .pred.safe_across_calls annotation is not included, IAS reports a dependency violation between two last instructions, as procedure foo may change the predicate values.

.pred.safe_across_calls p2-p6, p10, p11
.pred.rel “mutex“, p3, p4
br.call b1=foo
(p3) mov r5=r32
(p4) add r5=8, r32

To clear the predicate relations defined by the annotation .pred.safe_across_calls, use as follows:

.pred.safe_across_calls ”clear”