[libc-commits] [libc] 24ea9d2 - [libc] Add fmaximum_num/fminimum_num functions for float80 type (#236401)

via libc-commits libc-commits at lists.llvm.org
Sat Oct 31 06:59:35 PDT 2026


Author: Zorojuro
Date: 2026-10-31T19:29:28+05:30
New Revision: 24ea9d257831ee5d6f827511b35ddb09036859b8

URL: https://github.com/llvm/llvm-project/commit/24ea9d257831ee5d6f827511b35ddb09036859b8
DIFF: https://github.com/llvm/llvm-project/commit/24ea9d257831ee5d6f827511b35ddb09036859b8.diff

LOG: [libc] Add fmaximum_num/fminimum_num functions for float80 type (#236401)

Added: 
    libc/shared/math/fmaximum_numf80.h
    libc/shared/math/fminimum_numf80.h
    libc/src/__support/math/fmaximum_numf80.h
    libc/src/__support/math/fminimum_numf80.h
    libc/src/math/fmaximum_numf80.h
    libc/src/math/fminimum_numf80.h
    libc/src/math/generic/fmaximum_numf80.cpp
    libc/src/math/generic/fminimum_numf80.cpp
    libc/test/src/math/smoke/fmaximum_numf80_test.cpp
    libc/test/src/math/smoke/fminimum_numf80_test.cpp

Modified: 
    libc/config/baremetal/aarch64/entrypoints.txt
    libc/config/baremetal/arm/entrypoints.txt
    libc/config/baremetal/hexagon/entrypoints.txt
    libc/config/baremetal/riscv/entrypoints.txt
    libc/config/darwin/aarch64/entrypoints.txt
    libc/config/darwin/x86_64/entrypoints.txt
    libc/config/freebsd/x86_64/entrypoints.txt
    libc/config/gpu/amdgpu/entrypoints.txt
    libc/config/gpu/nvptx/entrypoints.txt
    libc/config/linux/aarch64/entrypoints.txt
    libc/config/linux/arm/entrypoints.txt
    libc/config/linux/riscv/entrypoints.txt
    libc/config/linux/x86_64/entrypoints.txt
    libc/config/windows/entrypoints.txt
    libc/shared/math.h
    libc/src/__support/math/CMakeLists.txt
    libc/src/math/CMakeLists.txt
    libc/src/math/generic/CMakeLists.txt
    libc/test/shared/CMakeLists.txt
    libc/test/shared/shared_math_constexpr_test.cpp
    libc/test/shared/shared_math_test.cpp
    libc/test/src/math/smoke/CMakeLists.txt
    utils/bazel/llvm-project-overlay/libc/BUILD.bazel
    utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel

Removed: 
    


################################################################################
diff  --git a/libc/config/baremetal/aarch64/entrypoints.txt b/libc/config/baremetal/aarch64/entrypoints.txt
index ff3d6338b632a1..487db7abeb1d59 100644
--- a/libc/config/baremetal/aarch64/entrypoints.txt
+++ b/libc/config/baremetal/aarch64/entrypoints.txt
@@ -445,6 +445,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -467,6 +468,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/baremetal/arm/entrypoints.txt b/libc/config/baremetal/arm/entrypoints.txt
index d77a0b582679cd..ec59daaf02e349 100644
--- a/libc/config/baremetal/arm/entrypoints.txt
+++ b/libc/config/baremetal/arm/entrypoints.txt
@@ -457,6 +457,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -479,6 +480,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/baremetal/hexagon/entrypoints.txt b/libc/config/baremetal/hexagon/entrypoints.txt
index 0bc372d0457a83..5dcac38bd5d09e 100644
--- a/libc/config/baremetal/hexagon/entrypoints.txt
+++ b/libc/config/baremetal/hexagon/entrypoints.txt
@@ -438,6 +438,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numl
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf80
     libc.src.math.fmaximuml
@@ -455,6 +456,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numl
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimumf
     libc.src.math.fminimumf80
     libc.src.math.fminimuml

diff  --git a/libc/config/baremetal/riscv/entrypoints.txt b/libc/config/baremetal/riscv/entrypoints.txt
index 6fe6c3460d1f1c..d24fe26068c024 100644
--- a/libc/config/baremetal/riscv/entrypoints.txt
+++ b/libc/config/baremetal/riscv/entrypoints.txt
@@ -448,6 +448,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -470,6 +471,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/darwin/aarch64/entrypoints.txt b/libc/config/darwin/aarch64/entrypoints.txt
index 1beb76cb9d0b4b..3f8a976e69ca16 100644
--- a/libc/config/darwin/aarch64/entrypoints.txt
+++ b/libc/config/darwin/aarch64/entrypoints.txt
@@ -266,6 +266,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -288,6 +289,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/darwin/x86_64/entrypoints.txt b/libc/config/darwin/x86_64/entrypoints.txt
index a8bd427d58648d..404f4512c7c07c 100644
--- a/libc/config/darwin/x86_64/entrypoints.txt
+++ b/libc/config/darwin/x86_64/entrypoints.txt
@@ -165,6 +165,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     #libc.src.math.fmaximum_mag_numf128
     #libc.src.math.fmaximum_magf128
     #libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     #libc.src.math.fmaximumf128
     libc.src.math.fmaximumf80
     #libc.src.math.fmaxl
@@ -175,6 +176,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     #libc.src.math.fminimum_mag_numf128
     #libc.src.math.fminimum_magf128
     #libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     #libc.src.math.fminimumf128
     libc.src.math.fminimumf80
     #libc.src.math.fminl

diff  --git a/libc/config/freebsd/x86_64/entrypoints.txt b/libc/config/freebsd/x86_64/entrypoints.txt
index 25f5df98230810..4b7fe65fc9ccb7 100644
--- a/libc/config/freebsd/x86_64/entrypoints.txt
+++ b/libc/config/freebsd/x86_64/entrypoints.txt
@@ -199,6 +199,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximum_mag
     libc.src.math.fmaximum_magf
@@ -214,6 +215,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimum_mag
     libc.src.math.fminimum_magf

diff  --git a/libc/config/gpu/amdgpu/entrypoints.txt b/libc/config/gpu/amdgpu/entrypoints.txt
index 46e7f510d9d431..28563cc294568b 100644
--- a/libc/config/gpu/amdgpu/entrypoints.txt
+++ b/libc/config/gpu/amdgpu/entrypoints.txt
@@ -391,6 +391,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaxl
     libc.src.math.fmin
@@ -413,6 +414,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminl
     libc.src.math.fmod

diff  --git a/libc/config/gpu/nvptx/entrypoints.txt b/libc/config/gpu/nvptx/entrypoints.txt
index 8979e514c873ae..650ad9d74b6e2f 100644
--- a/libc/config/gpu/nvptx/entrypoints.txt
+++ b/libc/config/gpu/nvptx/entrypoints.txt
@@ -387,6 +387,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaxl
     libc.src.math.fmin
@@ -409,6 +410,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminl
     libc.src.math.fmod

diff  --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index 09b1b9080e0874..cfa0bedd15f31c 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -688,6 +688,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -710,6 +711,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/linux/arm/entrypoints.txt b/libc/config/linux/arm/entrypoints.txt
index 464d995040080d..a75295a86671fb 100644
--- a/libc/config/linux/arm/entrypoints.txt
+++ b/libc/config/linux/arm/entrypoints.txt
@@ -481,6 +481,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -503,6 +504,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index 69189b37ddddd4..8e8d2e82f85f26 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -751,6 +751,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -773,6 +774,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 746e712ec160e6..438c7d2639d977 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -773,6 +773,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximumf
     libc.src.math.fmaximumf128
@@ -795,6 +796,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimumf
     libc.src.math.fminimumf128

diff  --git a/libc/config/windows/entrypoints.txt b/libc/config/windows/entrypoints.txt
index 413b2871ef27e7..2dd8670cb84c8f 100644
--- a/libc/config/windows/entrypoints.txt
+++ b/libc/config/windows/entrypoints.txt
@@ -232,6 +232,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fmaximum_num
     libc.src.math.fmaximum_numf
     libc.src.math.fmaximum_numf128
+    libc.src.math.fmaximum_numf80
     libc.src.math.fmaximum_numl
     libc.src.math.fmaximum_mag
     libc.src.math.fmaximum_magf
@@ -247,6 +248,7 @@ set(TARGET_LIBM_ENTRYPOINTS
     libc.src.math.fminimum_num
     libc.src.math.fminimum_numf
     libc.src.math.fminimum_numf128
+    libc.src.math.fminimum_numf80
     libc.src.math.fminimum_numl
     libc.src.math.fminimum_mag
     libc.src.math.fminimum_magf

diff  --git a/libc/shared/math.h b/libc/shared/math.h
index b9e801cec50d44..39c7ec10fb2b5a 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -203,6 +203,7 @@
 #include "math/fmaximum_numf.h"
 #include "math/fmaximum_numf128.h"
 #include "math/fmaximum_numf16.h"
+#include "math/fmaximum_numf80.h"
 #include "math/fmaximum_numl.h"
 #include "math/fmaximumbf16.h"
 #include "math/fmaximumf.h"
@@ -235,6 +236,7 @@
 #include "math/fminimum_numf.h"
 #include "math/fminimum_numf128.h"
 #include "math/fminimum_numf16.h"
+#include "math/fminimum_numf80.h"
 #include "math/fminimum_numl.h"
 #include "math/fminimumbf16.h"
 #include "math/fminimumf.h"

diff  --git a/libc/shared/math/fmaximum_numf80.h b/libc/shared/math/fmaximum_numf80.h
new file mode 100644
index 00000000000000..ddc199782f04a0
--- /dev/null
+++ b/libc/shared/math/fmaximum_numf80.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 fmaximum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF80_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF80_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numf80;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF80_H

diff  --git a/libc/shared/math/fminimum_numf80.h b/libc/shared/math/fminimum_numf80.h
new file mode 100644
index 00000000000000..7451f7a25e1d52
--- /dev/null
+++ b/libc/shared/math/fminimum_numf80.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 fminimum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF80_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF80_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numf80;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF80_H

diff  --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index fd5498a9a24928..a3bdc45b377cf0 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -1079,6 +1079,16 @@ add_header_library(
     MISC_MATH_BASIC_OPS_OPT
 )
 
+add_header_library(
+  fmaximum_numf80
+  HDRS
+    fmaximum_numf80.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.float80
+    libc.src.__support.macros.config
+)
+
 add_header_library(
   fmaximum_numl
   HDRS
@@ -1405,6 +1415,16 @@ add_header_library(
     MISC_MATH_BASIC_OPS_OPT
 )
 
+add_header_library(
+  fminimum_numf80
+  HDRS
+    fminimum_numf80.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.float80
+    libc.src.__support.macros.config
+)
+
 add_header_library(
   fminimum_numl
   HDRS

diff  --git a/libc/src/__support/math/fmaximum_numf80.h b/libc/src/__support/math/fmaximum_numf80.h
new file mode 100644
index 00000000000000..711baec03238b4
--- /dev/null
+++ b/libc/src/__support/math/fmaximum_numf80.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 fmaximum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF80_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF80_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 fmaximum_numf80(Float80 x, Float80 y) {
+  return fputil::fmaximum_num(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF80_H

diff  --git a/libc/src/__support/math/fminimum_numf80.h b/libc/src/__support/math/fminimum_numf80.h
new file mode 100644
index 00000000000000..d1dbf68187090a
--- /dev/null
+++ b/libc/src/__support/math/fminimum_numf80.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 fminimum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF80_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF80_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 fminimum_numf80(Float80 x, Float80 y) {
+  return fputil::fminimum_num(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMINIMUM_NUMF80_H

diff  --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 6b8b3244cd139e..c839010eab36ce 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -275,6 +275,7 @@ add_math_entrypoint_object(fmaximum_numf)
 add_math_entrypoint_object(fmaximum_numl)
 add_math_entrypoint_object(fmaximum_numf16)
 add_math_entrypoint_object(fmaximum_numf128)
+add_math_entrypoint_object(fmaximum_numf80)
 add_math_entrypoint_object(fmaximum_numbf16)
 
 add_math_entrypoint_object(fmaximum_mag)
@@ -304,6 +305,7 @@ add_math_entrypoint_object(fminimum_numf)
 add_math_entrypoint_object(fminimum_numl)
 add_math_entrypoint_object(fminimum_numf16)
 add_math_entrypoint_object(fminimum_numf128)
+add_math_entrypoint_object(fminimum_numf80)
 add_math_entrypoint_object(fminimum_numbf16)
 
 add_math_entrypoint_object(fminimum_mag)

diff  --git a/libc/src/math/fmaximum_numf80.h b/libc/src/math/fmaximum_numf80.h
new file mode 100644
index 00000000000000..3024229be2acfc
--- /dev/null
+++ b/libc/src/math/fmaximum_numf80.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 fmaximum_numf80 entrypoint.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FMAXIMUM_NUMF80_H
+#define LLVM_LIBC_SRC_MATH_FMAXIMUM_NUMF80_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 fmaximum_numf80(float80 x, float80 y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FMAXIMUM_NUMF80_H

diff  --git a/libc/src/math/fminimum_numf80.h b/libc/src/math/fminimum_numf80.h
new file mode 100644
index 00000000000000..dafc941cecb0d6
--- /dev/null
+++ b/libc/src/math/fminimum_numf80.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 fminimum_numf80 entrypoint.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_FMINIMUM_NUMF80_H
+#define LLVM_LIBC_SRC_MATH_FMINIMUM_NUMF80_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 fminimum_numf80(float80 x, float80 y);
+
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC_MATH_FMINIMUM_NUMF80_H

diff  --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index 75bb8a9ab7b1e9..122b8e74152447 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -2290,6 +2290,17 @@ add_entrypoint_object(
     libc.src.__support.math.fmaximum_numf128
 )
 
+add_entrypoint_object(
+  fmaximum_numf80
+  SRCS
+    fmaximum_numf80.cpp
+  HDRS
+    ../fmaximum_numf80.h
+  DEPENDS
+    libc.src.__support.CPP.bit
+    libc.src.__support.math.fmaximum_numf80
+)
+
 add_entrypoint_object(
   fmaximum_numbf16
   SRCS
@@ -2545,6 +2556,17 @@ add_entrypoint_object(
     libc.src.__support.math.fminimum_numf128
 )
 
+add_entrypoint_object(
+  fminimum_numf80
+  SRCS
+    fminimum_numf80.cpp
+  HDRS
+    ../fminimum_numf80.h
+  DEPENDS
+    libc.src.__support.CPP.bit
+    libc.src.__support.math.fminimum_numf80
+)
+
 add_entrypoint_object(
   fminimum_numbf16
   SRCS

diff  --git a/libc/src/math/generic/fmaximum_numf80.cpp b/libc/src/math/generic/fmaximum_numf80.cpp
new file mode 100644
index 00000000000000..1479198944f8f9
--- /dev/null
+++ b/libc/src/math/generic/fmaximum_numf80.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 fmaximum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/math/fmaximum_numf80.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/fmaximum_numf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LLVM_LIBC_FUNCTION(float80, fmaximum_numf80, (float80 x, float80 y)) {
+  return cpp::bit_cast<float80>(math::fmaximum_numf80(
+      cpp::bit_cast<Float80>(x), cpp::bit_cast<Float80>(y)));
+}
+
+} // namespace LIBC_NAMESPACE_DECL

diff  --git a/libc/src/math/generic/fminimum_numf80.cpp b/libc/src/math/generic/fminimum_numf80.cpp
new file mode 100644
index 00000000000000..daeac4c482f201
--- /dev/null
+++ b/libc/src/math/generic/fminimum_numf80.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 fminimum_numf80 function.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/math/fminimum_numf80.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/fminimum_numf80.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LLVM_LIBC_FUNCTION(float80, fminimum_numf80, (float80 x, float80 y)) {
+  return cpp::bit_cast<float80>(math::fminimum_numf80(
+      cpp::bit_cast<Float80>(x), cpp::bit_cast<Float80>(y)));
+}
+
+} // namespace LIBC_NAMESPACE_DECL

diff  --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt
index 941bfef22b6efa..f9bebb25b1cbe9 100644
--- a/libc/test/shared/CMakeLists.txt
+++ b/libc/test/shared/CMakeLists.txt
@@ -218,6 +218,7 @@ else()
       libc.src.__support.math.fmaximum_numf
       libc.src.__support.math.fmaximum_numf128
       libc.src.__support.math.fmaximum_numf16
+      libc.src.__support.math.fmaximum_numf80
       libc.src.__support.math.fmaximum_numl
       libc.src.__support.math.fmaximumbf16
       libc.src.__support.math.fmaximumf
@@ -250,6 +251,7 @@ else()
       libc.src.__support.math.fminimum_numf
       libc.src.__support.math.fminimum_numf128
       libc.src.__support.math.fminimum_numf16
+      libc.src.__support.math.fminimum_numf80
       libc.src.__support.math.fminimum_numl
       libc.src.__support.math.fminimumbf16
       libc.src.__support.math.fminimumf
@@ -623,6 +625,7 @@ else()
       libc.src.__support.math.fmaximum_numf
       libc.src.__support.math.fmaximum_numf128
       libc.src.__support.math.fmaximum_numf16
+      libc.src.__support.math.fmaximum_numf80
       libc.src.__support.math.fmaximum_numl
       libc.src.__support.math.fmaximumbf16
       libc.src.__support.math.fmaximumf
@@ -654,6 +657,7 @@ else()
       libc.src.__support.math.fminimum_numf
       libc.src.__support.math.fminimum_numf128
       libc.src.__support.math.fminimum_numf16
+      libc.src.__support.math.fminimum_numf80
       libc.src.__support.math.fminimum_numl
       libc.src.__support.math.fminimumbf16
       libc.src.__support.math.fminimumf

diff  --git a/libc/test/shared/shared_math_constexpr_test.cpp b/libc/test/shared/shared_math_constexpr_test.cpp
index b52d97eab4447c..30b1af0ab58dce 100644
--- a/libc/test/shared/shared_math_constexpr_test.cpp
+++ b/libc/test/shared/shared_math_constexpr_test.cpp
@@ -424,6 +424,12 @@ static_assert(Float80(0.0) ==
               LIBC_NAMESPACE::shared::fmaximumf80(Float80(0.0), Float80(0.0)));
 static_assert(Float80(0.0) ==
               LIBC_NAMESPACE::shared::fminimumf80(Float80(0.0), Float80(0.0)));
+static_assert(Float80(0.0) ==
+              LIBC_NAMESPACE::shared::fmaximum_numf80(Float80(0.0),
+                                                      Float80(0.0)));
+static_assert(Float80(0.0) ==
+              LIBC_NAMESPACE::shared::fminimum_numf80(Float80(0.0),
+                                                      Float80(0.0)));
 static_assert(Float128(1.0) ==
               LIBC_NAMESPACE::shared::fdimf128(Float128(1.0), Float128(0.0)));
 static_assert(Float128(0.0) ==

diff  --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp
index 97f533bb1da46c..2c76502b36b78c 100644
--- a/libc/test/shared/shared_math_test.cpp
+++ b/libc/test/shared/shared_math_test.cpp
@@ -687,6 +687,10 @@ TEST(LlvmLibcSharedMathTest, AllFloat80) {
                LIBC_NAMESPACE::shared::fmaximumf80(Float80(0.0), Float80(0.0)));
   EXPECT_FP_EQ(Float80(0.0),
                LIBC_NAMESPACE::shared::fminimumf80(Float80(0.0), Float80(0.0)));
+  EXPECT_FP_EQ(Float80(0.0), LIBC_NAMESPACE::shared::fmaximum_numf80(
+                                 Float80(0.0), Float80(0.0)));
+  EXPECT_FP_EQ(Float80(0.0), LIBC_NAMESPACE::shared::fminimum_numf80(
+                                 Float80(0.0), Float80(0.0)));
 }
 
 #ifdef LIBC_TYPES_HAS_NATIVE_FLOAT128

diff  --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 5fd26b47fba64c..588ba732495f9f 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3080,6 +3080,21 @@ add_fp_unittest(
     libc.src.__support.FPUtil.fp_bits
 )
 
+add_fp_unittest(
+  fmaximum_numf80_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fmaximum_numf80_test.cpp
+  HDRS
+    FMaximumNumTest.h
+  DEPENDS
+    libc.src.math.fmaximum_numf80
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.float80
+    libc.src.__support.FPUtil.fp_bits
+)
+
 add_fp_unittest(
   fmaximum_numbf16_test
   SUITE
@@ -3444,6 +3459,21 @@ add_fp_unittest(
     libc.src.__support.FPUtil.fp_bits
 )
 
+add_fp_unittest(
+  fminimum_numf80_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    fminimum_numf80_test.cpp
+  HDRS
+    FMinimumNumTest.h
+  DEPENDS
+    libc.src.math.fminimum_numf80
+    libc.src.__support.CPP.algorithm
+    libc.src.__support.FPUtil.float80
+    libc.src.__support.FPUtil.fp_bits
+)
+
 add_fp_unittest(
   fminimum_numbf16_test
   SUITE

diff  --git a/libc/test/src/math/smoke/fmaximum_numf80_test.cpp b/libc/test/src/math/smoke/fmaximum_numf80_test.cpp
new file mode 100644
index 00000000000000..af90683a0cb7a6
--- /dev/null
+++ b/libc/test/src/math/smoke/fmaximum_numf80_test.cpp
@@ -0,0 +1,21 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+/// Smoke tests for fmaximum_numf80.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/__support/FPUtil/float80.h"
+#include "src/math/fmaximum_numf80.h"
+#include "test/src/math/smoke/FMaximumNumTest.h"
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LIST_FMAXIMUM_NUM_TESTS(Fmaximum_numf80, Float80,
+                        LIBC_NAMESPACE::fmaximum_numf80)

diff  --git a/libc/test/src/math/smoke/fminimum_numf80_test.cpp b/libc/test/src/math/smoke/fminimum_numf80_test.cpp
new file mode 100644
index 00000000000000..d5e17a36dc2f03
--- /dev/null
+++ b/libc/test/src/math/smoke/fminimum_numf80_test.cpp
@@ -0,0 +1,21 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+/// Smoke tests for fminimum_numf80.
+///
+//===----------------------------------------------------------------------===//
+
+#include "src/__support/FPUtil/float80.h"
+#include "src/math/fminimum_numf80.h"
+#include "test/src/math/smoke/FMinimumNumTest.h"
+
+using LIBC_NAMESPACE::fputil::Float80;
+
+LIST_FMINIMUM_NUM_TESTS(Fminimum_numf80, Float80,
+                        LIBC_NAMESPACE::fminimum_numf80)

diff  --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 73c8f2142ec8f5..89ff540f963d90 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -7313,6 +7313,16 @@ libc_support_library(
     ],
 )
 
+libc_support_library(
+    name = "__support_math_fmaximum_numf80",
+    hdrs = ["src/__support/math/fmaximum_numf80.h"],
+    deps = [
+        ":__support_fputil_basic_operations",
+        ":__support_fputil_float80",
+        ":__support_macros_config",
+    ],
+)
+
 libc_support_library(
     name = "__support_math_fmaximum_numl",
     hdrs = ["src/__support/math/fmaximum_numl.h"],
@@ -7609,6 +7619,16 @@ libc_support_library(
     ],
 )
 
+libc_support_library(
+    name = "__support_math_fminimum_numf80",
+    hdrs = ["src/__support/math/fminimum_numf80.h"],
+    deps = [
+        ":__support_fputil_basic_operations",
+        ":__support_fputil_float80",
+        ":__support_macros_config",
+    ],
+)
+
 libc_support_library(
     name = "__support_math_fminimum_numl",
     hdrs = ["src/__support/math/fminimum_numl.h"],
@@ -14307,6 +14327,15 @@ libc_math_function(
     ],
 )
 
+libc_math_function(
+    name = "fmaximum_numf80",
+    additional_deps = [
+        ":__support_cpp_bit",
+        ":__support_fputil_float80",
+        ":__support_math_fmaximum_numf80",
+    ],
+)
+
 libc_math_function(
     name = "fmaximum_numf16",
     additional_deps = [
@@ -14510,6 +14539,15 @@ libc_math_function(
     ],
 )
 
+libc_math_function(
+    name = "fminimum_numf80",
+    additional_deps = [
+        ":__support_cpp_bit",
+        ":__support_fputil_float80",
+        ":__support_math_fminimum_numf80",
+    ],
+)
+
 libc_math_function(
     name = "fminimum_numf16",
     additional_deps = [

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 912d8a1cdb7501..17358f3e617504 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
@@ -976,6 +976,14 @@ math_test(
     ],
 )
 
+math_test(
+    name = "fmaximum_numf80",
+    hdrs = ["FMaximumNumTest.h"],
+    deps = [
+        "//libc:__support_fputil_float80",
+    ],
+)
+
 math_test(
     name = "fmaximum_mag_numf16",
     hdrs = ["FMaximumMagNumTest.h"],
@@ -1182,6 +1190,14 @@ math_test(
     ],
 )
 
+math_test(
+    name = "fminimum_numf80",
+    hdrs = ["FMinimumNumTest.h"],
+    deps = [
+        "//libc:__support_fputil_float80",
+    ],
+)
+
 math_test(
     name = "fminimum_numf16",
     hdrs = ["FMinimumNumTest.h"],


        


More information about the libc-commits mailing list