[libc-commits] [libc] [llvm] [libc][math] Refactor fmaximum_num-fminimum_num family to header-only (PR #194562)

via libc-commits libc-commits at lists.llvm.org
Tue Apr 28 00:23:56 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libc

Author: Anonmiraj (AnonMiraj)

<details>
<summary>Changes</summary>

Refactors the fmaximum_num-fminimum_num math family to be header-only.

part of: #<!-- -->147386

Target Functions:
  - fmaximum_num
  - fmaximum_numbf16
  - fmaximum_numf
  - fmaximum_numf128
  - fmaximum_numf16
  - fmaximum_numl
  - fminimum_num
  - fminimum_numbf16
  - fminimum_numf
  - fminimum_numf128
  - fminimum_numf16
  - fminimum_numl

---

Patch is 57.47 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/194562.diff


44 Files Affected:

- (modified) libc/shared/math.h (+12) 
- (added) libc/shared/math/fmaximum_num.h (+23) 
- (added) libc/shared/math/fmaximum_numbf16.h (+23) 
- (added) libc/shared/math/fmaximum_numf.h (+23) 
- (added) libc/shared/math/fmaximum_numf128.h (+29) 
- (added) libc/shared/math/fmaximum_numf16.h (+29) 
- (added) libc/shared/math/fmaximum_numl.h (+23) 
- (added) libc/shared/math/fminimum_num.h (+23) 
- (added) libc/shared/math/fminimum_numbf16.h (+23) 
- (added) libc/shared/math/fminimum_numf.h (+23) 
- (added) libc/shared/math/fminimum_numf128.h (+29) 
- (added) libc/shared/math/fminimum_numf16.h (+29) 
- (added) libc/shared/math/fminimum_numl.h (+23) 
- (modified) libc/src/__support/FPUtil/BasicOperations.h (+1-1) 
- (modified) libc/src/__support/math/CMakeLists.txt (+130) 
- (added) libc/src/__support/math/fmaximum_num.h (+25) 
- (added) libc/src/__support/math/fmaximum_numbf16.h (+26) 
- (added) libc/src/__support/math/fmaximum_numf.h (+25) 
- (added) libc/src/__support/math/fmaximum_numf128.h (+31) 
- (added) libc/src/__support/math/fmaximum_numf16.h (+31) 
- (added) libc/src/__support/math/fmaximum_numl.h (+25) 
- (added) libc/src/__support/math/fminimum_num.h (+25) 
- (added) libc/src/__support/math/fminimum_numbf16.h (+26) 
- (added) libc/src/__support/math/fminimum_numf.h (+25) 
- (added) libc/src/__support/math/fminimum_numf128.h (+31) 
- (added) libc/src/__support/math/fminimum_numf16.h (+31) 
- (added) libc/src/__support/math/fminimum_numl.h (+25) 
- (modified) libc/src/math/generic/CMakeLists.txt (+12-38) 
- (modified) libc/src/math/generic/fmaximum_num.cpp (+2-4) 
- (modified) libc/src/math/generic/fmaximum_numbf16.cpp (+2-5) 
- (modified) libc/src/math/generic/fmaximum_numf.cpp (+2-4) 
- (modified) libc/src/math/generic/fmaximum_numf128.cpp (+2-4) 
- (modified) libc/src/math/generic/fmaximum_numf16.cpp (+2-4) 
- (modified) libc/src/math/generic/fmaximum_numl.cpp (+2-4) 
- (modified) libc/src/math/generic/fminimum_num.cpp (+2-4) 
- (modified) libc/src/math/generic/fminimum_numbf16.cpp (+2-5) 
- (modified) libc/src/math/generic/fminimum_numf.cpp (+2-4) 
- (modified) libc/src/math/generic/fminimum_numf128.cpp (+2-4) 
- (modified) libc/src/math/generic/fminimum_numf16.cpp (+2-4) 
- (modified) libc/src/math/generic/fminimum_numl.cpp (+2-4) 
- (modified) libc/test/shared/CMakeLists.txt (+24) 
- (modified) libc/test/shared/shared_math_constexpr_test.cpp (+22) 
- (modified) libc/test/shared/shared_math_test.cpp (+18) 
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+176-6) 


