RDFFR (predicated)
Return predicate of succesfully loaded elements
Read the first-fault register (FFR) and place active elements in the corresponding elements of the destination predicate. Inactive elements in the destination predicate register are set to zero. Does not set the condition flags.
This instruction is illegal when executed in Streaming SVE mode, unless FEAT_SME_FA64 is implemented and enabled.
Green
True
True
SM_0_only
0
0
1
0
0
1
0
1
0
0
0
1
1
0
0
0
1
1
1
1
0
0
0
0
RDFFR <Pd>.B, <Pg>/Z
if !IsFeatureImplemented(FEAT_SVE) then UNDEFINED;
constant integer g = UInt(Pg);
constant integer d = UInt(Pd);
constant boolean setflags = FALSE;
<Pd>
Is the name of the destination scalable predicate register, encoded in the "Pd" field.
<Pg>
Is the name of the governing scalable predicate register, encoded in the "Pg" field.
CheckNonStreamingSVEEnabled();
constant integer VL = CurrentVL;
constant integer PL = VL DIV 8;
constant bits(PL) mask = P[g, PL];
constant bits(PL) ffr = FFR[PL];
constant bits(PL) result = ffr AND mask;
if setflags then
PSTATE.<N,Z,C,V> = PredTest(mask, result, 8);
P[d, PL] = result;