[llvm-branch-commits] [libc] [libc][math][c++23] Add {modf, remainder, remquo}bf16 math functions (PR #154652)
Krishna Pandey via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sun Aug 24 14:10:07 PDT 2025
https://github.com/krishna2803 updated https://github.com/llvm/llvm-project/pull/154652
>From fc5e2152b4c57238ed424138ca27de1635146ef5 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Wed, 20 Aug 2025 03:43:58 +0530
Subject: [PATCH 1/6] feat: implement {modf,remainder,remquo}bf16 math
functions
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
---
libc/src/math/CMakeLists.txt | 6 ++-
libc/src/math/generic/CMakeLists.txt | 58 +++++++++++++++++++++++++
libc/src/math/generic/modfbf16.cpp | 21 +++++++++
libc/src/math/generic/remainderbf16.cpp | 22 ++++++++++
libc/src/math/generic/remquobf16.cpp | 21 +++++++++
libc/src/math/modfbf16.h | 21 +++++++++
libc/src/math/remainderbf16.h | 21 +++++++++
libc/src/math/remquobf16.h | 21 +++++++++
8 files changed, 190 insertions(+), 1 deletion(-)
create mode 100644 libc/src/math/generic/modfbf16.cpp
create mode 100644 libc/src/math/generic/remainderbf16.cpp
create mode 100644 libc/src/math/generic/remquobf16.cpp
create mode 100644 libc/src/math/modfbf16.h
create mode 100644 libc/src/math/remainderbf16.h
create mode 100644 libc/src/math/remquobf16.h
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index b1d76c6008cf5..6cc221178df94 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -300,6 +300,7 @@ add_math_entrypoint_object(fmodf)
add_math_entrypoint_object(fmodl)
add_math_entrypoint_object(fmodf16)
add_math_entrypoint_object(fmodf128)
+add_math_entrypoint_object(fmodbf16)
add_math_entrypoint_object(frexp)
add_math_entrypoint_object(frexpf)
@@ -419,6 +420,7 @@ add_math_entrypoint_object(modff)
add_math_entrypoint_object(modfl)
add_math_entrypoint_object(modff16)
add_math_entrypoint_object(modff128)
+add_math_entrypoint_object(modfbf16)
add_math_entrypoint_object(nan)
add_math_entrypoint_object(nanf)
@@ -470,12 +472,14 @@ add_math_entrypoint_object(remainderf)
add_math_entrypoint_object(remainderl)
add_math_entrypoint_object(remainderf16)
add_math_entrypoint_object(remainderf128)
+add_math_entrypoint_object(remainderbf16)
add_math_entrypoint_object(remquo)
add_math_entrypoint_object(remquof)
-add_math_entrypoint_object(remquof128)
add_math_entrypoint_object(remquol)
add_math_entrypoint_object(remquof16)
+add_math_entrypoint_object(remquof128)
+add_math_entrypoint_object(remquobf16)
add_math_entrypoint_object(rint)
add_math_entrypoint_object(rintf)
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 3dbc54a819722..46de2e09d3ba9 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2280,6 +2280,21 @@ add_entrypoint_object(
libc.src.__support.FPUtil.manipulation_functions
)
+add_entrypoint_object(
+ modfbf16
+ SRCS
+ modfbf16.cpp
+ HDRS
+ ../modfbf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.manipulation_functions
+ libc.src.__support.macros.config
+ libc.src.__support.macros.properties.types
+)
+
+
add_entrypoint_object(
fmin
SRCS
@@ -3184,6 +3199,21 @@ add_entrypoint_object(
libc.src.__support.FPUtil.division_and_remainder_operations
)
+add_entrypoint_object(
+ remquobf16
+ SRCS
+ remquobf16.cpp
+ HDRS
+ ../remquobf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.division_and_remainder_operations
+ libc.src.__support.macros.properties.types
+ libc.src.__support.macros.config
+)
+
+
add_entrypoint_object(
remainderf
SRCS
@@ -3236,6 +3266,20 @@ add_entrypoint_object(
libc.src.__support.FPUtil.division_and_remainder_operations
)
+add_entrypoint_object(
+ remainderbf16
+ SRCS
+ remainderbf16.cpp
+ HDRS
+ ../remainderbf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.division_and_remainder_operations
+ libc.src.__support.macros.properties.types
+ libc.src.__support.macros.config
+)
+
add_entrypoint_object(
hypotf
SRCS
@@ -3835,6 +3879,20 @@ add_entrypoint_object(
libc.src.__support.FPUtil.generic.fmod
)
+add_entrypoint_object(
+ fmodbf16
+ SRCS
+ fmodbf16.cpp
+ HDRS
+ ../fmodbf16.h
+ DEPENDS
+ libc.src.__support.common
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.generic.fmod
+ libc.src.__support.macros.config
+ libc.src.__support.macros.properties.types
+)
+
add_entrypoint_object(
fromfp
SRCS
diff --git a/libc/src/math/generic/modfbf16.cpp b/libc/src/math/generic/modfbf16.cpp
new file mode 100644
index 0000000000000..09458f6a2db40
--- /dev/null
+++ b/libc/src/math/generic/modfbf16.cpp
@@ -0,0 +1,21 @@
+//===-- Implementation of modfbf16 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/modfbf16.h"
+#include "src/__support/FPUtil/ManipulationFunctions.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(bfloat16, modfbf16, (bfloat16 x, bfloat16 *iptr)) {
+ return fputil::modf(x, *iptr);
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/remainderbf16.cpp b/libc/src/math/generic/remainderbf16.cpp
new file mode 100644
index 0000000000000..e70726a6cbc55
--- /dev/null
+++ b/libc/src/math/generic/remainderbf16.cpp
@@ -0,0 +1,22 @@
+//===-- Implementation of remainderbf16 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/remainderbf16.h"
+#include "src/__support/FPUtil/DivisionAndRemainderOperations.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(bfloat16, remainderbf16, (bfloat16 x, bfloat16 y)) {
+ int quotient;
+ return fputil::remquo(x, y, quotient);
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/remquobf16.cpp b/libc/src/math/generic/remquobf16.cpp
new file mode 100644
index 0000000000000..e1b13f8deb19a
--- /dev/null
+++ b/libc/src/math/generic/remquobf16.cpp
@@ -0,0 +1,21 @@
+//===-- Implementation of remquobf16 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/remquobf16.h"
+#include "src/__support/FPUtil/DivisionAndRemainderOperations.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(bfloat16, remquobf16, (bfloat16 x, bfloat16 y, int *exp)) {
+ return fputil::remquo(x, y, *exp);
+}
+
+} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/modfbf16.h b/libc/src/math/modfbf16.h
new file mode 100644
index 0000000000000..df05b6c5b0aad
--- /dev/null
+++ b/libc/src/math/modfbf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for modfbf16 ----------------------*- 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_MODFBF16_H
+#define LLVM_LIBC_SRC_MATH_MODFBF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+bfloat16 modfbf16(bfloat16 x, bfloat16 *iptr);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_MODFBF16_H
diff --git a/libc/src/math/remainderbf16.h b/libc/src/math/remainderbf16.h
new file mode 100644
index 0000000000000..a1a2eaa3a0efb
--- /dev/null
+++ b/libc/src/math/remainderbf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for remainderbf16 -----------------*- 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_REMAINDERBF16_H
+#define LLVM_LIBC_SRC_MATH_REMAINDERBF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+bfloat16 remainderbf16(bfloat16 x, bfloat16 y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_REMAINDERBF16_H
diff --git a/libc/src/math/remquobf16.h b/libc/src/math/remquobf16.h
new file mode 100644
index 0000000000000..909db17dec58a
--- /dev/null
+++ b/libc/src/math/remquobf16.h
@@ -0,0 +1,21 @@
+//===-- Implementation header for remquobf16 --------------------*- 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_REMQUOBF16_H
+#define LLVM_LIBC_SRC_MATH_REMQUOBF16_H
+
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+bfloat16 remquobf16(bfloat16 x, bfloat16 y, int *exp);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_REMQUOBF16_H
>From d0e8c830dbbe7712412dfcec15b369f4757770c8 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Wed, 20 Aug 2025 03:44:13 +0530
Subject: [PATCH 2/6] chore: add smoke tests for {modf,remainder,remquo}bf16
math functions
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
---
libc/test/src/math/smoke/CMakeLists.txt | 30 ++++++++++++++++++++
libc/test/src/math/smoke/ModfTest.h | 10 +++++--
libc/test/src/math/smoke/modfbf16_test.cpp | 14 +++++++++
libc/test/src/math/smoke/remquobf16_test.cpp | 14 +++++++++
4 files changed, 66 insertions(+), 2 deletions(-)
create mode 100644 libc/test/src/math/smoke/modfbf16_test.cpp
create mode 100644 libc/test/src/math/smoke/remquobf16_test.cpp
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index b71d47568309b..ba8776f8d449a 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -2335,6 +2335,22 @@ add_fp_unittest(
libc.src.__support.FPUtil.nearest_integer_operations
)
+add_fp_unittest(
+ modfbf16_test
+ SUITE
+ libc-math-smoke-tests
+ SRCS
+ modfbf16_test.cpp
+ HDRS
+ ModfTest.h
+ DEPENDS
+ libc.src.math.modfbf16
+ libc.src.__support.CPP.algorithm
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.nearest_integer_operations
+)
+
add_fp_unittest(
fdimf_test
SUITE
@@ -3475,6 +3491,20 @@ add_fp_unittest(
libc.src.__support.FPUtil.fp_bits
)
+add_fp_unittest(
+ remquobf16_test
+ SUITE
+ libc-math-smoke-tests
+ SRCS
+ remquobf16_test.cpp
+ HDRS
+ RemQuoTest.h
+ DEPENDS
+ libc.src.math.remquobf16
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.fp_bits
+)
+
add_fp_unittest(
hypotf_test
SUITE
diff --git a/libc/test/src/math/smoke/ModfTest.h b/libc/test/src/math/smoke/ModfTest.h
index 24cfb1152c2e5..71f1c6bf4be28 100644
--- a/libc/test/src/math/smoke/ModfTest.h
+++ b/libc/test/src/math/smoke/ModfTest.h
@@ -76,10 +76,16 @@ class ModfTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
EXPECT_FP_EQ(T(-0.75), func(T(-10.75), &integral));
EXPECT_FP_EQ(integral, T(-10.0));
- EXPECT_FP_EQ(T(0.125), func(T(100.125), &integral));
+ EXPECT_FP_EQ(T(0.125), func(T(31.125), &integral));
+ EXPECT_FP_EQ(integral, T(31.0));
+
+ EXPECT_FP_EQ(T(-0.125), func(T(-31.125), &integral));
+ EXPECT_FP_EQ(integral, T(-31.0));
+
+ EXPECT_FP_EQ(T(0.5), func(T(100.5), &integral));
EXPECT_FP_EQ(integral, T(100.0));
- EXPECT_FP_EQ(T(-0.125), func(T(-100.125), &integral));
+ EXPECT_FP_EQ(T(-0.5), func(T(-100.5), &integral));
EXPECT_FP_EQ(integral, T(-100.0));
}
diff --git a/libc/test/src/math/smoke/modfbf16_test.cpp b/libc/test/src/math/smoke/modfbf16_test.cpp
new file mode 100644
index 0000000000000..88ebed55222ca
--- /dev/null
+++ b/libc/test/src/math/smoke/modfbf16_test.cpp
@@ -0,0 +1,14 @@
+//===-- Unittests for modfbf16 --------------------------------------------===//
+//
+// 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 "ModfTest.h"
+
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/math/modfbf16.h"
+
+LIST_MODF_TESTS(bfloat16, LIBC_NAMESPACE::modfbf16)
diff --git a/libc/test/src/math/smoke/remquobf16_test.cpp b/libc/test/src/math/smoke/remquobf16_test.cpp
new file mode 100644
index 0000000000000..3f754bbd28a41
--- /dev/null
+++ b/libc/test/src/math/smoke/remquobf16_test.cpp
@@ -0,0 +1,14 @@
+//===-- Unittests for remquobf16 ------------------------------------------===//
+//
+// 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 "RemQuoTest.h"
+
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/math/remquobf16.h"
+
+LIST_REMQUO_TESTS(bfloat16, LIBC_NAMESPACE::remquobf16)
>From 7711efd183b742886f46562260035c2cef776212 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Wed, 20 Aug 2025 03:46:08 +0530
Subject: [PATCH 3/6] chore: update entrypoints
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
---
libc/config/baremetal/aarch64/entrypoints.txt | 3 +++
libc/config/baremetal/arm/entrypoints.txt | 3 +++
libc/config/baremetal/riscv/entrypoints.txt | 3 +++
libc/config/darwin/aarch64/entrypoints.txt | 3 +++
libc/config/darwin/x86_64/entrypoints.txt | 3 +++
libc/config/gpu/amdgpu/entrypoints.txt | 3 +++
libc/config/gpu/nvptx/entrypoints.txt | 3 +++
libc/config/linux/aarch64/entrypoints.txt | 3 +++
libc/config/linux/arm/entrypoints.txt | 3 +++
libc/config/linux/riscv/entrypoints.txt | 3 +++
libc/config/linux/x86_64/entrypoints.txt | 3 +++
libc/config/windows/entrypoints.txt | 3 +++
12 files changed, 36 insertions(+)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 10d5b3a591d0d..f6f2740e52fe3 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -793,11 +793,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 785b84163701f..6f9ce31e4bb45 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -796,11 +796,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 2038f3e4952cf..ddca368e7175c 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -796,11 +796,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 707e8b1d43658..22b291ac6c2b7 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -626,11 +626,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index db3b305d376b0..e69c24446403d 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -269,11 +269,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 76bda91f3b229..5630538547485 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -652,11 +652,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index cae9d593b056d..c10cd8f454238 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -653,11 +653,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 18853de2c13c1..ff4b3bdcbcdad 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -880,11 +880,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 150e34a1fb195..8d81edf536b78 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -496,11 +496,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 937ec4253299a..dbe7356510e2d 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -899,11 +899,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 23871c406d236..a24af935fa6b2 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -931,11 +931,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index cc7c655280213..06868e1792dd4 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -342,11 +342,14 @@ list(APPEND TARGET_LIBM_ENTRYPOINTS
libc.src.math.ldexpbf16
libc.src.math.llogbbf16
libc.src.math.logbbf16
+ libc.src.math.modfbf16
libc.src.math.nanbf16
libc.src.math.nextafterbf16
libc.src.math.nextdownbf16
libc.src.math.nexttowardbf16
libc.src.math.nextupbf16
+ libc.src.math.remainderbf16
+ libc.src.math.remquobf16
libc.src.math.roundbf16
libc.src.math.roundevenbf16
libc.src.math.setpayloadbf16
>From e52a7fa92f22e770c7398a0e31965ea44b08ea29 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Wed, 20 Aug 2025 03:47:06 +0530
Subject: [PATCH 4/6] docs: add {modf,remainder,remquo}bf16 math functions
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
---
libc/docs/headers/math/index.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index 5049ab65d00af..d4326665ea851 100644
--- a/libc/docs/headers/math/index.rst
+++ b/libc/docs/headers/math/index.rst
@@ -209,7 +209,7 @@ Basic Operations
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| lround | |check| | |check| | |check| | |check| | |check| | | 7.12.9.7 | F.10.6.7 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| modf | |check| | |check| | |check| | |check| | |check| | | 7.12.6.18 | F.10.3.18 |
+| modf | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.6.18 | F.10.3.18 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| nan | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.11.2 | F.10.8.2 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
@@ -223,9 +223,9 @@ Basic Operations
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| nextup | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.11.5 | F.10.8.5 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| remainder | |check| | |check| | |check| | |check| | |check| | | 7.12.10.2 | F.10.7.2 |
+| remainder | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.10.2 | F.10.7.2 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
-| remquo | |check| | |check| | |check| | |check| | |check| | | 7.12.10.3 | F.10.7.3 |
+| remquo | |check| | |check| | |check| | |check| | |check| | |check| | 7.12.10.3 | F.10.7.3 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
| rint | |check| | |check| | |check| | |check| | |check| | | 7.12.9.4 | F.10.6.4 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+------------------------+----------------------------+
>From 25674ef3b1b4874ba1fc7bd040ec9a7461aef891 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Wed, 20 Aug 2025 20:06:54 +0530
Subject: [PATCH 5/6] chore: remove fmodbf16 from CMakeLists.txt
Signed-off-by: Krishna Pandey <kpandey81930 at gmail.com>
---
libc/src/math/generic/CMakeLists.txt | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 46de2e09d3ba9..dc9d101cc76c8 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -3879,20 +3879,6 @@ add_entrypoint_object(
libc.src.__support.FPUtil.generic.fmod
)
-add_entrypoint_object(
- fmodbf16
- SRCS
- fmodbf16.cpp
- HDRS
- ../fmodbf16.h
- DEPENDS
- libc.src.__support.common
- libc.src.__support.FPUtil.bfloat16
- libc.src.__support.FPUtil.generic.fmod
- libc.src.__support.macros.config
- libc.src.__support.macros.properties.types
-)
-
add_entrypoint_object(
fromfp
SRCS
>From 5a76e0227d58ac89594f5058982a10e0db48bfd8 Mon Sep 17 00:00:00 2001
From: Krishna Pandey <kpandey81930 at gmail.com>
Date: Mon, 25 Aug 2025 02:39:58 +0530
Subject: [PATCH 6/6] fix: nits
Co-authored-by: OverMighty <its.overmighty at gmail.com>
---
libc/src/math/CMakeLists.txt | 1 -
libc/src/math/generic/CMakeLists.txt | 2 --
2 files changed, 3 deletions(-)
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 6cc221178df94..61fd525a06d25 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -300,7 +300,6 @@ add_math_entrypoint_object(fmodf)
add_math_entrypoint_object(fmodl)
add_math_entrypoint_object(fmodf16)
add_math_entrypoint_object(fmodf128)
-add_math_entrypoint_object(fmodbf16)
add_math_entrypoint_object(frexp)
add_math_entrypoint_object(frexpf)
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index dc9d101cc76c8..f79f91fcdb7d4 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2294,7 +2294,6 @@ add_entrypoint_object(
libc.src.__support.macros.properties.types
)
-
add_entrypoint_object(
fmin
SRCS
@@ -3213,7 +3212,6 @@ add_entrypoint_object(
libc.src.__support.macros.config
)
-
add_entrypoint_object(
remainderf
SRCS
More information about the llvm-branch-commits
mailing list