[libc][math] Refactor ceil family to header-only#182121
Merged
Conversation
Member
|
@llvm/pr-subscribers-libc Author: Mohamed Emad (hulxv) ChangesRefactors the ceil math family to be header-only. Closes #182120 Target Functions:
Patch is 26.31 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/182121.diff 24 Files Affected:
diff --git a/libc/shared/math.h b/libc/shared/math.h
index 8a5aca82c6ec3..ca187b9c3a7df 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -45,6 +45,12 @@
#include "math/canonicalizel.h"
#include "math/cbrt.h"
#include "math/cbrtf.h"
+#include "math/ceil.h"
+#include "math/ceilbf16.h"
+#include "math/ceilf.h"
+#include "math/ceilf128.h"
+#include "math/ceilf16.h"
+#include "math/ceill.h"
#include "math/cos.h"
#include "math/cosf.h"
#include "math/cosf16.h"
diff --git a/libc/shared/math/ceil.h b/libc/shared/math/ceil.h
new file mode 100644
index 0000000000000..ecbe5699cbc61
--- /dev/null
+++ b/libc/shared/math/ceil.h
@@ -0,0 +1,22 @@
+//===-- Shared ceil 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_CEIL_H
+#define LLVM_LIBC_SHARED_MATH_CEIL_H
+
+#include "src/__support/math/ceil.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceil;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_CEIL_H
diff --git a/libc/shared/math/ceilbf16.h b/libc/shared/math/ceilbf16.h
new file mode 100644
index 0000000000000..a72a77c237324
--- /dev/null
+++ b/libc/shared/math/ceilbf16.h
@@ -0,0 +1,22 @@
+//===-- Shared ceilbf16 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_CEILBF16_H
+#define LLVM_LIBC_SHARED_MATH_CEILBF16_H
+
+#include "src/__support/math/ceilbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceilbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_CEILBF16_H
diff --git a/libc/shared/math/ceilf.h b/libc/shared/math/ceilf.h
new file mode 100644
index 0000000000000..9cae81ee98e1e
--- /dev/null
+++ b/libc/shared/math/ceilf.h
@@ -0,0 +1,22 @@
+//===-- Shared ceilf 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_CEILF_H
+#define LLVM_LIBC_SHARED_MATH_CEILF_H
+
+#include "src/__support/math/ceilf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceilf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_CEILF_H
diff --git a/libc/shared/math/ceilf128.h b/libc/shared/math/ceilf128.h
new file mode 100644
index 0000000000000..08500bb46a022
--- /dev/null
+++ b/libc/shared/math/ceilf128.h
@@ -0,0 +1,28 @@
+//===-- Shared ceilf128 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_CEILF128_H
+#define LLVM_LIBC_SHARED_MATH_CEILF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "src/__support/math/ceilf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceilf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_CEILF128_H
diff --git a/libc/shared/math/ceilf16.h b/libc/shared/math/ceilf16.h
new file mode 100644
index 0000000000000..0758fd3d79158
--- /dev/null
+++ b/libc/shared/math/ceilf16.h
@@ -0,0 +1,28 @@
+//===-- Shared ceilf16 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_CEILF16_H
+#define LLVM_LIBC_SHARED_MATH_CEILF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "src/__support/math/ceilf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceilf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SHARED_MATH_CEILF16_H
diff --git a/libc/shared/math/ceill.h b/libc/shared/math/ceill.h
new file mode 100644
index 0000000000000..d3bc61d150c4d
--- /dev/null
+++ b/libc/shared/math/ceill.h
@@ -0,0 +1,22 @@
+//===-- Shared ceill 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_CEILL_H
+#define LLVM_LIBC_SHARED_MATH_CEILL_H
+
+#include "src/__support/math/ceill.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::ceill;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_CEILL_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index e21fe8ef0ab93..0b5854ab6fe66 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -475,6 +475,58 @@ add_header_library(
libc.src.__support.FPUtil.multiply_add
libc.src.__support.macros.optimization
)
+add_header_library(
+ ceil
+ HDRS
+ ceil.h
+ DEPENDS
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
+add_header_library(
+ ceilbf16
+ HDRS
+ ceilbf16.h
+ DEPENDS
+ libc.src.__support.FPUtil.bfloat16
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
+add_header_library(
+ ceilf
+ HDRS
+ ceilf.h
+ DEPENDS
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
+add_header_library(
+ ceilf128
+ HDRS
+ ceilf128.h
+ DEPENDS
+ libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
+add_header_library(
+ ceilf16
+ HDRS
+ ceilf16.h
+ DEPENDS
+ libc.include.llvm-libc-macros.float16_macros
+ libc.src.__support.FPUtil.cast
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
+add_header_library(
+ ceill
+ HDRS
+ ceill.h
+ DEPENDS
+ libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.macros.config
+)
add_header_library(
common_constants
diff --git a/libc/src/__support/math/ceil.h b/libc/src/__support/math/ceil.h
new file mode 100644
index 0000000000000..7c5ca6ed222d8
--- /dev/null
+++ b/libc/src/__support/math/ceil.h
@@ -0,0 +1,30 @@
+//===-- Implementation header for ceil --------------------------*- 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___SUPPORT_MATH_CEIL_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEIL_H
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr double ceil(double x) {
+#ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC
+ return __builtin_ceil(x);
+#else
+ return fputil::ceil(x);
+#endif
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEIL_H
diff --git a/libc/src/__support/math/ceilbf16.h b/libc/src/__support/math/ceilbf16.h
new file mode 100644
index 0000000000000..83d0c9484e21e
--- /dev/null
+++ b/libc/src/__support/math/ceilbf16.h
@@ -0,0 +1,25 @@
+//===-- Implementation header for ceilbf16 ----------------------*- 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___SUPPORT_MATH_CEILBF16_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEILBF16_H
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr bfloat16 ceilbf16(bfloat16 x) { return fputil::ceil(x); }
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEILBF16_H
diff --git a/libc/src/__support/math/ceilf.h b/libc/src/__support/math/ceilf.h
new file mode 100644
index 0000000000000..4ab62725a6789
--- /dev/null
+++ b/libc/src/__support/math/ceilf.h
@@ -0,0 +1,30 @@
+//===-- Implementation header for ceilf -------------------------*- 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___SUPPORT_MATH_CEILF_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEILF_H
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr float ceilf(float x) {
+#ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC
+ return __builtin_ceilf(x);
+#else
+ return fputil::ceil(x);
+#endif
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEILF_H
diff --git a/libc/src/__support/math/ceilf128.h b/libc/src/__support/math/ceilf128.h
new file mode 100644
index 0000000000000..20ca1869d17e7
--- /dev/null
+++ b/libc/src/__support/math/ceilf128.h
@@ -0,0 +1,30 @@
+//===-- Implementation header for ceilf128 ----------------------*- 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___SUPPORT_MATH_CEILF128_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEILF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr float128 ceilf128(float128 x) { return fputil::ceil(x); }
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEILF128_H
diff --git a/libc/src/__support/math/ceilf16.h b/libc/src/__support/math/ceilf16.h
new file mode 100644
index 0000000000000..6644d6a4e21b5
--- /dev/null
+++ b/libc/src/__support/math/ceilf16.h
@@ -0,0 +1,39 @@
+//===-- Implementation header for ceilf16 -----------------------*- 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___SUPPORT_MATH_CEILF16_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEILF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/FPUtil/cast.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/cpu_features.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr float16 ceilf16(float16 x) {
+#if defined(__LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC) && \
+ defined(LIBC_TARGET_CPU_HAS_FAST_FLOAT16_OPS)
+ return fputil::cast<float16>(__builtin_ceilf(x));
+#else
+ return fputil::ceil(x);
+#endif
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEILF16_H
diff --git a/libc/src/__support/math/ceill.h b/libc/src/__support/math/ceill.h
new file mode 100644
index 0000000000000..e090c0dba39eb
--- /dev/null
+++ b/libc/src/__support/math/ceill.h
@@ -0,0 +1,26 @@
+//===-- Implementation header for ceill -------------------------*- 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___SUPPORT_MATH_CEILL_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_CEILL_H
+
+#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+namespace math {
+
+LIBC_INLINE constexpr long double ceill(long double x) {
+ return fputil::ceil(x);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_CEILL_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 57a29665318a3..32329680dc58b 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -125,9 +125,7 @@ add_entrypoint_object(
HDRS
../ceil.h
DEPENDS
- libc.src.__support.FPUtil.nearest_integer_operations
- FLAGS
- ROUND_OPT
+ libc.src.__support.math.ceil
)
add_entrypoint_object(
@@ -137,9 +135,7 @@ add_entrypoint_object(
HDRS
../ceilf.h
DEPENDS
- libc.src.__support.FPUtil.nearest_integer_operations
- FLAGS
- ROUND_OPT
+ libc.src.__support.math.ceilf
)
add_entrypoint_object(
@@ -149,7 +145,7 @@ add_entrypoint_object(
HDRS
../ceill.h
DEPENDS
- libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.math.ceill
)
add_entrypoint_object(
@@ -159,12 +155,7 @@ add_entrypoint_object(
HDRS
../ceilf16.h
DEPENDS
- libc.src.__support.FPUtil.cast
- libc.src.__support.FPUtil.nearest_integer_operations
- libc.src.__support.macros.properties.cpu_features
- libc.src.__support.macros.properties.types
- FLAGS
- ROUND_OPT
+ libc.src.__support.math.ceilf16
)
add_entrypoint_object(
@@ -174,8 +165,7 @@ add_entrypoint_object(
HDRS
../ceilf128.h
DEPENDS
- libc.src.__support.macros.properties.types
- libc.src.__support.FPUtil.nearest_integer_operations
+ libc.src.__support.math.ceilf128
)
add_entrypoint_object(
@@ -185,13 +175,7 @@ add_entrypoint_object(
HDRS
../ceilbf16.h
DEPENDS
- libc.src.__support.common
- libc.src.__support.FPUtil.bfloat16
- libc.src.__support.FPUtil.nearest_integer_operations
- libc.src.__support.macros.config
- libc.src.__support.macros.properties.types
- FLAGS
- ROUND_OPT
+ libc.src.__support.math.ceilbf16
)
add_entrypoint_object(
diff --git a/libc/src/math/generic/ceil.cpp b/libc/src/math/generic/ceil.cpp
index 72c6e990fcc71..bb0cd7b869566 100644
--- a/libc/src/math/generic/ceil.cpp
+++ b/libc/src/math/generic/ceil.cpp
@@ -7,18 +7,10 @@
//===----------------------------------------------------------------------===//
#include "src/math/ceil.h"
-#include "src/__support/FPUtil/NearestIntegerOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/ceil.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(double, ceil, (double x)) {
-#ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC
- return __builtin_ceil(x);
-#else
- return fputil::ceil(x);
-#endif
-}
+LLVM_LIBC_FUNCTION(double, ceil, (double x)) { return math::ceil(x); }
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/ceilbf16.cpp b/libc/src/math/generic/ceilbf16.cpp
index 441dcf0e93d6f..0abb7b22cbc6b 100644
--- a/libc/src/math/generic/ceilbf16.cpp
+++ b/libc/src/math/generic/ceilbf16.cpp
@@ -7,13 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/ceilbf16.h"
-#include "src/__support/FPUtil/NearestIntegerOperations.h"
-#include "src/__support/FPUtil/bfloat16.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/ceilbf16.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(bfloat16, ceilbf16, (bfloat16 x)) { return fputil::ceil(x); }
+LLVM_LIBC_FUNCTION(bfloat16, ceilbf16, (bfloat16 x)) {
+ return math::ceilbf16(x);
+}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/ceilf.cpp b/libc/src/math/generic/ceilf.cpp
index dfd0dc62bc51b..f13371354d273 100644
--- a/libc/src/math/generic/ceilf.cpp
+++ b/libc/src/math/generic/ceilf.cpp
@@ -7,18 +7,10 @@
//===----------------------------------------------------------------------===//
#include "src/math/ceilf.h"
-#include "src/__support/FPUtil/NearestIntegerOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/ceilf.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(float, ceilf, (float x)) {
-#ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC
- return __builtin_ceilf(x);
-#else
- return fputil::ceil(x);
-#endif
-}
+LLVM_LIBC_FUNCTION(float, ceilf, (float x)) { return math::ceilf(x); }
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/ceilf128.cpp b/libc/src/math/generic/ceilf128.cpp
index 5d0cf46933cdf..fd9c206612207 100644
--- a/libc/src/math/generic/ceilf128.cpp
+++ b/libc/src/math/generic/ceilf128.cpp
@@ -7,12 +7,12 @@
//===----------------------------------------------------------------------===//
#include "src/math/ceilf128.h"
-#include "src/__support/FPUtil/NearestIntegerOperations.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/math/ceilf128.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(float128, ceilf128, (float128 x)) { return fputil::ceil(x); }
+LLVM_LIBC_FUNCTION(float128, ceilf128, (float128 x)) {
+ return math::ceilf128(x);
+}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/ceilf16.cpp b/libc/src/math/generic/ceilf16.cpp
index 9d89efc5311d1..74fe2e5e0ad52 100644
--- a/libc/src/math/generic/ceilf16.cpp
+++ b/libc/src/math/generic/ceilf16.cpp
@@ -7,21 +7,10 @@
//===----------------------------------------------------------------------===//
#include "src/math/ceilf16.h"
-#include "src/__support/FPUtil/NearestIntegerOperations.h"
-#include "src/__support/FPUtil/cast.h"
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
-#include "src/__support/macros/properties/cpu_features.h"
+#include "src/__support/math/ceilf16.h"
namespace LIBC_NAMESPACE_DECL {
-LLVM_LIBC_FUNCTION(float16, ceilf16, (float16 x)) {
-#if defined(__LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC) && \
- defined(LIBC_TARGET_CPU_HAS_FAST_FLOAT16_OPS)
- return fputil::cast<float16>(__builtin_ceilf(x));
-#else
- return fputil::ceil(x);
-#endif...
[truncated]
|
da4db02 to
5885298
Compare
5885298 to
8e6e4a4
Compare
bassiounix
requested changes
Feb 19, 2026
8e6e4a4 to
c7ec815
Compare
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
bassiounix
requested changes
Feb 19, 2026
c7ec815 to
b7ab170
Compare
Refactored functions: - ceil - ceilbf16 - ceilf - ceilf128 - ceilf16 - ceill
b7ab170 to
c7b485a
Compare
bassiounix
approved these changes
Feb 19, 2026
Harrish92
pushed a commit
to Harrish92/llvm-project
that referenced
this pull request
Feb 22, 2026
Refactors the ceil math family to be header-only. Closes llvm#182120 Target Functions: - ceil - ceilbf16 - ceilf - ceilf128 - ceilf16 - ceill
HendrikHuebner
pushed a commit
to HendrikHuebner/llvm-project
that referenced
this pull request
Mar 10, 2026
Refactors the ceil math family to be header-only. Closes llvm#182120 Target Functions: - ceil - ceilbf16 - ceilf - ceilf128 - ceilf16 - ceill
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
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.
Refactors the ceil math family to be header-only.
Closes #182120
Target Functions: