# _mm_fmsub_ss

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

## Syntax

extern __m128 _mm_fmsub_ss(__m128 a, __m128 b, __m128 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 scalar SIMD multiply-subtract computation on scalar single-precision floating-point values in the low 32-bits of three source operands, `a`, `b`, and `c`. The float32 values in two operands, `a` and `b`, are multiplied and the infinite precision intermediate result is obtained. From the infinite precision intermediate result, the float32 value in the third operand, `c`, is subtracted. The final result is rounded to the nearest float32 value.

The compiler defaults to using the VFMSUB213SS instruction and uses the other forms VFMSUB132SS or VFMSUB231SS 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.

Parent topic: Intrinsics for Fused Multiply Add Operations