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

VFNMADD132PS/VFNMADD213PS/VFNMADD231PS — Fused Negative Multiply-Add of Packed<br />

Single-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.W0 9C /r A V/V FMA Multiply packed single-precision floating-point values from xmm0<br />

VFNMADD132PS xmm0, xmm1,<br />

xmm2/m128<br />

and xmm2/mem, negate the multiplication result and add to xmm1<br />

and put result in xmm0.<br />

VEX.DDS.128.66.0F38.W0 AC /r A V/V FMA Multiply packed single-precision floating-point values from xmm0<br />

VFNMADD213PS xmm0, xmm1,<br />

xmm2/m128<br />

and xmm1, negate the multiplication result and add to xmm2/mem<br />

and put result in xmm0.<br />

VEX.DDS.128.66.0F38.W0 BC /r A V/V FMA Multiply packed single-precision floating-point values from xmm1<br />

VFNMADD231PS xmm0, xmm1,<br />

xmm2/m128<br />

and xmm2/mem, negate the multiplication result and add to xmm0<br />

and put result in xmm0.<br />

VEX.DDS.256.66.0F38.W0 9C /r A V/V FMA Multiply packed single-precision floating-point values from ymm0<br />

VFNMADD132PS ymm0, ymm1,<br />

ymm2/m256<br />

and ymm2/mem, negate the multiplication result and add to ymm1<br />

and put result in ymm0.<br />

VEX.DDS.256.66.0F38.W0 AC /r A V/V FMA Multiply packed single-precision floating-point values from ymm0<br />

VFNMADD213PS ymm0, ymm1,<br />

ymm2/m256<br />

and ymm1, negate the multiplication result and add to ymm2/mem<br />

and put result in ymm0.<br />

VEX.DDS.256.66.0F38.0 BC /r A V/V FMA Multiply packed single-precision floating-point values from ymm1<br />

VFNMADD231PS ymm0, ymm1,<br />

ymm2/m256<br />

and ymm2/mem, negate the multiplication result and add to ymm0<br />

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

VFNMADD132PS: Multiplies the four or eight packed single-precision floating-point values from the first source<br />

operand to the four or eight packed single-precision floating-point values in the third source operand, adds the<br />

negated infinite precision intermediate result to the four or eight packed single-precision floating-point values in<br />

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

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

VFNMADD213PS: Multiplies the four or eight packed single-precision floating-point values from the second source<br />

operand to the four or eight packed single-precision floating-point values in the first source operand, adds the<br />

negated infinite precision intermediate result to the four or eight packed single-precision floating-point values in<br />

the third source operand, performs rounding and stores the resulting the four or eight packed single-precision<br />

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

VFNMADD231PS: Multiplies the four or eight packed single-precision floating-point values from the second source<br />

operand to the four or eight packed single-precision floating-point values in the third source operand, adds the<br />

negated infinite precision intermediate result to the four or eight packed single-precision floating-point values in<br />

the first source operand, performs rounding and stores the resulting four or eight packed single-precision floatingpoint<br />

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

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

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

YMM register or a 256-bit memory location and encoded in rm_field.<br />

Ref. # 319433-014 6-37

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

Saved successfully!

Ooh no, something went wrong!