[libc-commits] [libc] [libc] Use __builtin_elementwise_fma instead of __builtin_fma (PR #126288)

via libc-commits libc-commits at lists.llvm.org
Fri Feb 7 11:02:27 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Petr Hosek (petrhosek)

<details>
<summary>Changes</summary>

__builtin_elementwise_fma doesn't consider errno and is thus more suitable for libc fma implementation.

Fixes #<!-- -->126025

---
Full diff: https://github.com/llvm/llvm-project/pull/126288.diff


2 Files Affected:

- (modified) libc/src/__support/FPUtil/FMA.h (+2-2) 
- (modified) libc/src/__support/FPUtil/multiply_add.h (+2-2) 


``````````diff
diff --git a/libc/src/__support/FPUtil/FMA.h b/libc/src/__support/FPUtil/FMA.h
index 807d685239732e5..7b505d22c06b6ac 100644
--- a/libc/src/__support/FPUtil/FMA.h
+++ b/libc/src/__support/FPUtil/FMA.h
@@ -25,11 +25,11 @@ LIBC_INLINE OutType fma(InType x, InType y, InType z) {
 
 #ifdef LIBC_TARGET_CPU_HAS_FMA
 template <> LIBC_INLINE float fma(float x, float y, float z) {
-  return __builtin_fmaf(x, y, z);
+  return __builtin_elementwise_fma(x, y, z);
 }
 
 template <> LIBC_INLINE double fma(double x, double y, double z) {
-  return __builtin_fma(x, y, z);
+  return __builtin_elementwise_fma(x, y, z);
 }
 #endif // LIBC_TARGET_CPU_HAS_FMA
 
diff --git a/libc/src/__support/FPUtil/multiply_add.h b/libc/src/__support/FPUtil/multiply_add.h
index a86067c401873ba..763799f1f29d72b 100644
--- a/libc/src/__support/FPUtil/multiply_add.h
+++ b/libc/src/__support/FPUtil/multiply_add.h
@@ -47,11 +47,11 @@ namespace LIBC_NAMESPACE_DECL {
 namespace fputil {
 
 LIBC_INLINE float multiply_add(float x, float y, float z) {
-  return __builtin_fmaf(x, y, z);
+  return __builtin_elementwise_fma(x, y, z);
 }
 
 LIBC_INLINE double multiply_add(double x, double y, double z) {
-  return __builtin_fma(x, y, z);
+  return __builtin_elementwise_fma(x, y, z);
 }
 
 } // namespace fputil

``````````

</details>


https://github.com/llvm/llvm-project/pull/126288


More information about the libc-commits mailing list