3-505
INSTRUCTION SET REFERENCE
PMADDWDPacked Multiply and Add
Description
This instruction multiplies the individual signed words of the destination operand by the corre-
sponding signed words of the source operand, producing four signed, doubleword results (refer
to Figure 3-65). The two doubleword results from the multiplication of the high-order words are
added together and stored in the upper doubleword of the destination operand; the two double-
word results from the multiplication of the low-order words are added together and stored in the
lower doubleword of the destination operand. The destination operand must be an MMX tech-
nology register; the source operand may be either an MMX technology register or a 64-bit
memory location.
The PMADDWD instruction wraps around to 80000000H only when all four words of both the
source and destination operands are 8000H.
Operation
DEST(31..0)
<
(DEST(15..0)
?
SRC(15..0)) + (DEST(31..16)
?
SRC(31..16));
DEST(63..32)
<
(DEST(47..32)
?
SRC(47..32)) + (DEST(63..48)
?
SRC(63..48));
Opcode
Instruction
Description
0F F5 /r
PMADDWD mm,
mm/m64
Multiply the packed words in mm by the packed
words in mm/m64. Add the 32-bit pairs of results
and store in mm as doubleword
Figure 3-65. Operation of the PMADDWD Instruction
?
?
?
?
0111000111000111
0111000111000111
10000000000000000000010000000000
11001000111000111001110000000000
+
+
mm
PMADDWD mm, mm/m64
mm/m64
mm