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.

Description<br />

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

INSTRUCTION SET REFERENCE<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 />

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

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

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

Figure 5-5. 256-bit VPUNPCKHDQ <strong>Instruction</strong> Operation<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 PUNPCKHBW instruction interleaves the high-order bytes of the source and destination operands, the<br />

PUNPCKHWD instruction interleaves the high-order words of the source and destination operands, the<br />

PUNPCKHDQ instruction interleaves the high order doubleword (or doublewords) of the source and destination<br />

operands, and the PUNPCKHQDQ instruction interleaves the high-order quadwords of the source and destination<br />

operands.<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 />

Operation<br />

SRC<br />

255<br />

Y7 Y6 Y5<br />

Y4<br />

INTERLEAVE_HIGH_BYTES_256b (SRC1, SRC2)<br />

DEST[7:0] SRC1[71:64]<br />

DEST[15:8] SRC2[71:64]<br />

DEST[23:16] SRC1[79:72]<br />

DEST[31:24] SRC2[79:72]<br />

DEST[39:32] SRC1[87:80]<br />

DEST[47:40] SRC2[87:80]<br />

DEST[55:48] SRC1[95:88]<br />

DEST[63:56] SRC2[95:88]<br />

DEST[71:64] SRC1[103:96]<br />

DEST[79:72] SRC2[103:96]<br />

DEST[87:80] SRC1[111:104]<br />

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

DEST<br />

31<br />

255<br />

0<br />

255 31<br />

Y7 X7 Y6 X6 Y3 X3 Y2<br />

X3 X2 X1<br />

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

X2<br />

0<br />

X0<br />

0

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

Saved successfully!

Ooh no, something went wrong!