CBLS (immediate)

Compare unsigned lower than or equal immediate and branch

This instruction compares the unsigned value in a register with an immediate, and conditionally branches to a label at a PC-relative offset if the register value is lower than or equal to the immediate. It provides a hint that this is not a subroutine call or return. This instruction does not affect the condition flags.

Encoding: Branch

Variants: FEAT_CMPBR (ARMv9.6)

313029282726252423222120191817161514131211109876543210
11101010110
sfccimm6imm9Rt

32-bit lower (sf == 0)

CBLS <Wt>, #<imms1>, <label>

Equivalent to: CBLO <Wt>, #<imm>, <label>

64-bit lower (sf == 1)

CBLS <Xt>, #<imms1>, <label>

Equivalent to: CBLO <Xt>, #<imm>, <label>

Explanations

<Wt>: Is the 32-bit name of the general-purpose register to be tested, encoded in the "Rt" field.
<imms1>: Is a signed immediate, in the range -1 to 62, encoded as "imm6" minus 1.
<label>: Is the program label to be conditionally branched to. Its offset from the address of this instruction, in the range -1024 to 1020, is encoded as "imm9" times 4.
<Xt>: Is the 64-bit name of the general-purpose register to be tested, encoded in the "Rt" field.