PACDB, PACDZB
Pointer Authentication Code for data address, using key B
This instruction computes and inserts a Pointer Authentication Code
for a data address, using a modifier and key B.
The address is in the general-purpose register that is specified by
<Xd>.
The modifier is:
In the general-purpose register or stack pointer that is specified
by <Xn|SP> for PACDB.
The value zero, for PACDZB.
1
1
0
1
1
0
1
0
1
1
0
0
0
0
0
1
0
0
0
1
1
0
PACDB <Xd>, <Xn|SP>
1
1
1
1
1
1
PACDZB <Xd>
if !IsFeatureImplemented(FEAT_PAuth) then UNDEFINED;
boolean source_is_sp = FALSE;
constant integer d = UInt(Rd);
constant integer n = UInt(Rn);
if Z == '0' then // PACDB
if n == 31 then source_is_sp = TRUE;
else // PACDZB
if n != 31 then UNDEFINED;
<Xd>
Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field.
<Xn|SP>
Is the 64-bit name of the general-purpose source register or stack pointer, encoded in the "Rn" field.
if source_is_sp then
X[d, 64] = AddPACDB(X[d, 64], SP[]);
else
X[d, 64] = AddPACDB(X[d, 64], X[n, 64]);