xpaclri

Strip PAC from Instruction Address

XPACLRI

Removes the pointer authentication code from an instruction address.

Details

Strips the pointer authentication code from the instruction address held in LR, clearing the PAC bits but retaining the address bits. Used after an indirect branch to remove authentication metadata. No condition flags are affected. AArch64-only; requires PAC extension; no operands.

Pseudocode Operation

LR ← StripPAC(LR)

Example

XPACLRI

Encoding

Binary Layout
11010101000000110010
0000
111
11111
 
Format System
Opcode 0xD50320FF
Extension PAC (Security)

Operands

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0xD50320FF XPACLRI A64 11010101000000110010 | 0000 | 111 | 11111

Description

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.

Operation

if IsFeatureImplemented(FEAT_PAuth) then
    X[d, 64] = Strip(X[d, 64], data);