CBLS (register)

Compare unsigned lower than or equal register and branch

This instruction compares the unsigned values in two registers, and conditionally branches to a label at a PC-relative offset if the second value is lower than or equal to the first. 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
111010001100
sfccRmimm9Rt

32-bit higher or same (sf == 0)

CBLS <Wm>, <Wt>, <label>

Equivalent to: CBHS <Wt>, <Wm>, <label>

64-bit higher or same (sf == 1)

CBLS <Xm>, <Xt>, <label>

Equivalent to: CBHS <Xt>, <Xm>, <label>

Explanations

<Wm>: Is the 32-bit name of the second general-purpose source register, encoded in the "Rm" field.
<Wt>: Is the 32-bit name of the general-purpose register to be tested, encoded in the "Rt" field.
<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.
<Xm>: Is the 64-bit name of the second general-purpose source register, encoded in the "Rm" field.
<Xt>: Is the 64-bit name of the general-purpose register to be tested, encoded in the "Rt" field.