Encoding:

P32A

001000

x

rs

ac

00

001

001

111

111

6

5

5

2

2

3

3

3

3

Format:

MTHLIP rs, ac

DSP

Copy LO to HI and a GPR to LO and Increment Pos by 32

Purpose:

Copy LO to HI and a GPR to LO and Increment Pos by 32

Copy the LO part of an accumulator to the HI part, copy a GPR to LO, and increment the pos field in the DSPControl register by 32.

Description:

ac = LO[ac]31..0 || GPR[rs]31..0 ; DSPControlpos:5..0 += 32

The 32 least-significant bits of the specified accumulator are copied to the most-significant 32 bits of the same accumulator. Then the 32 least-significant bits of register rs are copied to the least-significant 32 bits of the accumulator.

The instruction then increments the value of bits 0 through 5 of the DSPControl register (the pos field) by 32.

The result of this instruction is UNPREDICTABLE if the value of the pos field before the execution of the instruction is greater than 32.

The value of ac can range from 0 to 3. When ac=0, this refers to the original HI/LO register pair of the MIPS32 architecture.

Restrictions:

No data-dependent exceptions are possible.

The operands must be values in the specified format. If they are not, the results are UNPREDICTABLE and the values of the operand vectors become UNPREDICTABLE.

Operation:

ValidateAccessToDSPResources()
tempA31..0 = GPR[rs]31..0
tempB31..0 = LO[ac]31..0
( HI[ac]31..0 || LO[ac]31..0 ) = tempB31..0 || tempA31..0
oldpos5..0 = DSPControlpos:5..0
if ( oldpos5..0 > 32 ) then
   DSPControlpos:5..0 = UNPREDICTABLE
else
   DSPControlpos:5..0 = oldpos5..0 + 32
endif

Exceptions:

Reserved Instruction, DSP Disabled