[libc-commits] [libc] [llvm] [libc][math] Refactor setpayloadsig family to header-only (PR #183113)
via libc-commits
libc-commits at lists.llvm.org
Tue Feb 24 09:55:00 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Anonmiraj (AnonMiraj)
<details>
<summary>Changes</summary>
closes : #<!-- -->181823
@<!-- -->bassiounix
---
Full diff: https://github.com/llvm/llvm-project/pull/183113.diff
12 Files Affected:
- (modified) libc/shared/math.h (+6)
- (modified) libc/src/__support/math/CMakeLists.txt (+57)
- (modified) libc/src/math/generic/CMakeLists.txt (+6-13)
- (modified) libc/src/math/generic/setpayloadsig.cpp (+2-4)
- (modified) libc/src/math/generic/setpayloadsigbf16.cpp (+2-5)
- (modified) libc/src/math/generic/setpayloadsigf.cpp (+2-4)
- (modified) libc/src/math/generic/setpayloadsigf128.cpp (+2-4)
- (modified) libc/src/math/generic/setpayloadsigf16.cpp (+2-4)
- (modified) libc/src/math/generic/setpayloadsigl.cpp (+2-4)
- (modified) libc/test/shared/CMakeLists.txt (+6)
- (modified) libc/test/shared/shared_math_test.cpp (+29)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+87-5)
``````````diff
diff --git a/libc/shared/math.h b/libc/shared/math.h
index 7f739d7173799..38b487eb0e614 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -159,6 +159,12 @@
#include "math/setpayloadf128.h"
#include "math/setpayloadf16.h"
#include "math/setpayloadl.h"
+#include "math/setpayloadsig.h"
+#include "math/setpayloadsigbf16.h"
+#include "math/setpayloadsigf.h"
+#include "math/setpayloadsigf128.h"
+#include "math/setpayloadsigf16.h"
+#include "math/setpayloadsigl.h"
#include "math/sin.h"
#include "math/sincos.h"
#include "math/sincosf.h"
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index e18865a2479ac..6a4beaace1a24 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1740,6 +1740,63 @@ add_header_library(
libc.src.__support.macros.config
)
+add_header_library(
+ setpayloadsig
+ HDRS
+ setpayloadsig.h
+ DEPENDS
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
+add_header_library(
+ setpayloadsigbf16
+ HDRS
+ setpayloadsigbf16.h
+ DEPENDS
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.macros.config
+)
+
+add_header_library(
+ setpayloadsigf
+ HDRS
+ setpayloadsigf.h
+ DEPENDS
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
+add_header_library(
+ setpayloadsigf128
+ HDRS
+ setpayloadsigf128.h
+ DEPENDS
+ libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
+add_header_library(
+ setpayloadsigf16
+ HDRS
+ setpayloadsigf16.h
+ DEPENDS
+ libc.include.llvm-libc-macros.float16_macros
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
+add_header_library(
+ setpayloadsigl
+ HDRS
+ setpayloadsigl.h
+ DEPENDS
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
add_header_library(
sqrtf16
HDRS
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 990a04701714c..2dda8f3b2678f 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4608,7 +4608,6 @@ add_entrypoint_object(
HDRS
../setpayload.h
DEPENDS
- libc.src.__support.FPUtil.basic_operations
libc.src.__support.math.setpayload
)
@@ -4669,7 +4668,7 @@ add_entrypoint_object(
HDRS
../setpayloadsig.h
DEPENDS
- libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.math.setpayloadsig
)
add_entrypoint_object(
@@ -4679,7 +4678,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigf.h
DEPENDS
- libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.math.setpayloadsigf
)
add_entrypoint_object(
@@ -4689,7 +4688,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigl.h
DEPENDS
- libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.math.setpayloadsigl
)
add_entrypoint_object(
@@ -4699,8 +4698,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigf16.h
DEPENDS
- libc.src.__support.macros.properties.types
- libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.math.setpayloadsigf16
)
add_entrypoint_object(
@@ -4710,8 +4708,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigf128.h
DEPENDS
- libc.src.__support.macros.properties.types
- libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.math.setpayloadsigf128
)
add_entrypoint_object(
@@ -4721,11 +4718,7 @@ add_entrypoint_object(
HDRS
../setpayloadsigbf16.h
DEPENDS
- libc.src.__support.common
- libc.src.__support.FPUtil.basic_operations
- libc.src.__support.FPUtil.bfloat16
- libc.src.__support.macros.config
- libc.src.__support.macros.properties.types
+ libc.src.__support.math.setpayloadsigbf16
)
add_entrypoint_object(
diff --git a/libc/src/math/generic/setpayloadsig.cpp b/libc/src/math/generic/setpayloadsig.cpp
index fa8b165ca1277..192767bc92e49 100644
--- a/libc/src/math/generic/setpayloadsig.cpp
+++ b/libc/src/math/generic/setpayloadsig.cpp
@@ -7,14 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsig.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsig.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsig, (double *res, double pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsig(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigbf16.cpp b/libc/src/math/generic/setpayloadsigbf16.cpp
index 7a2b7c7dc66dd..774dca5334106 100644
--- a/libc/src/math/generic/setpayloadsigbf16.cpp
+++ b/libc/src/math/generic/setpayloadsigbf16.cpp
@@ -7,15 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigbf16.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsigbf16.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsigbf16, (bfloat16 * res, bfloat16 pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsigbf16(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigf.cpp b/libc/src/math/generic/setpayloadsigf.cpp
index ec9d98f2123a8..7b4b0ed694f7d 100644
--- a/libc/src/math/generic/setpayloadsigf.cpp
+++ b/libc/src/math/generic/setpayloadsigf.cpp
@@ -7,14 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigf.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsigf.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsigf, (float *res, float pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsigf(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigf128.cpp b/libc/src/math/generic/setpayloadsigf128.cpp
index 97f6a36e229ec..a3972286767b5 100644
--- a/libc/src/math/generic/setpayloadsigf128.cpp
+++ b/libc/src/math/generic/setpayloadsigf128.cpp
@@ -7,14 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigf128.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsigf128.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsigf128, (float128 * res, float128 pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsigf128(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigf16.cpp b/libc/src/math/generic/setpayloadsigf16.cpp
index 5ba9fcdb0fe18..46628bc935db6 100644
--- a/libc/src/math/generic/setpayloadsigf16.cpp
+++ b/libc/src/math/generic/setpayloadsigf16.cpp
@@ -7,14 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigf16.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsigf16.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsigf16, (float16 * res, float16 pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsigf16(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/setpayloadsigl.cpp b/libc/src/math/generic/setpayloadsigl.cpp
index 446fbf5d86139..8cd15577200ee 100644
--- a/libc/src/math/generic/setpayloadsigl.cpp
+++ b/libc/src/math/generic/setpayloadsigl.cpp
@@ -7,14 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/setpayloadsigl.h"
-#include "src/__support/FPUtil/BasicOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/setpayloadsigl.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, setpayloadsigl, (long double *res, long double pl)) {
- return static_cast<int>(fputil::setpayload</*IsSignaling=*/true>(*res, pl));
+ return math::setpayloadsigl(res, pl);
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index 5e1a06c7abe87..53db90cce952b 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -156,6 +156,12 @@ add_fp_unittest(
libc.src.__support.math.setpayloadf128
libc.src.__support.math.setpayloadf16
libc.src.__support.math.setpayloadl
+ libc.src.__support.math.setpayloadsig
+ libc.src.__support.math.setpayloadsigbf16
+ libc.src.__support.math.setpayloadsigf
+ libc.src.__support.math.setpayloadsigf128
+ libc.src.__support.math.setpayloadsigf16
+ libc.src.__support.math.setpayloadsigl
libc.src.__support.math.sqrtf16
libc.src.__support.math.sin
libc.src.__support.math.sincos
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index b7d0f239a1a2f..da917d7649638 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -98,6 +98,11 @@ TEST(LlvmLibcSharedMathTest, AllFloat16) {
float16 setpayloadf16_res = 0.0f16;
EXPECT_EQ(0,
LIBC_NAMESPACE::shared::setpayloadf16(&setpayloadf16_res, 0.0f16));
+
+ float16 setpayloadsigf16_res = 0.0f16;
+ EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsigf16(&setpayloadsigf16_res,
+ 0.0f16));
+ EXPECT_FP_EQ(0x0p+0f16, setpayloadsigf16_res);
}
#endif // LIBC_TYPES_HAS_FLOAT16
@@ -169,6 +174,11 @@ TEST(LlvmLibcSharedMathTest, AllFloat) {
float setpayloadf_res = 0.0f;
EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadf(&setpayloadf_res, 0.0f));
+
+ float setpayloadsigf_res = 0.0f;
+ EXPECT_EQ(1,
+ LIBC_NAMESPACE::shared::setpayloadsigf(&setpayloadsigf_res, 0.0f));
+ EXPECT_FP_EQ(0x0p+0f, setpayloadsigf_res);
}
TEST(LlvmLibcSharedMathTest, AllDouble) {
@@ -216,6 +226,10 @@ TEST(LlvmLibcSharedMathTest, AllDouble) {
double setpayload_res = 0.0;
EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayload(&setpayload_res, 0.0));
+
+ double setpayloadsig_res = 0.0;
+ EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsig(&setpayloadsig_res, 0.0));
+ EXPECT_FP_EQ(0.0, setpayloadsig_res);
}
TEST(LlvmLibcSharedMathTest, AllLongDouble) {
@@ -242,6 +256,11 @@ TEST(LlvmLibcSharedMathTest, AllLongDouble) {
long double setpayloadl_res = 0.0L;
EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadl(&setpayloadl_res, 0.0L));
+
+ long double setpayloadsigl_res = 0.0L;
+ EXPECT_EQ(1,
+ LIBC_NAMESPACE::shared::setpayloadsigl(&setpayloadsigl_res, 0.0L));
+ EXPECT_FP_EQ(0x0p+0L, setpayloadsigl_res);
}
#ifdef LIBC_TYPES_HAS_FLOAT128
@@ -295,6 +314,11 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
float128 setpayloadf128_res = float128(0.0);
EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadf128(&setpayloadf128_res,
float128(0.0)));
+
+ float128 setpayloadsigf128_res = float128(0.0);
+ EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsigf128(&setpayloadsigf128_res,
+ float128(0.0)));
+ EXPECT_FP_EQ(float128(0.0), setpayloadsigf128_res);
}
#endif // LIBC_TYPES_HAS_FLOAT128
@@ -327,4 +351,9 @@ TEST(LlvmLibcSharedMathTest, AllBFloat16) {
bfloat16 setpayloadbf16_res = bfloat16(0.0);
EXPECT_EQ(0, LIBC_NAMESPACE::shared::setpayloadbf16(&setpayloadbf16_res,
bfloat16(0.0)));
+
+ bfloat16 setpayloadsigbf16_res = bfloat16(0.0);
+ EXPECT_EQ(1, LIBC_NAMESPACE::shared::setpayloadsigbf16(&setpayloadsigbf16_res,
+ bfloat16(0.0)));
+ EXPECT_FP_EQ(bfloat16(0.0), setpayloadsigbf16_res);
}
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 2affa0334ee0b..b70e1f155290f 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -2470,6 +2470,63 @@ libc_support_library(
],
)
+libc_support_library(
+ name = "__support_math_setpayloadsig",
+ hdrs = ["src/__support/math/setpayloadsig.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_macros_config",
+ ],
+)
+
+libc_support_library(
+ name = "__support_math_setpayloadsigbf16",
+ hdrs = ["src/__support/math/setpayloadsigbf16.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_fputil_bfloat16",
+ ":__support_macros_config",
+ ],
+)
+
+libc_support_library(
+ name = "__support_math_setpayloadsigf",
+ hdrs = ["src/__support/math/setpayloadsigf.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_macros_config",
+ ],
+)
+
+libc_support_library(
+ name = "__support_math_setpayloadsigf128",
+ hdrs = ["src/__support/math/setpayloadsigf128.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_macros_config",
+ ":llvm_libc_types_float128",
+ ],
+)
+
+libc_support_library(
+ name = "__support_math_setpayloadsigf16",
+ hdrs = ["src/__support/math/setpayloadsigf16.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_macros_config",
+ ":llvm_libc_macros_float16_macros",
+ ],
+)
+
+libc_support_library(
+ name = "__support_math_setpayloadsigl",
+ hdrs = ["src/__support/math/setpayloadsigl.h"],
+ deps = [
+ ":__support_fputil_basic_operations",
+ ":__support_macros_config",
+ ],
+)
+
libc_support_library(
name = "__support_math_sqrtf16",
hdrs = ["src/__support/math/sqrtf16.h"],
@@ -6166,15 +6223,40 @@ libc_math_function(
],
)
-libc_math_function(name = "setpayloadsig")
+libc_math_function(
+ name = "setpayloadsig",
+ additional_deps = [
+ ":__support_math_setpayloadsig",
+ ],
+)
-libc_math_function(name = "setpayloadsigf")
+libc_math_function(
+ name = "setpayloadsigf",
+ additional_deps = [
+ ":__support_math_setpayloadsigf",
+ ],
+)
-libc_math_function(name = "setpayloadsigl")
+libc_math_function(
+ name = "setpayloadsigl",
+ additional_deps = [
+ ":__support_math_setpayloadsigl",
+ ],
+)
-libc_math_function(name = "setpayloadsigf128")
+libc_math_function(
+ name = "setpayloadsigf128",
+ additional_deps = [
+ ":__support_math_setpayloadsigf128",
+ ],
+)
-libc_math_function(name = "setpayloadsigf16")
+libc_math_function(
+ name = "setpayloadsigf16",
+ additional_deps = [
+ ":__support_math_setpayloadsigf16",
+ ],
+)
libc_math_function(
name = "sin",
``````````
</details>
https://github.com/llvm/llvm-project/pull/183113
More information about the libc-commits
mailing list