B.cond
Branch conditionally
This instruction branches conditionally to a label at a PC-relative
offset, with a hint that this is not a subroutine call or return.
0
1
0
1
0
1
0
0
0
B.<cond> <label>
constant bits(64) offset = SignExtend(imm19:'00', 64);
constant bits(4) condition = cond;
<cond>
Is one of the standard conditions, encoded in the standard way, and
cond
<cond>
0000
EQ
0001
NE
0010
CS
0011
CC
0100
MI
0101
PL
0110
VS
0111
VC
1000
HI
1001
LS
1010
GE
1011
LT
1100
GT
1101
LE
1110
AL
1111
NV
<label>
Is the program label to be conditionally branched to. Its offset from the address of this instruction, in the range +/-1MB, is encoded as "imm19" times 4.
constant boolean branch_conditional = TRUE;
if ConditionHolds(condition) then
BranchTo(PC64 + offset, BranchType_DIR, branch_conditional);
else
BranchNotTaken(BranchType_DIR, branch_conditional);