# _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.

Parent topic: Intrinsics for Fused Multiply Add Operations