Developer Guide and Reference

Contents

_mm_fmsub_sd

Multiply-subtracts scalar double-precision floating-point values using three float64 vectors. The corresponding FMA instruction is
VFMSUB<XXX>SD
, where XXX could be 132, 213, or 231.

Syntax

extern __m128d _mm_fmsub_sd(__m128d a, __m128d b, __m128d 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 scalar SIMD multiply-subtract computation on scalar double-precision floating-point values in the low 64-bits of three source operands,
a
,
b
, and
c
. The float64 values in two operands, a and b, are multiplied and the infinite precision intermediate result is obtained. From the infinite precision intermediate result, the float64 value in the third operand,
c
, is subtracted. The final result is rounded to the nearest float64 value.
The compiler defaults to using the
VFMSUB213SD
instruction and uses the other forms
VFMSUB132SD
or
VFMSUB231SD
only if a low level optimization decides it is useful/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 multiply-subtract operation.