[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