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