PMULUDQ
Usage: PMULUDQ dest,src Modifies flags: None
Multiplies the 'dest' by the 'src' and stores the result in the 'dest' operand.
Multiply Packed Unsigned 32-bit Integers, and Store.
PMULUDQ mm1,mm2/m64 ; 0F F4 /r [WILLAMETTE,SSE2]
PMULUDQ xmm1,xmm2/m128 ; 66 0F F4 /r [WILLAMETTE,SSE2]
PMULUDQ takes two packed unsigned 32-bit integer inputs, and multiplies the values in the inputs, forming quadword results. The source is either an unsigned doubleword in the low doubleword of a 64-bit operand, or it's two unsigned doublewords in the first and third doublewords of a 128-bit operand. This produces either one or two 64-bit results, which are stored in the respective quadword locations of the destination register.
The operation is:
dst[0-63] := dst[0-31] * src[0-31];
dst[64-127] := dst[64-95] * src[64-95].
The 'src' operand can be an unsigned doubleword integer stored in the low doubleword of an MMX technology register or a 64-bit memory location, or it can be two packed unsigned doubleword integers stored in the first (low) and third doublewords of an XMM register or an 128-bit memory location.
The 'dest' operand can be an unsigned doubleword integer stored in the low doubleword an MMX technology register or two packed doubleword integers stored in the first and third doublewords of an XMM register.
The 'result' is an unsigned quadword integer stored in the 'dest' an MMX technology register or two packed unsigned quadword integers stored in an XMM register. When a quadword result is too large to be represented in 64 bits (overflow), the result is wrapped around and the low 64 bits are written to the 'dest' element (that is, the carry is ignored).
EXAMPLE:
pmuludq xmm1 Label