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

VFMSUB132SD/VFMSUB213SD/VFMSUB231SD — Fused Multiply-Subtract of Scalar Double-<br />

Precision Floating-Point Values<br />

Opcode/<br />

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

VEX.DDS.LIG.128.66.0F38.W1<br />

9B /r<br />

VFMSUB132SD xmm0, xmm1,<br />

xmm2/m64<br />

VEX.DDS.LIG.128.66.0F38.W1<br />

AB /r<br />

VFMSUB213SD xmm0, xmm1,<br />

xmm2/m64<br />

VEX.DDS.LIG.128.66.0F38.W1<br />

BB /r<br />

VFMSUB231SD xmm0, xmm1,<br />

xmm2/m64<br />

Description<br />

Op/<br />

En<br />

64/32<br />

-bit<br />

Mode<br />

CPUID<br />

Feature<br />

Flag<br />

Description<br />

A V/V FMA Multiply scalar double-precision floating-point value from xmm0 and<br />

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

A V/V FMA Multiply scalar double-precision floating-point value from xmm0 and<br />

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

A V/V FMA Multiply scalar double-precision floating-point value from xmm1 and<br />

xmm2/mem, subtract xmm0 and put result in xmm0.<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 />

Performs a SIMD multiply-subtract computation on the low packed double-precision floating-point values using<br />

three source operands and writes the multiply-add result in the destination operand. The destination operand is<br />

also the first source operand. The second operand must be a SIMD register. The third source operand can be a<br />

SIMD register or a memory location.<br />

VFMSUB132SD: Multiplies the low packed double-precision floating-point value from the first source operand to the<br />

low packed double-precision floating-point value in the third source operand. From the infinite precision intermediate<br />

result, subtracts the low packed double-precision floating-point values in the second source operand,<br />

performs rounding and stores the resulting packed double-precision floating-point value to the destination operand<br />

(first source operand).<br />

VFMSUB213SD: Multiplies the low packed double-precision floating-point value from the second source operand to<br />

the low packed double-precision floating-point value in the first source operand. From the infinite precision intermediate<br />

result, subtracts the low packed double-precision floating-point value in the third source operand,<br />

performs rounding and stores the resulting packed double-precision floating-point value to the destination operand<br />

(first source operand).<br />

VFMSUB231SD: Multiplies the low packed double-precision floating-point value from the second source to the low<br />

packed double-precision floating-point value in the third source operand. From the infinite precision intermediate<br />

result, subtracts the low packed double-precision floating-point value in the first source operand, performs<br />

rounding and stores the resulting packed double-precision floating-point value to the destination operand (first<br />

source operand).<br />

VEX.128 encoded version: The destination operand (also first source operand) is a XMM register and encoded in<br />

reg_field. The second source operand is a XMM register and encoded in VEX.vvvv. The third source operand is a<br />

XMM register or a 64-bit memory location and encoded in rm_field. The upper bits ([255:128]) of the YMM destination<br />

register are zeroed.<br />

Compiler tools may optionally support a complementary mnemonic for each instruction mnemonic listed in the<br />

opcode/instruction column of the summary table. The behavior of the complementary mnemonic in situations<br />

involving NANs are governed by the definition of the instruction mnemonic defined in the opcode/instruction<br />

column. See also Section 2.3.1, “FMA <strong>Instruction</strong> Operand Order and Arithmetic Behavior”.<br />

6-30 Ref. # 319433-014

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

Saved successfully!

Ooh no, something went wrong!