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 - FMA<br />

VFNMSUB132PD/VFNMSUB213PD/VFNMSUB231PD — Fused Negative Multiply-Subtract of<br />

Packed Double-Precision Floating-Point Values<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 />

VEX.DDS.128.66.0F38.W1 9E /r A V/V FMA Multiply packed double-precision floating-point values from xmm0<br />

VFNMSUB132PD xmm0, xmm1,<br />

xmm2/m128<br />

and xmm2/mem, negate the multiplication result and subtract<br />

xmm1 and put result in xmm0.<br />

VEX.DDS.128.66.0F38.W1 AE /r A V/V FMA Multiply packed double-precision floating-point values from xmm0<br />

VFNMSUB213PD xmm0, xmm1,<br />

xmm2/m128<br />

and xmm1, negate the multiplication result and subtract<br />

xmm2/mem and put result in xmm0.<br />

VEX.DDS.128.66.0F38.W1 BE /r A V/V FMA Multiply packed double-precision floating-point values from xmm1<br />

VFNMSUB231PD xmm0, xmm1,<br />

xmm2/m128<br />

and xmm2/mem, negate the multiplication result and subtract<br />

xmm0 and put result in xmm0.<br />

VEX.DDS.256.66.0F38.W1 9E /r A V/V FMA Multiply packed double-precision floating-point values from ymm0<br />

VFNMSUB132PD ymm0, ymm1,<br />

ymm2/m256<br />

and ymm2/mem, negate the multiplication result and subtract<br />

ymm1 and put result in ymm0.<br />

VEX.DDS.256.66.0F38.W1 AE /r A V/V FMA Multiply packed double-precision floating-point values from ymm0<br />

VFNMSUB213PD ymm0, ymm1,<br />

ymm2/m256<br />

and ymm1, negate the multiplication result and subtract<br />

ymm2/mem and put result in ymm0.<br />

VEX.DDS.256.66.0F38.W1 BE /r A V/V FMA Multiply packed double-precision floating-point values from ymm1<br />

VFNMSUB231PD ymm0, ymm1,<br />

ymm2/m256<br />

and ymm2/mem, negate the multiplication result and subtract<br />

ymm0 and put result in ymm0.<br />

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

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

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

VFNMSUB132PD: Multiplies the two or four packed double-precision floating-point values from the first source<br />

operand to the two or four packed double-precision floating-point values in the third source operand. From negated<br />

infinite precision intermediate results, subtracts the two or four packed double-precision floating-point values in<br />

the second source operand, performs rounding and stores the resulting two or four packed double-precision<br />

floating-point values to the destination operand (first source operand).<br />

VFMSUB213PD: Multiplies the two or four packed double-precision floating-point values from the second source<br />

operand to the two or four packed double-precision floating-point values in the first source operand. From negated<br />

infinite precision intermediate results, subtracts the two or four packed double-precision floating-point values in<br />

the third source operand, performs rounding and stores the resulting two or four packed double-precision floatingpoint<br />

values to the destination operand (first source operand).<br />

VFMSUB231PD: Multiplies the two or four packed double-precision floating-point values from the second source to<br />

the two or four packed double-precision floating-point values in the third source operand. From negated infinite<br />

precision intermediate results, subtracts the two or four packed double-precision floating-point values in the first<br />

source operand, performs rounding and stores the resulting two or four packed double-precision floating-point<br />

values to the destination operand (first source operand).VEX.256 encoded version: The destination operand (also<br />

first source operand) is a YMM register and encoded in reg_field. The second source operand is a YMM register and<br />

encoded in VEX.vvvv. The third source operand is a YMM register or a 256-bit memory location and encoded in<br />

rm_field.<br />

6-44 Ref. # 319433-014

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

Saved successfully!

Ooh no, something went wrong!