-
Notifications
You must be signed in to change notification settings - Fork 14.9k
[libc][math][c++23] Add {canonicalize,iscanonical,fdim,copysign,issignaling}bf16 math functions #155567
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
Merged
+496
−6
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…f16 math functions Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
…signaling}bf16 math functions Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
…th functions Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
Signed-off-by: Krishna Pandey <kpandey81930@gmail.com>
@llvm/pr-subscribers-libc @llvm/pr-subscribers-backend-risc-v Author: Krishna Pandey (krishna2803) ChangesThis PR adds the following basic math functions for BFloat16 type along with the tests:
Patch is 36.98 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/155567.diff 32 Files Affected:
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index c2e4c337f199a..27f8cfb4df18f 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -772,8 +772,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -790,6 +793,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index c4f3a87659b23..7de180d65832f 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -775,8 +775,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -793,6 +796,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 380ca57ea8aa9..2ba13a1123f7d 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -775,8 +775,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -793,6 +796,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 1f4318fc88389..804f9235e0d60 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -605,8 +605,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -623,6 +626,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 0cba22016c960..f4830edc0a292 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -248,8 +248,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -266,6 +269,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index e08b028865bfc..1843b727de478 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -631,8 +631,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -649,6 +652,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 88c8fc91ebb77..49d322ae32a92 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -633,8 +633,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -651,6 +654,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 20924e9047c69..8d6d4ca5e10d9 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -860,8 +860,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -878,6 +881,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index f2e8ddfe8e91a..2752bd0da56d0 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -475,8 +475,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -493,6 +496,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 0ad36a667232a..e3759dba921d6 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -878,8 +878,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -896,6 +899,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index c060e900472eb..a82faa4d6a141 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -911,8 +911,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -929,6 +932,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 9e45b800b10a3..20f7a187591d4 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -321,8 +321,11 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.bf16sub
libc.src.math.bf16subf
libc.src.math.bf16subl
+ libc.src.math.canonicalizebf16
libc.src.math.ceilbf16
+ libc.src.math.copysignbf16
libc.src.math.fabsbf16
+ libc.src.math.fdimbf16
libc.src.math.floorbf16
libc.src.math.fmaxbf16
libc.src.math.fmaximumbf16
@@ -339,6 +342,8 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.fromfpxbf16
libc.src.math.getpayloadbf16
libc.src.math.ilogbbf16
+ libc.src.math.iscanonicalbf16
+ libc.src.math.issignalingbf16
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.llrintbf16
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index b329bf031312d..818386aa18f02 100644
--- a/libc/docs/headers/math/index.rst
+++ b/libc/docs/headers/math/index.rst
@@ -109,9 +109,9 @@ Basic Operations
+==================+==================+=================+========================+======================+========================+========================+========================+============================+
| ceil | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.9.1 | F.10.6.1 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| canonicalize | |check| | |check| | |check| | |check| | |check| | | 7.12.11.7 | F.10.8.7 |
+| canonicalize | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.11.7 | F.10.8.7 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| copysign | |check| | |check| | |check| | |check| | |check| | | 7.12.11.1 | F.10.8.1 |
+| copysign | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.11.1 | F.10.8.1 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| dadd | N/A | N/A | |check| | N/A | |check|\* | N/A | 7.12.14.1 | F.10.11 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
@@ -147,7 +147,7 @@ Basic Operations
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| fadd | N/A | |check| | |check| | N/A | |check| | N/A | 7.12.14.1 | F.10.11 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| fdim | |check| | |check| | |check| | |check| | |check| | | 7.12.12.1 | F.10.9.1 |
+| fdim | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.12.1 | F.10.9.1 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| fdiv | N/A | |check| | |check| | N/A | |check|\* | N/A | 7.12.14.4 | F.10.11 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
@@ -191,9 +191,9 @@ Basic Operations
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| ilogb | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.6.8 | F.10.3.8 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| iscanonical | |check| | |check| | |check| | |check| | |check| | | 7.12.3.2 | N/A |
+| iscanonical | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.3.2 | N/A |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| issignaling | |check| | |check| | |check| | |check| | |check| | | 7.12.3.8 | N/A |
+| issignaling | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.3.8 | N/A |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| ldexp | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.6.9 | F.10.3.9 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
diff --git a/libc/src/__support/FPUtil/BasicOperations.h b/libc/src/__support/FPUtil/BasicOperations.h
index 2357b053b60b8..ca7be6676630a 100644
--- a/libc/src/__support/FPUtil/BasicOperations.h
+++ b/libc/src/__support/FPUtil/BasicOperations.h
@@ -244,7 +244,7 @@ LIBC_INLINE T fdim(T x, T y) {
return y;
}
- return (x > y ? x - y : 0);
+ return (x > y ? x - y : T(0));
}
// Avoid reusing `issignaling` macro.
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 95e5ae781490f..e6a2f868e46b5 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -78,12 +78,14 @@ add_math_entrypoint_object(canonicalizef)
add_math_entrypoint_object(canonicalizel)
add_math_entrypoint_object(canonicalizef16)
add_math_entrypoint_object(canonicalizef128)
+add_math_entrypoint_object(canonicalizebf16)
add_math_entrypoint_object(iscanonical)
add_math_entrypoint_object(iscanonicalf)
add_math_entrypoint_object(iscanonicall)
add_math_entrypoint_object(iscanonicalf16)
add_math_entrypoint_object(iscanonicalf128)
+add_math_entrypoint_object(iscanonicalbf16)
add_math_entrypoint_object(cbrt)
add_math_entrypoint_object(cbrtf)
@@ -100,6 +102,7 @@ add_math_entrypoint_object(copysignf)
add_math_entrypoint_object(copysignl)
add_math_entrypoint_object(copysignf16)
add_math_entrypoint_object(copysignf128)
+add_math_entrypoint_object(copysignbf16)
add_math_entrypoint_object(cos)
add_math_entrypoint_object(cosf)
@@ -203,6 +206,7 @@ add_math_entrypoint_object(fdimf)
add_math_entrypoint_object(fdiml)
add_math_entrypoint_object(fdimf16)
add_math_entrypoint_object(fdimf128)
+add_math_entrypoint_object(fdimbf16)
add_math_entrypoint_object(fdiv)
add_math_entrypoint_object(fdivl)
@@ -355,6 +359,7 @@ add_math_entrypoint_object(issignalingf)
add_math_entrypoint_object(issignalingl)
add_math_entrypoint_object(issignalingf16)
add_math_entrypoint_object(issignalingf128)
+add_math_entrypoint_object(issignalingbf16)
add_math_entrypoint_object(llogb)
add_math_entrypoint_object(llogbf)
diff --git a/libc/src/math/canonicalizebf16.h b/libc/src/math/canonicalizebf16.h
new file mode 100644
index 0000000000000..858fa32969868
--- /dev/null
+++ b/libc/src/math/canonicalizebf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for canonicalizebf16 --------------*- 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_CANONICALIZEBF16_H
+#define LLVM_LIBC_SRC_MATH_CANONICALIZEBF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+int canonicalizebf16(bfloat16 *cx, const bfloat16 *x);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_CANONICALIZEBF16_H
diff --git a/libc/src/math/copysignbf16.h b/libc/src/math/copysignbf16.h
new file mode 100644
index 0000000000000..6369616d6f569
--- /dev/null
+++ b/libc/src/math/copysignbf16.h
@@ -0,0 +1,21 @@
+//===-- Implementatio...
[truncated]
|
lntue
approved these changes
Aug 27, 2025
overmighty
approved these changes
Aug 27, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds the following basic math functions for BFloat16 type along with the tests: