You copied the Doc URL to your clipboard.

Conditional execution in A64 code

In the A64 instruction set, there are a few instructions that are truly conditional. Truly conditional means that when the condition is false, the instruction advances the program counter but has no other effect.

The conditional branch, B.cond is a truly conditional instruction. The condition code is appended to the instruction with a '.' delimiter, for example B.EQ.

There are other truly conditional branch instructions that execute depending on the value of the Zero condition flag. You cannot append any condition code suffix to them. These instructions are:

  • CBNZ.
  • CBZ.
  • TBNZ.
  • TBZ.

There are a few A64 instructions that are unconditionally executed but use the condition code as a source operand. These instructions always execute but the operation depends on the value of the condition code. These instructions can be categorized as:

  • Conditional data processing instructions, for example CSEL.
  • Conditional comparison instructions, CCMN and CCMP.

In these instructions, you specify the condition code in the final operand position, for example CSEL Wd,Wm,Wn,NE.