Branch instructions effect a transfer of control flow to a new address. Branch instructions are not required to be the last instruction in an instruction group. If a branch is taken, only instructions up to the taken branch will be executed. After a taken branch, the next instruction executed will be at the target of the branch. Because of the long immediate, long branches occupy two instruction slots.
Indirect branches use the branch registers to specify the target address.
There are several branch types, as shown in Table 4-22 . The conditional branch br.cond or br is a branch which is taken if the specified predicate is 1, and not-taken otherwise. The conditional return br.ret does the same thing as an indirect conditional branch, plus it adjusts the general register stack. The long branches, brl.cond or brl , and brl.call are identical to br.cond or br , and br.call , respectively, except for their longer displacement. If LC is non-zero then it is decremented and the branch is taken.