CPU: all which supported IA MMX:
Pentium (P55C only), Pentium (tm) Pro (P6) future models
Type of Instruction: User

Instruction: PUNPCKLBW dest,src


dest[63..56] <- src[31..24]
dest[55..48] <- dest[31..24]
dest[47..40] <- src[23..16]
dest[39..32] <- dest[23..16]
dest[31..24] <- src[15..8]
dest[23..16] <- dest[15..8]
dest[15..8] <- src[7..0]
dest[7..0] <- dest[7..0]

Note: This instruction unpack and interleave the low-order data elements
of the destination and source operands into the destination operand.
The high-order data elements are ignored.
When the source data comes from 64-bit registers, the upper 32 bits
are ignored.
When unpacking from a memory operand, only 32 bits are accessed. The
instruction uses all 32 bits.
If the source operand is all zeros, the result is a zero extension of
the low-order elements of the destination operand. When using
PUNPCKLBW instruction the bytes are zero extended, or unpacked into
unsigned words.

Flags affected: None


RM PM VM SMM Description
#GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
#SS(0) If illegal memory operand's EA in SS
#PF(fcode) If page fault
#AC #AC If unaligned memory reference then alignment
check enabled and in ring 3.
#UD #UD #UD #UD If CR0.EM = 1
#NM #NM #NM #NM If CR0.TS = 1
#MF #MF #MF #MF If pending FPU Exception
#13 #13 If any part of the the operand lies outside of
the EA space from 0 to FFFFH
COP & Times:

PUNPCKLBW mm,mm/m32 0FH 60H PostByte

P55C: n/a
future P6: n/a

Copyright by InternetNightmare 2005-2006