SETF8, SETF16
Evaluation of 8-bit or 16-bit flag values
This instruction sets the PSTATE.NZV flags based on the value in the specified
general-purpose register. SETF8 treats the value as an 8-bit
value. SETF16 treats the value as a 16-bit value.
The PSTATE.C flag is not affected by these instructions.
If PSTATE.DIT is 1:
The execution time of this instruction is independent of:
The values of the data supplied in any of its registers.
The values of the NZCV flags.
The response of this instruction to asynchronous exceptions does not vary based on:
The values of the data supplied in any of its registers.
The values of the NZCV flags.
0
0
1
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
0
1
0
SETF8 <Wn>
1
SETF16 <Wn>
if !IsFeatureImplemented(FEAT_FlagM) then UNDEFINED;
constant integer size = 8 << UInt(sz);
constant integer n = UInt(Rn);
<Wn>
Is the 32-bit name of the general-purpose source register, encoded in the "Rn" field.
constant bits(32) reg = X[n, 32];
PSTATE.N = reg<size-1>;
PSTATE.Z = if (reg<size-1:0> == Zeros(size)) then '1' else '0';
PSTATE.V = reg<size> EOR reg<size-1>;
//PSTATE.C unchanged;