[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