Conditionally branches to an address contained in the Link Register.
Bits | Value |
---|---|
0-5 | 19 |
6-10 | BO |
11-15 | BI |
16-18 | /// |
19-20 | BH |
21-30 | 16 |
31 | LK |
PowerPC | |
---|---|
bclr | BO, BI, BH |
bclrl | BO, BI, BH |
POWER family | |
---|---|
bcr | BO, BI, BH |
bcrl | BO, BI, BH |
See Extended Mnemonics of Branch Instructions for more information.
The bclr and bcr instructions branch to an instruction specified by the branch target address. The branch target address is the concatenation of bits 0-29 of the Link Register and b'00'.
The bclr and bcr instructions have two syntax forms. Each syntax form has a different effect on the Link bit and Link Register.
Syntax Form | Absolute Address Bit (AA) | Fixed-Point Exception Register | Link Bit (LK) | Condition Register Field 0 |
---|---|---|---|---|
bclr | None | None | 0 | None |
bclrl | None | None | 1 | None |
bcr | None | None | 0 | None |
bcrl | None | None | 1 | None |
The two syntax forms of the bclr and bcr instruction never affect the Fixed-Point Exception Register or Condition Register Field 0. If the Link bit (LK) is 1, then the effective address of the instruction that follows the branch instruction is placed into the Link Register.
The Branch Option field (BO) is used to combine different types of branches into a single instruction. Extended mnemonics are provided to set the Branch Option field automatically.
The encoding for the BO field is defined in PowerPC architecture. The following list gives brief descriptions of the possible values for this field:
BO | Description |
---|---|
0000y | Decrement the CTR; then branch if the decremented CTR is not 0 and the condition is False. |
0001y | Decrement the CTR; then branch if the decremented CTR is 0 and the condition is False. |
001zy | Branch if the condition is False. |
0100y | Decrement the CTR; then branch if bits the decremented CTR is not 0 and the condition is True. |
0101y | Decrement the CTR; then branch if the decremented CTR is 0 and the condition is True. |
011zy | Branch if the condition is True. |
1z00y | Decrement the CTR; then branch if the decremented CTR is not 0. |
1z01y | Decrement the CTR; then branch if the decremented CTR is 0. |
1z1zz | Branch always. |
In the PowerPC architecture, the bits are as follows:
In the POWER family Architecture, the z and y bits can be either 0 or 1.
The encoding for the BO field using V2.00 encoding is briefly described below:
BO | Description |
---|---|
0000z | Decrement the CTR; then branch if the decremented CTR is not 0 and the condition is False. |
0001z | Decrement the CTR; then branch if the decremented CTR is 0 and the condition is False. |
001at | Branch if the condition is False. |
0100z | Decrement the CTR; then branch if bits the decremented CTR is not 0 and the condition is True. |
0101z | Decrement the CTR; then branch if the decremented CTR is 0 and the condition is True. |
011at | Branch if the condition is True. |
1a00t | Decrement the CTR; then branch if the decremented CTR is not 0. |
1a01t | Decrement the CTR; then branch if the decremented CTR is 0. |
1z1zz | Branch always. |
The a and t bits of the BO field can be used by software to provide a hint about whether a branch is likely to be taken, as shown below:
at | Hint |
---|---|
00 | No hint is given. |
01 | Reserved |
01 | The branch is very likely not to be taken. |
11 | The branch is very likely to be taken. |
The Branch Hint field (BH) is used to provide a hint about the use of the instruction, as shown below:
BH | Hint |
---|---|
00 | The instruction is not a subroutine return; the target address is likely to be the same as the target address used the preceding time the branch was taken. |
01 | Reserved |
10 | Reserved |
11 | The target address is not predictable. |
BO | Specifies Branch Option field. |
BI | Specifies bit in Condition Register for condition comparison. |
BH | Provides a hint about the use of the instruction. |
The following code branches to the calculated branch target address dependent on bit 0 of the Condition Register, and no branch hint is given:
bclr 0x0,0,0 # The Count Register is decremented. # A branch occurs if the LT bit is set to zero in the # Condition Register and if the Count Register # does not equal zero. # If the conditions are met, the instruction branches to # the concatenation of bits 0-29 of the Link Register and b'00'.