P32A 001000 |
rt |
rs |
ac |
10 |
101 |
010 |
111 |
111 |
6 |
5 |
5 |
2 |
2 |
3 |
3 |
3 |
3 |
MSUB ac, rs, rt |
DSP |
Multiply Word and Subtract from Accumulator |
Multiply Word and Subtract from Accumulator
To multiply two 32-bit integer words and subtract the 64-bit result from the specified accumulator.
(HI[ac]||LO[ac]) = (HI[ac]||LO[ac]) - (rs31..0 * rt31..0)
The 32-bit signed integer word in register rs is multiplied by the corresponding 32-bit signed integer word in register
rt to produce a 64-bit result. The 64-bit product is subtracted from the specified 64-bit accumulator.
These special registers HI and LO are specified by the value of ac. When ac=0, this refers to the original HI/LO register pair of the MIPS32 architecture.
In Release 6 of the MIPS Architecture, accumulators are eliminated from MIPS32.
No arithmetic exception occurs under any circumstances.
None
This instruction does not provide the capability of writing directly to a target GPR.
if (( ac != 0 ) or (ConfigAR >= )) then ValidateAccessToDSP2Resources() endif temp63..0 = ((GPR[rs]31)32 || GPR[rs]31..0) * ((GPR[rt]31)32 || GPR[rt]31..0) acc63..0 = ( HI[ac]31..0 || LO[ac]31..0 ) - temp63..0 ( HI[ac]31..0 || LO[ac]31..0 ) = acc63..32 ||acc31..0
Reserved Instruction, DSP Disabled
Implementation Notes:
Processors which implement a multiplier array which is not square (for example, 32 x 16), and which therefore has an operation latency which is data dependent, should assume that the shorter operand is in register rt.
In some processors the integer multiply operation may proceed asynchronously and allow other CPU instructions to execute before it is complete. An attempt to read LO or HI before the results are written interlocks until the results are ready. Asynchronous execution does not af fect the program result, but offers an opportunity for performance improvement by scheduling the multiply so that other instructions can execute in parallel.
Programs that require overflow detection must check for it explicitly.
Where the size of the operands are known, software should place the shorter operand in register rt. This may reduce the latency of the instruction on those processors which implement data-dependent instruction latencies.