Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб2012 / 319433-011.pdf
Скачиваний:
27
Добавлен:
02.02.2015
Размер:
2.31 Mб
Скачать

INSTRUCTION SET REFERENCE

PMULUDQ - Multiply Packed Unsigned Doubleword Integers

Opcode/

Op/

64/32

CPUID

Description

Instruction

En

-bit

Feature

 

 

 

Mode

Flag

 

66 0F F4 /r

A

V/V

SSE4_1

Multiply packed unsigned double-

PMULUDQ xmm1, xmm2/m128

 

 

 

word integers in xmm1 by

 

 

 

 

packed unsigned doubleword

 

 

 

 

integers in xmm2/m128, and

 

 

 

 

store the quadword results in

 

 

 

 

xmm1.

VEX.NDS.128.66.0F.WIG F4 /r

B

V/V

AVX

Multiply packed unsigned double-

VPMULUDQ xmm1, xmm2,

 

 

 

word integers in xmm2 by

xmm3/m128

 

 

 

packed unsigned doubleword

 

 

 

 

integers in xmm3/m128, and

 

 

 

 

store the quadword results in

 

 

 

 

xmm1.

VEX.NDS.256.66.0F.WIG F4 /r

B

V/V

AVX2

Multiply packed unsigned double-

VPMULUDQ ymm1, ymm2,

 

 

 

word integers in ymm2 by

ymm3/m256

 

 

 

packed unsigned doubleword

 

 

 

 

integers in ymm3/m256, and

 

 

 

 

store the quadword results in

 

 

 

 

ymm1.

 

 

 

 

 

Instruction Operand Encoding

Op/En

Operand 1

Operand 2

Operand 3

Operand 4

A

ModRM:reg (r, w)

ModRM:r/m (r)

NA

NA

B

ModRM:reg (w)

VEX.vvvv

ModRM:r/m (r)

NA

 

 

 

 

 

Description

Multiplies packed unsigned doubleword integers in the first source operand by the packed unsigned doubleword integers in second source operand and stores packed unsigned quadword results in the destination operand.

128-bit Legacy SSE version: The second source operand is two packed unsigned doubleword integers stored in the first (low) and third doublewords of an XMM register or a 128-bit memory location. For 128-bit memory operands, 128 bits are fetched from memory, but only the first and third doublewords are used in the computation.The first source operand is two packed unsigned doubleword integers stored in the first and third doublewords of an XMM register. The destination contains two packed unsigned quadword integers stored in an XMM register. Bits (255:128) of the corresponding YMM destination register remain unchanged.

Ref. # 319433-011

5-143

INSTRUCTION SET REFERENCE

VEX.128 encoded version: The second source operand is two packed unsigned doubleword integers stored in the first (low) and third doublewords of an XMM register or a 128-bit memory location. For 128-bit memory operands, 128 bits are fetched from memory, but only the first and third doublewords are used in the computation.The first source operand is two packed unsigned doubleword integers stored in the first and third doublewords of an XMM register. The destination contains two packed unsigned quadword integers stored in an XMM register. Bits (255:128) of the corresponding YMM register are zeroed.

VEX.256 encoded version: The second source operand is four packed unsigned doubleword integers stored in the first (low), third, fifth and seventh doublewords of a YMM register or a 256-bit memory location. For 256-bit memory operands, 256 bits are fetched from memory, but only the first, third, fifth and seventh doublewords are used in the computation.The first source operand is four packed unsigned doubleword integers stored in the first, third, fifth and seventh doublewords of an YMM register. The destination contains four packed unaligned quadword integers stored in an YMM register.

Operation

VPMULUDQ (VEX.256 encoded version)

DEST[63:0] SRC1[31:0] * SRC2[31:0]

DEST[127:64] SRC1[95:64] * SRC2[95:64

DEST[191:128] SRC1[159:128] * SRC2[159:128]

DEST[255:192] SRC1[223:192] * SRC2[223:192]

VPMULUDQ (VEX.128 encoded version)

DEST[63:0] SRC1[31:0] * SRC2[31:0]

DEST[127:64] SRC1[95:64] * SRC2[95:64]

DEST[VLMAX:128] 0

PMULUDQ (128-bit Legacy SSE version)

DEST[63:0] DEST[31:0] * SRC[31:0]

DEST[127:64] DEST[95:64] * SRC[95:64]

DEST[VLMAX:128] (Unmodified)

Intel C/C++ Compiler Intrinsic Equivalent

(V)PMULUDQ __m128i _mm_mul_epu32( __m128i a, __m128i b);

VPMULUDQ __m256i _mm256_mul_epu32( __m256i a, __m256i b);

SIMD Floating-Point Exceptions

None

5-144

Ref. # 319433-011

INSTRUCTION SET REFERENCE

Other Exceptions

See Exceptions Type 4

Ref. # 319433-011

5-145

INSTRUCTION SET REFERENCE

POR - Bitwise Logical Or

Opcode/

Op/

64/32

CPUID

Description

Instruction

En

-bit

Feature

 

 

 

Mode

Flag

 

66 0F EB /r

A

V/V

SSE2

Bitwise OR of xmm2/m128

POR xmm1, xmm2/m128

 

 

 

and xmm1.

VEX.NDS.128.66.0F.WIG EB /r

B

V/V

AVX

Bitwise OR of xmm2/m128

VPOR xmm1, xmm2, xmm3/m128

 

 

 

and xmm3.

VEX.NDS.256.66.0F.WIG EB /r

B

V/V

AVX2

Bitwise OR of ymm2/m256

VPOR ymm1, ymm2, ymm3/m256

 

 

 

and ymm3.

 

 

 

 

 

Instruction Operand Encoding

Op/En

Operand 1

Operand 2

Operand 3

Operand 4

A

ModRM:reg (r, w)

ModRM:r/m (r)

NA

NA

B

ModRM:reg (w)

VEX.vvvv

ModRM:r/m (r)

NA

 

 

 

 

 

Description

Performs a bitwise logical OR operation on the second source operand and the first source operand and stores the result in the destination operand. Each bit of the result is set to 1 if either of the corresponding bits of the first and second operands are 1, otherwise it is set to 0.

128-bit Legacy SSE version: The second source operand is an XMM register or a 128bit memory location. The first source and destination operands can be XMM registers. Bits (255:128) of the corresponding YMM destination register remain unchanged.

VEX.128 encoded version: The second source operand is an XMM register or a 128bit memory location. The first source and destination operands can be XMM registers. Bits (255:128) of the corresponding YMM register are zeroed.

VEX.256 encoded version: The second source operand is an YMM register or a 256bit memory location. The first source and destination operands can be YMM registers.

Operation

VPOR (VEX.256 encoded version)

DEST SRC1 OR SRC2

VPOR (VEX.128 encoded version)

DEST[127:0] (SRC[127:0] OR SRC2[127:0])

DEST[VLMAX:128] 0

5-146

Ref. # 319433-011

INSTRUCTION SET REFERENCE

POR (128-bit Legacy SSE version)

DEST[127:0] (SRC[127:0] OR SRC2[127:0])

DEST[VLMAX:128] (Unmodified)

Intel C/C++ Compiler Intrinsic Equivalent

(V)POR __m128i _mm_or_si128 ( __m128i a, __m128i b) VPOR __m256i _mm256_or_si256 ( __m256i a, __m256i b)

SIMD Floating-Point Exceptions none

Other Exceptions

See Exceptions Type 4

Ref. # 319433-011

5-147

Соседние файлы в папке Лаб2012