[llvm-branch-commits] [libc] [llvm] [libc] Make fmaximum/fminimum functions use the emulated float128 type (PR #217390)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Aug 27 07:20:07 PDT 2026
https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/217390
>From bd7154e462665d7fc0686fb90bcb8eb56cd95d26 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 22:09:51 +0530
Subject: [PATCH 1/4] fmaximumf128
---
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/fmaximumf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fmaximumf128.h | 11 ++++-------
libc/src/math/fmaximumf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fmaximumf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 6 +++---
libc/test/shared/shared_math_test.cpp | 6 +++---
libc/test/src/math/smoke/CMakeLists.txt | 1 +
libc/test/src/math/smoke/fmaximumf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
25 files changed, 47 insertions(+), 30 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 26d01d0e2c95d..5da5d8995dcbe 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -434,6 +434,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -764,7 +765,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 a93736660c3e5..71e5845211162 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -446,6 +446,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -775,7 +776,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 2aae0cd412333..18003550a2de1 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -442,6 +442,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -772,7 +773,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 6d024d80be2d5..5d3829ff0e1ba 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -253,6 +253,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -584,7 +585,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 bbb9bb990eee3..39f4dc0fb2aa0 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.fmaximumf128
#libc.src.math.fmaxl
#libc.src.math.fmin
#libc.src.math.fminf
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 17b71e9c148d1..73b2106814820 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -183,6 +183,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -523,7 +524,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 8220952c46cd9..656acbc546c64 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -372,6 +372,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 18678d3e9982c..eb8b95bc7cff8 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -368,6 +368,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 9f67ae6f9f0aa..2c44c77fb5ccf 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -599,6 +599,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -923,7 +924,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 10aaadbb1ee39..cb6661baf87ac 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -426,6 +426,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 7281f35243c2d..ba524f14e32c8 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -668,6 +668,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -1009,7 +1010,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 8ea21c979f603..04716dca52a59 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -677,6 +677,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numf
libc.src.math.fmaximum_numl
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaxl
libc.src.math.fmin
@@ -1018,7 +1019,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
- libc.src.math.fmaximumf128
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 26b65e2d090b7..cc2120e7e7a6e 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -216,6 +216,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
+ libc.src.math.fmaximumf128
libc.src.math.fmaximuml
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
diff --git a/libc/shared/math/fmaximumf128.h b/libc/shared/math/fmaximumf128.h
index 12b53d74e4f7e..af6beefbb99fb 100644
--- a/libc/shared/math/fmaximumf128.h
+++ b/libc/shared/math/fmaximumf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMAXIMUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fmaximumf128.h"
@@ -24,6 +20,4 @@ using math::fmaximumf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index e1c3506bb5e75..62886c3a8fd93 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -899,7 +899,7 @@ add_header_library(
HDRS
fmaximumf128.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/fmaximumf128.h b/libc/src/__support/math/fmaximumf128.h
index 136b16419cd58..91326ef27887f 100644
--- a/libc/src/__support/math/fmaximumf128.h
+++ b/libc/src/__support/math/fmaximumf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUMF128_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 fmaximumf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fmaximumf128(Float128 x, Float128 y) {
return fputil::fmaximum(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUMF128_H
diff --git a/libc/src/math/fmaximumf128.h b/libc/src/math/fmaximumf128.h
index 3cc6fa023c797..5eb3451448047 100644
--- a/libc/src/math/fmaximumf128.h
+++ b/libc/src/math/fmaximumf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMAXIMUMF128_H
#define LLVM_LIBC_SRC_MATH_FMAXIMUMF128_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 fmaximumf128(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 bf7bbf3f6116b..9c3bd96fe4a23 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2172,6 +2172,7 @@ add_entrypoint_object(
HDRS
../fmaximumf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fmaximumf128
)
diff --git a/libc/src/math/generic/fmaximumf128.cpp b/libc/src/math/generic/fmaximumf128.cpp
index 88b698c19ccea..889cdbf4c35dc 100644
--- a/libc/src/math/generic/fmaximumf128.cpp
+++ b/libc/src/math/generic/fmaximumf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fmaximumf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fmaximumf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fmaximumf128, (float128 x, float128 y)) {
- return math::fmaximumf128(x, y);
+ return cpp::bit_cast<float128>(math::fmaximumf128(
+ 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 0e6ef3676ccfd..e1793bbee8a8e 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -381,6 +381,9 @@ 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::fmaximumf128(Float128(0.0),
+ Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -430,9 +433,6 @@ static_assert(float128(1.0) ==
LIBC_NAMESPACE::shared::fdimf128(float128(1.0), float128(0.0)));
static_assert(0.0f ==
LIBC_NAMESPACE::shared::fdivf128(float128(0.0), float128(1.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fmaximumf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fminimumf128(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 b713aa9a376d3..c9e39cff0ed1a 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -584,6 +584,9 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::atan2f128(Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::ceilf128(Float128(0.0)));
+
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximumf128(
+ Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::copysignf128(
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fabsf128(Float128(0.0)));
@@ -702,9 +705,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::fmaximumf128(
- 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(
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 569746d6568e2..38a5dbefef5ca 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -2878,6 +2878,7 @@ add_fp_unittest(
HDRS
FMaximumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fmaximumf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/fmaximumf128_test.cpp b/libc/test/src/math/smoke/fmaximumf128_test.cpp
index 7e0b97bcdd4de..3d8a00842df6d 100644
--- a/libc/test/src/math/smoke/fmaximumf128_test.cpp
+++ b/libc/test/src/math/smoke/fmaximumf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMaximumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fmaximumf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMAXIMUM_TESTS(float128, LIBC_NAMESPACE::fmaximumf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index fed7c367da78c..14f995c8ea30e 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5464,8 +5464,8 @@ libc_support_library(
hdrs = ["src/__support/math/fmaximumf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -11890,6 +11890,8 @@ libc_math_function(
libc_math_function(
name = "fmaximumf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fmaximumf128",
],
)
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 90cc4e35bf507..1b050f5033d91 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
@@ -574,6 +574,9 @@ math_test(
math_test(
name = "fmaximumf128",
hdrs = ["FMaximumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From c11aac42bf5275e13bb5a206a771b038e52c0639 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 22:14:00 +0530
Subject: [PATCH 2/4] fminimumf128
---
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/fminimumf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fminimumf128.h | 11 ++++-------
libc/src/math/fminimumf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fminimumf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 12 ++++++------
libc/test/shared/shared_math_test.cpp | 9 ++++-----
libc/test/src/math/smoke/CMakeLists.txt | 1 +
libc/test/src/math/smoke/fminimumf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
25 files changed, 51 insertions(+), 35 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 5da5d8995dcbe..af9315e99797f 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -451,6 +451,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -768,7 +769,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 71e5845211162..4c0d51c4feb95 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -463,6 +463,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -779,7 +780,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 18003550a2de1..83a9960734f85 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -459,6 +459,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -776,7 +777,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
# 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 5d3829ff0e1ba..3e42341cdadf3 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -270,6 +270,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -588,7 +589,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 39f4dc0fb2aa0..c41165b5b4fd9 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -163,6 +163,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmin
#libc.src.math.fminf
#libc.src.math.fminf128
+ #libc.src.math.fminimumf128
#libc.src.math.fminl
#libc.src.math.fmod
#libc.src.math.fmodf
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 73b2106814820..545f9bf99e760 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -196,6 +196,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numl
libc.src.math.fminimum
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -527,7 +528,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 656acbc546c64..0cd9e13186e2f 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -389,6 +389,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index eb8b95bc7cff8..dcff512e17fc2 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -385,6 +385,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 2c44c77fb5ccf..8191103e6d799 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -616,6 +616,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -927,7 +928,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 cb6661baf87ac..add3f99f7cf2c 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -443,6 +443,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index ba524f14e32c8..9d665089e4e21 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -685,6 +685,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -1013,7 +1014,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 04716dca52a59..f5154d6e7a9ad 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -694,6 +694,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numf
libc.src.math.fminimum_numl
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminl
libc.src.math.fmod
@@ -1022,7 +1023,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminimum_numf128
- libc.src.math.fminimumf128
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 cc2120e7e7a6e..26fee125870c5 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -229,6 +229,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numl
libc.src.math.fminimum
libc.src.math.fminimumf
+ libc.src.math.fminimumf128
libc.src.math.fminimuml
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
diff --git a/libc/shared/math/fminimumf128.h b/libc/shared/math/fminimumf128.h
index 1f31c05d73c15..2604222a7e74f 100644
--- a/libc/shared/math/fminimumf128.h
+++ b/libc/shared/math/fminimumf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMINIMUMF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fminimumf128.h"
@@ -24,6 +20,4 @@ using math::fminimumf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMINIMUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 62886c3a8fd93..57530f4b8b460 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1175,7 +1175,7 @@ add_header_library(
HDRS
fminimumf128.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/fminimumf128.h b/libc/src/__support/math/fminimumf128.h
index cfbe36ba1fb81..6a6ed675ffa27 100644
--- a/libc/src/__support/math/fminimumf128.h
+++ b/libc/src/__support/math/fminimumf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUMF128_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 fminimumf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fminimumf128(Float128 x, Float128 y) {
return fputil::fminimum(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUMF128_H
diff --git a/libc/src/math/fminimumf128.h b/libc/src/math/fminimumf128.h
index d507766059909..18c5d4d8c1672 100644
--- a/libc/src/math/fminimumf128.h
+++ b/libc/src/math/fminimumf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMINIMUMF128_H
#define LLVM_LIBC_SRC_MATH_FMINIMUMF128_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 fminimumf128(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 9c3bd96fe4a23..ed5e07a9d818d 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2413,6 +2413,7 @@ add_entrypoint_object(
HDRS
../fminimumf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fminimumf128
)
diff --git a/libc/src/math/generic/fminimumf128.cpp b/libc/src/math/generic/fminimumf128.cpp
index b8fb50f0d424c..77c8504d49519 100644
--- a/libc/src/math/generic/fminimumf128.cpp
+++ b/libc/src/math/generic/fminimumf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fminimumf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fminimumf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fminimumf128, (float128 x, float128 y)) {
- return math::fminimumf128(x, y);
+ return cpp::bit_cast<float128>(math::fminimumf128(
+ 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 e1793bbee8a8e..e9a9791529e59 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -381,9 +381,6 @@ 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::fmaximumf128(Float128(0.0),
- Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -395,6 +392,12 @@ static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fmaxf128(Float128(0.0), Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fminf128(Float128(0.0), Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fmaximumf128(Float128(0.0),
+ Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fminimumf128(Float128(0.0),
+ Float128(0.0)));
static_assert(1 == LIBC_NAMESPACE::shared::iscanonicalf128(Float128(0.0)));
static_assert(0 == LIBC_NAMESPACE::shared::isnanf128(Float128(0.0)));
static_assert(0.0 == LIBC_NAMESPACE::shared::issignalingf128(Float128(0.0)));
@@ -433,9 +436,6 @@ static_assert(float128(1.0) ==
LIBC_NAMESPACE::shared::fdimf128(float128(1.0), float128(0.0)));
static_assert(0.0f ==
LIBC_NAMESPACE::shared::fdivf128(float128(0.0), float128(1.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fminimumf128(float128(0.0),
- float128(0.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),
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index c9e39cff0ed1a..b1a3041947c86 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -584,9 +584,6 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::atan2f128(Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::ceilf128(Float128(0.0)));
-
- EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximumf128(
- Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::copysignf128(
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fabsf128(Float128(0.0)));
@@ -595,6 +592,10 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
LIBC_NAMESPACE::shared::fmaxf128(Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0),
LIBC_NAMESPACE::shared::fminf128(Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximumf128(
+ Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimumf128(
+ Float128(0.0), Float128(0.0)));
EXPECT_EQ(1, LIBC_NAMESPACE::shared::iscanonicalf128(Float128(0.0)));
EXPECT_EQ(0, LIBC_NAMESPACE::shared::isnanf128(Float128(0.0)));
EXPECT_EQ(0, LIBC_NAMESPACE::shared::issignalingf128(Float128(0.0)));
@@ -705,8 +706,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::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_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_numf128(
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 38a5dbefef5ca..62a141ae66dbe 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3224,6 +3224,7 @@ add_fp_unittest(
HDRS
FMinimumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fminimumf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/fminimumf128_test.cpp b/libc/test/src/math/smoke/fminimumf128_test.cpp
index 163090b8a9ec5..ae585f15beffc 100644
--- a/libc/test/src/math/smoke/fminimumf128_test.cpp
+++ b/libc/test/src/math/smoke/fminimumf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMinimumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fminimumf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMINIMUM_TESTS(float128, LIBC_NAMESPACE::fminimumf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 14f995c8ea30e..5851c104c8e2f 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5712,8 +5712,8 @@ libc_support_library(
hdrs = ["src/__support/math/fminimumf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -12076,6 +12076,8 @@ libc_math_function(
libc_math_function(
name = "fminimumf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fminimumf128",
],
)
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 1b050f5033d91..aba43a2ea5a61 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
@@ -705,6 +705,9 @@ math_test(
math_test(
name = "fminimumf128",
hdrs = ["FMinimumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From cae8fce4bf92c08f1a8ccac4598d89db23c8fbf5 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 22:50:11 +0530
Subject: [PATCH 3/4] nit:cast
---
libc/test/src/math/smoke/FMaximumTest.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/math/smoke/FMaximumTest.h b/libc/test/src/math/smoke/FMaximumTest.h
index a839eb02b25d8..d7efcd0869a86 100644
--- a/libc/test/src/math/smoke/FMaximumTest.h
+++ b/libc/test/src/math/smoke/FMaximumTest.h
@@ -68,7 +68,7 @@ class FMaximumTest : 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)
>From 82786f1783dd7c70f27c614361885ec268e87bc2 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Wed, 19 Aug 2026 23:07:00 +0530
Subject: [PATCH 4/4] nit
---
libc/test/src/math/smoke/FMinimumTest.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/src/math/smoke/FMinimumTest.h b/libc/test/src/math/smoke/FMinimumTest.h
index 6770fdd2e648c..f8976ad838496 100644
--- a/libc/test/src/math/smoke/FMinimumTest.h
+++ b/libc/test/src/math/smoke/FMinimumTest.h
@@ -68,7 +68,7 @@ class FMinimumTest : 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)
More information about the llvm-branch-commits
mailing list