BRKN
Propagate break to next partition
If the last active element of the first source predicate is false then set the destination predicate to all-false. Otherwise leaves the destination and second source predicate unchanged. Does not set the condition flags.
Green
True
0
0
1
0
0
1
0
1
0
0
0
1
1
0
0
0
0
1
0
0
BRKN <Pdm>.B, <Pg>/Z, <Pn>.B, <Pdm>.B
if !IsFeatureImplemented(FEAT_SVE) && !IsFeatureImplemented(FEAT_SME) then UNDEFINED;
constant integer g = UInt(Pg);
constant integer n = UInt(Pn);
constant integer dm = UInt(Pdm);
constant boolean setflags = FALSE;
<Pdm>
Is the name of the second source and destination scalable predicate register, encoded in the "Pdm" field.
<Pg>
Is the name of the governing scalable predicate register, encoded in the "Pg" field.
<Pn>
Is the name of the first source scalable predicate register, encoded in the "Pn" field.
CheckSVEEnabled();
constant integer VL = CurrentVL;
constant integer PL = VL DIV 8;
constant bits(PL) mask = P[g, PL];
constant bits(PL) operand1 = P[n, PL];
constant bits(PL) operand2 = P[dm, PL];
bits(PL) result;
if LastActive(mask, operand1, 8) == '1' then
result = operand2;
else
result = Zeros(PL);
if setflags then
PSTATE.<N,Z,C,V> = PredTest(Ones(PL), result, 8);
P[dm, PL] = result;