BTI

Branch target identification

This instruction is used to guard against the execution of instructions that are not the intended target of a branch.

Outside of a guarded memory region, a BTI instruction executes as a NOP. Within a guarded memory region, while PSTATE.BTYPE != 0b00, a BTI instruction compatible with the current value of PSTATE.BTYPE will not generate a Branch Target Exception and will allow execution of subsequent instructions within the memory region. For more information, see PSTATE.BTYPE.

The operand <targets> passed to a BTI instruction determines the values of PSTATE.BTYPE that the BTI instruction is compatible with.

System
(FEAT_BTI)

313029282726252423222120191817161514131211109876543210
110101010000001100100100xx011111
CRmop2

Encoding

BTI {<targets>}

Decode for this encoding

if !IsFeatureImplemented(FEAT_BTI) then EndOfDecode(Decode_NOP); end; // Check branch target compatibility between BTI instruction and PSTATE.BTYPE SetBTypeCompatible(BTypeCompatible_BTI(op2[2:1]));

Assembler Symbols

<targets>

Is the type of indirection, encoded in op2[2:1]:

op2[2:1] <targets>
00 [absent]
01 c
10 j
11 jc

2026-03_rel 2026-03-26 20:48:11

Copyright © 2010-2026 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.