P32A 001000 |
x |
rs |
ac |
00 |
001 |
001 |
111 |
111 |
6 |
5 |
5 |
2 |
2 |
3 |
3 |
3 |
3 |
MTHLIP rs, ac |
DSP |
Copy LO to HI and a GPR to LO and Increment Pos by 32 |
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.
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.
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.
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
Reserved Instruction, DSP Disabled