[PATCH 1/2] benchtests: Add fmaximum and fminimum family benchmarks
Julian Zhu
jz531210@gmail.com
Fri Jul 31 05:32:58 GMT 2026
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 <jz531210@gmail.com>
---
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
More information about the Libc-alpha
mailing list