[libc-commits] [libc] [llvm] [libc] Make fmax/fmin functions use the emulated float80 type (PR #236387)
via libc-commits
libc-commits at lists.llvm.org
Wed Oct 28 04:51:26 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-nvptx
Author: Zorojuro (Sukumarsawant)
<details>
<summary>Changes</summary>
part of https://github.com/llvm/llvm-project/issues/219707
original work ref from https://github.com/llvm/llvm-project/pull/216575
( Automated tooling for repeated works like entrypoint additions,etc. )
---
Patch is 29.47 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/236387.diff
33 Files Affected:
- (modified) libc/config/baremetal/aarch64/entrypoints.txt (+2)
- (modified) libc/config/baremetal/arm/entrypoints.txt (+2)
- (modified) libc/config/baremetal/riscv/entrypoints.txt (+2)
- (modified) libc/config/darwin/aarch64/entrypoints.txt (+2)
- (modified) libc/config/darwin/x86_64/entrypoints.txt (+2)
- (modified) libc/config/freebsd/x86_64/entrypoints.txt (+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)
- (modified) libc/config/linux/arm/entrypoints.txt (+2)
- (modified) libc/config/linux/riscv/entrypoints.txt (+2)
- (modified) libc/config/linux/x86_64/entrypoints.txt (+2)
- (modified) libc/config/windows/entrypoints.txt (+2)
- (modified) libc/shared/math.h (+2)
- (added) libc/shared/math/fmaxf80.h (+28)
- (added) libc/shared/math/fminf80.h (+28)
- (modified) libc/src/__support/math/CMakeLists.txt (+20)
- (added) libc/src/__support/math/fmaxf80.h (+33)
- (added) libc/src/__support/math/fminf80.h (+33)
- (modified) libc/src/math/CMakeLists.txt (+2)
- (added) libc/src/math/fmaxf80.h (+27)
- (added) libc/src/math/fminf80.h (+27)
- (modified) libc/src/math/generic/CMakeLists.txt (+22)
- (added) libc/src/math/generic/fmaxf80.cpp (+30)
- (added) libc/src/math/generic/fminf80.cpp (+30)
- (modified) libc/test/shared/CMakeLists.txt (+3)
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+4)
- (modified) libc/test/shared/shared_math_test.cpp (+4)
- (modified) libc/test/src/math/smoke/CMakeLists.txt (+30)
- (added) libc/test/src/math/smoke/fmaxf80_test.cpp (+20)
- (added) libc/test/src/math/smoke/fminf80_test.cpp (+20)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+38)
- (modified) utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel (+16)
``````````diff
diff --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index e079fcfeae048f..7b4b7da9289484 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -432,6 +432,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -452,6 +453,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index 53632e29a410a5..049f9a1ec1af1a 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -444,6 +444,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -464,6 +465,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 08b88791a3b06a..8eb2bb7572bd2d 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.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -455,6 +456,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 2cf1bbecc955b1..541d90c74f4bdd 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.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -273,6 +274,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index b27753ea9e6672..ee9774a80cadd3 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -161,6 +161,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmax
#libc.src.math.fmaxf
#libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
#libc.src.math.fmaximum_mag_numf128
#libc.src.math.fmaximum_magf128
#libc.src.math.fmaximum_numf128
@@ -169,6 +170,7 @@ set(TARGET_LIBM_ENTRYPOINTS
#libc.src.math.fmin
#libc.src.math.fminf
#libc.src.math.fminf128
+ libc.src.math.fminf80
#libc.src.math.fminimum_mag_numf128
#libc.src.math.fminimum_magf128
#libc.src.math.fminimum_numf128
diff --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index cb59e948bb6107..a928373eb14b86 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -182,12 +182,14 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminl
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
diff --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 4de48e00993d20..1637e86e19f781 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -374,6 +374,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
@@ -394,6 +395,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
diff --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index b069ef570c6d22..dabd5b6a2a9fa6 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -370,6 +370,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag_numf128
libc.src.math.fmaximum_magf128
@@ -390,6 +391,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 7ebc137b33e733..66d19f39007edb 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -672,6 +672,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -692,6 +693,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 3bf8b22eaed59e..8185e0f77f6e18 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -465,6 +465,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -485,6 +486,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
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 37ddf36b57b664..2cdece057241d7 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -733,6 +733,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -753,6 +754,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 1bc8a4c95870a1..ddd7f131a8a702 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -755,6 +755,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaximum
libc.src.math.fmaximum_mag
libc.src.math.fmaximum_mag_num
@@ -775,6 +776,7 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum
libc.src.math.fminimum_mag
libc.src.math.fminimum_mag_num
diff --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index be9c45bf3db551..3a860b990c2845 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -215,12 +215,14 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.fmin
libc.src.math.fminf
libc.src.math.fminf128
+ libc.src.math.fminf80
libc.src.math.fminimum_mag_numf128
libc.src.math.fminimum_magf128
libc.src.math.fminl
libc.src.math.fmax
libc.src.math.fmaxf
libc.src.math.fmaxf128
+ libc.src.math.fmaxf80
libc.src.math.fmaxl
libc.src.math.fmaximum
libc.src.math.fmaximumf
diff --git a/libc/shared/math.h b/libc/shared/math.h
index e23967f6c4fbac..e1257973e1f0d6 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -184,6 +184,7 @@
#include "math/fmaxf.h"
#include "math/fmaxf128.h"
#include "math/fmaxf16.h"
+#include "math/fmaxf80.h"
#include "math/fmaximum.h"
#include "math/fmaximum_mag.h"
#include "math/fmaximum_mag_num.h"
@@ -214,6 +215,7 @@
#include "math/fminf.h"
#include "math/fminf128.h"
#include "math/fminf16.h"
+#include "math/fminf80.h"
#include "math/fminimum.h"
#include "math/fminimum_mag.h"
#include "math/fminimum_mag_num.h"
diff --git a/libc/shared/math/fmaxf80.h b/libc/shared/math/fmaxf80.h
new file mode 100644
index 00000000000000..dfa1622b2cb226
--- /dev/null
+++ b/libc/shared/math/fmaxf80.h
@@ -0,0 +1,28 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared fmaxf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXF80_H
+#define LLVM_LIBC_SHARED_MATH_FMAXF80_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaxf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaxf80;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXF80_H
diff --git a/libc/shared/math/fminf80.h b/libc/shared/math/fminf80.h
new file mode 100644
index 00000000000000..8879aab6242482
--- /dev/null
+++ b/libc/shared/math/fminf80.h
@@ -0,0 +1,28 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Shared fminf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINF80_H
+#define LLVM_LIBC_SHARED_MATH_FMINF80_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminf80;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINF80_H
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 1b033b9c375167..5d84729b4ab947 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1135,6 +1135,16 @@ add_header_library(
MISC_MATH_BASIC_OPS_OPT
)
+add_header_library(
+ fminf80
+ HDRS
+ fminf80.h
+ DEPENDS
+ libc.src.__support.FPUtil.float80
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
add_header_library(
fminimum
@@ -3899,6 +3909,16 @@ add_header_library(
MISC_MATH_BASIC_OPS_OPT
)
+add_header_library(
+ fmaxf80
+ HDRS
+ fmaxf80.h
+ DEPENDS
+ libc.src.__support.FPUtil.float80
+ libc.src.__support.FPUtil.basic_operations
+ libc.src.__support.macros.config
+)
+
add_header_library(
fmaxl
HDRS
diff --git a/libc/src/__support/math/fmaxf80.h b/libc/src/__support/math/fmaxf80.h
new file mode 100644
index 00000000000000..6ce6ef95a97c39
--- /dev/null
+++ b/libc/src/__support/math/fmaxf80.h
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of the fmaxf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF80_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF80_H
+
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float80.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LIBC_INLINE constexpr Float80 fmaxf80(Float80 x, Float80 y) {
+ return fputil::fmax(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXF80_H
diff --git a/libc/src/__support/math/fminf80.h b/libc/src/__support/math/fminf80.h
new file mode 100644
index 00000000000000..9ab9f2368e4673
--- /dev/null
+++ b/libc/src/__support/math/fminf80.h
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of the fminf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINF80_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINF80_H
+
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/float80.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LIBC_INLINE constexpr Float80 fminf80(Float80 x, Float80 y) {
+ return fputil::fmin(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINF80_H
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 5532932bfaf310..3fa13b0ee93b6a 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -251,6 +251,7 @@ add_math_entrypoint_object(fmaxf)
add_math_entrypoint_object(fmaxl)
add_math_entrypoint_object(fmaxf128)
add_math_entrypoint_object(fmaxf16)
+add_math_entrypoint_object(fmaxf80)
add_math_entrypoint_object(fmaxbf16)
add_math_entrypoint_object(fmin)
@@ -258,6 +259,7 @@ add_math_entrypoint_object(fminf)
add_math_entrypoint_object(fminl)
add_math_entrypoint_object(fminf128)
add_math_entrypoint_object(fminf16)
+add_math_entrypoint_object(fminf80)
add_math_entrypoint_object(fminbf16)
add_math_entrypoint_object(fmaximum)
diff --git a/libc/src/math/fmaxf80.h b/libc/src/math/fmaxf80.h
new file mode 100644
index 00000000000000..c900e0abe4d369
--- /dev/null
+++ b/libc/src/math/fmaxf80.h
@@ -0,0 +1,27 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Public declaration of the fmaxf80 entrypoint.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FMAXF80_H
+#define LLVM_LIBC_SRC_MATH_FMAXF80_H
+
+#include "src/__support/FPUtil/float80.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+float80 fmaxf80(float80 x, float80 y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FMAXF80_H
diff --git a/libc/src/math/fminf80.h b/libc/src/math/fminf80.h
new file mode 100644
index 00000000000000..418f3f0b102f92
--- /dev/null
+++ b/libc/src/math/fminf80.h
@@ -0,0 +1,27 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Public declaration of the fminf80 entrypoint.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FMINF80_H
+#define LLVM_LIBC_SRC_MATH_FMINF80_H
+
+#include "src/__support/FPUtil/float80.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+float80 fminf80(float80 x, float80 y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FMINF80_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index e8a0fb283c0b79..772e1a8a918997 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2101,6 +2101,17 @@ add_entrypoint_object(
libc.src.__support.math.fminf16
)
+add_entrypoint_object(
+ fminf80
+ SRCS
+ fminf80.cpp
+ HDRS
+ ../fminf80.h
+ DEPENDS
+ libc.src.__support.CPP.bit
+ libc.src.__support.math.fminf80
+)
+
add_entrypoint_object(
fminbf16
SRCS
@@ -2162,6 +2173,17 @@ add_entrypoint_object(
libc.src.__support.math.fmaxf16
)
+add_entrypoint_object(
+ fmaxf80
+ SRCS
+ fmaxf80.cpp
+ HDRS
+ ../fmaxf80.h
+ DEPENDS
+ libc.src.__support.CPP.bit
+ libc.src.__support.math.fmaxf80
+)
+
add_entrypoint_object(
fmaxbf16
SRCS
diff --git a/libc/src/math/generic/fmaxf80.cpp b/libc/src/math/generic/fmaxf80.cpp
new file mode 100644
index 00000000000000..1009945debd0b2
--- /dev/null
+++ b/libc/src/math/generic/fmaxf80.cpp
@@ -0,0 +1,30 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Implementation of the fmaxf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/math/fmaxf80.h"
+#include "src/__support/CPP/bit.h"
+#include "src/__support/FPUtil/float80.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/math/fmaxf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LLVM_LIBC_FUNCTION(float80, fmaxf80, (float80 x, float80 y)) {
+ return cpp::bit_cast<float80>(
+ math::fmaxf80(cpp::bit_cast<Float80>(x...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/236387
More information about the libc-commits
mailing list