[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