Commit Graph

404 Commits

Author SHA1 Message Date
Adhemerval Zanella 1d828b9ddc benchtests: Improve modf benchtest
It adds four ranges, which is how the generic implementation handles
normal numbers:

  1. Random inputs in the range [0.0, 1.0];
  2. Random inputs in the range [1.0, (double)(UINT64_C(1) << 52))];
  3. Random inputs in the range [(double)(UINT64_C(1) << 52), DBL_MAX];
  4. Random integral inputs in the range [0.0, (double)(UINT64_C(1) << 52)].

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-06-13 11:30:12 -03:00
Adhemerval Zanella 619fd4e37b benchtests: Add modff benchtest
It adds four ranges, which is how the generic implementation handles
normal numbers:

  1. Random inputs in the range [0.0, 1.0];
  2. Random inputs in the range [1.0, (float)(1U << 23)];
  3. Random inputs in the range [(float)(1U << 23), FLT_MAX];
  4. Random integral inputs in the range [0.0, (float)(1U << 23)].

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-06-13 11:29:39 -03:00
Wilco Dijkstra 7ad95d5506 libmvec: Add inputs for asinpi(f), acospi(f), atanpi(f) and atan2pi(f)
Add initial inputs for asinpi(f), acospi(f), atanpi(f) and atan2pi(f) based
on existing asin/acos/atan inputs.

Benchtests now works on the new libmvec function.

Reviewed-by: Yury Khrustalev <yury.khrustalev@arm.com>
2025-05-23 11:27:44 +00:00
Cupertino Miranda c6bf6d1897 benchtest: malloc tcache hotpath benchtest
Existing benchtests for malloc infrastructure seem to be rather generic
to test global malloc implementation performance.  This new benchtest
focus on reducing any non tcache related side effects, allowing to more
realistically predict performance impacts of tcache code changes.
The test was inpired in bench-[cm]alloc-thread code, with severe
simplifications:
 - forces single thread execution, reducing concurrency side-effects,
   like cache incoherence penalties due simultaneous writes to the same
   cache pages;
 - Focus on allocating and deallocating a single size for all the
   duration of the benchmark. Since all it does is allocate and
   deallocate, it will measure the tcache hotpath without any
   side-effects.
 - Allows to specify the allocation size as input argument.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-05-15 13:13:00 +00:00
Paul Zimmermann ad966bc4ef added benchtest inputs for log2l 2025-05-13 15:07:41 +02:00
Paul Zimmermann aa4c600483 added benchtest inputs for expl 2025-05-13 15:06:18 +02:00
Paul Zimmermann 2d9f479f37 added benchtest inputs for powl
changes in v2:
* fixed the missing Makefile entry in the first version
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-05-13 11:10:17 +02:00
Paul Zimmermann 442ddedc07 added benchtest inputs for fmal 2025-05-13 10:58:41 +02:00
Cupertino Miranda 77930e0447 benchtest: Correct shell script related to bench-malloc-thread
This patch changes the shell script that selects which arguments are used
for the execution of bench-malloc-thread.
The problem seems to have been introduced in commit:

  commit 2d6427a63c
  Author: Wangyang Guo <wangyang.guo@intel.com>
  Date:   Fri Nov 29 16:05:35 2024 +0800
  benchtests: Add calloc test

With current condition, the following error "/bin/sh: 3: [[: not found"
occurs when executing `make bench BENCHSET="malloc-thread"` and the else
path is taken, using incorrect arguments for bench test execution.

Error is reproducible in Debian based distros.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-04-25 16:38:25 +02:00
Wilco Dijkstra dd003db8d1 benchtests: Increase iterations of bench-malloc-simple
Increase iterations so it runs for ~1 second on modern CPUs.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-18 17:13:28 +00:00
Sunil K Pandey c7c4a5906f x86_64: Add atanh with FMA
On SPR, it improves atanh bench performance by:

			Before		After		Improvement
reciprocal-throughput	15.1715		14.8628		2%
latency			57.1941		56.1883		2%

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-03-13 14:30:47 -07:00
Sunil K Pandey dded0d20f6 x86_64: Add sinh with FMA
On SPR, it improves sinh bench performance by:

			Before		After		Improvement
reciprocal-throughput	14.2017		11.815		17%
latency			36.4917		35.2114		4%

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2025-03-13 10:55:25 -07:00
Adhemerval Zanella 5e1a64736e benchtests: Remove wrong snippet from 360cce0b06 2025-03-13 10:30:43 -03:00
Adhemerval Zanella 360cce0b06 nptl: Check if thread is already terminated in sigcancel_handler (BZ 32782)
The SIGCANCEL signal handler should not issue __syscall_do_cancel,
which calls __do_cancel and __pthread_unwind, if the cancellation
is already in proces (and libgcc unwind is not reentrant).  Any
cancellation signal received after is ignored.

Checked on x86_64-linux-gnu and aarch64-linux-gnu.

