<<<    Index    >>>
3-577
INSTRUCTION SET REFERENCE
PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ—Unpack Low Packed 
Data
Description
These instructions unpack and interleave the low-order data elements (bytes, words, or double-
words) of the destination and source operands into the destination operand (refer to Figure 3-
84). The destination operand must be an MMX™ technology register; the source operand may
be either an MMX™ technology register or a memory location. When source data comes from
an MMX™ technology register, the upper 32 bits of the register are ignored. When the source
data comes from a memory, only 32-bits are accessed from memory.
The PUNPCKLBW instruction interleaves the four low-order bytes of the source operand and
the four low-order bytes of the destination operand and writes them to the destination operand.
The PUNPCKLWD instruction interleaves the two low-order words of the source operand and
the two low-order words of the destination operand and writes them to the destination operand.
The PUNPCKLDQ instruction interleaves the low-order doubleword of the source operand and
the low-order doubleword of the destination operand and writes them to the destination operand.
Opcode
Instruction
Description
0F 60 /r
PUNPCKLBW mm, 
mm/m32
Interleave low-order bytes from mm and mm/m64 
into mm.
0F 61 /r
PUNPCKLWD mm, 
mm/m32
Interleave low-order words from mm and mm/m64 
into mm.
0F 62 /r
PUNPCKLDQ mm, 
mm/m32
Interleave low-order doublewords from mm and 
mm/m64 into mm.
Figure 3-84.  Low-Order Unpacking and Interleaving of Bytes
With the PUNPCKLBW Instruction
PUNPCKLBW mm, mm/m32
mm/m32
mm
1111
1111
2222
mm
2121
2121
3006032
33221100
3210
76543210
<<<    Index    >>>