[libc-commits] [libc] [llvm] [libc] Make `lroundf128` and `llroundf128` use the emulated float128 type (PR #216829)
via libc-commits
libc-commits at lists.llvm.org
Wed Aug 19 05:06:01 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Zorojuro (Sukumarsawant)
<details>
<summary>Changes</summary>
---
Patch is 26.38 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/216829.diff
31 Files Affected:
- (modified) libc/config/baremetal/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/baremetal/arm/entrypoints.txt (+2-2)
- (modified) libc/config/baremetal/riscv/entrypoints.txt (+2-2)
- (modified) libc/config/darwin/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/darwin/x86_64/entrypoints.txt (+2)
- (modified) libc/config/freebsd/x86_64/entrypoints.txt (+2-2)
- (modified) libc/config/gpu/amdgpu/entrypoints.txt (+2)
- (modified) libc/config/gpu/nvptx/entrypoints.txt (+2)
- (modified) libc/config/linux/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/linux/arm/entrypoints.txt (+2)
- (modified) libc/config/linux/riscv/entrypoints.txt (+2-2)
- (modified) libc/config/linux/x86_64/entrypoints.txt (+2-2)
- (modified) libc/config/windows/entrypoints.txt (+2)
- (modified) libc/shared/math/llroundf128.h (-6)
- (modified) libc/shared/math/lroundf128.h (-6)
- (modified) libc/src/__support/math/CMakeLists.txt (+2-2)
- (modified) libc/src/__support/math/llroundf128.h (+5-8)
- (modified) libc/src/__support/math/lroundf128.h (+5-8)
- (modified) libc/src/math/generic/CMakeLists.txt (+2)
- (modified) libc/src/math/generic/llroundf128.cpp (+4-1)
- (modified) libc/src/math/generic/lroundf128.cpp (+4-1)
- (modified) libc/src/math/llroundf128.h (+5)
- (modified) libc/src/math/lroundf128.h (+5)
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+2-2)
- (modified) libc/test/shared/shared_math_test.cpp (+2-2)
- (modified) libc/test/src/math/smoke/CMakeLists.txt (+2)
- (modified) libc/test/src/math/smoke/RoundToIntegerTest.h (+1-1)
- (modified) libc/test/src/math/smoke/llroundf128_test.cpp (+5)
- (modified) libc/test/src/math/smoke/lroundf128_test.cpp (+5)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+6-2)
- (modified) utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel (+6)
``````````diff
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 2dd3c246f9131..613c8406cbe10 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -494,6 +494,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -511,6 +512,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -774,10 +776,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index c57f3e413ed84..e46a7aeb6ae0e 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -506,6 +506,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -523,6 +524,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -785,10 +787,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 32094cf74a41a..95fd7c8515a9e 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -502,6 +502,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -519,6 +520,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -782,10 +784,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 789ef5612f62c..ced6a6743b7ab 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -313,6 +313,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -330,6 +331,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -594,10 +596,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 1119de68c63ef..313c56d278ed4 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -176,12 +176,14 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.llrintl
#libc.src.math.llround
#libc.src.math.llroundf
+ #libc.src.math.llroundf128
#libc.src.math.llroundl
#libc.src.math.lrint
#libc.src.math.lrintf
#libc.src.math.lrintl
#libc.src.math.lround
#libc.src.math.lroundf
+ #libc.src.math.lroundf128
#libc.src.math.lroundl
#libc.src.math.ldexp
#libc.src.math.ldexpf
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 459ffd98cd514..0edc1f0525cf4 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -223,6 +223,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log10
libc.src.math.log10f
@@ -240,6 +241,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -532,10 +534,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 544c153c7a96b..82f5873b18b6e 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -437,6 +437,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -454,6 +455,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 840884c58809b..dc32fad6e994e 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -434,6 +434,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -451,6 +452,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 4e2edd6235fd8..42180fae4e6bf 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -653,6 +653,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -670,6 +671,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -927,10 +929,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index f4a4b25de2575..8b97d5b774135 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -468,6 +468,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -485,6 +486,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 8242c7e3c943c..236e7a295b0ff 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -721,6 +721,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -738,6 +739,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -1012,10 +1014,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 6e193f0f10fc9..90735e0ccb80c 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -731,6 +731,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log
libc.src.math.log10
@@ -748,6 +749,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
@@ -1022,10 +1024,8 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ldexpf128
libc.src.math.llogbf128
libc.src.math.llrintf128
- libc.src.math.llroundf128
libc.src.math.logbf128
libc.src.math.lrintf128
- libc.src.math.lroundf128
libc.src.math.modff128
libc.src.math.nanf128
libc.src.math.nextafterf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index b2edad435874c..5317a0323db75 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -256,6 +256,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.llrintl
libc.src.math.llround
libc.src.math.llroundf
+ libc.src.math.llroundf128
libc.src.math.llroundl
libc.src.math.log10
libc.src.math.log10f
@@ -273,6 +274,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.lrintl
libc.src.math.lround
libc.src.math.lroundf
+ libc.src.math.lroundf128
libc.src.math.lroundl
libc.src.math.modf
libc.src.math.modff
diff --git a/libc/shared/math/llroundf128.h b/libc/shared/math/llroundf128.h
index 4ca4826a5acf8..20af856951e37 100644
--- a/libc/shared/math/llroundf128.h
+++ b/libc/shared/math/llroundf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_LLROUNDF128_H
#define LLVM_LIBC_SHARED_MATH_LLROUNDF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/llroundf128.h"
@@ -24,6 +20,4 @@ using math::llroundf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_LLROUNDF128_H
diff --git a/libc/shared/math/lroundf128.h b/libc/shared/math/lroundf128.h
index ec035e4c26919..a5e445fb08a7b 100644
--- a/libc/shared/math/lroundf128.h
+++ b/libc/shared/math/lroundf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_LROUNDF128_H
#define LLVM_LIBC_SHARED_MATH_LROUNDF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/lroundf128.h"
@@ -24,6 +20,4 @@ using math::lroundf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_LROUNDF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index f56ce93e5c498..f24612916c33c 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1949,7 +1949,7 @@ add_header_library(
HDRS
llroundf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.nearest_integer_operations
libc.src.__support.macros.config
)
@@ -2063,7 +2063,7 @@ add_header_library(
HDRS
lroundf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.nearest_integer_operations
libc.src.__support.macros.config
)
diff --git a/libc/src/__support/math/llroundf128.h b/libc/src/__support/math/llroundf128.h
index b5db14ed9bc0e..7a52ff5c80452 100644
--- a/libc/src/__support/math/llroundf128.h
+++ b/libc/src/__support/math/llroundf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_LLROUNDF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_LLROUNDF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr long long llroundf128(float128 x) {
- return fputil::round_to_signed_integer<float128, long long>(x);
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr long long llroundf128(Float128 x) {
+ return fputil::round_to_signed_integer<Float128, long long>(x);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_LLROUNDF128_H
diff --git a/libc/src/__support/math/lroundf128.h b/libc/src/__support/math/lroundf128.h
index cd8fd70c25966..14e3c676acd04 100644
--- a/libc/src/__support/math/lroundf128.h
+++ b/libc/src/__support/math/lroundf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_LROUNDF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_LROUNDF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/NearestIntegerOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr long lroundf128(float128 x) {
- return fputil::round_to_signed_integer<float128, long>(x);
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr long lroundf128(Float128 x) {
+ return fputil::round_to_signed_integer<Float128, long>(x);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_LROUNDF128_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 507a5ae33ca68..01468b97d38f6 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -867,6 +867,7 @@ add_entrypoint_object(
HDRS
../lroundf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.lroundf128
)
@@ -927,6 +928,7 @@ add_entrypoint_object(
HDRS
../llroundf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.llroundf128
)
diff --git a/libc/src/math/generic/llroundf128.cpp b/libc/src/math/generic/llroundf128.cpp
index 4ef2eb0032370..8f0a31b59ae49 100644
--- a/libc/src/math/generic/llroundf128.cpp
+++ b/libc/src/math/generic/llroundf128.cpp
@@ -7,12 +7,15 @@
//===----------------------------------------------------------------------===//
#include "src/math/llroundf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/llroundf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(long long, llroundf128, (float128 x)) {
- return math::llroundf128(x);
+ return math::llroundf128(cpp::bit_cast<Float128>(x));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/lroundf128.cpp b/libc/src/math/generic/lroundf128.cpp
index c6ea549d58253..dde3b78e0f0a6 100644
--- a/libc/src/math/generic/lroundf128.cpp
+++ b/libc/src/math/generic/lroundf128.cpp
@@ -7,12 +7,15 @@
//===----------------------------------------------------------------------===//
#include "src/math/lroundf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/lroundf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(long, lroundf128, (float128 x)) {
- return math::lroundf128(x);
+ return math::lroundf128(cpp::bit_cast<Float128>(x));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/llroundf128.h b/libc/src/math/llroundf128.h
index 59d4d8da582ed..d81d5bd8ab1a5 100644
--- a/libc/src/math/llroundf128.h
+++ b/libc/src/math/llroundf128.h
@@ -9,11 +9,16 @@
#ifndef LLVM_LIBC_SRC_MATH_LLROUNDF128_H
#define LLVM_LIBC_SRC_MATH_LLROUNDF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
long long llroundf128(float128 x);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/lroundf128.h b/libc/src/math/lroundf128.h
index 4191db5792095..cf6c62c4575da 100644
--- a/libc/src/math/lroundf128.h
+++ b/libc/src/math/lroundf128.h
@@ -9,11 +9,16 @@
#ifndef LLVM_LIBC_SRC_MATH_LROUNDF128_H
#define LLVM_LIBC_SRC_MATH_LROUNDF128_H
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
long lroundf128(float128 x);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index 2fba4e288c1e1..be5fc959165c7 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -383,6 +383,8 @@ static_assert(0 == LIBC_NAMESPACE::shared::isnanl(0.0L));
static_assert(Float128(0.0) == LIBC_NAMESPACE::shared::ceilf128(Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::floorf128(Float128(0.0)));
+static_assert(0LL == LIBC_NAMESPACE::shared::llroundf128(Float128(0.0)));
+static_assert(0L == LIBC_NAMESPACE::shared::lroundf128(Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::nearbyintf128(Float128(0.0)));
static_assert(Float128(0.0) ==
@@ -493,9 +495,7 @@ static_assert(0.0f ==
LIBC_NAMESPACE::shared::fsubf128(float128(0.0), float128(0.0)));
static_assert(0LL == LIBC_NAMESPACE::shared::llrintf128(float128(0.0)));
-static_assert(0LL == LIBC_NAMESPACE::shared::llroundf...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/216829
More information about the libc-commits
mailing list