From 63a40ffb951a8f6b7662d14c6613c5c2994a9b61 Mon Sep 17 00:00:00 2001 From: Rasmus Munk Larsen Date: Fri, 28 Mar 2025 04:26:04 +0000 Subject: [PATCH] Use fma for fma and fma if native fma is not available on the platform. --- Eigen/src/Core/arch/Default/BFloat16.h | 2 +- Eigen/src/Core/arch/Default/Half.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Core/arch/Default/BFloat16.h b/Eigen/src/Core/arch/Default/BFloat16.h index 110a07d46..f2e55f345 100644 --- a/Eigen/src/Core/arch/Default/BFloat16.h +++ b/Eigen/src/Core/arch/Default/BFloat16.h @@ -675,7 +675,7 @@ EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 fmax(const bfloat16& a, const bfl EIGEN_DEVICE_FUNC inline bfloat16 fma(const bfloat16& a, const bfloat16& b, const bfloat16& c) { // Emulate FMA via float. - return bfloat16(static_cast(a) * static_cast(b) + static_cast(c)); + return bfloat16(numext::fma(static_cast(a), static_cast(b), static_cast(c))); } #ifndef EIGEN_NO_IO diff --git a/Eigen/src/Core/arch/Default/Half.h b/Eigen/src/Core/arch/Default/Half.h index af0d17266..ba70d5fab 100644 --- a/Eigen/src/Core/arch/Default/Half.h +++ b/Eigen/src/Core/arch/Default/Half.h @@ -812,7 +812,7 @@ EIGEN_DEVICE_FUNC inline half fma(const half& a, const half& b, const half& c) { return half(_mm_cvtsh_h(_mm_fmadd_ph(_mm_set_sh(a.x), _mm_set_sh(b.x), _mm_set_sh(c.x)))); #else // Emulate FMA via float. - return half(static_cast(a) * static_cast(b) + static_cast(c)); + return half(numext::fma(static_cast(a), static_cast(b), static_cast(c))); #endif }