``````````diff
diff --git a/libc/shared/math.h b/libc/shared/math.h
index 85ba47731f9d4..6d2b573244c0c 100644
--- a/libc/shared/math.h
+++ b/libc/shared/math.h
@@ -181,6 +181,12 @@
 #include "math/fmaximum_mag_num.h"
 #include "math/fmaximum_mag_numbf16.h"
 #include "math/fmaximum_mag_numf.h"
+#include "math/fmaximum_num.h"
+#include "math/fmaximum_numbf16.h"
+#include "math/fmaximum_numf.h"
+#include "math/fmaximum_numf128.h"
+#include "math/fmaximum_numf16.h"
+#include "math/fmaximum_numl.h"
 #include "math/fmaximumbf16.h"
 #include "math/fmaximumf.h"
 #include "math/fmaximumf128.h"
@@ -193,6 +199,12 @@
 #include "math/fminf128.h"
 #include "math/fminf16.h"
 #include "math/fminimum.h"
+#include "math/fminimum_num.h"
+#include "math/fminimum_numbf16.h"
+#include "math/fminimum_numf.h"
+#include "math/fminimum_numf128.h"
+#include "math/fminimum_numf16.h"
+#include "math/fminimum_numl.h"
 #include "math/fminimumbf16.h"
 #include "math/fminimumf.h"
 #include "math/fminimumf128.h"
