[PATCH 1/5] benchtests: Add benchmarks for frexp functions

Osama Abdelkader osama.abdelkader@gmail.com
Tue Oct 21 22:05:18 GMT 2025


Add benchmark support for frexp, frexpf, and frexpl to measure the
performance improvement of the fast path optimization.

- Created frexp-inputs, frexpf-inputs, frexpl-inputs with random test values
- Added frexp, frexpf, frexpl to bench-math list
- Added CFLAGS to disable builtins for accurate benchmarking

These benchmarks will be used to quantify the performance gains from the
fast path optimization for normal floating-point numbers.

Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
---
 benchtests/Makefile      |  6 ++++++
 benchtests/frexp-inputs  | 26 ++++++++++++++++++++++++++
 benchtests/frexpf-inputs | 26 ++++++++++++++++++++++++++
 benchtests/frexpl-inputs | 26 ++++++++++++++++++++++++++
 4 files changed, 84 insertions(+)
 create mode 100644 benchtests/frexp-inputs
 create mode 100644 benchtests/frexpf-inputs
 create mode 100644 benchtests/frexpl-inputs

diff --git a/benchtests/Makefile b/benchtests/Makefile
index b4d92b1c04..0d3dfdfc36 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -82,6 +82,9 @@ bench-math := \
   fminf \
   fmod \
   fmodf \
+  frexp \
+  frexpf \
+  frexpl \
   hypot \
   hypotf \
   ilogb \
@@ -347,6 +350,9 @@ CFLAGS-bench-trunc.c += -fno-builtin
 CFLAGS-bench-truncf.c += -fno-builtin
 CFLAGS-bench-fmod.c += -fno-builtin
 CFLAGS-bench-fmodf.c += -fno-builtin
+CFLAGS-bench-frexp.c += -fno-builtin
+CFLAGS-bench-frexpf.c += -fno-builtin
+CFLAGS-bench-frexpl.c += -fno-builtin
 CFLAGS-bench-remainder.c += -fno-builtin
 CFLAGS-bench-remainderf.c += -fno-builtin
 CFLAGS-bench-roundeven.c += -fno-builtin
diff --git a/benchtests/frexp-inputs b/benchtests/frexp-inputs
new file mode 100644
index 0000000000..9ead32f527
--- /dev/null
+++ b/benchtests/frexp-inputs
@@ -0,0 +1,26 @@
+## args: double:<int*>
+## ret: double
+## includes: math.h
+# Random inputs in the range [-20.0,20.0]
+## name: workload-random-m20-p20
+-0x1.7eb52p+1
+-0x1.69a06p+3
+-0x1.a042ccp+3
+0x1.7e9dc8p+3
+-0x1.5d8cap+1
+-0x1.1755b4p+4
+0x1.041908p+4
+0x1.075de4p+4
+0x1.4ab608p+3
+0x1.f4b4a8p+3
+0x1.3ff54p+4
+0x1.fdc038p+3
+0x1.56e1p+3
+0x1.9b90e8p+2
+0x1.1b6d8p+0
+0x1.ebe99p+2
+-0x1.32d9f6p+4
+-0x1.077c24p+3
+0x1.98f028p+3
+-0x1.20faf2p+4
+
diff --git a/benchtests/frexpf-inputs b/benchtests/frexpf-inputs
new file mode 100644
index 0000000000..7af28cf5df
--- /dev/null
+++ b/benchtests/frexpf-inputs
@@ -0,0 +1,26 @@
+## args: float:<int*>
+## ret: float
+## includes: math.h
+# Random inputs in the range [-20.0,20.0]
+## name: workload-random-m20-p20
+-0x1.7eb52p+1
+-0x1.69a06p+3
+-0x1.a042ccp+3
+0x1.7e9dc8p+3
+-0x1.5d8cap+1
+-0x1.1755b4p+4
+0x1.041908p+4
+0x1.075de4p+4
+0x1.4ab608p+3
+0x1.f4b4a8p+3
+0x1.3ff54p+4
+0x1.fdc038p+3
+0x1.56e1p+3
+0x1.9b90e8p+2
+0x1.1b6d8p+0
+0x1.ebe99p+2
+-0x1.32d9f6p+4
+-0x1.077c24p+3
+0x1.98f028p+3
+-0x1.20faf2p+4
+
diff --git a/benchtests/frexpl-inputs b/benchtests/frexpl-inputs
new file mode 100644
index 0000000000..fbb8b61edd
--- /dev/null
+++ b/benchtests/frexpl-inputs
@@ -0,0 +1,26 @@
+## args: long double:<int*>
+## ret: long double
+## includes: math.h
+# Random inputs in the range [-20.0,20.0]
+## name: workload-random-m20-p20
+-0x1.7eb52p+1
+-0x1.69a06p+3
+-0x1.a042ccp+3
+0x1.7e9dc8p+3
+-0x1.5d8cap+1
+-0x1.1755b4p+4
+0x1.041908p+4
+0x1.075de4p+4
+0x1.4ab608p+3
+0x1.f4b4a8p+3
+0x1.3ff54p+4
+0x1.fdc038p+3
+0x1.56e1p+3
+0x1.9b90e8p+2
+0x1.1b6d8p+0
+0x1.ebe99p+2
+-0x1.32d9f6p+4
+-0x1.077c24p+3
+0x1.98f028p+3
+-0x1.20faf2p+4
+
-- 
2.43.0



More information about the Libc-alpha mailing list