[libc-commits] [libc] [llvm] [libc] Make classification functions use the emulated float128 type (PR #217134)
via libc-commits
libc-commits at lists.llvm.org
Thu Aug 20 00:56:57 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Zorojuro (Sukumarsawant)
<details>
<summary>Changes</summary>
* `isnanf128`
* `issignalingf128`
* `iscanonicalf128`
---
Patch is 29.97 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/217134.diff
35 Files Affected:
- (modified) libc/config/baremetal/aarch64/entrypoints.txt (+3-3)
- (modified) libc/config/baremetal/arm/entrypoints.txt (+3-3)
- (modified) libc/config/baremetal/riscv/entrypoints.txt (+3-3)
- (modified) libc/config/darwin/aarch64/entrypoints.txt (+3-3)
- (modified) libc/config/darwin/x86_64/entrypoints.txt (+3)
- (modified) libc/config/freebsd/x86_64/entrypoints.txt (+3-2)
- (modified) libc/config/gpu/amdgpu/entrypoints.txt (+3)
- (modified) libc/config/gpu/nvptx/entrypoints.txt (+3)
- (modified) libc/config/linux/aarch64/entrypoints.txt (+3-3)
- (modified) libc/config/linux/arm/entrypoints.txt (+3)
- (modified) libc/config/linux/riscv/entrypoints.txt (+3-3)
- (modified) libc/config/linux/x86_64/entrypoints.txt (+3-3)
- (modified) libc/config/windows/entrypoints.txt (+3)
- (modified) libc/shared/math/iscanonicalf128.h (-6)
- (modified) libc/shared/math/isnanf128.h (-6)
- (modified) libc/shared/math/issignalingf128.h (-6)
- (modified) libc/src/__support/math/CMakeLists.txt (+3-3)
- (modified) libc/src/__support/math/iscanonicalf128.h (+5-8)
- (modified) libc/src/__support/math/isnanf128.h (+5-8)
- (modified) libc/src/__support/math/issignalingf128.h (+4-7)
- (modified) libc/src/math/generic/CMakeLists.txt (+3)
- (modified) libc/src/math/generic/iscanonicalf128.cpp (+4-1)
- (modified) libc/src/math/generic/isnanf128.cpp (+6-1)
- (modified) libc/src/math/generic/issignalingf128.cpp (+4-1)
- (modified) libc/src/math/iscanonicalf128.h (+5)
- (modified) libc/src/math/isnanf128.h (+5)
- (modified) libc/src/math/issignalingf128.h (+5)
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+3-3)
- (modified) libc/test/shared/shared_math_test.cpp (+3-3)
- (modified) libc/test/src/math/smoke/CMakeLists.txt (+3)
- (modified) libc/test/src/math/smoke/iscanonicalf128_test.cpp (+5)
- (modified) libc/test/src/math/smoke/isnanf128_test.cpp (+5)
- (modified) libc/test/src/math/smoke/issignalingf128_test.cpp (+5)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+9-3)
- (modified) utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel (+19)
``````````diff
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 09b81be24c8d8..c5a1eff081406 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -475,12 +475,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -765,9 +768,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index d6cb433ba01a5..8ecdd055a1c1e 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -487,12 +487,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -776,9 +779,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index b7a7b9aa7142b..d1a5bc0620cfd 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -483,12 +483,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -773,9 +776,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 9642dacf6426d..09563f5c94021 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -294,12 +294,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -585,9 +588,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 9ece581ce10eb..ce5cc135b34ad 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -170,6 +170,9 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.ilogb
#libc.src.math.ilogbf
#libc.src.math.ilogbl
+ #libc.src.math.iscanonicalf128
+ #libc.src.math.isnanf128
+ #libc.src.math.issignalingf128
#libc.src.math.llrint
#libc.src.math.llrintf
#libc.src.math.llrintl
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index bb468f0467d23..e1132b67ef1d1 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -214,6 +214,9 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogb
libc.src.math.ilogbf
libc.src.math.ilogbl
+ libc.src.math.iscanonicalf128
+ libc.src.math.isnanf128
+ libc.src.math.issignalingf128
libc.src.math.ldexp
libc.src.math.ldexpf
libc.src.math.ldexpl
@@ -524,8 +527,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index e44147e9699f4..55af31e4d86d2 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -420,9 +420,12 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogb
libc.src.math.ilogbf
libc.src.math.ilogbl
+ libc.src.math.iscanonicalf128
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
+ libc.src.math.issignalingf128
libc.src.math.ldexp
libc.src.math.ldexpf
libc.src.math.ldexpl
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index efd4fb8fc5682..b88dde8380626 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -417,9 +417,12 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogb
libc.src.math.ilogbf
libc.src.math.ilogbl
+ libc.src.math.iscanonicalf128
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
+ libc.src.math.issignalingf128
libc.src.math.ldexp
libc.src.math.ldexpf
libc.src.math.ldexpl
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 04dbcb4e4cf9e..5d8d4dbe68b1b 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -629,12 +629,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -913,9 +916,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 83c3b65498f0c..06bbfdb90880f 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -456,6 +456,9 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogb
libc.src.math.ilogbf
libc.src.math.ilogbl
+ libc.src.math.iscanonicalf128
+ libc.src.math.isnanf128
+ libc.src.math.issignalingf128
libc.src.math.ldexp
libc.src.math.ldexpf
libc.src.math.ldexpl
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 81ef813a1fa64..d7c2bb903b58d 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -702,12 +702,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -1003,9 +1006,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 37576491a73bb..27e4f46487d3f 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -707,12 +707,15 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogbl
libc.src.math.iscanonical
libc.src.math.iscanonicalf
+ libc.src.math.iscanonicalf128
libc.src.math.iscanonicall
libc.src.math.isnan
libc.src.math.isnanf
+ libc.src.math.isnanf128
libc.src.math.isnanl
libc.src.math.issignaling
libc.src.math.issignalingf
+ libc.src.math.issignalingf128
libc.src.math.issignalingl
libc.src.math.ldexp
libc.src.math.ldexpf
@@ -1008,9 +1011,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fsubf128
libc.src.math.getpayloadf128
libc.src.math.ilogbf128
- libc.src.math.iscanonicalf128
- libc.src.math.isnanf128
- libc.src.math.issignalingf128
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index bdc209bd330b5..4d84c2b5d1218 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -247,6 +247,9 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ilogb
libc.src.math.ilogbf
libc.src.math.ilogbl
+ libc.src.math.iscanonicalf128
+ libc.src.math.isnanf128
+ libc.src.math.issignalingf128
libc.src.math.ldexp
libc.src.math.ldexpf
libc.src.math.ldexpl
diff --git a/libc/shared/math/iscanonicalf128.h b/libc/shared/math/iscanonicalf128.h
index d8a6450243ec8..fa2a3ccf2acff 100644
--- a/libc/shared/math/iscanonicalf128.h
+++ b/libc/shared/math/iscanonicalf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICALF128_H
#define LLVM_LIBC_SHARED_MATH_ISCANONICALF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/iscanonicalf128.h"
@@ -24,6 +20,4 @@ using math::iscanonicalf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALF128_H
diff --git a/libc/shared/math/isnanf128.h b/libc/shared/math/isnanf128.h
index a84e26a640f23..c5d812bb5a70e 100644
--- a/libc/shared/math/isnanf128.h
+++ b/libc/shared/math/isnanf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_ISNANF128_H
#define LLVM_LIBC_SHARED_MATH_ISNANF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/isnanf128.h"
@@ -24,6 +20,4 @@ using math::isnanf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_ISNANF128_H
diff --git a/libc/shared/math/issignalingf128.h b/libc/shared/math/issignalingf128.h
index 2c7acc3195cb9..cddc1e0d39529 100644
--- a/libc/shared/math/issignalingf128.h
+++ b/libc/shared/math/issignalingf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALINGF128_H
#define LLVM_LIBC_SHARED_MATH_ISSIGNALINGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/issignalingf128.h"
@@ -24,6 +20,4 @@ using math::issignalingf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 613e0adf385c7..686aa5a911290 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1682,7 +1682,7 @@ add_header_library(
HDRS
iscanonicalf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.config
)
@@ -1729,7 +1729,7 @@ add_header_library(
HDRS
isnanf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.fp_bits
libc.src.__support.macros.config
)
@@ -1786,7 +1786,7 @@ add_header_library(
HDRS
issignalingf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.config
)
diff --git a/libc/src/__support/math/iscanonicalf128.h b/libc/src/__support/math/iscanonicalf128.h
index b711b3bc55d95..d517038ec6d70 100644
--- a/libc/src/__support/math/iscanonicalf128.h
+++ b/libc/src/__support/math/iscanonicalf128.h
@@ -9,24 +9,21 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_ISCANONICALF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_ISCANONICALF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr int iscanonicalf128(float128 x) {
- float128 temp{};
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr int iscanonicalf128(Float128 x) {
+ Float128 temp{};
return fputil::canonicalize(temp, x) == 0;
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_ISCANONICALF128_H
diff --git a/libc/src/__support/math/isnanf128.h b/libc/src/__support/math/isnanf128.h
index ff9d31f34d8fe..422b8c453a6da 100644
--- a/libc/src/__support/math/isnanf128.h
+++ b/libc/src/__support/math/isnanf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_ISNANF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_ISNANF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE LIBC_CONSTEXPR int isnanf128(float128 x) {
- return fputil::FPBits<float128>(x).is_nan();
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE LIBC_CONSTEXPR int isnanf128(Float128 x) {
+ return fputil::FPBits<Float128>(x).is_nan();
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_ISNANF128_H
diff --git a/libc/src/__support/math/issignalingf128.h b/libc/src/__support/math/issignalingf128.h
index ae1ced6b8dabe..62949159c33b0 100644
--- a/libc/src/__support/math/issignalingf128.h
+++ b/libc/src/__support/math/issignalingf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_ISSIGNALINGF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_ISSIGNALINGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr int issignalingf128(float128 x) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr int issignalingf128(Float128 x) {
return fputil::issignaling_impl(x);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_ISSIGNALINGF128_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 13c4ff8126c9f..57bea29e09b25 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -101,6 +101,7 @@ add_entrypoint_object(
HDRS
../iscanonicalf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.iscanonicalf128
)
@@ -3033,6 +3034,7 @@ add_entrypoint_object(
HDRS
../issignalingf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.issignalingf128
)
@@ -3073,6 +3075,7 @@ add_entrypoint_object(
HDRS
../isnanf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.isnanf128
)
diff --git a/libc/src/math/generic/iscanonicalf128.cpp b/libc/src/math/generic/iscanonicalf128.cpp
index d2bb749b7b461..8bfeba078346e 100644
--- a/libc/src/math/generic/iscanonicalf128.cpp
+++ b/libc/src/math/generic/iscanonicalf128.cpp
@@ -7,12 +7,15 @@
//===----------------------------------------------------------------------===//
#include "src/math/iscanonicalf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/iscanonicalf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(int, iscanonicalf128, (float128 x)) {
- return math::iscanonicalf128(x);
+ return math::iscanonicalf128(cpp::bit_cast<Float128>(x));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/isnanf128.cpp b/libc/src/math/generic/isnanf128.cpp
index 919136fe3e4fb..2c06506dbeebb 100644
--- a/libc/src/math/generic/isnanf128.cpp
+++ b/libc/src/math/generic/isnanf128.cpp
@@ -7,10 +7,15 @@
//===----------------------------------------------------------------------===//
#include "src/math/isnanf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/isnanf128.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(int, isnanf128, (float128 x)) { return math::isnanf128(x); }
+using LIBC_NAMESPACE::fputil::Float128;
+
+LLVM_LIBC_FUNCTION(int, isnanf128, (float128 x)) {
+ return math::isnanf128(cpp::bit_cast<Float128>(x));
+}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/issignalingf128.cpp b/libc/src/math/generic/issignalingf128.cpp
index 3a42b9f1bc406..8edf5806da75a 100644
--- a/libc/src/math/generic/issignalingf128.cpp
+++ b/libc/src/math/generic/issignalingf128.cpp
@@ -7,12 +7,15 @@
//===----------------------------------------------------------------------===//
#include "src/math/issignalingf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/issignalingf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(int, issignalingf128, (float128 x)) {
- return math::issignalingf128(x);
+ return math::issignalingf128(cpp::bit_cast<Float128>(x));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/iscanonicalf128.h b/libc/src/math/iscanonicalf128.h
index 9ba021c86ec14..7974ac7c8fb33 100644
--- a/libc/src/math/iscanonicalf128.h
+++ b/libc/src/math/iscanonicalf128.h
@@ -9,11 +9,16 @@
#ifndef LLVM_LIBC_SRC_MATH_ISCANONICALF128_H
#define LLVM_LIBC_SRC_MATH_ISCANONICALF128_H
+#include "src/__s...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/217134
More information about the libc-commits
mailing list