P32A 001000 |
rt |
rs |
ac |
00 |
010 |
010 |
111 |
111 |
6 |
5 |
5 |
2 |
2 |
3 |
3 |
3 |
3 |
DPS.W.PH ac, rs, rt |
DSP-R2 |
Dot Product with Subtract on Vector Integer Half-Word Elements |
Dot Product with Subtract on Vector Integer Half-Word Elements
Generate the dot-product of two integer halfword vector elements using full-size intermediate products and then subtract from the specified accumulator register.
ac = ac - ((rs31..16 * rt31..16) + (rs15..0 * rt15..0))
Each of the two halfword integer values from register rt is multiplied with the corresponding halfword element from register rs to create tw o integer word results. These two products are summed to generate the dot-product result, which is then subtracted from the specified 64-bit HI/LO accumulator, creating a 64-bit integer result.
The value of ac selects an accumulator numbe red from 0 to 3. When ac=0, this refers to the original HI/LO register pair of the MIPS32 architecture.
This instruction will not set any bits of the ouflag field in the DSPControl register.
No data-dependent exceptions are possible.
The operands must be a value in the specified format. If they are not, the result is UNPREDICTABLE and the values of the operand vectors become UNPREDICTABLE.
ValidateAccessToDSP2Resources() tempB31..0 = (GPR[rs]31..16 * GPR[rt]31..16) tempA31..0 = (GPR[rs]15..0 * GPR[rt]15..0) dotp32..0 = ( (tempB31) || tempB31..0 ) + ( (tempA31) || tempA31..0 ) acc63..0 = ( HI[ac]31..0 || LO[ac]31..0 ) - ( (dotp32)31 || dotp32..0 ) ( HI[ac]31..0 || LO[ac]31..0 ) = acc63..32 || acc31..0
Reserved Instruction, DSP Disabled