[libc-commits] [libc] [libc][math] Refactor bf16divf128 to header-only in src/__support/math folder. (PR #182277)
Abhiram Jampani via libc-commits
libc-commits at lists.llvm.org
Thu Feb 19 06:00:01 PST 2026
https://github.com/Abhiramjampani updated https://github.com/llvm/llvm-project/pull/182277
>From 5bbae8dfe0d43e8560e2cb474172b649a81d25ae Mon Sep 17 00:00:00 2001
From: Abhiramjampani <lcs2022059 at iiitl.ac.in>
Date: Thu, 19 Feb 2026 19:16:19 +0530
Subject: [PATCH] [libc][math] Refactor bf16divf128 to header-only in
src/__support/math folder.
---
libc/shared/math/bf16divf128.h | 29 +++++++++++++++++++++++
libc/src/__support/math/CMakeLists.txt | 12 ++++++++++
libc/src/__support/math/bf16divf128.h | 32 ++++++++++++++++++++++++++
libc/src/math/generic/CMakeLists.txt | 6 +----
libc/src/math/generic/bf16divf128.cpp | 7 ++----
5 files changed, 76 insertions(+), 10 deletions(-)
create mode 100644 libc/shared/math/bf16divf128.h
create mode 100644 libc/src/__support/math/bf16divf128.h
diff --git a/libc/shared/math/bf16divf128.h b/libc/shared/math/bf16divf128.h
new file mode 100644
index 0000000000000..8ea100db6bd7f
--- /dev/null
+++ b/libc/shared/math/bf16divf128.h
@@ -0,0 +1,29 @@
+//===-- Shared bf16divf128 function ------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_BF16DIVF128_H
+#define LLVM_LIBC_SHARED_MATH_BF16DIVF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/bf16divf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::bf16divf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_BF16DIVF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index e21fe8ef0ab93..55b8845ef6449 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1927,6 +1927,18 @@ add_header_library(
libc.include.llvm-libc-types.float128
)
+add_header_library(
+ bf16divf128
+ HDRS
+ bf16divf128.h
+ DEPENDS
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.generic.div
+ libc.src.__support.common
+ libc.src.__support.macros.config
+ libc.include.llvm-libc-types.float128
+)
+
add_header_library(
tan
HDRS
diff --git a/libc/src/__support/math/bf16divf128.h b/libc/src/__support/math/bf16divf128.h
new file mode 100644
index 0000000000000..fa23062f070f6
--- /dev/null
+++ b/libc/src/__support/math/bf16divf128.h
@@ -0,0 +1,32 @@
+//===-- Implementation header for bf16divf128 -----------------------------===//
+//
+// 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___SUPPORT_MATH_BF16DIVF128_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_BF16DIVF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/FPUtil/generic/div.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+LIBC_INLINE static bfloat16 bf16divf128(float128 x, float128 y) {
+ return fputil::generic::div<bfloat16>(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_BF16DIVF128_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 57a29665318a3..0a8b75ce07f99 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -5181,11 +5181,7 @@ add_entrypoint_object(
HDRS
../bf16divf128.h
DEPENDS
- libc.src.__support.common
- libc.src.__support.FPUtil.bfloat16
- libc.src.__support.FPUtil.generic.div
- libc.src.__support.macros.config
- libc.src.__support.macros.properties.types
+ libc.src.__support.math.bf16divf128
)
add_entrypoint_object(
diff --git a/libc/src/math/generic/bf16divf128.cpp b/libc/src/math/generic/bf16divf128.cpp
index fbe9775ce4046..eb1b5b241e2a3 100644
--- a/libc/src/math/generic/bf16divf128.cpp
+++ b/libc/src/math/generic/bf16divf128.cpp
@@ -7,15 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/bf16divf128.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/FPUtil/generic/div.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/bf16divf128.h"
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(bfloat16, bf16divf128, (float128 x, float128 y)) {
- return fputil::generic::div<bfloat16>(x, y);
+ return math::bf16divf128(x, y);
}
} // namespace LIBC_NAMESPACE_DECL
More information about the libc-commits
mailing list