POOL32A 000000 |
rt |
rs |
ac |
DPA.W.PH 000000010 |
POOL32Axf 111100 |
6 |
5 |
5 |
2 |
8 |
6 |
SPECIAL3 011111 |
rs |
rt |
0 000 |
ac |
DPA.W.PH 00000 |
DPA.W.PH 110000 |
6 |
5 |
5 |
3 |
2 |
5 |
6 |
DPA.W.PH ac, rs, rt |
microMIPSDSP-R2 |
Dot Product with Accumulate on Vector Integer Halfword Elements |
Dot Product with Accumulate on Vector Integer Halfword Elements
Generate the dot-product of two integer halfword vector elements using full-size intermediate products and then accumulate into 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 two integer word results. These two products are summed to generate a dot-product result, which is then accumulated into the specified 64-bit HI/LO accumulator, creating a 64-bit integer result.
The value of ac selects an accumulator numbered from 0 to 3. When ac=0, this refers to the original HI/LO register pair of the MIPS64 architecture.
This instruction does 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.
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]63..0 || LO[ac]63..0 ) = (acc63)32 || acc63..32 || (acc31)32 || acc31..0
Reserved Instruction, DSP Disabled