[PATCH 1/2] benchtests: Add fmaximum and fminimum family benchmarks

Julian Zhu <[email protected]> Fri, 31 Jul 2026 13:32:58 +0800
Newsgroups gmane.comp.lib.glibc.alpha
Message-ID <[email protected]>
Add inputs for the C23 fmaximum, fminimum, fmaximum_num and fminimum_num families in both float and double precision.  Cover finite values, infinities, quiet NaNs and signaling NaNs, and disable compiler builtins so the benchmarks exercise libc.

Signed-off-by: Julian Zhu <[email protected]>
---
 benchtests/Makefile             | 16 ++++++++++++++++
 benchtests/fmaximum-inputs      | 23 +++++++++++++++++++++++
 benchtests/fmaximum_num-inputs  | 23 +++++++++++++++++++++++
 benchtests/fmaximum_numf-inputs | 23 +++++++++++++++++++++++
 benchtests/fmaximumf-inputs     | 23 +++++++++++++++++++++++
 benchtests/fminimum-inputs      | 23 +++++++++++++++++++++++
 benchtests/fminimum_num-inputs  | 23 +++++++++++++++++++++++
 benchtests/fminimum_numf-inputs | 23 +++++++++++++++++++++++
 benchtests/fminimumf-inputs     | 23 +++++++++++++++++++++++
 9 files changed, 200 insertions(+)
 create mode 100644 benchtests/fmaximum-inputs
 create mode 100644 benchtests/fmaximum_num-inputs
 create mode 100644 benchtests/fmaximum_numf-inputs
 create mode 100644 benchtests/fmaximumf-inputs
 create mode 100644 benchtests/fminimum-inputs
 create mode 100644 benchtests/fminimum_num-inputs
 create mode 100644 benchtests/fminimum_numf-inputs
 create mode 100644 benchtests/fminimumf-inputs

diff --git a/benchtests/Makefile b/benchtests/Makefile
index f407e492cb..a288c6ca74 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -80,8 +80,16 @@ bench-math := \
   fmal \
   fmax \
   fmaxf \
+  fmaximum \
+  fmaximum_num \
+  fmaximum_numf \
+  fmaximumf \
   fmin \
   fminf \
+  fminimum \
+  fminimum_num \
+  fminimum_numf \
+  fminimumf \
   fmod \
   fmodf \
   frexp \
@@ -354,6 +362,14 @@ CFLAGS-bench-fma.c += -fno-builtin
 CFLAGS-bench-fmaf.c += -fno-builtin
 CFLAGS-bench-fmax.c += -fno-builtin
 CFLAGS-bench-fmaxf.c += -fno-builtin
+CFLAGS-bench-fmaximum.c += -fno-builtin
+CFLAGS-bench-fmaximumf.c += -fno-builtin
+CFLAGS-bench-fmaximum_num.c += -fno-builtin
+CFLAGS-bench-fmaximum_numf.c += -fno-builtin
+CFLAGS-bench-fminimum.c += -fno-builtin
+CFLAGS-bench-fminimumf.c += -fno-builtin
+CFLAGS-bench-fminimum_num.c += -fno-builtin
+CFLAGS-bench-fminimum_numf.c += -fno-builtin
 CFLAGS-bench-trunc.c += -fno-builtin
 CFLAGS-bench-truncf.c += -fno-builtin
 CFLAGS-bench-fmod.c += -fno-builtin
