MMX instruction to perform a packed multiply and add.

This instruction does most of a dot product - except for the last add. The source is a MMX register or a 64 bit memory location, and the desination is a MMX register. The 4 words of the source are (signed) multipled with the 4 words of the destination. Then the products of the top two word pairs are added, and put in the top dword of the destination. The bottom two products are added and put in the bottom of the destination register. The only steps that remain to complete the dot product (assuming the result of PMADDW is in mm1) are:

movq   mm1, mm0
psllq  32, mm0
paddd  mm0, mm1

AT&T instruction ordering used: operator, source, destination.
Compare: PMULHW, PMULLW

Log in or register to write something here or to contact authors.