[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