Class X86.Fma
FMA intrinsics
Inherited Members
Namespace: Unity.Burst.Intrinsics
Syntax
public static class Fma
Properties
IsFmaSupported
Evaluates to true at compile time if FMA intrinsics are supported.
Burst ties FMA support to AVX2 support to simplify feature sets to support.
Declaration
public static bool IsFmaSupported { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
Methods
fmadd_pd(v128, v128, v128)
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.
Declaration
public static v128 fmadd_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmadd213pd xmm, xmm, xmm
fmadd_ps(v128, v128, v128)
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.
Declaration
public static v128 fmadd_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmadd213ps xmm, xmm, xmm
fmadd_sd(v128, v128, v128)
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.
Declaration
public static v128 fmadd_sd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmadd213sd xmm, xmm, xmm
fmadd_ss(v128, v128, v128)
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.
Declaration
public static v128 fmadd_ss(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmadd213ss xmm, xmm, xmm
fmaddsub_pd(v128, v128, v128)
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.
Declaration
public static v128 fmaddsub_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmaddsub213pd xmm, xmm, xmm
fmaddsub_ps(v128, v128, v128)
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.
Declaration
public static v128 fmaddsub_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmaddsub213ps xmm, xmm, xmm
fmsub_pd(v128, v128, v128)
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.
Declaration
public static v128 fmsub_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsub213pd xmm, xmm, xmm
fmsub_ps(v128, v128, v128)
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.
Declaration
public static v128 fmsub_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsub213ps xmm, xmm, xmm
fmsub_sd(v128, v128, v128)
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.
Declaration
public static v128 fmsub_sd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsub213sd xmm, xmm, xmm
fmsub_ss(v128, v128, v128)
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.
Declaration
public static v128 fmsub_ss(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsub213ss xmm, xmm, xmm
fmsubadd_pd(v128, v128, v128)
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.
Declaration
public static v128 fmsubadd_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsubadd213pd xmm, xmm, xmm
fmsubadd_ps(v128, v128, v128)
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.
Declaration
public static v128 fmsubadd_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfmsubadd213ps xmm, xmm, xmm
fnmadd_pd(v128, v128, v128)
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.
Declaration
public static v128 fnmadd_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmadd213pd xmm, xmm, xmm
fnmadd_ps(v128, v128, v128)
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.
Declaration
public static v128 fnmadd_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmadd213ps xmm, xmm, xmm
fnmadd_sd(v128, v128, v128)
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.
Declaration
public static v128 fnmadd_sd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmadd213sd xmm, xmm, xmm
fnmadd_ss(v128, v128, v128)
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.
Declaration
public static v128 fnmadd_ss(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmadd213ss xmm, xmm, xmm
fnmsub_pd(v128, v128, v128)
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.
Declaration
public static v128 fnmsub_pd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmsub213pd xmm, xmm, xmm
fnmsub_ps(v128, v128, v128)
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.
Declaration
public static v128 fnmsub_ps(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmsub213ps xmm, xmm, xmm
fnmsub_sd(v128, v128, v128)
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.
Declaration
public static v128 fnmsub_sd(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmsub213sd xmm, xmm, xmm
fnmsub_ss(v128, v128, v128)
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.
Declaration
public static v128 fnmsub_ss(v128 a, v128 b, v128 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v128 | a | |
| v128 | b | |
| v128 | c |
Returns
| Type | Description |
|---|---|
| v128 |
Remarks
**** vfnmsub213ss xmm, xmm, xmm
mm256_fmadd_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmadd_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmadd213pd ymm, ymm, ymm
mm256_fmadd_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmadd_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmadd213ps ymm, ymm, ymm
mm256_fmaddsub_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmaddsub_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmaddsub213pd ymm, ymm, ymm
mm256_fmaddsub_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmaddsub_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmaddsub213ps ymm, ymm, ymm
mm256_fmsub_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmsub_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmsub213pd ymm, ymm, ymm
mm256_fmsub_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmsub_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmsub213ps ymm, ymm, ymm
mm256_fmsubadd_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmsubadd_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmsubadd213pd ymm, ymm, ymm
mm256_fmsubadd_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fmsubadd_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfmsubadd213ps ymm, ymm, ymm
mm256_fnmadd_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fnmadd_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfnmadd213pd ymm, ymm, ymm
mm256_fnmadd_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fnmadd_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfnmadd213ps ymm, ymm, ymm
mm256_fnmsub_pd(v256, v256, v256)
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.
Declaration
public static v256 mm256_fnmsub_pd(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfnmsub213pd ymm, ymm, ymm
mm256_fnmsub_ps(v256, v256, v256)
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.
Declaration
public static v256 mm256_fnmsub_ps(v256 a, v256 b, v256 c)
Parameters
| Type | Name | Description |
|---|---|---|
| v256 | a | |
| v256 | b | |
| v256 | c |
Returns
| Type | Description |
|---|---|
| v256 |
Remarks
**** vfnmsub213ps ymm, ymm, ymm