-
Notifications
You must be signed in to change notification settings - Fork 14.9k
[libc][math][c++23] Add totalorder{,mag}bf16 math functions #155568
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…f16 math functions Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
…signaling}bf16 math functions Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
…th functions Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
@llvm/pr-subscribers-backend-risc-v @llvm/pr-subscribers-backend-amdgpu Author: Krishna Pandey (krishna2803) ChangesThis PR adds the following basic math functions for BFloat16 type along with the tests:
Patch is 25.61 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155568.diff 24 Files Affected:
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index ce6d0a7e440a4..ff3a6bfa8a2fc 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -794,7 +794,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -817,6 +817,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index d8fffd0da48da..f8916d71f86aa 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -797,7 +797,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -820,6 +820,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 2a120b2f68c41..8a72fa6692869 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -797,7 +797,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -820,6 +820,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 8945b61f186b3..796c0d3c8a4ff 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -627,7 +627,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -650,6 +650,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 1a5c75fb0c038..fa1d8def8936c 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -270,7 +270,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -293,6 +293,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 53fbabc6fce39..49c41411cb5d2 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -653,7 +653,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -676,6 +676,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index a970618643f5c..06a2c9addb7fb 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -655,7 +655,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -678,6 +678,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index e55c47e1ee4d6..feea7ff69c166 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -882,7 +882,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -905,6 +905,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 55554e439e71e..8e92fac863c6b 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -497,7 +497,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -520,6 +520,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 6bf97c5164ada..fb08cfe7bd3f8 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -900,7 +900,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -923,6 +923,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 998d4193c353b..37af75454daa3 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -933,7 +933,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -956,6 +956,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 2ca06edfa9a2c..c09e6b259fa42 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -343,7 +343,7 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
libc.src.math.iscanonicalbf16
- libc.src.math.isignalingbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
@@ -366,6 +366,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.setpayloadbf16
libc.src.math.setpayloadsigbf16
libc.src.math.truncbf16
+ libc.src.math.totalorderbf16
+ libc.src.math.totalordermagbf16
libc.src.math.ufromfpbf16
libc.src.math.ufromfpxbf16
)
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index 818386aa18f02..89624460c3af5 100644
--- a/libc/docs/headers/math/index.rst
+++ b/libc/docs/headers/math/index.rst
@@ -241,9 +241,9 @@ Basic Operations
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| setpayloadsig | |check| | |check| | |check| | |check| | |check| | |check| | F.10.13.3 | N/A |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| totalorder | |check| | |check| | |check| | |check| | |check| | | F.10.12.1 | N/A |
+| totalorder | |check| | |check| | |check| | |check| | |check| | |check| | F.10.12.1 | N/A |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| totalordermag | |check| | |check| | |check| | |check| | |check| | | F.10.12.2 | N/A |
+| totalordermag | |check| | |check| | |check| | |check| | |check| | |check| | F.10.12.2 | N/A |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| trunc | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.9.9 | F.10.6.9 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index e6a2f868e46b5..1edb517421e28 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -579,12 +579,14 @@ add_math_entrypoint_object(totalorderf)
add_math_entrypoint_object(totalorderl)
add_math_entrypoint_object(totalorderf16)
add_math_entrypoint_object(totalorderf128)
+add_math_entrypoint_object(totalorderbf16)
add_math_entrypoint_object(totalordermag)
add_math_entrypoint_object(totalordermagf)
add_math_entrypoint_object(totalordermagl)
add_math_entrypoint_object(totalordermagf16)
add_math_entrypoint_object(totalordermagf128)
+add_math_entrypoint_object(totalordermagbf16)
add_math_entrypoint_object(trunc)
add_math_entrypoint_object(truncf)
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 70ca5c51990de..904f8d2eb4704 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -4784,6 +4784,21 @@ add_entrypoint_object(
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.properties.types
)
+
+add_entrypoint_object(
+ totalorderbf16
+ SRCS
+ totalorderbf16.cpp
+ HDRS
+ ../totalorderbf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.macros.config
+ libc.src.__support.macros.properties.types
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.bfloat16
+)
+
add_entrypoint_object(
totalordermag
SRCS
@@ -4835,6 +4850,20 @@ add_entrypoint_object(
libc.src.__support.macros.properties.types
)
+add_entrypoint_object(
+ totalordermagbf16
+ SRCS
+ totalordermagbf16.cpp
+ HDRS
+ ../totalordermagbf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.macros.config
+ libc.src.__support.macros.properties.types
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.bfloat16
+)
+
add_entrypoint_object(
getpayload
SRCS
diff --git a/libc/src/math/generic/totalorderbf16.cpp b/libc/src/math/generic/totalorderbf16.cpp
new file mode 100644
index 0000000000000..bb9c86e281f6b
--- /dev/null
+++ b/libc/src/math/generic/totalorderbf16.cpp
@@ -0,0 +1,22 @@
+//===-- Implementation of totalorderbf16 function -------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/math/totalorderbf16.h"
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LLVM_LIBC_FUNCTION(int, totalorderbf16,
+ (const bfloat16 *x, const bfloat16 *y)) {
+ return static_cast<int>(fputil::totalorder(*x, *y));
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/totalordermagbf16.cpp b/libc/src/math/generic/totalordermagbf16.cpp
new file mode 100644
index 0000000000000..3fc61d9d8bcb4
--- /dev/null
+++ b/libc/src/math/generic/totalordermagbf16.cpp
@@ -0,0 +1,22 @@
+//===-- Implementation of totalordermagbf16 function ----------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/math/totalordermagbf16.h"
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LLVM_LIBC_FUNCTION(int, totalordermagbf16,
+ (const bfloat16 *x, const bfloat16 *y)) {
+ return static_cast<int>(fputil::totalordermag(*x, *y));
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/totalorderbf16.h b/libc/src/math/totalorderbf16.h
new file mode 100644
index 0000000000000..2414852db92b8
--- /dev/null
+++ b/libc/src/math/totalorderbf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for totalorderbf16 ----------------*- 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_SRC_MATH_TOTALORDERF16_H
+#define LLVM_LIBC_SRC_MATH_TOTALORDERF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+int totalorderbf16(const bfloat16 *x, const bfloat16 *y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_TOTALORDERF16_H
diff --git a/libc/src/math/totalordermagbf16.h b/libc/src/math/totalordermagbf16.h
new file mode 100644
index 0000000000000..c48de1ca8e540
--- /dev/null
+++ b/libc/src/math/totalordermagbf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for totalordermagbf16 -------------*- 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_SRC_MATH_TOTALORDERMAGF16_H
+#define LLVM_LIBC_SRC_MATH_TOTALORDERMAGF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+int totalordermagbf16(const bfloat16 *x, const bfloat16 *y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_TOTALORDERMAGF16_H
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 0497d5e0c06ed..166802fd9f9cc 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -5050,6 +5050,19 @@ add_fp_unittest(
libc.src.math.totalorderf128
)
+add_fp_unittest(
+ totalorderbf16_test
+ SUITE
+ libc-math-smoke-tests
+ SRCS
+ totalorderbf16_test.cpp
+ HDRS
+ TotalOrderTest.h
+ DEPENDS
+ libc.src.math.totalorderbf16
+ libc.src.__support.FPUtil.bfloat16
+)
+
add_fp_unittest(
totalordermag_test
SUITE
@@ -5110,6 +5123,19 @@ add_fp_unittest(
libc.src.math.totalordermagf128
)
+add_fp_unittest(
+ totalordermagbf16_test
+ SUITE
+ libc-math-smoke-tests
+ SRCS
+ totalordermagbf16_test.cpp
+ HDRS
+ TotalOrderMagTest.h
+ DEPENDS
+ libc.src.math.totalordermagbf16
+ libc.src.__support.FPUtil.bfloat16
+)
+
add_fp_unittest(
getpayload_test
SUITE
diff --git a/libc/test/src/math/smoke/TotalOrderMagTest.h b/libc/test/src/math/smoke/TotalOrderMagTest.h
index 0a13fd2922e4c..2b37d8b2f6c4a 100644
--- a/libc/test/src/math/smoke/TotalOrderMagTest.h
+++ b/libc/test/src/math/smoke/TotalOrderMagTest.h
@@ -111,19 +111,44 @@ class TotalOrderMagTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
T snan_0x42 = FPBits::signaling_nan(Sign::POS, 0x42).get_val();
T neg_snan_0x42 = FPBits::signaling_nan(Sign::NEG, 0x42).get_val();
+ T qnan_0x15 = FPBits::quiet_nan(Sign::POS, 0x15).get_val();
+ T neg_qnan_0x15 = FPBits::quiet_nan(Sign::NEG, 0x15).get_val();
+ T snan_0x15 = FPBits::signaling_nan(Sign::POS, 0x15).get_val();
+ T neg_snan_0x15 = FPBits::signaling_nan(Sign::NEG, 0x15).get_val();
+
EXPECT_TRUE(funcWrapper(func, aNaN, aNaN));
EXPECT_TRUE(funcWrapper(func, sNaN, sNaN));
- EXPECT_TRUE(funcWrapper(func, aNaN, qnan_0x42));
- EXPECT_FALSE(funcWrapper(func, sNaN, snan_0x42));
- EXPECT_FALSE(funcWrapper(func, qnan_0x42, aNaN));
- EXPECT_TRUE(funcWrapper(func, snan_0x42, sNaN));
+
+ if constexpr (FPBits::FRACTION_LEN - 1 >= 7) {
+ EXPECT_TRUE(funcWrapper(func, aNaN, qnan_0x42));
+ EXPECT_FALSE(funcWrapper(func, sNaN, sna...
[truncated]
|
@@ -111,19 +111,44 @@ class TotalOrderMagTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest { | |||
T snan_0x42 = FPBits::signaling_nan(Sign::POS, 0x42).get_val(); | |||
T neg_snan_0x42 = FPBits::signaling_nan(Sign::NEG, 0x42).get_val(); | |||
|
|||
T qnan_0x15 = FPBits::quiet_nan(Sign::POS, 0x15).get_val(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More of a nit but I think it would make more sense to have it like this:
if constexpr (FPBits::FRACTION_LEN - 1 >= 5) {
T qnan_0x15 = FPBits::quiet_nan(Sign::POS, 0x15).get_val();
T neg_qnan_0x15 = FPBits::quiet_nan(Sign::NEG, 0x15).get_val();
T snan_0x15 = FPBits::signaling_nan(Sign::POS, 0x15).get_val();
T neg_snan_0x15 = FPBits::signaling_nan(Sign::NEG, 0x15).get_val();
EXPECT_TRUE(funcWrapper(func, aNaN, qnan_0x15));
EXPECT_FALSE(funcWrapper(func, sNaN, snan_0x15));
EXPECT_FALSE(funcWrapper(func, qnan_0x15, aNaN));
EXPECT_TRUE(funcWrapper(func, snan_0x15, sNaN));
EXPECT_TRUE(funcWrapper(func, neg_aNaN, neg_qnan_0x15));
EXPECT_FALSE(funcWrapper(func, neg_sNaN, neg_snan_0x15));
EXPECT_FALSE(funcWrapper(func, neg_qnan_0x15, neg_aNaN));
EXPECT_TRUE(funcWrapper(func, neg_snan_0x15, neg_sNaN));
}
if constexpr (FPBits::FRACTION_LEN - 1 >= 7) {
T qnan_0x42 = FPBits::quiet_nan(Sign::POS, 0x42).get_val();
T neg_qnan_0x42 = FPBits::quiet_nan(Sign::NEG, 0x42).get_val();
T snan_0x42 = FPBits::signaling_nan(Sign::POS, 0x42).get_val();
T neg_snan_0x42 = FPBits::signaling_nan(Sign::NEG, 0x42).get_val();
EXPECT_TRUE(funcWrapper(func, aNaN, qnan_0x42));
EXPECT_FALSE(funcWrapper(func, sNaN, snan_0x42));
EXPECT_FALSE(funcWrapper(func, qnan_0x42, aNaN));
EXPECT_TRUE(funcWrapper(func, snan_0x42, sNaN));
EXPECT_TRUE(funcWrapper(func, neg_aNaN, neg_qnan_0x42));
EXPECT_FALSE(funcWrapper(func, neg_sNaN, neg_snan_0x42));
EXPECT_FALSE(funcWrapper(func, neg_qnan_0x42, neg_aNaN));
EXPECT_TRUE(funcWrapper(func, neg_snan_0x42, neg_sNaN));
}
Signed-off-by: Krishna Pandey <[email protected]>
Signed-off-by: Krishna Pandey <[email protected]>
This PR adds the following basic math functions for BFloat16 type along with the tests: