Encoding:

P32A

100010

x

00100

01

s[13:1]

s

[14]

6

5

5

2

13

1

Format:

BPOSGE32C offset

DSP-R3

Branch on Greater Than or Equal To Value 32 in

Purpose:

Branch on Greater Than or Equal To Value 32 in

DSPControl

Pos Field

Perform a PC-relative branch if the value of the pos field in the DSPControl register is greater than or equal to 32.

Description:

 if (DSPControlpos:5..0 >= 32) then goto PC+offset

First, the offset argument is left-shifted by one bit to form a 17-bit signed integer value. This value is added to the address of the instruction immediately following the branch to form a target branch address. Then, if the value of the pos field of the DSPControl register is greater than or equal to 32, the branch is taken and execution begins from the target address.

Restrictions:

Any instruction may be placed at PC + 4, where PC is that of the branch. An exception on such an instruction does not affect CP0 CAUSEBD, and CP0 EPC is that of instruction in slot after branch.

Availability:

This instruction is introduced by and required as of Revision 3 of the DSP Module.

Operation:

I:    ValidateAccessToDSPResources()
      se_offsetGPRLEN..0 = ( offset15 )GPRLEN-17 || offset15..0 || 01
      branch_condition = ( DSPControlpos:5..0 >= 32 ? 1 : 0 )
I+1:  if ( branch_condition = 1 ) then
          PCGPRLEN..0 = PCGPRLEN..0 + se_offsetGPRLEN..0
      endif

Exceptions:

Reserved Instruction, DSP Disabled

Programming Notes:

With the 17-bit signed instruction offset, the conditional branch range is ±64 Kbytes. Use jump (J) or jump register

(JR) instructions to branch to addresses outside of this range.