# X86.Fma

> FMA intrinsics

## Definition

* **Type:** Class
* **Namespace:** [Unity.Burst.Intrinsics](/engine/6000.7/script-reference/unity/burst/intrinsics.md)
* **Assembly:** UnityEngine.BurstModule

```csharp
public static class X86.Fma
```

## Static Properties

| Property                                                                                           | Description                                                        |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| [IsFmaSupported](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/isfmasupported.md) | Evaluates to true at compile time if FMA intrinsics are supported. |

## Static Methods

| Method                                                                                                     | Description                                                                                                                                                                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [fmadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmadd-pd.md)                    | Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.                                                                                                                   |
| [fmadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmadd-ps.md)                    | Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.                                                                                                                   |
| [fmadd\_sd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmadd-sd.md)                    | Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.                           |
| [fmadd\_ss](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmadd-ss.md)                    | Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.                |
| [fmaddsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmaddsub-pd.md)              | Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [fmaddsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmaddsub-ps.md)              | Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [fmsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsub-pd.md)                    | Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.                                                                                                            |
| [fmsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsub-ps.md)                    | Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.                                                                                                            |
| [fmsub\_sd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsub-sd.md)                    | Multiply the lower double-precision(64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result.Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.                      |
| [fmsub\_ss](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsub-ss.md)                    | Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.         |
| [fmsubadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsubadd-pd.md)              | Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [fmsubadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fmsubadd-ps.md)              | Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [fnmadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmadd-pd.md)                  | Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.                                                                                                           |
| [fnmadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmadd-ps.md)                  | Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.                                                                                                           |
| [fnmadd\_sd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmadd-sd.md)                  | Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.                   |
| [fnmadd\_ss](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmadd-ss.md)                  | Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.        |
| [fnmsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmsub-pd.md)                  | Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.                                                                                                    |
| [fnmsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmsub-ps.md)                  | Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.                                                                                                    |
| [fnmsub\_sd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmsub-sd.md)                  | Multiply the lower double-precision(64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result.Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.              |
| [fnmsub\_ss](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/fnmsub-ss.md)                  | Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. |
| [mm256\_fmadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmadd-pd.md)       | Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.                                                                                                                   |
| [mm256\_fmadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmadd-ps.md)       | Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.                                                                                                                   |
| [mm256\_fmaddsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmaddsub-pd.md) | Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [mm256\_fmaddsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmaddsub-ps.md) | Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [mm256\_fmsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmsub-pd.md)       | Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.                                                                                                            |
| [mm256\_fmsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmsub-ps.md)       | Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.                                                                                                            |
| [mm256\_fmsubadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmsubadd-pd.md) | Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [mm256\_fmsubadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fmsubadd-ps.md) | Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c to/from the intermediate result, and store the results in dst.                                                                                   |
| [mm256\_fnmadd\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fnmadd-pd.md)     | Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.                                                                                                           |
| [mm256\_fnmadd\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fnmadd-ps.md)     | Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.                                                                                                           |
| [mm256\_fnmsub\_pd](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fnmsub-pd.md)     | Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.                                                                                                    |
| [mm256\_fnmsub\_ps](/engine/6000.7/script-reference/unity/burst/intrinsics/x86/fma/mm256-fnmsub-ps.md)     | Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.                                                                                                    |
