03.03.2013 Views

Intel® Architecture Instruction Set Extensions Programming Reference

Intel® Architecture Instruction Set Extensions Programming Reference

Intel® Architecture Instruction Set Extensions Programming Reference

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

INSTRUCTION SET REFERENCE<br />

<strong>Instruction</strong> Operand Encoding<br />

Op/En Operand 1 Operand 2 Operand 3 Operand 4<br />

A ModRM:reg (r, w) ModRM:r/m (r) NA NA<br />

B ModRM:reg (w) VEX.vvvv ModRM:r/m (r) NA<br />

Description<br />

Unpacks and interleaves the low-order data elements (bytes, words, doublewords, and quadwords) of the first<br />

source operand and second source operand into the destination operand. (Figure 5-6 shows the unpack operation<br />

for bytes in 64-bit operands.). The high-order data elements are ignored.<br />

SRC Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0 DEST<br />

Y3 X3 Y2 X2 Y1 X1 Y0<br />

Figure 5-6. 128-bit PUNPCKLBW <strong>Instruction</strong> Operation using 64-bit Operands<br />

When the source data comes from a 128-bit memory operand an implementation may fetch only the appropriate<br />

64 bits; however, alignment to a 16-byte boundary and normal segment checking will still be enforced.<br />

The PUNPCKLBW instruction interleaves the low-order bytes of the source and destination operands, the<br />

PUNPCKLWD instruction interleaves the low-order words of the source and destination operands, the PUNPCKLDQ<br />

instruction interleaves the low order doubleword (or doublewords) of the source and destination operands, and the<br />

PUNPCKLQDQ instruction interleaves the low-order quadwords of the source and destination operands.<br />

Legacy SSE instructions: In 64-bit mode using a REX prefix in the form of REX.R permits this instruction to access<br />

additional registers (XMM8-XMM15).<br />

128-bit Legacy SSE version: The second source operand is an XMM register or a 128-bit memory location. The first<br />

source operand and destination operands are XMM registers. Bits (255:128) of the corresponding YMM destination<br />

register remain unchanged.<br />

VEX.128 encoded version: The second source operand is an XMM register or a 128-bit memory location. The first<br />

source operand and destination operands are XMM registers. Bits (127:128) of the corresponding YMM register are<br />

zeroed.<br />

VEX.256 encoded version: The second source operand is an YMM register or a 256-bit memory location. The first<br />

source operand and destination operands are YMM registers.<br />

SRC<br />

255<br />

Y7 Y6 Y5<br />

Y4<br />

DEST<br />

Y3 Y2 Y1 Y0 X7 X6 X5 X4<br />

DEST<br />

31<br />

255<br />

0<br />

Y5 X5 Y4 X4 Y1 X1 Y0<br />

Figure 5-7. 256-bit VPUNPCKLDQ <strong>Instruction</strong> Operation<br />

5-166 Ref. # 319433-014<br />

X0<br />

255 31<br />

X3 X2 X1<br />

X0<br />

0<br />

X0<br />

0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!