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.

PMULDQ — Multiply Packed Doubleword Integers<br />

Opcode/<br />

<strong>Instruction</strong><br />

Description<br />

Op/<br />

En<br />

64/32<br />

-bit<br />

Mode<br />

CPUID<br />

Feature<br />

Flag<br />

Description<br />

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

INSTRUCTION SET REFERENCE<br />

66 0F 38 28 /r A V/V SSE4_1 Multiply packed signed doubleword integers in xmm1 by packed<br />

PMULDQ xmm1, xmm2/m128<br />

signed doubleword integers in xmm2/m128, and store the quadword<br />

results in xmm1.<br />

VEX.NDS.128.66.0F38.WIG 28 /r B V/V AVX Multiply packed signed doubleword integers in xmm2 by packed<br />

VPMULDQ xmm1, xmm2,<br />

xmm3/m128<br />

signed doubleword integers in xmm3/m128, and store the quadword<br />

results in xmm1.<br />

VEX.NDS.256.66.0F38.WIG 28 /r B V/V AVX2 Multiply packed signed doubleword integers in ymm2 by packed<br />

VPMULDQ ymm1, ymm2,<br />

ymm3/m256<br />

signed doubleword integers in ymm3/m256, and store the quadword<br />

results in ymm1.<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 />

Multiplies the first source operand by the second source operand and stores the result in the destination operand.<br />

For PMULDQ and VPMULDQ (VEX.128 encoded version), the second source operand is two packed signed doubleword<br />

integers stored in the first (low) and third doublewords of an XMM register or a 128-bit memory location. The<br />

first source operand is two packed signed doubleword integers stored in the first and third doublewords of an XMM<br />

register. The destination contains two packed signed quadword integers stored in an XMM register. For 128-bit<br />

memory operands, 128 bits are fetched from memory, but only the first and third doublewords are used in the<br />

computation.<br />

For VPMULDQ (VEX.256 encoded version), the second source operand is four packed signed doubleword integers<br />

stored in the first (low), third, fifth and seventh doublewords of an YMM register or a 256-bit memory location. The<br />

first source operand is four packed signed doubleword integers stored in the first, third, fifth and seventh doublewords<br />

of an XMM register. The destination contains four packed signed quadword integers stored in an YMM<br />

register. For 256-bit memory operands, 256 bits are fetched from memory, but only the first, third, fifth and<br />

seventh doublewords are used in the computation.<br />

When a quadword result is too large to be represented in 64 bits (overflow), the result is wrapped around and the<br />

low 64 bits are written to the destination element (that is, the carry is ignored).<br />

128-bit Legacy SSE version: The first source and destination operands are XMM registers. The second source<br />

operand is an XMM register or a 128-bit memory location. Bits (255:128) of the corresponding YMM destination<br />

register remain unchanged.<br />

VEX.128 encoded version: The first source and destination operands are XMM registers. The second source<br />

operand is an XMM register or a 128-bit memory location. Bits (255:128) of the corresponding YMM register are<br />

zeroed.<br />

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

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

Ref. # 319433-014 5-99

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

Saved successfully!

Ooh no, something went wrong!