Class X86.Fma | Burst | 1.3.9
docs.unity3d.com
    Show / Hide Table of Contents

    Class X86.Fma

    FMA intrinsics

    Inheritance
    Object
    X86.Fma
    Inherited Members
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Object.ReferenceEquals(Object, Object)
    Object.ToString()
    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

    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023