# _mm_fnmsub_ps, _mm256_fnmsub_ps

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

## Syntax

For 128-bit vector

extern __m128 _mm_fnmsub_ps(__m128 a, __m128 b, __m128 c);

For 256-bit vector

extern __m256 _mm256_fnmsub_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 negated 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 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 float32 values.

The compiler defaults to using the VFNMSUB213PS instruction and uses the other forms VFNMSUB132PS or VFNMSUB231PS 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.

Parent topic: Intrinsics for Fused Multiply Add Operations