[libc-commits] [libc] [libc][math] Qualify f16add functions to constexpr (PR #195429)

via libc-commits libc-commits at lists.llvm.org
Sat May 2 01:15:00 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Kiriti Ponduri  (udaykiriti)

<details>
<summary>Changes</summary>



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


6 Files Affected:

- (modified) libc/src/__support/math/f16add.h (+1-1) 
- (modified) libc/src/__support/math/f16addf.h (+1-1) 
- (modified) libc/src/__support/math/f16addf128.h (+1-1) 
- (modified) libc/src/__support/math/f16addl.h (+1-1) 
- (modified) libc/test/shared/CMakeLists.txt (+4) 
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+5) 


``````````diff
diff --git a/libc/src/__support/math/f16add.h b/libc/src/__support/math/f16add.h
index 7e046c3f115dc..a75d2189b6fd7 100644
--- a/libc/src/__support/math/f16add.h
+++ b/libc/src/__support/math/f16add.h
@@ -19,7 +19,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float16 f16add(double x, double y) {
+LIBC_INLINE constexpr float16 f16add(double x, double y) {
   return fputil::generic::add<float16>(x, y);
 }
 
diff --git a/libc/src/__support/math/f16addf.h b/libc/src/__support/math/f16addf.h
index 5e140bc6e5373..2c91a2ad86051 100644
--- a/libc/src/__support/math/f16addf.h
+++ b/libc/src/__support/math/f16addf.h
@@ -19,7 +19,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float16 f16addf(float x, float y) {
+LIBC_INLINE constexpr float16 f16addf(float x, float y) {
   return fputil::generic::add<float16>(x, y);
 }
 
diff --git a/libc/src/__support/math/f16addf128.h b/libc/src/__support/math/f16addf128.h
index 8d259a273a8d1..d4316ce24b188 100644
--- a/libc/src/__support/math/f16addf128.h
+++ b/libc/src/__support/math/f16addf128.h
@@ -21,7 +21,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float16 f16addf128(float128 x, float128 y) {
+LIBC_INLINE constexpr float16 f16addf128(float128 x, float128 y) {
   return fputil::generic::add<float16>(x, y);
 }
 
diff --git a/libc/src/__support/math/f16addl.h b/libc/src/__support/math/f16addl.h
index 88f16857be48e..265ad52eedb9e 100644
--- a/libc/src/__support/math/f16addl.h
+++ b/libc/src/__support/math/f16addl.h
@@ -19,7 +19,7 @@
 namespace LIBC_NAMESPACE_DECL {
 namespace math {
 
-LIBC_INLINE float16 f16addl(long double x, long double y) {
+LIBC_INLINE constexpr float16 f16addl(long double x, long double y) {
   return fputil::generic::add<float16>(x, y);
 }
 
diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index 993f28d8c37c4..a8cd51ac410d4 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -418,6 +418,10 @@ add_fp_unittest(
     libc.src.__support.math.dmulf128
     libc.src.__support.math.dmull
     libc.src.__support.math.dsqrtf128
+    libc.src.__support.math.f16add
+    libc.src.__support.math.f16addf
+    libc.src.__support.math.f16addf128
+    libc.src.__support.math.f16addl
     libc.src.__support.math.fadd
     libc.src.__support.math.faddf128
     libc.src.__support.math.faddl
diff --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index f849929e54e08..a6f418fc37646 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -17,6 +17,7 @@
 
 static_assert(0.0 == LIBC_NAMESPACE::shared::ceil(0.0));
 static_assert(0.0 == LIBC_NAMESPACE::shared::copysign(0.0, 0.0));
+static_assert(3.0f16 == LIBC_NAMESPACE::shared::f16add(1.0, 2.0));
 static_assert(1.0 == LIBC_NAMESPACE::shared::fabs(-1.0));
 static_assert(1.0 == LIBC_NAMESPACE::shared::fdim(1.0, 0.0));
 static_assert(0.0f == LIBC_NAMESPACE::shared::fdiv(0.0, 1.0));
@@ -57,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(3.0f16 == LIBC_NAMESPACE::shared::f16addf(1.0f, 2.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));
@@ -149,6 +151,7 @@ static_assert(0.0L == LIBC_NAMESPACE::shared::ceill(0.0L));
 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(3.0f16 == LIBC_NAMESPACE::shared::f16addl(1.0L, 2.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));
@@ -204,6 +207,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(3.0f16 ==
+              LIBC_NAMESPACE::shared::f16addf128(float128(1.0), float128(2.0)));
 static_assert(0.0f ==
               LIBC_NAMESPACE::shared::faddf128(float128(0.0), float128(0.0)));
 static_assert(float128(1.0) ==

``````````

</details>


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


More information about the libc-commits mailing list