[libc-commits] [libc] [libc][math][c++23] Add {canonicalize, iscanonical, fdim, copysign, issignaling}bf16 math functions (PR #155567)
via libc-commits
libc-commits at lists.llvm.org
Wed Aug 27 00:32:14 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Krishna Pandey (krishna2803)
<details>
<summary>Changes</summary>
This PR adds the following basic math functions for BFloat16 type along with the tests:
- canonicalizebf16
- iscanonicalbf16
- fdimbf16
- copysignbf16
- issignalingbf16
---
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:
- (modified) libc/config/baremetal/aarch64/entrypoints.txt (+5)
- (modified) libc/config/baremetal/arm/entrypoints.txt (+5)
- (modified) libc/config/baremetal/riscv/entrypoints.txt (+5)
- (modified) libc/config/darwin/aarch64/entrypoints.txt (+5)
- (modified) libc/config/darwin/x86_64/entrypoints.txt (+5)
- (modified) libc/config/gpu/amdgpu/entrypoints.txt (+5)
- (modified) libc/config/gpu/nvptx/entrypoints.txt (+5)
- (modified) libc/config/linux/aarch64/entrypoints.txt (+5)
- (modified) libc/config/linux/arm/entrypoints.txt (+5)
- (modified) libc/config/linux/riscv/entrypoints.txt (+5)
- (modified) libc/config/linux/x86_64/entrypoints.txt (+5)
- (modified) libc/config/windows/entrypoints.txt (+5)
- (modified) libc/docs/headers/math/index.rst (+5-5)
- (modified) libc/src/__support/FPUtil/BasicOperations.h (+1-1)
- (modified) libc/src/math/CMakeLists.txt (+5)
- (added) libc/src/math/canonicalizebf16.h (+21)
- (added) libc/src/math/copysignbf16.h (+21)
- (added) libc/src/math/fdimbf16.h (+21)
- (modified) libc/src/math/generic/CMakeLists.txt (+72)
- (added) libc/src/math/generic/canonicalizebf16.cpp (+21)
- (added) libc/src/math/generic/copysignbf16.cpp (+21)
- (added) libc/src/math/generic/fdimbf16.cpp (+21)
- (added) libc/src/math/generic/iscanonicalbf16.cpp (+22)
- (added) libc/src/math/generic/issignalingbf16.cpp (+21)
- (added) libc/src/math/iscanonicalbf16.h (+21)
- (added) libc/src/math/issignalingbf16.h (+21)
- (modified) libc/test/src/math/smoke/CMakeLists.txt (+72)
- (added) libc/test/src/math/smoke/canonicalizebf16_test.cpp (+14)
- (added) libc/test/src/math/smoke/copysignbf16_test.cpp (+14)
- (added) libc/test/src/math/smoke/fdimbf16_test.cpp (+14)
- (added) libc/test/src/math/smoke/iscanonicalbf16_test.cpp (+14)
- (added) libc/test/src/math/smoke/issignalingbf16_test.cpp (+14)
``````````diff
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]
``````````
</details>
https://github.com/llvm/llvm-project/pull/155567
More information about the libc-commits
mailing list