Developer Guide and Reference

Contents

_mm_fmsub_ps, _mm256_fmsub_ps

Multiply-subtracts packed single-precision floating-point values using three float32 vectors. The corresponding FMA instruction is
VFMSUB<XXX>PS
, where XXX could be 132, 213, or 231.

Syntax

For 128-bit vector
extern __m128 _mm_fmsub_ps(__m128 a, __m128 b, __m128 c);
For 256-bit vector
extern __m256 _mm256_fmsub_ps(__m256 a, __m256 b, __m256 c);
Arguments
a
float32 vector used for the operation
b
float32 vector also used for the operation
c
float32 vector also used for the operation
Description
Performs a set of SIMD multiply-subtract computation on packed single-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 infinite precision intermediate results are obtained. From the infinite precision intermediate results, the values in the third operand,
c
, are subtracted. The final results are rounded to the nearest float32 values.
The compiler defaults to using the
VFMSUB213PS
instruction and uses the other forms
VFMSUB132PS
or
VFMSUB231PS
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 multiply-subtract operation.