[llvm-branch-commits] [libc] [llvm] [libc] Make fmaximum_num/fminimum_num functions use the emulated float128 type (PR #217409)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Aug 19 10:49:09 PDT 2026
https://github.com/Sukumarsawant created https://github.com/llvm/llvm-project/pull/217409
None
>From 7372d4ed4cb00d663462553ad1cf45004f25aef2 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 23:12:43 +0530
Subject: [PATCH 1/2] fmaximum_numf128
---
libc/config/baremetal/aarch64/entrypoints.txt | 2 +-
libc/config/baremetal/arm/entrypoints.txt | 2 +-
libc/config/baremetal/riscv/entrypoints.txt | 2 +-
libc/config/darwin/aarch64/entrypoints.txt | 2 +-
libc/config/darwin/x86_64/entrypoints.txt | 1 +
libc/config/freebsd/x86_64/entrypoints.txt | 2 +-
libc/config/gpu/amdgpu/entrypoints.txt | 1 +
libc/config/gpu/nvptx/entrypoints.txt | 1 +
libc/config/linux/aarch64/entrypoints.txt | 2 +-
libc/config/linux/arm/entrypoints.txt | 1 +
libc/config/linux/riscv/entrypoints.txt | 2 +-
libc/config/linux/x86_64/entrypoints.txt | 2 +-
libc/config/windows/entrypoints.txt | 1 +
libc/shared/math/fmaximum_numf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fmaximum_numf128.h | 11 ++++-------
libc/src/math/fmaximum_numf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fmaximum_numf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 6 +++---
libc/test/shared/shared_math_test.cpp | 4 ++--
libc/test/src/math/smoke/CMakeLists.txt | 1 +
libc/test/src/math/smoke/FMaximumNumTest.h | 2 +-
libc/test/src/math/smoke/fmaximum_numf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
26 files changed, 47 insertions(+), 30 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 9b2438dca9a38..17f4d2750a20f 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -432,6 +432,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -757,7 +758,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index e2d288d1f790d..ed83e92330331 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -444,6 +444,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -768,7 +769,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 9b359785f994c..9a5974b0c2435 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -440,6 +440,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -765,7 +766,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index cd88c643912c0..48e4444181c61 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -251,6 +251,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -577,7 +578,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 55eed1c456f08..56cb0c09300ff 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -158,6 +158,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmax
#libc.src.math.fmaxf
#libc.src.math.fmaxf128
+ #libc.src.math.fmaximum_numf128
#libc.src.math.fmaximumf128
#libc.src.math.fmaxl
#libc.src.math.fmin
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index fdf6b17103e35..4a6b9ef62f6d0 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -187,6 +187,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximuml
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
@@ -516,7 +517,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 63eceda56c7b1..d2a9c2c6a34b4 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -382,6 +382,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaxl
libc.src.math.fmin
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 8122738f1711f..c6d685132c77c 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -378,6 +378,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaxl
libc.src.math.fmin
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 7cce5ac0ea908..980da6c149383 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -591,6 +591,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -910,7 +911,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 5adabaac76fbf..dd1a761304004 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -419,6 +419,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 6f3df6cadae37..2acee3538e382 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -659,6 +659,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -995,7 +996,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 8101d65fa9880..28f4a1b1009b0 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -669,6 +669,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
libc.src.math.fmaximumf128
@@ -1005,7 +1006,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
- libc.src.math.fmaximum_numf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index a56ede9effa36..f2d0504fb041a 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -220,6 +220,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximuml
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
+ libc.src.math.fmaximum_numf128
libc.src.math.fmaximum_numl
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
diff --git a/libc/shared/math/fmaximum_numf128.h b/libc/shared/math/fmaximum_numf128.h
index f26724d537a3f..50557e8d25a14 100644
--- a/libc/shared/math/fmaximum_numf128.h
+++ b/libc/shared/math/fmaximum_numf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fmaximum_numf128.h"
@@ -24,6 +20,4 @@ using math::fmaximum_numf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 355009a146654..9a796fbba7729 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1052,7 +1052,7 @@ add_header_library(
HDRS
fmaximum_numf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.config
)
diff --git a/libc/src/__support/math/fmaximum_numf128.h b/libc/src/__support/math/fmaximum_numf128.h
index ccee570de2c14..f81f851201538 100644
--- a/libc/src/__support/math/fmaximum_numf128.h
+++ b/libc/src/__support/math/fmaximum_numf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr float128 fmaximum_numf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fmaximum_numf128(Float128 x, Float128 y) {
return fputil::fmaximum_num(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF128_H
diff --git a/libc/src/math/fmaximum_numf128.h b/libc/src/math/fmaximum_numf128.h
index 1e9bd8dfb81aa..a4afa4f7b2241 100644
--- a/libc/src/math/fmaximum_numf128.h
+++ b/libc/src/math/fmaximum_numf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMAXIMUM_NUMF128_H
#define LLVM_LIBC_SRC_MATH_FMAXIMUM_NUMF128_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
+
float128 fmaximum_numf128(float128 x, float128 y);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index b9dfebbc23009..f44913c04d3c7 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2227,6 +2227,7 @@ add_entrypoint_object(
HDRS
../fmaximum_numf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fmaximum_numf128
)
diff --git a/libc/src/math/generic/fmaximum_numf128.cpp b/libc/src/math/generic/fmaximum_numf128.cpp
index e6bae7947371d..fb164d4f98a18 100644
--- a/libc/src/math/generic/fmaximum_numf128.cpp
+++ b/libc/src/math/generic/fmaximum_numf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fmaximum_numf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fmaximum_numf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fmaximum_numf128, (float128 x, float128 y)) {
- return math::fmaximum_numf128(x, y);
+ return cpp::bit_cast<float128>(math::fmaximum_numf128(
+ cpp::bit_cast<Float128>(x), cpp::bit_cast<Float128>(y)));
}
} // 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 1297f5b7839fe..aeb7882dfc65e 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -398,6 +398,9 @@ static_assert(Float128(0.0) ==
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fminimumf128(Float128(0.0),
Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fmaximum_numf128(Float128(0.0),
+ 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) ==
@@ -427,9 +430,6 @@ static_assert(float128(1.0) ==
static_assert(0.0f ==
LIBC_NAMESPACE::shared::fdivf128(float128(0.0), float128(1.0)));
static_assert(0.0 == LIBC_NAMESPACE::shared::dsqrtf128(float128(0.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fmaximum_numf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fminimum_numf128(float128(0.0),
float128(0.0)));
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 98daf8399ca36..62319dc64764f 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -596,6 +596,8 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimumf128(
Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximum_numf128(
+ Float128(0.0), Float128(0.0)));
EXPECT_EQ(0LL, LIBC_NAMESPACE::shared::llroundf128(Float128(0.0)));
EXPECT_EQ(0L, LIBC_NAMESPACE::shared::lroundf128(Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0),
@@ -697,8 +699,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
0.0f16, LIBC_NAMESPACE::shared::f16subf128(float128(0.0), float128(0.0)));
EXPECT_FP_EQ(0.0f16, LIBC_NAMESPACE::shared::f16sqrtf128(float128(0.0)));
#endif // LIBC_TYPES_HAS_FLOAT16
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_numf128(
- float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_numf128(
float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0),
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index d97a7396c20b7..e819a9781a349 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -2971,6 +2971,7 @@ add_fp_unittest(
HDRS
FMaximumNumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fmaximum_numf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/FMaximumNumTest.h b/libc/test/src/math/smoke/FMaximumNumTest.h
index 14b70f029009d..49e74a3d58468 100644
--- a/libc/test/src/math/smoke/FMaximumNumTest.h
+++ b/libc/test/src/math/smoke/FMaximumNumTest.h
@@ -80,7 +80,7 @@ class FMaximumNumTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
continue;
T x = xbits.get_val();
T y = ybits.get_val();
- if ((x == 0) && (y == 0))
+ if ((x == T(0)) && (y == T(0)))
continue;
if (x > y)
diff --git a/libc/test/src/math/smoke/fmaximum_numf128_test.cpp b/libc/test/src/math/smoke/fmaximum_numf128_test.cpp
index 6855ea3b39a9c..8eb4df09d5e17 100644
--- a/libc/test/src/math/smoke/fmaximum_numf128_test.cpp
+++ b/libc/test/src/math/smoke/fmaximum_numf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMaximumNumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fmaximum_numf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMAXIMUM_NUM_TESTS(float128, LIBC_NAMESPACE::fmaximum_numf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 8410fa4ab57f3..064f7a4b14381 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5596,8 +5596,8 @@ libc_support_library(
hdrs = ["src/__support/math/fmaximum_numf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -11944,6 +11944,8 @@ libc_math_function(
libc_math_function(
name = "fmaximum_numf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fmaximum_numf128",
],
)
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
index b1fec19379f21..17d78592b02dc 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
@@ -629,6 +629,9 @@ math_test(
math_test(
name = "fmaximum_numf128",
hdrs = ["FMaximumNumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From 5ce4692c575adc82def85281cc776b906546b65b Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 23:15:50 +0530
Subject: [PATCH 2/2] fminimum_numf128
---
libc/config/baremetal/aarch64/entrypoints.txt | 2 +-
libc/config/baremetal/arm/entrypoints.txt | 2 +-
libc/config/baremetal/riscv/entrypoints.txt | 2 +-
libc/config/darwin/aarch64/entrypoints.txt | 2 +-
libc/config/darwin/x86_64/entrypoints.txt | 1 +
libc/config/freebsd/x86_64/entrypoints.txt | 2 +-
libc/config/gpu/amdgpu/entrypoints.txt | 1 +
libc/config/gpu/nvptx/entrypoints.txt | 1 +
libc/config/linux/aarch64/entrypoints.txt | 2 +-
libc/config/linux/arm/entrypoints.txt | 1 +
libc/config/linux/riscv/entrypoints.txt | 2 +-
libc/config/linux/x86_64/entrypoints.txt | 2 +-
libc/config/windows/entrypoints.txt | 1 +
libc/shared/math/fminimum_numf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fminimum_numf128.h | 11 ++++-------
libc/src/math/fminimum_numf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fminimum_numf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 6 +++---
libc/test/shared/shared_math_test.cpp | 4 ++--
libc/test/src/math/smoke/CMakeLists.txt | 1 +
libc/test/src/math/smoke/FMinimumNumTest.h | 2 +-
libc/test/src/math/smoke/fminimum_numf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
26 files changed, 47 insertions(+), 30 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 17f4d2750a20f..ab4c600cf59b9 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -450,6 +450,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -760,7 +761,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index ed83e92330331..fe8fac859e80e 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -462,6 +462,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -771,7 +772,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 9a5974b0c2435..5a0c212826ed8 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -458,6 +458,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -768,7 +769,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
# libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 48e4444181c61..70eed9bcd3e5e 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -269,6 +269,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -580,7 +581,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index 56cb0c09300ff..6932dc5ff8d10 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -164,6 +164,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmin
#libc.src.math.fminf
#libc.src.math.fminf128
+ #libc.src.math.fminimum_numf128
#libc.src.math.fminimumf128
#libc.src.math.fminl
#libc.src.math.fmod
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 4a6b9ef62f6d0..32dc32a980675 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -201,6 +201,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimuml
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
@@ -519,7 +520,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index d2a9c2c6a34b4..889a0d301bff7 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -400,6 +400,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminl
libc.src.math.fmod
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index c6d685132c77c..29d9f299d03a8 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -396,6 +396,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminl
libc.src.math.fmod
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 980da6c149383..594e8a0ca0a3d 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -609,6 +609,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -913,7 +914,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index dd1a761304004..6c0366549c574 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -437,6 +437,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 2acee3538e382..28ee04a8407c0 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -677,6 +677,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -998,7 +999,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 28f4a1b1009b0..23ef9d79cc54b 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -687,6 +687,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimumf
libc.src.math.fminimumf128
@@ -1008,7 +1009,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
- libc.src.math.fminimum_numf128
libc.src.math.fmodf128
libc.src.math.fmulf128
libc.src.math.frexpf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index f2d0504fb041a..cbfc2c0ce4126 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -234,6 +234,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimuml
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
+ libc.src.math.fminimum_numf128
libc.src.math.fminimum_numl
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
diff --git a/libc/shared/math/fminimum_numf128.h b/libc/shared/math/fminimum_numf128.h
index dcacd52b18a12..e654f0025bdf6 100644
--- a/libc/shared/math/fminimum_numf128.h
+++ b/libc/shared/math/fminimum_numf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fminimum_numf128.h"
@@ -24,6 +20,4 @@ using math::fminimum_numf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 9a796fbba7729..d4a2aefdf783c 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1358,7 +1358,7 @@ add_header_library(
HDRS
fminimum_numf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.config
)
diff --git a/libc/src/__support/math/fminimum_numf128.h b/libc/src/__support/math/fminimum_numf128.h
index 6f3ac894a7d2b..607eae7ee0e6b 100644
--- a/libc/src/__support/math/fminimum_numf128.h
+++ b/libc/src/__support/math/fminimum_numf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
namespace math {
-LIBC_INLINE constexpr float128 fminimum_numf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fminimum_numf128(Float128 x, Float128 y) {
return fputil::fminimum_num(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF128_H
diff --git a/libc/src/math/fminimum_numf128.h b/libc/src/math/fminimum_numf128.h
index 1833e9e1c9f5c..3b02a6519e037 100644
--- a/libc/src/math/fminimum_numf128.h
+++ b/libc/src/math/fminimum_numf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMINIMUM_NUMF128_H
#define LLVM_LIBC_SRC_MATH_FMINIMUM_NUMF128_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
+
float128 fminimum_numf128(float128 x, float128 y);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index f44913c04d3c7..ad14be550b6f3 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2469,6 +2469,7 @@ add_entrypoint_object(
HDRS
../fminimum_numf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fminimum_numf128
)
diff --git a/libc/src/math/generic/fminimum_numf128.cpp b/libc/src/math/generic/fminimum_numf128.cpp
index fec526cd19c41..793d3e6041a52 100644
--- a/libc/src/math/generic/fminimum_numf128.cpp
+++ b/libc/src/math/generic/fminimum_numf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fminimum_numf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fminimum_numf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fminimum_numf128, (float128 x, float128 y)) {
- return math::fminimum_numf128(x, y);
+ return cpp::bit_cast<float128>(math::fminimum_numf128(
+ cpp::bit_cast<Float128>(x), cpp::bit_cast<Float128>(y)));
}
} // 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 aeb7882dfc65e..d8720f39aeca6 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -401,6 +401,9 @@ static_assert(Float128(0.0) ==
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_numf128(Float128(0.0),
Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fminimum_numf128(Float128(0.0),
+ 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) ==
@@ -430,9 +433,6 @@ static_assert(float128(1.0) ==
static_assert(0.0f ==
LIBC_NAMESPACE::shared::fdivf128(float128(0.0), float128(1.0)));
static_assert(0.0 == LIBC_NAMESPACE::shared::dsqrtf128(float128(0.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fminimum_numf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fromfpf128(float128(0.0), 0, 32));
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 62319dc64764f..cc81968eed4dc 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -598,6 +598,8 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximum_numf128(
Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimum_numf128(
+ Float128(0.0), Float128(0.0)));
EXPECT_EQ(0LL, LIBC_NAMESPACE::shared::llroundf128(Float128(0.0)));
EXPECT_EQ(0L, LIBC_NAMESPACE::shared::lroundf128(Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0),
@@ -699,8 +701,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
0.0f16, LIBC_NAMESPACE::shared::f16subf128(float128(0.0), float128(0.0)));
EXPECT_FP_EQ(0.0f16, LIBC_NAMESPACE::shared::f16sqrtf128(float128(0.0)));
#endif // LIBC_TYPES_HAS_FLOAT16
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_numf128(
- float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0),
LIBC_NAMESPACE::shared::fromfpf128(float128(0.0), 0, 32));
EXPECT_FP_EQ(float128(0.0),
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index e819a9781a349..701fd2a6429d4 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3318,6 +3318,7 @@ add_fp_unittest(
HDRS
FMinimumNumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fminimum_numf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/FMinimumNumTest.h b/libc/test/src/math/smoke/FMinimumNumTest.h
index 10b7d7aab9343..bad31b0c647f7 100644
--- a/libc/test/src/math/smoke/FMinimumNumTest.h
+++ b/libc/test/src/math/smoke/FMinimumNumTest.h
@@ -80,7 +80,7 @@ class FMinimumNumTest : public LIBC_NAMESPACE::testing::FEnvSafeTest {
continue;
T x = xbits.get_val();
T y = ybits.get_val();
- if ((x == 0) && (y == 0))
+ if ((x == T(0)) && (y == T(0)))
continue;
if (x > y)
diff --git a/libc/test/src/math/smoke/fminimum_numf128_test.cpp b/libc/test/src/math/smoke/fminimum_numf128_test.cpp
index d773d8973286e..863e177b06cbe 100644
--- a/libc/test/src/math/smoke/fminimum_numf128_test.cpp
+++ b/libc/test/src/math/smoke/fminimum_numf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMinimumNumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fminimum_numf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMINIMUM_NUM_TESTS(float128, LIBC_NAMESPACE::fminimum_numf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 064f7a4b14381..85558b6cbc63e 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5872,8 +5872,8 @@ libc_support_library(
hdrs = ["src/__support/math/fminimum_numf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -12125,6 +12125,8 @@ libc_math_function(
libc_math_function(
name = "fminimum_numf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fminimum_numf128",
],
)
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
index 17d78592b02dc..9c6f4f099b737 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
@@ -773,6 +773,9 @@ math_test(
math_test(
name = "fminimum_numf128",
hdrs = ["FMinimumNumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
More information about the llvm-branch-commits
mailing list