XPACD, XPACI, XPACLRI

Strip Pointer Authentication Code

This instruction removes the Pointer Authentication Code from an address. The address is in the specified general-purpose register for XPACI and XPACD, and is in LR for XPACLRI.

The XPACD instruction is used for data addresses, and XPACI and XPACLRI are used for instruction addresses.

Encoding: Integer

Variants: FEAT_PAuth (ARMv8.3)

313029282726252423222120191817161514131211109876543210
11011010110000010100011111
sfSopcode2DRnRd

XPACD (D == 1)

XPACD <Xd>

XPACI (D == 0)

XPACI <Xd>

Decoding algorithm

if !IsFeatureImplemented(FEAT_PAuth) then EndOfDecode(Decode_UNDEF);
constant integer d = UInt(Rd);
constant boolean data = (D == '1');

Encoding: System

Variants: FEAT_PAuth (ARMv8.3)

313029282726252423222120191817161514131211109876543210
11010101000000110010000011111111
CRmop2

XPACLRI

Decoding algorithm

if !IsFeatureImplemented(FEAT_PAuth) then EndOfDecode(Decode_NOP);
constant integer d = 30;
constant boolean data = FALSE;

Operation

X[d, 64] = Strip(X[d, 64], data);

Explanations

<Xd>: Is the 64-bit name of the general-purpose destination register, encoded in the "Rd" field.