[libc-commits] [libc] [llvm] [libc][math] Refactor iscanonical-isnan-issignaling-nan family to header-only (PR #195581)
via libc-commits
libc-commits at lists.llvm.org
Sun May 3 21:25:17 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Anonmiraj (AnonMiraj)
<details>
<summary>Changes</summary>
Refactors the iscanonical-isnan-issignaling-nan math family to be header-only.
part of: #<!-- -->147386
Target Functions:
- iscanonical
- iscanonicalbf16
- iscanonicalf
- iscanonicalf128
- iscanonicalf16
- iscanonicall
- isnan
- isnanf
- isnanl
- issignaling
- issignalingbf16
- issignalingf
- issignalingf128
- issignalingf16
- issignalingl
- nan
- nanbf16
- nanf
- nanf128
- nanf16
- nanl
---
Patch is 89.78 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/195581.diff
73 Files Affected:
- (modified) libc/shared/math.h (+21)
- (added) libc/shared/math/iscanonical.h (+23)
- (added) libc/shared/math/iscanonicalbf16.h (+23)
- (added) libc/shared/math/iscanonicalf.h (+23)
- (added) libc/shared/math/iscanonicalf128.h (+29)
- (added) libc/shared/math/iscanonicalf16.h (+29)
- (added) libc/shared/math/iscanonicall.h (+23)
- (added) libc/shared/math/isnan.h (+23)
- (added) libc/shared/math/isnanf.h (+23)
- (added) libc/shared/math/isnanl.h (+23)
- (added) libc/shared/math/issignaling.h (+23)
- (added) libc/shared/math/issignalingbf16.h (+23)
- (added) libc/shared/math/issignalingf.h (+23)
- (added) libc/shared/math/issignalingf128.h (+29)
- (added) libc/shared/math/issignalingf16.h (+29)
- (added) libc/shared/math/issignalingl.h (+23)
- (added) libc/shared/math/nan.h (+23)
- (added) libc/shared/math/nanbf16.h (+23)
- (added) libc/shared/math/nanf.h (+23)
- (added) libc/shared/math/nanf128.h (+29)
- (added) libc/shared/math/nanf16.h (+29)
- (added) libc/shared/math/nanl.h (+23)
- (modified) libc/src/__support/FPUtil/BasicOperations.h (+2-2)
- (modified) libc/src/__support/math/CMakeLists.txt (+201)
- (added) libc/src/__support/math/iscanonical.h (+27)
- (added) libc/src/__support/math/iscanonicalbf16.h (+27)
- (added) libc/src/__support/math/iscanonicalf.h (+26)
- (added) libc/src/__support/math/iscanonicalf128.h (+32)
- (added) libc/src/__support/math/iscanonicalf16.h (+32)
- (added) libc/src/__support/math/iscanonicall.h (+26)
- (added) libc/src/__support/math/isnan.h (+22)
- (added) libc/src/__support/math/isnanf.h (+22)
- (added) libc/src/__support/math/isnanl.h (+22)
- (added) libc/src/__support/math/issignaling.h (+25)
- (added) libc/src/__support/math/issignalingbf16.h (+26)
- (added) libc/src/__support/math/issignalingf.h (+25)
- (added) libc/src/__support/math/issignalingf128.h (+31)
- (added) libc/src/__support/math/issignalingf16.h (+31)
- (added) libc/src/__support/math/issignalingl.h (+25)
- (added) libc/src/__support/math/nan.h (+29)
- (added) libc/src/__support/math/nanbf16.h (+30)
- (added) libc/src/__support/math/nanf.h (+29)
- (added) libc/src/__support/math/nanf128.h (+35)
- (added) libc/src/__support/math/nanf16.h (+35)
- (added) libc/src/__support/math/nanl.h (+29)
- (modified) libc/src/__support/str_to_float.h (+3-2)
- (modified) libc/src/__support/str_to_integer.h (+2-2)
- (modified) libc/src/math/generic/CMakeLists.txt (+12-31)
- (modified) libc/src/math/generic/iscanonical.cpp (+2-6)
- (modified) libc/src/math/generic/iscanonicalbf16.cpp (+2-6)
- (modified) libc/src/math/generic/iscanonicalf.cpp (+2-5)
- (modified) libc/src/math/generic/iscanonicalf128.cpp (+2-5)
- (modified) libc/src/math/generic/iscanonicalf16.cpp (+2-5)
- (modified) libc/src/math/generic/iscanonicall.cpp (+2-5)
- (modified) libc/src/math/generic/isnan.cpp (+2-3)
- (modified) libc/src/math/generic/isnanf.cpp (+2-3)
- (modified) libc/src/math/generic/isnanl.cpp (+2-3)
- (modified) libc/src/math/generic/issignaling.cpp (+2-4)
- (modified) libc/src/math/generic/issignalingbf16.cpp (+2-5)
- (modified) libc/src/math/generic/issignalingf.cpp (+2-4)
- (modified) libc/src/math/generic/issignalingf128.cpp (+2-4)
- (modified) libc/src/math/generic/issignalingf16.cpp (+2-4)
- (modified) libc/src/math/generic/issignalingl.cpp (+2-4)
- (modified) libc/src/math/generic/nan.cpp (+2-10)
- (modified) libc/src/math/generic/nanbf16.cpp (+2-9)
- (modified) libc/src/math/generic/nanf.cpp (+2-10)
- (modified) libc/src/math/generic/nanf128.cpp (+2-8)
- (modified) libc/src/math/generic/nanf16.cpp (+2-8)
- (modified) libc/src/math/generic/nanl.cpp (+2-8)
- (modified) libc/test/shared/CMakeLists.txt (+42)
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+49)
- (modified) libc/test/shared/shared_math_test.cpp (+20)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+296-21)
``````````diff
diff --git a/libc/shared/math.h b/libc/shared/math.h
index bed4279f621a0..dc75a8b78cd8e 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -281,6 +281,21 @@
#include "math/ilogbf128.h"
#include "math/ilogbf16.h"
#include "math/ilogbl.h"
+#include "math/iscanonical.h"
+#include "math/iscanonicalbf16.h"
+#include "math/iscanonicalf.h"
+#include "math/iscanonicalf128.h"
+#include "math/iscanonicalf16.h"
+#include "math/iscanonicall.h"
+#include "math/isnan.h"
+#include "math/isnanf.h"
+#include "math/isnanl.h"
+#include "math/issignaling.h"
+#include "math/issignalingbf16.h"
+#include "math/issignalingf.h"
+#include "math/issignalingf128.h"
+#include "math/issignalingf16.h"
+#include "math/issignalingl.h"
#include "math/ldexp.h"
#include "math/ldexpbf16.h"
#include "math/ldexpf.h"
@@ -343,6 +358,12 @@
#include "math/modff128.h"
#include "math/modff16.h"
#include "math/modfl.h"
+#include "math/nan.h"
+#include "math/nanbf16.h"
+#include "math/nanf.h"
+#include "math/nanf128.h"
+#include "math/nanf16.h"
+#include "math/nanl.h"
#include "math/nearbyint.h"
#include "math/nearbyintbf16.h"
#include "math/nearbyintf.h"
diff --git a/libc/shared/math/iscanonical.h b/libc/shared/math/iscanonical.h
new file mode 100644
index 0000000000000..6b9f8514e1eee
--- /dev/null
+++ b/libc/shared/math/iscanonical.h
@@ -0,0 +1,23 @@
+//===-- Shared iscanonical function -----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICAL_H
+#define LLVM_LIBC_SHARED_MATH_ISCANONICAL_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonical.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonical;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICAL_H
diff --git a/libc/shared/math/iscanonicalbf16.h b/libc/shared/math/iscanonicalbf16.h
new file mode 100644
index 0000000000000..15f10de00fd9d
--- /dev/null
+++ b/libc/shared/math/iscanonicalbf16.h
@@ -0,0 +1,23 @@
+//===-- Shared iscanonicalbf16 function -------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICALBF16_H
+#define LLVM_LIBC_SHARED_MATH_ISCANONICALBF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonicalbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonicalbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALBF16_H
diff --git a/libc/shared/math/iscanonicalf.h b/libc/shared/math/iscanonicalf.h
new file mode 100644
index 0000000000000..0770fbd8f8b1e
--- /dev/null
+++ b/libc/shared/math/iscanonicalf.h
@@ -0,0 +1,23 @@
+//===-- Shared iscanonicalf function ----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICALF_H
+#define LLVM_LIBC_SHARED_MATH_ISCANONICALF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonicalf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonicalf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALF_H
diff --git a/libc/shared/math/iscanonicalf128.h b/libc/shared/math/iscanonicalf128.h
new file mode 100644
index 0000000000000..f8494304a804a
--- /dev/null
+++ b/libc/shared/math/iscanonicalf128.h
@@ -0,0 +1,29 @@
+//===-- Shared iscanonicalf128 function -------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#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_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonicalf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonicalf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALF128_H
diff --git a/libc/shared/math/iscanonicalf16.h b/libc/shared/math/iscanonicalf16.h
new file mode 100644
index 0000000000000..1f6fa797625fc
--- /dev/null
+++ b/libc/shared/math/iscanonicalf16.h
@@ -0,0 +1,29 @@
+//===-- Shared iscanonicalf16 function --------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICALF16_H
+#define LLVM_LIBC_SHARED_MATH_ISCANONICALF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonicalf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonicalf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALF16_H
diff --git a/libc/shared/math/iscanonicall.h b/libc/shared/math/iscanonicall.h
new file mode 100644
index 0000000000000..d3558b0292c8f
--- /dev/null
+++ b/libc/shared/math/iscanonicall.h
@@ -0,0 +1,23 @@
+//===-- Shared iscanonicall function ----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISCANONICALL_H
+#define LLVM_LIBC_SHARED_MATH_ISCANONICALL_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/iscanonicall.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::iscanonicall;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISCANONICALL_H
diff --git a/libc/shared/math/isnan.h b/libc/shared/math/isnan.h
new file mode 100644
index 0000000000000..6039f309d3255
--- /dev/null
+++ b/libc/shared/math/isnan.h
@@ -0,0 +1,23 @@
+//===-- Shared isnan function -----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISNAN_H
+#define LLVM_LIBC_SHARED_MATH_ISNAN_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/isnan.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::isnan;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISNAN_H
diff --git a/libc/shared/math/isnanf.h b/libc/shared/math/isnanf.h
new file mode 100644
index 0000000000000..2858342fb13c0
--- /dev/null
+++ b/libc/shared/math/isnanf.h
@@ -0,0 +1,23 @@
+//===-- Shared isnanf function ----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISNANF_H
+#define LLVM_LIBC_SHARED_MATH_ISNANF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/isnanf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::isnanf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISNANF_H
diff --git a/libc/shared/math/isnanl.h b/libc/shared/math/isnanl.h
new file mode 100644
index 0000000000000..4cc3b90b5bcf7
--- /dev/null
+++ b/libc/shared/math/isnanl.h
@@ -0,0 +1,23 @@
+//===-- Shared isnanl function ----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISNANL_H
+#define LLVM_LIBC_SHARED_MATH_ISNANL_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/isnanl.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::isnanl;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISNANL_H
diff --git a/libc/shared/math/issignaling.h b/libc/shared/math/issignaling.h
new file mode 100644
index 0000000000000..eb766e9d8f8be
--- /dev/null
+++ b/libc/shared/math/issignaling.h
@@ -0,0 +1,23 @@
+//===-- Shared issignaling function -----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALING_H
+#define LLVM_LIBC_SHARED_MATH_ISSIGNALING_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignaling.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignaling;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALING_H
diff --git a/libc/shared/math/issignalingbf16.h b/libc/shared/math/issignalingbf16.h
new file mode 100644
index 0000000000000..51dc3ca86ff7e
--- /dev/null
+++ b/libc/shared/math/issignalingbf16.h
@@ -0,0 +1,23 @@
+//===-- Shared issignalingbf16 function -------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALINGBF16_H
+#define LLVM_LIBC_SHARED_MATH_ISSIGNALINGBF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignalingbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignalingbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGBF16_H
diff --git a/libc/shared/math/issignalingf.h b/libc/shared/math/issignalingf.h
new file mode 100644
index 0000000000000..7addc45b7f86b
--- /dev/null
+++ b/libc/shared/math/issignalingf.h
@@ -0,0 +1,23 @@
+//===-- Shared issignalingf function ----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALINGF_H
+#define LLVM_LIBC_SHARED_MATH_ISSIGNALINGF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignalingf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignalingf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGF_H
diff --git a/libc/shared/math/issignalingf128.h b/libc/shared/math/issignalingf128.h
new file mode 100644
index 0000000000000..08c295c640680
--- /dev/null
+++ b/libc/shared/math/issignalingf128.h
@@ -0,0 +1,29 @@
+//===-- Shared issignalingf128 function -------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#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_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignalingf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignalingf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGF128_H
diff --git a/libc/shared/math/issignalingf16.h b/libc/shared/math/issignalingf16.h
new file mode 100644
index 0000000000000..bfb33f9cab931
--- /dev/null
+++ b/libc/shared/math/issignalingf16.h
@@ -0,0 +1,29 @@
+//===-- Shared issignalingf16 function --------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALINGF16_H
+#define LLVM_LIBC_SHARED_MATH_ISSIGNALINGF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignalingf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignalingf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGF16_H
diff --git a/libc/shared/math/issignalingl.h b/libc/shared/math/issignalingl.h
new file mode 100644
index 0000000000000..a0453ecdf48d8
--- /dev/null
+++ b/libc/shared/math/issignalingl.h
@@ -0,0 +1,23 @@
+//===-- Shared issignalingl function ----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_ISSIGNALINGL_H
+#define LLVM_LIBC_SHARED_MATH_ISSIGNALINGL_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/issignalingl.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::issignalingl;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_ISSIGNALINGL_H
diff --git a/libc/shared/math/nan.h b/libc/shared/math/nan.h
new file mode 100644
index 0000000000000..b33903f6e17aa
--- /dev/null
+++ b/libc/shared/math/nan.h
@@ -0,0 +1,23 @@
+//===-- Shared nan function -------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_NAN_H
+#define LLVM_LIBC_SHARED_MATH_NAN_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/nan.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::nan;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_NAN_H
diff --git a/libc/shared/math/nanbf16.h b/libc/shared/math/nanbf16.h
new file mode 100644
index 0000000000000..3a5bdcff21b17
--- /dev/null
+++ b/libc/shared/math/nanbf16.h
@@ -0,0 +1,23 @@
+//===-- Shared nanbf16 function ---------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_NANBF16_H
+#define LLVM_LIBC_SHARED_MATH_NANBF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/nanbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::nanbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_NANBF16_H
diff --git a/libc/shared/math/nanf.h b/libc/shared/math/nanf.h
new file mode 100644
index 0000000000000..37c0bd3589c5b
--- /dev/null
+++ b/libc/shared/math/nanf.h
@@ -0,0 +1,23 @@
+//===-- Shared nanf function ------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_NANF_H
+#define LLVM_LIBC_SHARED_MATH_NANF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/nanf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::nanf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_NANF_H
diff --git a/libc/shared/math/nanf128.h b/libc/shared/math/nanf128.h
new file mode 100644
index 0000000000000..60ce05a3d5eda
--- /dev/null
+++ b/libc/shared/math/nanf128.h
@@ -0,0 +1,29 @@
+//===-- Shared nanf128 function ---------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_NANF128_H
+#define LLVM_LIBC_SHARED_MATH_NANF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/nanf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::nanf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_NANF128_H
diff --git a/libc/shared/math/nanf16.h b/libc/shared/math/nanf16.h
new file mode 100644
index 0000000000000..a82e7dec5b161
--- /dev/null
+++ b/libc/shared/math/nanf16.h
@@ -0,0 +1,29 @@
+//===-- Shared nanf16 function ----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_NANF16_H
+#define LLVM_LIBC_SHARED_MATH_NANF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "shared/libc_common.h"
+#include "src/__support/math/nanf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::nanf16;
+
+} // namespace shared
+} // namespace L...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/195581
More information about the libc-commits
mailing list