https://github.com/Sukumarsawant updated https://github.com/llvm/llvm-project/pull/217390
>From 13e1561aa1382c4d6a704c30994ebe51c36924c5 Mon Sep 17 00:00:00 2001 From: Sukumarsawant <[email protected]> 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 c9f163ec76fee..4e38a5b300d7a 100644 --- a/libc/config/linux/aarch64/entrypoints.txt +++ b/libc/config/linux/aarch64/entrypoints.txt @@ -594,6 +594,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 @@ -918,7 +919,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 679e5dcfc12f6..4c61ccbb80299 100644 --- a/libc/config/linux/arm/entrypoints.txt +++ b/libc/config/linux/arm/entrypoints.txt @@ -421,6 +421,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 f8eaa3cb919fd..492297f2af4dd 100644 --- a/libc/config/linux/riscv/entrypoints.txt +++ b/libc/config/linux/riscv/entrypoints.txt @@ -662,6 +662,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 @@ -1003,7 +1004,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 1e32d77746c2f..55657094f7180 100644 --- a/libc/config/linux/x86_64/entrypoints.txt +++ b/libc/config/linux/x86_64/entrypoints.txt @@ -672,6 +672,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 @@ -1013,7 +1014,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 36f1eaa41e2a0..5dbe9784debf3 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 ae0d219ef519b..87a63d2b55518 100644 --- a/libc/test/src/math/smoke/CMakeLists.txt +++ b/libc/test/src/math/smoke/CMakeLists.txt @@ -2865,6 +2865,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 0d60b1db8a7fb..866008e81549d 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -5453,8 +5453,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", ], ) @@ -11836,6 +11836,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 a2a9847e3127a10181c4764d54f98c3be959d24e Mon Sep 17 00:00:00 2001 From: Sukumarsawant <[email protected]> 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 4e38a5b300d7a..f6231879e4d3b 100644 --- a/libc/config/linux/aarch64/entrypoints.txt +++ b/libc/config/linux/aarch64/entrypoints.txt @@ -611,6 +611,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 @@ -922,7 +923,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 4c61ccbb80299..1fd6d7cc285ac 100644 --- a/libc/config/linux/arm/entrypoints.txt +++ b/libc/config/linux/arm/entrypoints.txt @@ -438,6 +438,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 492297f2af4dd..e5ec9e8a2bd4b 100644 --- a/libc/config/linux/riscv/entrypoints.txt +++ b/libc/config/linux/riscv/entrypoints.txt @@ -679,6 +679,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 @@ -1007,7 +1008,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 55657094f7180..5befd3d1a5f6e 100644 --- a/libc/config/linux/x86_64/entrypoints.txt +++ b/libc/config/linux/x86_64/entrypoints.txt @@ -689,6 +689,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 @@ -1017,7 +1018,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 5dbe9784debf3..5d9a4fe5e090f 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 87a63d2b55518..902101ccafab2 100644 --- a/libc/test/src/math/smoke/CMakeLists.txt +++ b/libc/test/src/math/smoke/CMakeLists.txt @@ -3211,6 +3211,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 866008e81549d..f441187431d8d 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -5701,8 +5701,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", ], ) @@ -12022,6 +12022,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 23672b148bdd9519d517662a26b96d4509ef23cc Mon Sep 17 00:00:00 2001 From: Sukumarsawant <[email protected]> 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 5d1f3e120253ba24fa98c8e1c665bb45eff43763 Mon Sep 17 00:00:00 2001 From: Sukumarsawant <[email protected]> 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) _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
