[llvm-branch-commits] [libc] [llvm] [libc] Make fmaximum_mag/fminimum_mag functions use the emulated float128 type (PR #217539)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Aug 21 03:49:11 PDT 2026
https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/217539
>From 3488974e2e61861259a41d829922b723f19d3deb Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 11:55:34 +0530
Subject: [PATCH 1/5] fmaximum_magf128
---
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_magf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fmaximum_magf128.h | 11 ++++-------
libc/src/math/fmaximum_magf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fmaximum_magf128.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/FMaximumMagTest.h | 2 +-
libc/test/src/math/smoke/fmaximum_magf128_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 753df5ece57dc..c64800cfc92db 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -429,6 +429,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -763,7 +764,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 1cf3ee7eb87d1..557c96c0a58b9 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -441,6 +441,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -774,7 +775,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 517ef54bb376e..3425b8b3f38fe 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -437,6 +437,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -771,7 +772,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
# libc.src.math.fmodf128
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 6b0ddb3bc8d34..a20aacba0f336 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -248,6 +248,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -583,7 +584,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index d11c03c550636..02a336e4c4ea3 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_magf128
#libc.src.math.fmaximum_numf128
#libc.src.math.fmaximumf128
#libc.src.math.fmaxl
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 246f35980c0fe..4058c840fd0e6 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -191,6 +191,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numl
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
@@ -522,7 +523,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 6e7fbc51b7970..e743950903d5a 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -376,6 +376,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximuml
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index a00b6af787570..e8840ab7bce5f 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -372,6 +372,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximuml
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index f418d0be0e98a..c2276032bcafa 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -589,6 +589,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -917,7 +918,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 2c303a5d57017..c3c665071506f 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -416,6 +416,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 40c0dc5ef6145..206f643843560 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -657,6 +657,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -1002,7 +1003,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 975cfce1c5063..3c13609fda2a4 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -667,6 +667,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag_numf
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
@@ -1012,7 +1013,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fmaximum_magf128
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fmodf128
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 5b58e787e7ecd..97fc78388b574 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -224,6 +224,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_numl
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_magf
+ libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
diff --git a/libc/shared/math/fmaximum_magf128.h b/libc/shared/math/fmaximum_magf128.h
index 93996933d1071..88794875893d4 100644
--- a/libc/shared/math/fmaximum_magf128.h
+++ b/libc/shared/math/fmaximum_magf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAGF128_H
#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fmaximum_magf128.h"
@@ -24,6 +20,4 @@ using math::fmaximum_magf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAGF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 1ee179c4a5f31..3ae7ad29ea956 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -960,7 +960,7 @@ add_header_library(
HDRS
fmaximum_magf128.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_magf128.h b/libc/src/__support/math/fmaximum_magf128.h
index b540e0940c926..11b0385061b7c 100644
--- a/libc/src/__support/math/fmaximum_magf128.h
+++ b/libc/src/__support/math/fmaximum_magf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAGF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAGF128_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_magf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fmaximum_magf128(Float128 x, Float128 y) {
return fputil::fmaximum_mag(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAGF128_H
diff --git a/libc/src/math/fmaximum_magf128.h b/libc/src/math/fmaximum_magf128.h
index fb68af7e6a0c9..04212d893514a 100644
--- a/libc/src/math/fmaximum_magf128.h
+++ b/libc/src/math/fmaximum_magf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMAXIMUM_MAGF128_H
#define LLVM_LIBC_SRC_MATH_FMAXIMUM_MAGF128_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_magf128(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 b12b73c900abc..3bbc64d83c0f5 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2293,6 +2293,7 @@ add_entrypoint_object(
HDRS
../fmaximum_magf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fmaximum_magf128
)
diff --git a/libc/src/math/generic/fmaximum_magf128.cpp b/libc/src/math/generic/fmaximum_magf128.cpp
index d75d6a0a69b0c..97e97f6140aa0 100644
--- a/libc/src/math/generic/fmaximum_magf128.cpp
+++ b/libc/src/math/generic/fmaximum_magf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fmaximum_magf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fmaximum_magf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fmaximum_magf128, (float128 x, float128 y)) {
- return math::fmaximum_magf128(x, y);
+ return cpp::bit_cast<float128>(math::fmaximum_magf128(
+ 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 e5bf228543221..81728f723ac49 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::fmaximum_magf128(Float128(0.0),
+ Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -453,9 +456,6 @@ static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::ufromfpf128(float128(0.0), 0, 32));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::ufromfpxf128(float128(0.0), 0, 32));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fmaximum_magf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fminimum_magf128(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 05cdd06049b2c..273c5888eca1d 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -584,6 +584,8 @@ 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::fmaximum_magf128(
+ 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)));
@@ -715,8 +717,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
LIBC_NAMESPACE::shared::ufromfpf128(float128(0.0), 0, 32));
EXPECT_FP_EQ(float128(0.0),
LIBC_NAMESPACE::shared::ufromfpxf128(float128(0.0), 0, 32));
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_magf128(
- float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_magf128(
float128(0.0), float128(0.0)));
float128 totalorderf128_x = float128(0.0);
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 4d41d1cf25f81..bee44a978094f 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3066,6 +3066,7 @@ add_fp_unittest(
HDRS
FMaximumMagTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fmaximum_magf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.basic_operations
diff --git a/libc/test/src/math/smoke/FMaximumMagTest.h b/libc/test/src/math/smoke/FMaximumMagTest.h
index 6a45ad13fc293..001501f311878 100644
--- a/libc/test/src/math/smoke/FMaximumMagTest.h
+++ b/libc/test/src/math/smoke/FMaximumMagTest.h
@@ -69,7 +69,7 @@ class FMaximumMagTest : 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 (LIBC_NAMESPACE::fputil::abs(x) > LIBC_NAMESPACE::fputil::abs(y))
diff --git a/libc/test/src/math/smoke/fmaximum_magf128_test.cpp b/libc/test/src/math/smoke/fmaximum_magf128_test.cpp
index d7ae8ec8d7a03..653e786c9b0ac 100644
--- a/libc/test/src/math/smoke/fmaximum_magf128_test.cpp
+++ b/libc/test/src/math/smoke/fmaximum_magf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMaximumMagTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fmaximum_magf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMAXIMUM_MAG_TESTS(float128, LIBC_NAMESPACE::fmaximum_magf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 83db1d3cb235d..048ee071590fa 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5510,8 +5510,8 @@ libc_support_library(
hdrs = ["src/__support/math/fmaximum_magf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -11867,6 +11867,8 @@ libc_math_function(
libc_math_function(
name = "fmaximum_magf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fmaximum_magf128",
],
)
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 cb9fff7e83fc3..a4738612f2a49 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
@@ -589,6 +589,9 @@ math_test(
math_test(
name = "fmaximum_magf128",
hdrs = ["FMaximumMagTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From 2954c69a42fd7ae7a9d69e0256e74d37ef5a889e Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 11:57:39 +0530
Subject: [PATCH 2/5] fminimum_magf128
---
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_magf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fminimum_magf128.h | 11 ++++-------
libc/src/math/fminimum_magf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fminimum_magf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 10 +++++-----
libc/test/shared/shared_math_test.cpp | 8 ++++----
libc/test/src/math/smoke/CMakeLists.txt | 1 +
libc/test/src/math/smoke/FMinimumMagTest.h | 2 +-
libc/test/src/math/smoke/fminimum_magf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
26 files changed, 51 insertions(+), 34 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index c64800cfc92db..198056f0642aa 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -448,6 +448,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -765,7 +766,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 557c96c0a58b9..5b5ba8c14d483 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -460,6 +460,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -776,7 +777,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 3425b8b3f38fe..be35db4205c7f 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -456,6 +456,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -773,7 +774,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
# 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 a20aacba0f336..ecea1dbb192f3 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -267,6 +267,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -585,7 +586,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 02a336e4c4ea3..0a13546740b1c 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -165,6 +165,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmin
#libc.src.math.fminf
#libc.src.math.fminf128
+ #libc.src.math.fminimum_magf128
#libc.src.math.fminimum_numf128
#libc.src.math.fminimumf128
#libc.src.math.fminl
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 4058c840fd0e6..28c14c44db80a 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -206,6 +206,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numl
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
@@ -524,7 +525,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 e743950903d5a..d43c82d00f2e5 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -395,6 +395,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimuml
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index e8840ab7bce5f..303b438653e65 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -391,6 +391,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimuml
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index c2276032bcafa..793714dd02ee5 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -608,6 +608,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -919,7 +920,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 c3c665071506f..dfb0752222c8b 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -435,6 +435,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 206f643843560..6a533fdb19189 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -676,6 +676,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -1004,7 +1005,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 3c13609fda2a4..2ac8231a4015e 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -686,6 +686,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag_numf
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
@@ -1014,7 +1015,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fminimum_mag_numf128
- libc.src.math.fminimum_magf128
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 97fc78388b574..7b5cbc40f9f7f 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -239,6 +239,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_numl
libc.src.math.fminimum_mag
libc.src.math.fminimum_magf
+ libc.src.math.fminimum_magf128
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
diff --git a/libc/shared/math/fminimum_magf128.h b/libc/shared/math/fminimum_magf128.h
index cf8794c5b16ce..f538605febfe4 100644
--- a/libc/shared/math/fminimum_magf128.h
+++ b/libc/shared/math/fminimum_magf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_MAGF128_H
#define LLVM_LIBC_SHARED_MATH_FMINIMUM_MAGF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fminimum_magf128.h"
@@ -24,6 +20,4 @@ using math::fminimum_magf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_MAGF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 3ae7ad29ea956..3ff2302621e23 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1236,7 +1236,7 @@ add_header_library(
HDRS
fminimum_magf128.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_magf128.h b/libc/src/__support/math/fminimum_magf128.h
index ea571905fb7df..d81f64821da63 100644
--- a/libc/src/__support/math/fminimum_magf128.h
+++ b/libc/src/__support/math/fminimum_magf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAGF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAGF128_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_magf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fminimum_magf128(Float128 x, Float128 y) {
return fputil::fminimum_mag(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAGF128_H
diff --git a/libc/src/math/fminimum_magf128.h b/libc/src/math/fminimum_magf128.h
index 00eee4e287933..4f8114cf49651 100644
--- a/libc/src/math/fminimum_magf128.h
+++ b/libc/src/math/fminimum_magf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMINIMUM_MAGF128_H
#define LLVM_LIBC_SRC_MATH_FMINIMUM_MAGF128_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_magf128(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 3bbc64d83c0f5..b92d1cb27ca36 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2536,6 +2536,7 @@ add_entrypoint_object(
HDRS
../fminimum_magf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fminimum_magf128
)
diff --git a/libc/src/math/generic/fminimum_magf128.cpp b/libc/src/math/generic/fminimum_magf128.cpp
index 56c6a48d291aa..64c04ef785152 100644
--- a/libc/src/math/generic/fminimum_magf128.cpp
+++ b/libc/src/math/generic/fminimum_magf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fminimum_magf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fminimum_magf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fminimum_magf128, (float128 x, float128 y)) {
- return math::fminimum_magf128(x, y);
+ return cpp::bit_cast<float128>(math::fminimum_magf128(
+ 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 81728f723ac49..06a3ad3c5e98c 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -37,14 +37,14 @@ static_assert(0.0 == LIBC_NAMESPACE::shared::fmaximum(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fminimum(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fmin(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fmax(0.0, 0.0));
+static_assert(0.0 == LIBC_NAMESPACE::shared::fmaximum_mag(0.0, 0.0));
+static_assert(0.0 == LIBC_NAMESPACE::shared::fminimum_mag(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fmaximum_num(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fminimum_num(0.0, 0.0));
static_assert(0.0 == LIBC_NAMESPACE::shared::fromfp(0.0, 0, 32));
static_assert(0.0 == LIBC_NAMESPACE::shared::fromfpx(0.0, 0, 32));
static_assert(0.0 == LIBC_NAMESPACE::shared::ufromfp(0.0, 0, 32));
static_assert(0.0 == LIBC_NAMESPACE::shared::ufromfpx(0.0, 0, 32));
-static_assert(0.0 == LIBC_NAMESPACE::shared::fmaximum_mag(0.0, 0.0));
-static_assert(0.0 == LIBC_NAMESPACE::shared::fminimum_mag(0.0, 0.0));
static_assert(-1.0 == [] {
double getpayload_x = 0.0;
return LIBC_NAMESPACE::shared::getpayload(&getpayload_x);
@@ -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::fminimum_magf128(Float128(0.0),
+ Float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_magf128(Float128(0.0),
Float128(0.0)));
@@ -456,9 +459,6 @@ static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::ufromfpf128(float128(0.0), 0, 32));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::ufromfpxf128(float128(0.0), 0, 32));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fminimum_magf128(float128(0.0),
- float128(0.0)));
constexpr float128 TOTALORDERF128_X = float128(0.0);
constexpr float128 TOTALORDERF128_Y = float128(0.0);
static_assert(1 == LIBC_NAMESPACE::shared::totalorderf128(&TOTALORDERF128_X,
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 273c5888eca1d..862734e19313a 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -584,8 +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::fmaximum_magf128(
- 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)));
@@ -598,6 +596,10 @@ 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::fminimum_magf128(
+ Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_magf128(
+ 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(
@@ -717,8 +719,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
LIBC_NAMESPACE::shared::ufromfpf128(float128(0.0), 0, 32));
EXPECT_FP_EQ(float128(0.0),
LIBC_NAMESPACE::shared::ufromfpxf128(float128(0.0), 0, 32));
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_magf128(
- float128(0.0), float128(0.0)));
float128 totalorderf128_x = float128(0.0);
float128 totalorderf128_y = float128(0.0);
EXPECT_EQ(1, LIBC_NAMESPACE::shared::totalorderf128(&totalorderf128_x,
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index bee44a978094f..a998bcbec0787 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3410,6 +3410,7 @@ add_fp_unittest(
HDRS
FMinimumMagTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fminimum_magf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/FMinimumMagTest.h b/libc/test/src/math/smoke/FMinimumMagTest.h
index ee24042cfe242..4732fa1d26561 100644
--- a/libc/test/src/math/smoke/FMinimumMagTest.h
+++ b/libc/test/src/math/smoke/FMinimumMagTest.h
@@ -69,7 +69,7 @@ class FMinimumMagTest : 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 (LIBC_NAMESPACE::fputil::abs(x) < LIBC_NAMESPACE::fputil::abs(y))
diff --git a/libc/test/src/math/smoke/fminimum_magf128_test.cpp b/libc/test/src/math/smoke/fminimum_magf128_test.cpp
index 010ee6e73bee0..405e735841419 100644
--- a/libc/test/src/math/smoke/fminimum_magf128_test.cpp
+++ b/libc/test/src/math/smoke/fminimum_magf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMinimumMagTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fminimum_magf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMINIMUM_MAG_TESTS(float128, LIBC_NAMESPACE::fminimum_magf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 048ee071590fa..0122b39d7984b 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5758,8 +5758,8 @@ libc_support_library(
hdrs = ["src/__support/math/fminimum_magf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -12057,6 +12057,8 @@ libc_math_function(
libc_math_function(
name = "fminimum_magf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fminimum_magf128",
],
)
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 a4738612f2a49..2db47f7d952fa 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
@@ -726,6 +726,9 @@ math_test(
math_test(
name = "fminimum_magf128",
hdrs = ["FMinimumMagTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From 4a9a48f61205ea11ee0585adc500a7ca41d8a5cd Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 12:35:53 +0530
Subject: [PATCH 3/5] nit
---
libc/test/shared/shared_math_test.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 862734e19313a..05030b2794ba6 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -596,9 +596,9 @@ 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::fminimum_magf128(
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimum_magf128(
Float128(0.0), Float128(0.0)));
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_magf128(
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximum_magf128(
Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximum_numf128(
Float128(0.0), Float128(0.0)));
>From 25aed2fb91eb3e9e1ae267dabefd5d7b7d21343c Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 12:40:14 +0530
Subject: [PATCH 4/5] nit
---
libc/test/shared/shared_math_constexpr_test.cpp | 12 ++++++------
libc/test/shared/shared_math_test.cpp | 4 ++--
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index 06a3ad3c5e98c..d3b7fa842398d 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -381,12 +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::fminimum_magf128(Float128(0.0),
- Float128(0.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fmaximum_magf128(Float128(0.0),
- Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -404,6 +398,12 @@ 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_magf128(Float128(0.0),
+ Float128(0.0)));
+static_assert(float128(0.0) ==
+ LIBC_NAMESPACE::shared::fminimum_magf128(Float128(0.0),
+ Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_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 05030b2794ba6..6fb094f2db962 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -596,10 +596,10 @@ 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::fminimum_magf128(
- Float128(0.0), Float128(0.0)));
EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fmaximum_magf128(
Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimum_magf128(
+ 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(
>From f773c060f21324b97a0ff51fd5f784d09153e5ed Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 13:11:13 +0530
Subject: [PATCH 5/5] nit
---
libc/test/shared/shared_math_constexpr_test.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index d3b7fa842398d..51b8e673c606f 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -401,7 +401,7 @@ static_assert(Float128(0.0) ==
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_magf128(Float128(0.0),
Float128(0.0)));
-static_assert(float128(0.0) ==
+static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fminimum_magf128(Float128(0.0),
Float128(0.0)));
static_assert(Float128(0.0) ==
More information about the llvm-branch-commits
mailing list