NASM 2.05 based x86 Instruction Reference[ch254]
A.5.230 PMACHRIW: Packed Multiply and Accumulate with Rounding PMACHRIW mm,m64 ; 0F 5E /r [CYRIX,MMX] PMACHRIW takes two packed 16-bit integer inputs, multiplies the values in the inputs, rounds on bit 15 of each result, then adds bits 15-30 of each result to the corresponding position of the _implied_ destination register. The operation of this instruction is: dstI[0-15] := dstI[0-15] + (mm[0-15] *m64[0-15] + 0x00004000)[15-30], dstI[16-31] := dstI[16-31] + (mm[16-31]*m64[16-31] + 0x00004000)[15-30], dstI[32-47] := dstI[32-47] + (mm[32-47]*m64[32-47] + 0x00004000)[15-30], dstI[48-63] := dstI[48-63] + (mm[48-63]*m64[48-63] + 0x00004000)[15-30]. Note that PMACHRIW cannot take a register as its second source operand.