[libc-commits] [libc] [llvm] [libc] Modify `fmaxf128` and `fminf128` to use emulated Float128 type (PR #216575)
via libc-commits
libc-commits at lists.llvm.org
Wed Aug 19 05:45:53 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-amdgpu
Author: Zorojuro (Sukumarsawant)
<details>
<summary>Changes</summary>
---
Patch is 27.68 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/216575.diff
32 Files Affected:
- (modified) libc/config/baremetal/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/baremetal/arm/entrypoints.txt (+2-2)
- (modified) libc/config/baremetal/riscv/entrypoints.txt (+2-2)
- (modified) libc/config/darwin/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/darwin/x86_64/entrypoints.txt (+2)
- (modified) libc/config/freebsd/x86_64/entrypoints.txt (+2-2)
- (modified) libc/config/gpu/amdgpu/entrypoints.txt (+2)
- (modified) libc/config/gpu/nvptx/entrypoints.txt (+2)
- (modified) libc/config/linux/aarch64/entrypoints.txt (+2-2)
- (modified) libc/config/linux/arm/entrypoints.txt (+2)
- (modified) libc/config/linux/riscv/entrypoints.txt (+2-2)
- (modified) libc/config/linux/x86_64/entrypoints.txt (+2-2)
- (modified) libc/config/windows/entrypoints.txt (+2)
- (modified) libc/shared/math/fmaxf128.h (-6)
- (modified) libc/shared/math/fminf128.h (-6)
- (modified) libc/src/__support/math/CMakeLists.txt (+2-2)
- (modified) libc/src/__support/math/fmaxf128.h (+4-7)
- (modified) libc/src/__support/math/fminf128.h (+4-7)
- (modified) libc/src/math/fmaxf128.h (+5)
- (modified) libc/src/math/fminf128.h (+5)
- (modified) libc/src/math/generic/CMakeLists.txt (+2)
- (modified) libc/src/math/generic/fmaxf128.cpp (+5-1)
- (modified) libc/src/math/generic/fminf128.cpp (+5-1)
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+4-5)
- (modified) libc/test/shared/shared_math_test.cpp (+4-4)
- (modified) libc/test/src/math/smoke/CMakeLists.txt (+2)
- (modified) libc/test/src/math/smoke/FMaxTest.h (+1-1)
- (modified) libc/test/src/math/smoke/FMinTest.h (+1-1)
- (modified) libc/test/src/math/smoke/fmaxf128_test.cpp (+5)
- (modified) libc/test/src/math/smoke/fminf128_test.cpp (+5)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+6-2)
- (modified) utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel (+6)
``````````diff
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index 613c8406cbe10..7f81cba798adf 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -420,6 +420,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -435,6 +436,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -751,12 +753,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 e46a7aeb6ae0e..5b447392dc188 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -432,6 +432,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -447,6 +448,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -762,12 +764,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 95fd7c8515a9e..546151d0f0f6e 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -428,6 +428,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -443,6 +444,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -759,12 +761,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 ced6a6743b7ab..a129c629d87fd 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -239,6 +239,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -254,6 +255,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -571,12 +573,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 313c56d278ed4..233bda89d1363 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -155,9 +155,11 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmaf
#libc.src.math.fmax
#libc.src.math.fmaxf
+ #libc.src.math.fmaxf128
#libc.src.math.fmaxl
#libc.src.math.fmin
#libc.src.math.fminf
+ #libc.src.math.fminf128
#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 0edc1f0525cf4..4b4af90c13909 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -173,9 +173,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminl
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
@@ -510,12 +512,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 82f5873b18b6e..32442b46325b5 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -367,6 +367,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximumf
libc.src.math.fmaximuml
@@ -382,6 +383,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimumf
libc.src.math.fminimuml
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index dc32fad6e994e..4e3f1ec82ce24 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -363,6 +363,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximumf
libc.src.math.fmaximuml
@@ -378,6 +379,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimumf
libc.src.math.fminimuml
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 42180fae4e6bf..c4d5ee29e1c2b 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -579,6 +579,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -594,6 +595,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -904,12 +906,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 8b97d5b774135..a948635a86132 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -407,6 +407,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -422,6 +423,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 236e7a295b0ff..a987808385aaf 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -647,6 +647,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -662,6 +663,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -989,12 +991,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 90735e0ccb80c..57ce3807fab3f 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -657,6 +657,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -672,6 +673,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaxl
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
@@ -999,12 +1001,10 @@ if(LIBC_TYPES_HAS_NATIVE_FLOAT128)
libc.src.math.fdimf128
libc.src.math.fdivf128
libc.src.math.ffmaf128
- libc.src.math.fmaxf128
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
libc.src.math.fmaximum_numf128
libc.src.math.fmaximumf128
- libc.src.math.fminf128
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 5317a0323db75..76f9f0cc707e8 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -206,9 +206,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmaf
libc.src.math.fmin
libc.src.math.fminf
+ libc.src.math.fminf128
libc.src.math.fminl
libc.src.math.fmax
libc.src.math.fmaxf
+ libc.src.math.fmaxf128
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
diff --git a/libc/shared/math/fmaxf128.h b/libc/shared/math/fmaxf128.h
index a0b2adb17e4dc..8d506828703c8 100644
--- a/libc/shared/math/fmaxf128.h
+++ b/libc/shared/math/fmaxf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMAXF128_H
#define LLVM_LIBC_SHARED_MATH_FMAXF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fmaxf128.h"
@@ -24,6 +20,4 @@ using math::fmaxf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMAXF128_H
diff --git a/libc/shared/math/fminf128.h b/libc/shared/math/fminf128.h
index f59fd9dc669d9..44d7c883784e6 100644
--- a/libc/shared/math/fminf128.h
+++ b/libc/shared/math/fminf128.h
@@ -9,10 +9,6 @@
#ifndef LLVM_LIBC_SHARED_MATH_FMINF128_H
#define LLVM_LIBC_SHARED_MATH_FMINF128_H
-#include "include/llvm-libc-types/float128.h"
-
-#ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#include "shared/libc_common.h"
#include "src/__support/math/fminf128.h"
@@ -24,6 +20,4 @@ using math::fminf128;
} // namespace shared
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SHARED_MATH_FMINF128_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index f24612916c33c..c0cdb885d4db7 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1118,7 +1118,7 @@ add_header_library(
HDRS
fminf128.h
DEPENDS
- libc.include.llvm-libc-types.float128
+ libc.src.__support.FPUtil.float128
libc.src.__support.FPUtil.basic_operations
libc.src.__support.macros.config
)
@@ -3734,7 +3734,7 @@ add_header_library(
HDRS
fmaxf128.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/fmaxf128.h b/libc/src/__support/math/fmaxf128.h
index 9c2ba50972fba..c7994228d8694 100644
--- a/libc/src/__support/math/fmaxf128.h
+++ b/libc/src/__support/math/fmaxf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF128_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 fmaxf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fmaxf128(Float128 x, Float128 y) {
return fputil::fmax(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF128_H
diff --git a/libc/src/__support/math/fminf128.h b/libc/src/__support/math/fminf128.h
index e7fd51d00b70c..da5d96c20a754 100644
--- a/libc/src/__support/math/fminf128.h
+++ b/libc/src/__support/math/fminf128.h
@@ -9,23 +9,20 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINF128_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 fminf128(float128 x, float128 y) {
+using LIBC_NAMESPACE::fputil::Float128;
+
+LIBC_INLINE constexpr Float128 fminf128(Float128 x, Float128 y) {
return fputil::fmin(x, y);
}
} // namespace math
} // namespace LIBC_NAMESPACE_DECL
-#endif // LIBC_TYPES_HAS_NATIVE_FLOAT128
-
#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINF128_H
diff --git a/libc/src/math/fmaxf128.h b/libc/src/math/fmaxf128.h
index 47bf3541982ab..113107a5e5f7e 100644
--- a/libc/src/math/fmaxf128.h
+++ b/libc/src/math/fmaxf128.h
@@ -9,11 +9,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMAXF128_H
#define LLVM_LIBC_SRC_MATH_FMAXF128_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 fmaxf128(float128 x, float128 y);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/fminf128.h b/libc/src/math/fminf128.h
index 7bc393ab3badc..0af719d8f412d 100644
--- a/libc/src/math/fminf128.h
+++ b/libc/src/math/fminf128.h
@@ -9,11 +9,16 @@
#ifndef LLVM_LIBC_SRC_MATH_FMINF128_H
#define LLVM_LIBC_SRC_MATH_FMINF128_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 fminf128(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 01468b97d38f6..116a1e375877f 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2032,6 +2032,7 @@ add_entrypoint_object(
HDRS
../fminf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fminf128
)
@@ -2092,6 +2093,7 @@ add_entrypoint_object(
HDRS
../fmaxf128.h
DEPENDS
+ libc.src.__support.CPP.bit
libc.src.__support.math.fmaxf128
)
diff --git a/libc/src/math/generic/fmaxf128.cpp b/libc/src/math/generic/fmaxf128.cpp
index c724a8815d8ce..21f93205c26a5 100644
--- a/libc/src/math/generic/fmaxf128.cpp
+++ b/libc/src/math/generic/fmaxf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fmaxf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fmaxf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fmaxf128, (float128 x, float128 y)) {
- return math::fmaxf128(x, y);
+ return cpp::bit_cast<float128>(
+ math::fmaxf128(cpp::bit_cast<Float128>(x), cpp::bit_cast<Float128>(y)));
}
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/math/generic/fminf128.cpp b/libc/src/math/generic/fminf128.cpp
index fa5591ad5941e..7dacf3f501c30 100644
--- a/libc/src/math/generic/fminf128.cpp
+++ b/libc/src/math/generic/fminf128.cpp
@@ -7,12 +7,16 @@
//===----------------------------------------------------------------------===//
#include "src/math/fminf128.h"
+#include "src/__support/CPP/bit.h"
#include "src/__support/math/fminf128.h"
namespace LIBC_NAMESPACE_DECL {
+using LIBC_NAMESPACE::fputil::Float128;
+
LLVM_LIBC_FUNCTION(float128, fminf128, (float128 x, float128 y)) {
- return math::fminf128(x, y);
+ return cpp::bit_cast<float128>(
+ math::fminf128(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 be5fc959165c7..654490151e4de 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -383,6 +383,10 @@ 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::floorf128(Float128(0.0)));
+static_assert(Float128(0.0) ==
+ LIBC_NAMESPACE::shared::fmaxf128(Float128(0.0), Float128(0.0...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/216575
More information about the libc-commits
mailing list