[llvm-branch-commits] [libc] [llvm] [libc] Make fmaximum_mag_num/fminimum_mag_num functions use the emulated float128 type (PR #217549)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Sep 2 07:54:27 PDT 2026
https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/217549
>From 3f7ff6b763762fa8bd6e46fbebe76c5dd0792d62 Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 13:20:16 +0530
Subject: [PATCH 1/2] fminimum_mag_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_mag_numf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fminimum_mag_numf128.h | 11 ++++-------
libc/src/math/fminimum_mag_numf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fminimum_mag_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/FMaximumMagNumTest.h | 2 +-
libc/test/src/math/smoke/FMinimumMagNumTest.h | 2 +-
.../test/src/math/smoke/fminimum_mag_numf128_test.cpp | 5 +++++
utils/bazel/llvm-project-overlay/libc/BUILD.bazel | 4 +++-
.../libc/test/src/math/smoke/BUILD.bazel | 3 +++
27 files changed, 48 insertions(+), 31 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index b9822e26199f0..72db9d96de447 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -446,6 +446,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -769,7 +770,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 cc9f0a5031e5a..b400f88cde60f 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -458,6 +458,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -780,7 +781,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 7a7746ccc3829..ae928f159a719 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -454,6 +454,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -777,7 +778,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 5f164fa98311b..b2835ee6fed45 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -265,6 +265,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -589,7 +590,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 a2c86acfc2d28..8e97a03b0269a 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_mag_numf128
#libc.src.math.fminimum_magf128
#libc.src.math.fminimum_numf128
#libc.src.math.fminimumf128
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 68ff19e72268e..f5c8b89f266fe 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -210,6 +210,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fmul
libc.src.math.fmod
@@ -529,7 +530,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 edfaef72cb9c3..bfdfc7e9d215b 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -399,6 +399,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 7b3217b68649e..cabc73c7b7908 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -395,6 +395,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_num
libc.src.math.fminimum_numf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 217e77437ff21..342e4b6252962 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -623,6 +623,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -940,7 +941,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 b0bdc094b69bb..2b836ad2f9a61 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -448,6 +448,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index a820ddb05f60b..4114f8f032b11 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -692,6 +692,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -1026,7 +1027,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 b97c3ff25ab29..096da9f94642b 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -701,6 +701,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fminimum_magf
libc.src.math.fminimum_magf128
@@ -1035,7 +1036,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdivf128
libc.src.math.ffmaf128
libc.src.math.fmaximum_mag_numf128
- libc.src.math.fminimum_mag_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 033741aa38e18..c804c6099bb5f 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -243,6 +243,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fminimum_magl
libc.src.math.fminimum_mag_num
libc.src.math.fminimum_mag_numf
+ libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_mag_numl
libc.src.math.fmul
libc.src.math.fmod
diff --git a/libc/shared/math/fminimum_mag_numf128.h b/libc/shared/math/fminimum_mag_numf128.h
index 416a9c610bfe2..75e04f510f76d 100644
--- a/libc/shared/math/fminimum_mag_numf128.h
+++ b/libc/shared/math/fminimum_mag_numf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMINIMUM_MAG_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_mag_numf128.h"
@@ -24,6 +20,4 @@ using math::fminimum_mag_numf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_MAG_NUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 7ec1dc12628f9..7d3f925c326b4 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1295,7 +1295,7 @@ add_header_library(
HDRS
fminimum_mag_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_mag_numf128.h b/libc/src/__support/math/fminimum_mag_numf128.h
index d8b23a38247f8..b02f388f4a8fd 100644
--- a/libc/src/__support/math/fminimum_mag_numf128.h
+++ b/libc/src/__support/math/fminimum_mag_numf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAG_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_mag_numf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fminimum_mag_numf128(Float128 x, Float128 y) {
return fputil::fminimum_mag_num(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_MAG_NUMF128_H
diff --git a/libc/src/math/fminimum_mag_numf128.h b/libc/src/math/fminimum_mag_numf128.h
index e3e69a770c667..73d91fdd40bb6 100644
--- a/libc/src/math/fminimum_mag_numf128.h
+++ b/libc/src/math/fminimum_mag_numf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMINIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SRC_MATH_FMINIMUM_MAG_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_mag_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 51719babdd3fb..0bb217d617c60 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2611,6 +2611,7 @@ add_entrypoint_object(
HDRS
../fminimum_mag_numf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fminimum_mag_numf128
)
diff --git a/libc/src/math/generic/fminimum_mag_numf128.cpp b/libc/src/math/generic/fminimum_mag_numf128.cpp
index 27f7656733d27..f0a6a488ace54 100644
--- a/libc/src/math/generic/fminimum_mag_numf128.cpp
+++ b/libc/src/math/generic/fminimum_mag_numf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fminimum_mag_numf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fminimum_mag_numf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fminimum_mag_numf128, (float128 x, float128 y)) {
- return math::fminimum_mag_numf128(x, y);
+ return cpp::bit_cast<float128>(math::fminimum_mag_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 82a501514fed6..c7279dfe659ac 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::fminimum_mag_numf128(Float128(0.0),
+ Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -480,9 +483,6 @@ static_assert(float128(0.0) == [] {
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_mag_numf128(float128(0.0),
float128(0.0)));
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fminimum_mag_numf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::remainderf128(float128(1.0),
float128(1.0)));
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 351c765cfc4db..19e03e6605fb9 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::fminimum_mag_numf128(
+ 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)));
@@ -737,8 +739,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
EXPECT_FP_EQ(float128(0.0), modff128_iptr);
EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_mag_numf128(
float128(0.0), float128(0.0)));
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fminimum_mag_numf128(
- float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::remainderf128(
float128(1.0), float128(1.0)));
int remquof128_exp = 0;
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 50e950e6c6546..200ca486160af 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3523,6 +3523,7 @@ add_fp_unittest(
HDRS
FMinimumMagNumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fminimum_mag_numf128
libc.src.__support.CPP.algorithm
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/FMaximumMagNumTest.h b/libc/test/src/math/smoke/FMaximumMagNumTest.h
index b5c4347857d4c..96f703cbd63ac 100644
--- a/libc/test/src/math/smoke/FMaximumMagNumTest.h
+++ b/libc/test/src/math/smoke/FMaximumMagNumTest.h
@@ -81,7 +81,7 @@ class FMaximumMagNumTest : 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/FMinimumMagNumTest.h b/libc/test/src/math/smoke/FMinimumMagNumTest.h
index a5809ea471f63..6e504bfc94414 100644
--- a/libc/test/src/math/smoke/FMinimumMagNumTest.h
+++ b/libc/test/src/math/smoke/FMinimumMagNumTest.h
@@ -81,7 +81,7 @@ class FMinimumMagNumTest : 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_mag_numf128_test.cpp b/libc/test/src/math/smoke/fminimum_mag_numf128_test.cpp
index f1db025f48954..29f9bd434a701 100644
--- a/libc/test/src/math/smoke/fminimum_mag_numf128_test.cpp
+++ b/libc/test/src/math/smoke/fminimum_mag_numf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMinimumMagNumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fminimum_mag_numf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMINIMUM_MAG_NUM_TESTS(float128, LIBC_NAMESPACE::fminimum_mag_numf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 3712b6a00a2e0..3da45530979c8 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5834,8 +5834,8 @@ libc_support_library(
hdrs = ["src/__support/math/fminimum_mag_numf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -12194,6 +12194,8 @@ libc_math_function(
libc_math_function(
name = "fminimum_mag_numf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fminimum_mag_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 9fc31339b415c..a9269f1fb713b 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
@@ -762,6 +762,9 @@ math_test(
math_test(
name = "fminimum_mag_numf128",
hdrs = ["FMinimumMagNumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
>From a0f5c7e54add90ac3ed811f281eb839be81862df Mon Sep 17 00:00:00 2001
From: Sukumarsawant <sawantsukumar at gmail.com>
Date: Thu, 20 Aug 2026 13:22:10 +0530
Subject: [PATCH 2/2] fmaximum+mag_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_mag_numf128.h | 6 ------
libc/src/__support/math/CMakeLists.txt | 2 +-
libc/src/__support/math/fmaximum_mag_numf128.h | 11 ++++-------
libc/src/math/fmaximum_mag_numf128.h | 5 +++++
libc/src/math/generic/CMakeLists.txt | 1 +
libc/src/math/generic/fmaximum_mag_numf128.cpp | 6 +++++-
libc/test/shared/shared_math_constexpr_test.cpp | 12 ++++++------
libc/test/shared/shared_math_test.cpp | 8 ++++----
libc/test/src/math/smoke/CMakeLists.txt | 1 +
.../src/math/smoke/fmaximum_mag_numf128_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(+), 34 deletions(-)
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 72db9d96de447..526d36dc692eb 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -427,6 +427,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -769,7 +770,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 b400f88cde60f..0411885638a6a 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -439,6 +439,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -780,7 +781,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 ae928f159a719..6604dc4a3361c 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -435,6 +435,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -777,7 +778,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 b2835ee6fed45..724b06f07bec0 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -246,6 +246,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -589,7 +590,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 8e97a03b0269a..176a9019c4f57 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_mag_numf128
#libc.src.math.fmaximum_magf128
#libc.src.math.fmaximum_numf128
#libc.src.math.fmaximumf128
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index f5c8b89f266fe..efe43741e48fb 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -195,6 +195,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fminimum
libc.src.math.fminimumf
@@ -529,7 +530,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 bfdfc7e9d215b..8892030295d0b 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -380,6 +380,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index cabc73c7b7908..c51c683d39201 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -376,6 +376,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_num
libc.src.math.fmaximum_numf
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 342e4b6252962..1be64b74b2745 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -604,6 +604,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -940,7 +941,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 2b836ad2f9a61..7398acb691281 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -429,6 +429,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 4114f8f032b11..08174e31f2119 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -673,6 +673,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -1026,7 +1027,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 096da9f94642b..3c478d06629f6 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -682,6 +682,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fmaximum_magf
libc.src.math.fmaximum_magf128
@@ -1035,7 +1036,6 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaximum_mag_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 c804c6099bb5f..3e4b63ccd9cb2 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -228,6 +228,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaximum_magl
libc.src.math.fmaximum_mag_num
libc.src.math.fmaximum_mag_numf
+ libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_mag_numl
libc.src.math.fminimum
libc.src.math.fminimumf
diff --git a/libc/shared/math/fmaximum_mag_numf128.h b/libc/shared/math/fmaximum_mag_numf128.h
index de2d21e4244a5..d12909fbc476f 100644
--- a/libc/shared/math/fmaximum_mag_numf128.h
+++ b/libc/shared/math/fmaximum_mag_numf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAG_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_mag_numf128.h"
@@ -24,6 +20,4 @@ using math::fmaximum_mag_numf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_MAG_NUMF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 7d3f925c326b4..39783e8ac91ec 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -989,7 +989,7 @@ add_header_library(
HDRS
fmaximum_mag_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_mag_numf128.h b/libc/src/__support/math/fmaximum_mag_numf128.h
index 79e8842f81eca..d0aaeae0327e4 100644
--- a/libc/src/__support/math/fmaximum_mag_numf128.h
+++ b/libc/src/__support/math/fmaximum_mag_numf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAG_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_mag_numf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fmaximum_mag_numf128(Float128 x, Float128 y) {
return fputil::fmaximum_mag_num(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_MAG_NUMF128_H
diff --git a/libc/src/math/fmaximum_mag_numf128.h b/libc/src/math/fmaximum_mag_numf128.h
index a263f98aabcf1..4525d7ba7b128 100644
--- a/libc/src/math/fmaximum_mag_numf128.h
+++ b/libc/src/math/fmaximum_mag_numf128.h
@@ -10,11 +10,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMAXIMUM_MAG_NUMF128_H
#define LLVM_LIBC_SRC_MATH_FMAXIMUM_MAG_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_mag_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 0bb217d617c60..4f2a6e04ce348 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2368,6 +2368,7 @@ add_entrypoint_object(
HDRS
../fmaximum_mag_numf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fmaximum_mag_numf128
)
diff --git a/libc/src/math/generic/fmaximum_mag_numf128.cpp b/libc/src/math/generic/fmaximum_mag_numf128.cpp
index e3fac9dbbadf4..d9a192c076a74 100644
--- a/libc/src/math/generic/fmaximum_mag_numf128.cpp
+++ b/libc/src/math/generic/fmaximum_mag_numf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fmaximum_mag_numf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fmaximum_mag_numf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fmaximum_mag_numf128, (float128 x, float128 y)) {
- return math::fmaximum_mag_numf128(x, y);
+ return cpp::bit_cast<float128>(math::fmaximum_mag_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 c7279dfe659ac..ae222e21d972f 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::fminimum_mag_numf128(Float128(0.0),
- Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::copysignf128(Float128(0.0),
Float128(0.0)));
@@ -407,6 +404,12 @@ 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) ==
+ LIBC_NAMESPACE::shared::fmaximum_mag_numf128(Float128(0.0),
+ Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fminimum_mag_numf128(Float128(0.0),
+ Float128(0.0)));
static_assert(Float128(0.0) ==
LIBC_NAMESPACE::shared::fmaximum_numf128(Float128(0.0),
Float128(0.0)));
@@ -480,9 +483,6 @@ static_assert(float128(0.0) == [] {
float128 iptr{};
return LIBC_NAMESPACE::shared::modff128(float128(0.0), &iptr);
}());
-static_assert(float128(0.0) ==
- LIBC_NAMESPACE::shared::fmaximum_mag_numf128(float128(0.0),
- float128(0.0)));
static_assert(float128(0.0) ==
LIBC_NAMESPACE::shared::remainderf128(float128(1.0),
float128(1.0)));
diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 19e03e6605fb9..77a37187a7443 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::fminimum_mag_numf128(
- 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)));
@@ -602,6 +600,10 @@ TEST(LlvmLibcSharedMathTest, AllEmuFloat128) {
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_mag_numf128(
+ Float128(0.0), Float128(0.0)));
+ EXPECT_FP_EQ(Float128(0.0), LIBC_NAMESPACE::shared::fminimum_mag_numf128(
+ 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(
@@ -737,8 +739,6 @@ TEST(LlvmLibcSharedMathTest, AllFloat128) {
EXPECT_FP_EQ(float128(0.0),
LIBC_NAMESPACE::shared::modff128(float128(0.0), &modff128_iptr));
EXPECT_FP_EQ(float128(0.0), modff128_iptr);
- EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::fmaximum_mag_numf128(
- float128(0.0), float128(0.0)));
EXPECT_FP_EQ(float128(0.0), LIBC_NAMESPACE::shared::remainderf128(
float128(1.0), float128(1.0)));
int remquof128_exp = 0;
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 200ca486160af..bf553e8941af4 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3180,6 +3180,7 @@ add_fp_unittest(
HDRS
FMaximumMagNumTest.h
DEPENDS
+ libc.src.__support.FPUtil.float128
libc.src.math.fmaximum_mag_numf128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.FPUtil.fp_bits
diff --git a/libc/test/src/math/smoke/fmaximum_mag_numf128_test.cpp b/libc/test/src/math/smoke/fmaximum_mag_numf128_test.cpp
index 17f2a24f7fd04..c098b476e62b5 100644
--- a/libc/test/src/math/smoke/fmaximum_mag_numf128_test.cpp
+++ b/libc/test/src/math/smoke/fmaximum_mag_numf128_test.cpp
@@ -7,7 +7,12 @@
//===----------------------------------------------------------------------===//
#include "FMaximumMagNumTest.h"
+#include "src/__support/FPUtil/float128.h"
#include "src/math/fmaximum_mag_numf128.h"
+#ifndef LIBC_TYPES_HAS_NATIVE_FLOAT128
+using float128 = LIBC_NAMESPACE::fputil::Float128;
+#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
+
LIST_FMAXIMUM_MAG_NUM_TESTS(float128, LIBC_NAMESPACE::fmaximum_mag_numf128)
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 3da45530979c8..4f7241d795178 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -5558,8 +5558,8 @@ libc_support_library(
hdrs = ["src/__support/math/fmaximum_mag_numf128.h"],
deps = [
":__support_fputil_basic_operations",
+ ":__support_fputil_float128",
":__support_macros_config",
- ":llvm_libc_types_float128",
],
)
@@ -12011,6 +12011,8 @@ libc_math_function(
libc_math_function(
name = "fmaximum_mag_numf128",
additional_deps = [
+ ":__support_cpp_bit",
+ ":__support_fputil_float128",
":__support_math_fmaximum_mag_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 a9269f1fb713b..852dbc1326658 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
@@ -620,6 +620,9 @@ math_test(
math_test(
name = "fmaximum_mag_numf128",
hdrs = ["FMaximumMagNumTest.h"],
+ deps = [
+ "//libc:__support_fputil_float128",
+ ],
)
math_test(
More information about the llvm-branch-commits
mailing list