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.

Encoding: Not setting the condition flags

Variants: FEAT_SVE || FEAT_SME (FEAT_SVE || FEAT_SME)

313029282726252423222120191817161514131211109876543210
00100101000110000100
SPgPnPdm

BRKN <Pdm>.B, <Pg>/Z, <Pn>.B, <Pdm>.B

Decoding algorithm

if !IsFeatureImplemented(FEAT_SVE) && !IsFeatureImplemented(FEAT_SME) then
    EndOfDecode(Decode_UNDEF);
constant integer g = UInt(Pg);
constant integer n = UInt(Pn);
constant integer dm = UInt(Pdm);
constant boolean setflags = FALSE;

Operation

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. = PredTest(Ones(PL), result, 8);
P[dm, PL] = result;

Explanations

<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.