diff --git a/libc/shared/math/fmaximum_num.h b/libc/shared/math/fmaximum_num.h
new file mode 100644
index 0000000000000..0a28c3971f298
--- /dev/null
+++ b/libc/shared/math/fmaximum_num.h
@@ -0,0 +1,23 @@
+//===-- Shared fmaximum_num function ----------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUM_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUM_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_num.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_num;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUM_H
diff --git a/libc/shared/math/fmaximum_numbf16.h b/libc/shared/math/fmaximum_numbf16.h
new file mode 100644
index 0000000000000..1c9232444c0ee
--- /dev/null
+++ b/libc/shared/math/fmaximum_numbf16.h
@@ -0,0 +1,23 @@
+//===-- Shared fmaximum_numbf16 function ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMBF16_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMBF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMBF16_H
diff --git a/libc/shared/math/fmaximum_numf.h b/libc/shared/math/fmaximum_numf.h
new file mode 100644
index 0000000000000..142fd2dbb1bf1
--- /dev/null
+++ b/libc/shared/math/fmaximum_numf.h
@@ -0,0 +1,23 @@
+//===-- Shared fmaximum_numf function ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF_H
diff --git a/libc/shared/math/fmaximum_numf128.h b/libc/shared/math/fmaximum_numf128.h
new file mode 100644
index 0000000000000..4bdd100dcc2d6
--- /dev/null
+++ b/libc/shared/math/fmaximum_numf128.h
@@ -0,0 +1,29 @@
+//===-- Shared fmaximum_numf128 function ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF128_H
diff --git a/libc/shared/math/fmaximum_numf16.h b/libc/shared/math/fmaximum_numf16.h
new file mode 100644
index 0000000000000..ffd92eb1d9df8
--- /dev/null
+++ b/libc/shared/math/fmaximum_numf16.h
@@ -0,0 +1,29 @@
+//===-- Shared fmaximum_numf16 function -------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF16_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUMF16_H
diff --git a/libc/shared/math/fmaximum_numl.h b/libc/shared/math/fmaximum_numl.h
new file mode 100644
index 0000000000000..79553902ffdfb
--- /dev/null
+++ b/libc/shared/math/fmaximum_numl.h
@@ -0,0 +1,23 @@
+//===-- Shared fmaximum_numl function ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUML_H
+#define LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUML_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fmaximum_numl.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fmaximum_numl;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMAXIMUM_NUML_H
diff --git a/libc/shared/math/fminimum_num.h b/libc/shared/math/fminimum_num.h
new file mode 100644
index 0000000000000..31dc5d41a4f08
--- /dev/null
+++ b/libc/shared/math/fminimum_num.h
@@ -0,0 +1,23 @@
+//===-- Shared fminimum_num function ----------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUM_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUM_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_num.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_num;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUM_H
diff --git a/libc/shared/math/fminimum_numbf16.h b/libc/shared/math/fminimum_numbf16.h
new file mode 100644
index 0000000000000..d875d20c60c16
--- /dev/null
+++ b/libc/shared/math/fminimum_numbf16.h
@@ -0,0 +1,23 @@
+//===-- Shared fminimum_numbf16 function ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMBF16_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMBF16_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numbf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numbf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMBF16_H
diff --git a/libc/shared/math/fminimum_numf.h b/libc/shared/math/fminimum_numf.h
new file mode 100644
index 0000000000000..2fa1beba3ed60
--- /dev/null
+++ b/libc/shared/math/fminimum_numf.h
@@ -0,0 +1,23 @@
+//===-- Shared fminimum_numf function ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numf.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numf;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF_H
diff --git a/libc/shared/math/fminimum_numf128.h b/libc/shared/math/fminimum_numf128.h
new file mode 100644
index 0000000000000..798040f12b309
--- /dev/null
+++ b/libc/shared/math/fminimum_numf128.h
@@ -0,0 +1,29 @@
+//===-- Shared fminimum_numf128 function ------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
+
+#include "include/llvm-libc-types/float128.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT128
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numf128.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numf128;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT128
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF128_H
diff --git a/libc/shared/math/fminimum_numf16.h b/libc/shared/math/fminimum_numf16.h
new file mode 100644
index 0000000000000..093e9d640d2a2
--- /dev/null
+++ b/libc/shared/math/fminimum_numf16.h
@@ -0,0 +1,29 @@
+//===-- Shared fminimum_numf16 function -------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF16_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF16_H
+
+#include "include/llvm-libc-macros/float16-macros.h"
+
+#ifdef LIBC_TYPES_HAS_FLOAT16
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numf16.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numf16;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LIBC_TYPES_HAS_FLOAT16
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUMF16_H
diff --git a/libc/shared/math/fminimum_numl.h b/libc/shared/math/fminimum_numl.h
new file mode 100644
index 0000000000000..d1663e1f7bc92
--- /dev/null
+++ b/libc/shared/math/fminimum_numl.h
@@ -0,0 +1,23 @@
+//===-- Shared fminimum_numl function ---------------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SHARED_MATH_FMINIMUM_NUML_H
+#define LLVM_LIBC_SHARED_MATH_FMINIMUM_NUML_H
+
+#include "shared/libc_common.h"
+#include "src/__support/math/fminimum_numl.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace shared {
+
+using math::fminimum_numl;
+
+} // namespace shared
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SHARED_MATH_FMINIMUM_NUML_H
diff --git a/libc/src/__support/FPUtil/BasicOperations.h b/libc/src/__support/FPUtil/BasicOperations.h
index 7d7688dc21a03..99e3f0d43d6cc 100644
--- a/libc/src/__support/FPUtil/BasicOperations.h
+++ b/libc/src/__support/FPUtil/BasicOperations.h
@@ -200,7 +200,7 @@ LIBC_INLINE constexpr T fmaximum_num(T x, T y) {
 }
 
 template <typename T, cpp::enable_if_t<cpp::is_floating_point_v<T>, int> = 0>