Tested-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
2025-03-13 09:11:13 -03:00
Wilco Dijkstra 3a9fb97caf benchtests: Add random strlen benchmark
Add a new randomized strlen test similar to bench-random-memcpy.  Instead of
repeating the same call to strlen over and over again, it times a large number
of different strings.  The distribution of the string length and alignment is
based on SPEC2017.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-05 13:30:50 +00:00
Wilco Dijkstra dac7ea4a6f benchtests: Improve large memcpy/memset benchmarks
Adjust sizes between 64KB and 16MB and iterations based on length.
Remove incorrect uses of alloc_bufs since we're not interested in measuring
Linux clear_page time.  Use getpagesize() - 1 instead of 4095 when
aligning within a page.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-03-05 13:29:48 +00:00
Adhemerval Zanella 57d1fc9971 benchtests: Add tanpif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:54 -03:00
Adhemerval Zanella 10370a4d00 benchtests: Add sinpif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:51 -03:00
Adhemerval Zanella 180e97bee6 benchtests: Add cospif
Random inputs in the range of [-4,4].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-12 16:31:44 -03:00
Adhemerval Zanella 1700d306d4 benchtests: Add atanpif
Random inputs in the range of [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:13 -03:00
Adhemerval Zanella ec9d2f3066 benchtests: Add atan2pif
Random inputs in the range of [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:08 -03:00
Adhemerval Zanella 082ffa4ddc benchtests: Add asinpif
Random inputs in the range of [-1,1].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:07:02 -03:00
Adhemerval Zanella 3e0e782b29 benchtests: Add acospif
Random inputs in the range of [-1,1].

Reviewed-by: DJ Delorie <dj@redhat.com>
2025-02-11 10:06:56 -03:00
Florian Weimer 0b795abd62 benchtests: Add dummy in put files cospi, cospif, sinpi, sinpif, tanpi, tanpif
This fixes an AArch64 build failure:

python3 -B ../sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py bench-float-advsimd-cospi > …/benchtests/bench-float-advsimd-cospi.c
Traceback (most recent call last):
  File "…/sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py", line 106, in <module>
    main(sys.argv[1])
    ~~~~^^^^^^^^^^^^^
  File "…/sysdeps/aarch64/fpu/scripts/bench_libmvec_advsimd.py", line 81, in main
    with open(f"../benchtests/libmvec/{input_filename}") as f:
         ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

FileNotFoundError: [Errno 2] No such file or directory: '../benchtests/libmvec/cospif-inputs'
2025-01-16 19:59:58 +01:00
Paul Eggert 2642002380 Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
Adhemerval Zanella a2b0ff98a0 include/sys/cdefs.h: Add __attribute_optimization_barrier__
Add __attribute_optimization_barrier__ to disable inlining and cloning on a
function.  For Clang, expand it to

__attribute__ ((optnone))

Otherwise, expand it to

__attribute__ ((noinline, clone))

Co-Authored-By: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
2024-12-23 06:28:55 +08:00
Adhemerval Zanella 042ed4b28a benchtests: Add tanhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella b76b90a809 benchtests: Add sinhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 7b7a3fa121 benchtests: Add coshf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 4f1e26ba47 benchtests: Add atanhf benchmark
The input is based on acosf one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella fa857e6c7b benchtests: Add atan2f benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 74a275d244 benchtests: Add atanf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 275d4d479b benchtests: Add asinhf benchmark
Random inputs in the range [-10,10].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 1da8a3707c benchtests: Add asinf benchmark
The input is based on acosf one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella fa145f3784 benchtests: Add acoshf benchmark
Random inputs in the range [1,21].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Adhemerval Zanella 647e464374 benchtests: Add acosf benchmark
The input is based on acos one (random inputs in [-1,1]).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-18 17:24:42 -03:00
Kuan-Wei Chiu dce846c789 benchtests: Add benchmark test for bsearch
Introduce a benchmark test for the bsearch function to evaluate its
performance.

Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
Reviewed-by: DJ Delorie <dj@redhat.com>
2024-12-11 17:04:42 -05:00
Wangyang Guo 2d6427a63c benchtests: Add calloc test
Two new benchmarks related to calloc added:
- bench-calloc-simple
- bench-calloc-thread
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2024-11-29 19:04:28 +08:00
Adhemerval Zanella 2234b08763 benchtests: Add tanf benchmark
Random inputs in [-pi, pi].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella ce4122ff97 benchtests: Add lgammaf benchmark
Random inputs in the range [-20.0,20.0].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella d7612d04e4 benchtests: Add erfcf benchmark
It is based on binary64 erfc-inputs, with random inputs in
[0,b=0x1.41bbf6p+3] where b in the smallest number such that
erfcf(b) rounds to 0 (to nearest).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella 50657965da benchtests: Add erff benchmark
It is based on binary64 erf-inputs, with random inputs in [0,b=0x1.f5a888p+1]
where b in the smallest number such that erff(b) rounds to 1 (to nearest).

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-22 10:01:03 -03:00
Adhemerval Zanella 53c80be8da benchtests: Add cbrtf benchmark
Based on binary64 benchtests, with random inputs in [1,8].
2024-11-22 10:01:03 -03:00
Adhemerval Zanella 48767cbb76 benchtests: Add log10p1f benchmark
It is based on log2f data.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:20 -03:00
Adhemerval Zanella ef2485c5fe benchtests: Add log1p benchmark
Random inputs x*2^e where x is random in [1/2,1] and e in [-29,127].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:19 -03:00
Adhemerval Zanella acc2137382 benchtests: Add log2p1f benchmark
It is based on log2f data.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:18 -03:00
Adhemerval Zanella 1e262f80dd benchtests: Add log10f benchmark
The inputs are random numbers in the form x*2^e where x is random
in [0x1p-1,0x1p+0] and e in [-126,127].

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:16 -03:00
Adhemerval Zanella 2dbf7c4bf1 benchtests: Add expm1f benchmark
The inputs are modeled based on expm1-inputs, with the range
adapted to binary32 range.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:15 -03:00
Adhemerval Zanella 19ab8bbd71 benchtests: Add exp2m1f benchmark
The input is based on exp2f benchmark.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:13 -03:00
Adhemerval Zanella ad53c12798 benchtests: Add exp10m1f benchmark
The input is based on exp10f benchmark.

Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:17:09 -03:00