SPA 5.0:
{@{!}Pg}
PSETP.bop0
Pu, {!}Pp, {!}Pq
{&req_6}
{?sched}
;
.bop0: { .AND, .OR, .XOR } .bop1: { .AND, .OR, .XOR }
{@{!}Pg}
PSETP.bop0.bop1
Pu, Pv, {!}Pp, {!}Pq, {!}Pr
{&req_6}
{?sched}
;
PSETP.bop0.bop1 sets two destination predicates Pu and Pv to Boolean values based on Boolean combinations .bop0 and .bop1 of source predicate operands {!}Pp, {!}Pq, and {!}Pr.
Pu = ( {!}Pp .bop0 {!}Pq ) .bop1 {!}Pr; Pv = ( (!{!}Pp) .bop0 {!}Pq) .bop1 {!}Pr;
The simple instruction format without .bop1 {!}Pr assembles as .AND PT, and Pv is PT, yielding effectively:
Pu = ( {!}Pp .bop0 {!}Pq );
Predicate source operands {!}Pp, {!}Pq, and {!}Pr are 1-bit predicate registers with optional complements.
Predicate destination operands Pu and Pv are 1-bit predicate registers. To not write predicate Pu or Pv, specify predicate PT, which ignores writes.
PSETP.AND P1, P2, !P3; PSETP.AND.OR P1, P4, P2, !P3, P4;