[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