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

VFNMSUB132PS/VFNMSUB213PS/VFNMSUB231PS — Fused Negative Multiply-Subtract of<br />

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

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

VFNMSUB213PS 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.W0 BE /r A V/V FMA Multiply packed single-precision floating-point values from xmm1<br />

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

VFNMSUB132PS 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.W0 AE /r A V/V FMA Multiply packed single-precision floating-point values from ymm0<br />

VFNMSUB213PS 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.0 BE /r A V/V FMA Multiply packed single-precision floating-point values from ymm1<br />

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

VFNMSUB132PS: 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. From<br />

negated infinite precision intermediate results, subtracts the four or eight packed single-precision floating-point<br />

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

VFNMSUB213PS: 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. From negated<br />

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

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

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

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

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

source operand, performs rounding and stores the resulting four or eight packed single-precision floating-point<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-47

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

Saved successfully!

Ooh no, something went wrong!