[libc-commits] [libc] ce7fbcb - [libc][math] Qualify fadd functions to constexpr (#194322)

via libc-commits libc-commits at lists.llvm.org
Fri May 1 23:56:30 PDT 2026


Author: Kiriti Ponduri
Date: 2026-05-02T09:56:25+03:00
New Revision: ce7fbcbf1c83e12bf3baa9b2904793260ddec7b4

URL: https://github.com/llvm/llvm-project/commit/ce7fbcbf1c83e12bf3baa9b2904793260ddec7b4
DIFF: https://github.com/llvm/llvm-project/commit/ce7fbcbf1c83e12bf3baa9b2904793260ddec7b4.diff

LOG: [libc][math] Qualify fadd functions to constexpr (#194322)

Signed-off-by: udaykiriti <udaykiriti624 at gmail.com>

Added: 
    

Modified: 
    libc/src/__support/math/fadd.h
    libc/src/__support/math/faddf128.h
    libc/src/__support/math/faddl.h
    libc/test/shared/CMakeLists.txt
    libc/test/shared/shared_math_constexpr_test.cpp

Removed: 
    


################################################################################
diff  --git a/libc/src/__support/math/fadd.h b/libc/src/__support/math/fadd.h
index 0cc6209d3ee73..619ef93648c08 100644
--- a/libc/src/__support/math/fadd.h
+++ b/libc/src/__support/math/fadd.h
@@ -15,7 +15,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float fadd(double x, double y) {
+LIBC_INLINE constexpr float fadd(double x, double y) {
   return fputil::generic::add<float>(x, y);
 }
 

diff  --git a/libc/src/__support/math/faddf128.h b/libc/src/__support/math/faddf128.h
index 6e6051599668d..301412e39d6af 100644
--- a/libc/src/__support/math/faddf128.h
+++ b/libc/src/__support/math/faddf128.h
@@ -19,7 +19,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float faddf128(float128 x, float128 y) {
+LIBC_INLINE constexpr float faddf128(float128 x, float128 y) {
   return fputil::generic::add<float>(x, y);
 }
 

diff  --git a/libc/src/__support/math/faddl.h b/libc/src/__support/math/faddl.h
index 870938ce36138..8a4aacbc07f98 100644
--- a/libc/src/__support/math/faddl.h
+++ b/libc/src/__support/math/faddl.h
@@ -15,7 +15,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float faddl(long double x, long double y) {
+LIBC_INLINE constexpr float faddl(long double x, long double y) {
   return fputil::generic::add<float>(x, y);
 }
 

diff  --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index 0e59a53d1d8ba..993f28d8c37c4 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -418,6 +418,9 @@ add_fp_unittest(
     libc.src.__support.math.dmulf128
     libc.src.__support.math.dmull
     libc.src.__support.math.dsqrtf128
+    libc.src.__support.math.fadd
+    libc.src.__support.math.faddf128
+    libc.src.__support.math.faddl
     libc.src.__support.math.fdim
     libc.src.__support.math.fdimbf16
     libc.src.__support.math.fdimf

diff  --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index ae2484b482c15..f849929e54e08 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -58,6 +58,7 @@ static_assert(0.0 == LIBC_NAMESPACE::shared::fminimum_mag_num(0.0, 0.0));
 static_assert(0.0f == LIBC_NAMESPACE::shared::ceilf(0.0f));
 static_assert(0.0f == LIBC_NAMESPACE::shared::copysignf(0.0f, 0.0f));
 static_assert(1.0f == LIBC_NAMESPACE::shared::fabsf(-1.0f));
+static_assert(0.0f == LIBC_NAMESPACE::shared::fadd(0.0, 0.0));
 static_assert(1.0f == LIBC_NAMESPACE::shared::fdimf(1.0f, 0.0f));
 static_assert(2.0f == LIBC_NAMESPACE::shared::fmaximum_mag_numf(1.0f, 2.0f));
 static_assert(0.0f == LIBC_NAMESPACE::shared::floorf(0.0f));
@@ -149,6 +150,7 @@ static_assert(0.0L == LIBC_NAMESPACE::shared::copysignl(0.0L, 0.0L));
 static_assert(0.0 == LIBC_NAMESPACE::shared::ddivl(0.0L, 1.0L));
 static_assert(0.0 == LIBC_NAMESPACE::shared::dmull(0.0L, 1.0L));
 static_assert(1.0L == LIBC_NAMESPACE::shared::fabsl(-1.0L));
+static_assert(0.0f == LIBC_NAMESPACE::shared::faddl(0.0L, 0.0L));
 static_assert(1.0L == LIBC_NAMESPACE::shared::fdiml(1.0L, 0.0L));
 static_assert(0.0f == LIBC_NAMESPACE::shared::fdivl(0.0L, 1.0L));
 static_assert(0.0L == LIBC_NAMESPACE::shared::floorl(0.0L));
@@ -202,6 +204,8 @@ static_assert(0.0 ==
               LIBC_NAMESPACE::shared::ddivf128(float128(0.0), float128(1.0)));
 static_assert(0.0 ==
               LIBC_NAMESPACE::shared::dmulf128(float128(0.0), float128(1.0)));
+static_assert(0.0f ==
+              LIBC_NAMESPACE::shared::faddf128(float128(0.0), float128(0.0)));
 static_assert(float128(1.0) ==
               LIBC_NAMESPACE::shared::fdimf128(float128(1.0), float128(0.0)));
 static_assert(0.0f ==


        


More information about the libc-commits mailing list