<<<    Index    >>>
3-573
INSTRUCTION SET REFERENCE
PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ—Unpack High Packed 
Data
Description
These instructions unpack and interleave the high-order data elements (bytes, words, or double-
words) of the destination operand (first operand) and source operand (second operand) into the
destination operand (refer to Figure 3-83). The low-order data elements are ignored. The desti-
nation operand must be an MMX™ technology register; the source operand may be either an
MMX™ technology register or a 64-bit memory location. When the source data comes from a
memory operand, the full 64-bit operand is accessed from memory, but the instruction uses only
the high-order 32 bits.
The PUNPCKHBW instruction interleaves the four high-order bytes of the source operand and
the four high-order bytes of the destination operand and writes them to the destination operand.
The PUNPCKHWD instruction interleaves the two high-order words of the source operand and
the two high-order words of the destination operand and writes them to the destination operand.
The PUNPCKHDQ instruction interleaves the high-order doubleword of the source operand and
the high-order doubleword of the destination operand and writes them to the destination
operand.
OpcodeInstruction
Description
0F 68 /rPUNPCKHBW mm, 
mm/m64
Interleave high-order bytes from mm and mm/m64 into 
mm.
0F 69 /rPUNPCKHWD mm, 
mm/m64
Interleave high-order words from mm and mm/m64 into 
mm.
0F 6A /rPUNPCKHDQ mm, 
mm/m64
Interleave high-order doublewords from mm and 
mm/m64 into mm.
Figure 3-83.  High-Order Unpacking and Interleaving of Bytes
With the PUNPCKHBW Instruction
PUNPCKHBW mm, mm/m64
mm/m64
mm
1111
1111
2222
2222
mm
2121
2121
3006031
76543210
76543210
77665544
<<<    Index    >>>