Developer Guide and Reference

Contents

_mm_fnmsub_pd, _mm256_fnmsub_pd

Multiply-subtracts negated packed double-precision floating-point values of three float64 vectors. The corresponding FMA instruction is
VFNMSUB<XXX>PD
, where XXX could be 132, 213, or 231.

Syntax

For 128-bit vector
extern __m128d _mm_fnmsub_pd(__m128d a, __m128d b, __m128d c);
For 256-bit vector
extern __m256d _mm256_fnmsub_pd(__m256d a, __m256d b, __m256d c);
Arguments
a
float64 vector used for the operation
b
float64 vector also used for the operation
c
float64 vector also used for the operation
Description
Performs a set of SIMD negated multiply-subtract computation on packed double-precision floating-point values using three source vectors/operands,
a
,
b
, and
c
. Corresponding values in two operands,
a
and
b
, are multiplied and the negated infinite precision intermediate result is obtained. From this intermediate result the value in the third operand,
c
, is subtracted, after which the final results are rounded to the nearest float64 values.
The compiler defaults to using the
VFNMSUB213PD
instruction and uses the other forms
VFNMSUB132PD
or
VFNMSUB231PD
only if a low level optimization decides it is useful or necessary. For example, the compiler could change the default if it finds that another instruction form saves a register or eliminates a move.
Returns
Result of the negated multiply-subtract operation.