-LIBC_INLINE T fminimum_num(T x, T y) {
+LIBC_INLINE constexpr T fminimum_num(T x, T y) {
   FPBits<T> bitx(x), bity(y);
   if (bitx.is_signaling_nan() || bity.is_signaling_nan()) {
     fputil::raise_except_if_required(FE_INVALID);
diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt
index 7a25cd9fa0342..8a9cb3b647c72 100644
--- a/libc/src/__support/math/CMakeLists.txt
+++ b/libc/src/__support/math/CMakeLists.txt
@@ -894,6 +894,71 @@ add_header_library(
     libc.src.__support.FPUtil.basic_operations
     libc.src.__support.macros.config
 )
+add_header_library(
+  fmaximum_num
+  HDRS
+    fmaximum_num.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+add_header_library(
+  fmaximum_numbf16
+  HDRS
+    fmaximum_numbf16.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fmaximum_numf
+  HDRS
+    fmaximum_numf.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fmaximum_numf128
+  HDRS
+    fmaximum_numf128.h
+  DEPENDS
+    libc.include.llvm-libc-types.float128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+)
+
+add_header_library(
+  fmaximum_numf16
+  HDRS
+    fmaximum_numf16.h
+  DEPENDS
+    libc.include.llvm-libc-macros.float16_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fmaximum_numl
+  HDRS
+    fmaximum_numl.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+)
+
+
 add_header_library(
   fmin
   HDRS
@@ -1015,6 +1080,71 @@ add_header_library(
     libc.src.__support.FPUtil.basic_operations
     libc.src.__support.macros.config
 )
+add_header_library(
+  fminimum_num
+  HDRS
+    fminimum_num.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fminimum_numbf16
+  HDRS
+    fminimum_numbf16.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.FPUtil.bfloat16
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fminimum_numf
+  HDRS
+    fminimum_numf.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fminimum_numf128
+  HDRS
+    fminimum_numf128.h
+  DEPENDS
+    libc.include.llvm-libc-types.float128
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+)
+
+add_header_library(
+  fminimum_numf16
+  HDRS
+    fminimum_numf16.h
+  DEPENDS
+    libc.include.llvm-libc-macros.float16_macros
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+  FLAGS
+    MISC_MATH_BASIC_OPS_OPT
+)
+
+add_header_library(
+  fminimum_numl
+  HDRS
+    fminimum_numl.h
+  DEPENDS
+    libc.src.__support.FPUtil.basic_operations
+    libc.src.__support.macros.config
+)
+
 
 add_header_library(
   fminl
diff --git a/libc/src/__support/math/fmaximum_num.h b/libc/src/__support/math/fmaximum_num.h
new file mode 100644
index 0000000000000..fa20551a23e74
--- /dev/null
+++ b/libc/src/__support/math/fmaximum_num.h
@@ -0,0 +1,25 @@
+//===-- Implementation header for fmaximum_num ------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUM_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUM_H
+
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+LIBC_INLINE constexpr double fmaximum_num(double x, double y) {
+  return fputil::fmaximum_num(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUM_H
diff --git a/libc/src/__support/math/fmaximum_numbf16.h b/libc/src/__support/math/fmaximum_numbf16.h
new file mode 100644
index 0000000000000..673b8a8af1b87
--- /dev/null
+++ b/libc/src/__support/math/fmaximum_numbf16.h
@@ -0,0 +1,26 @@
+//===-- Implementation header for fmaximum_numbf16 --------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMBF16_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMBF16_H
+
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/FPUtil/bfloat16.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+LIBC_INLINE constexpr bfloat16 fmaximum_numbf16(bfloat16 x, bfloat16 y) {
+  return fputil::fmaximum_num(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMBF16_H
diff --git a/libc/src/__support/math/fmaximum_numf.h b/libc/src/__support/math/fmaximum_numf.h
new file mode 100644
index 0000000000000..436492d5f676d
--- /dev/null
+++ b/libc/src/__support/math/fmaximum_numf.h
@@ -0,0 +1,25 @@
+//===-- Implementation header for fmaximum_numf -----------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF_H
+
+#include "src/__support/FPUtil/BasicOperations.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+namespace math {
+
+LIBC_INLINE constexpr float fmaximum_numf(float x, float y) {
+  return fputil::fmaximum_num(x, y);
+}
+
+} // namespace math
+} // namespace LIBC_NAMESPACE_DECL
+
+#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FMAXIMUM_NUMF_H
diff --git a/libc/src/__support/math/fmaximum_numf128.h b/libc/src/__support/math/fmaximum_numf128.h
new file mode 100644
index 0000000000000..b3fc57031d74f
--- /dev/null
+++ b/libc/src/__support/math/fmaximum_numf128.h
@@ -0,0 +1,31 @@
+//===-- Implementation head...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/194562


More information about the libc-commits mailing list