diff --git a/benchtests/fmaximum-inputs b/benchtests/fmaximum-inputs
new file mode 100644
index 0000000000..18eb8feb34
--- /dev/null
+++ b/benchtests/fmaximum-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: double:double
+## ret: double
+78.5, -78.5
+-78.5, 78.5
+0,     78.5
+78.5,  0
+0,     -78.5
+-78.5, 0
+__builtin_inf (), 78.5
+__builtin_inf (), -78.5
+78.5, __builtin_inf ()
+-78.5, __builtin_inf ()
+## name: qNaN
+__builtin_nan (""), 78.5
+__builtin_nan (""), -78.5
+78.5, __builtin_nan ("")
+-78.5, __builtin_nan ("")
+## name: sNaN
+__builtin_nans (""), 78.5
+__builtin_nans (""), -78.5
+78.5, __builtin_nans ("")
+-78.5, __builtin_nans ("")
diff --git a/benchtests/fmaximum_num-inputs b/benchtests/fmaximum_num-inputs
new file mode 100644
index 0000000000..18eb8feb34
--- /dev/null
+++ b/benchtests/fmaximum_num-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: double:double
+## ret: double
+78.5, -78.5
+-78.5, 78.5
+0,     78.5
+78.5,  0
+0,     -78.5
+-78.5, 0
+__builtin_inf (), 78.5
+__builtin_inf (), -78.5
+78.5, __builtin_inf ()
+-78.5, __builtin_inf ()
+## name: qNaN
+__builtin_nan (""), 78.5
+__builtin_nan (""), -78.5
+78.5, __builtin_nan ("")
+-78.5, __builtin_nan ("")
+## name: sNaN
+__builtin_nans (""), 78.5
+__builtin_nans (""), -78.5
+78.5, __builtin_nans ("")
+-78.5, __builtin_nans ("")
diff --git a/benchtests/fmaximum_numf-inputs b/benchtests/fmaximum_numf-inputs
new file mode 100644
index 0000000000..7eb7bda5e4
--- /dev/null
+++ b/benchtests/fmaximum_numf-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: float:float
+## ret: float
+78.5f, -78.5f
+-78.5f, 78.5f
+0.0f,   78.5f
+78.5f,  0.0f
+0.0f,   -78.5f
+-78.5, 0.0f
+__builtin_inff (), 78.5f
+__builtin_inff (), -78.5f
+78.5f, __builtin_inff ()
+-78.5f, __builtin_inff ()
+## name: qNaN
+__builtin_nanf (""), 78.5f
+__builtin_nanf (""), -78.5f
+78.5f, __builtin_nanf ("")
+-78.5f, __builtin_nanf ("")
+## name: sNaN
+__builtin_nansf (""), 78.5f
+__builtin_nansf (""), -78.5f
+78.5f, __builtin_nansf ("")
+-78.5f, __builtin_nansf ("")
diff --git a/benchtests/fmaximumf-inputs b/benchtests/fmaximumf-inputs
new file mode 100644
index 0000000000..7eb7bda5e4
--- /dev/null
+++ b/benchtests/fmaximumf-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: float:float
+## ret: float
+78.5f, -78.5f
+-78.5f, 78.5f
+0.0f,   78.5f
+78.5f,  0.0f
+0.0f,   -78.5f
+-78.5, 0.0f
+__builtin_inff (), 78.5f
+__builtin_inff (), -78.5f
+78.5f, __builtin_inff ()
+-78.5f, __builtin_inff ()
+## name: qNaN
+__builtin_nanf (""), 78.5f
+__builtin_nanf (""), -78.5f
+78.5f, __builtin_nanf ("")
+-78.5f, __builtin_nanf ("")
+## name: sNaN
+__builtin_nansf (""), 78.5f
+__builtin_nansf (""), -78.5f
+78.5f, __builtin_nansf ("")
+-78.5f, __builtin_nansf ("")
diff --git a/benchtests/fminimum-inputs b/benchtests/fminimum-inputs
new file mode 100644
index 0000000000..18eb8feb34
--- /dev/null
+++ b/benchtests/fminimum-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: double:double
+## ret: double
+78.5, -78.5
+-78.5, 78.5
+0,     78.5
+78.5,  0
+0,     -78.5
+-78.5, 0
+__builtin_inf (), 78.5
+__builtin_inf (), -78.5
+78.5, __builtin_inf ()
+-78.5, __builtin_inf ()
+## name: qNaN
+__builtin_nan (""), 78.5
+__builtin_nan (""), -78.5
+78.5, __builtin_nan ("")
+-78.5, __builtin_nan ("")
+## name: sNaN
+__builtin_nans (""), 78.5
+__builtin_nans (""), -78.5
+78.5, __builtin_nans ("")
+-78.5, __builtin_nans ("")
diff --git a/benchtests/fminimum_num-inputs b/benchtests/fminimum_num-inputs
new file mode 100644
index 0000000000..18eb8feb34
--- /dev/null
+++ b/benchtests/fminimum_num-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: double:double
+## ret: double
+78.5, -78.5
+-78.5, 78.5
+0,     78.5
+78.5,  0
+0,     -78.5
+-78.5, 0
+__builtin_inf (), 78.5
+__builtin_inf (), -78.5
+78.5, __builtin_inf ()
+-78.5, __builtin_inf ()
+## name: qNaN
+__builtin_nan (""), 78.5
+__builtin_nan (""), -78.5
+78.5, __builtin_nan ("")
+-78.5, __builtin_nan ("")
+## name: sNaN
+__builtin_nans (""), 78.5
+__builtin_nans (""), -78.5
+78.5, __builtin_nans ("")
+-78.5, __builtin_nans ("")
diff --git a/benchtests/fminimum_numf-inputs b/benchtests/fminimum_numf-inputs
new file mode 100644
index 0000000000..7eb7bda5e4
--- /dev/null
+++ b/benchtests/fminimum_numf-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: float:float
+## ret: float
+78.5f, -78.5f
+-78.5f, 78.5f
+0.0f,   78.5f
+78.5f,  0.0f
+0.0f,   -78.5f
+-78.5, 0.0f
+__builtin_inff (), 78.5f
+__builtin_inff (), -78.5f
+78.5f, __builtin_inff ()
+-78.5f, __builtin_inff ()
+## name: qNaN
+__builtin_nanf (""), 78.5f
+__builtin_nanf (""), -78.5f
+78.5f, __builtin_nanf ("")
+-78.5f, __builtin_nanf ("")
+## name: sNaN
+__builtin_nansf (""), 78.5f
+__builtin_nansf (""), -78.5f
+78.5f, __builtin_nansf ("")
+-78.5f, __builtin_nansf ("")
diff --git a/benchtests/fminimumf-inputs b/benchtests/fminimumf-inputs
new file mode 100644
index 0000000000..7eb7bda5e4
--- /dev/null
+++ b/benchtests/fminimumf-inputs
@@ -0,0 +1,23 @@
+## includes: math.h
+## args: float:float
+## ret: float
+78.5f, -78.5f
+-78.5f, 78.5f
+0.0f,   78.5f
+78.5f,  0.0f
+0.0f,   -78.5f
+-78.5, 0.0f
+__builtin_inff (), 78.5f
+__builtin_inff (), -78.5f
+78.5f, __builtin_inff ()
+-78.5f, __builtin_inff ()
+## name: qNaN
+__builtin_nanf (""), 78.5f
+__builtin_nanf (""), -78.5f
+78.5f, __builtin_nanf ("")
+-78.5f, __builtin_nanf ("")
+## name: sNaN
+__builtin_nansf (""), 78.5f
+__builtin_nansf (""), -78.5f
+78.5f, __builtin_nansf ("")
+-78.5f, __builtin_nansf ("")
-- 
2.53.0