glibc/sysdeps
Adhemerval Zanella c369580814 math: Use log2p1f from CORE-MATH
The CORE-MATH implementation is correctly rounded (for any rounding mode)
and shows better performance compared to the generic log2p1f.

The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).

Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1):

Latency                      master        patched   improvement
x86_64                      70.1462        47.0090        32.98%
x86_64v2                    70.2513        47.6160        32.22%
x86_64v3                    60.4840        39.9443        33.96%
i686                        164.068        122.909        25.09%
aarch64                     25.9169        16.9207        34.71%
power10                     18.1261        9.8592         45.61%
powerpc                     17.2683        9.38665        45.64%

reciprocal-throughput        master        patched   improvement
x86_64                      26.2240        16.4082        37.43%
x86_64v2                    25.0911        15.7480        37.24%
x86_64v3                    20.9371        11.7264        43.99%
i686                        90.4209        95.3073        -5.40%
aarch64                     16.8537        8.9561         46.86%
power10                     12.9401        6.5555         49.34%
powerpc                     9.01763        7.54745        16.30%

The performance decrease for i686 is mostly due the use of x87 fpu,
when building with '-msse2 -mfpmath=sse:

                             master        patched   improvement
latency                     164.068        102.982        37.23%
reciprocal-throughput       89.1968        82.5117         7.49%

Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: DJ Delorie <dj@redhat.com>
2024-11-01 11:27:39 -03:00
..
aarch64 math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
alpha math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
arc math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
arm math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
csky math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
generic stdlib: Make abort/_Exit AS-safe (BZ 26275) 2024-10-08 14:40:12 -03:00
gnu sysdeps: Re-flow and sort multiline gnu/Makefile definitions 2024-08-07 11:02:03 -03:00
hppa math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
htl stdlib: Make abort/_Exit AS-safe (BZ 26275) 2024-10-08 14:40:12 -03:00
hurd hurd: Move internal functions to internal header 2024-03-23 22:43:07 +01:00
i386 math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
ieee754 math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
loongarch math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
m68k math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
mach Fix header guard in sysdeps/mach/hurd/x86_64/vm_param.h 2024-10-09 19:16:53 +02:00
microblaze math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
mips math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
nios2 math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
nptl stdlib: Make abort/_Exit AS-safe (BZ 26275) 2024-10-08 14:40:12 -03:00
or1k math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
posix stdlib: Make abort/_Exit AS-safe (BZ 26275) 2024-10-08 14:40:12 -03:00
powerpc math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
pthread Add more tests of pthread_mutexattr_gettype and pthread_mutexattr_settype 2024-10-23 16:45:15 +00:00
riscv math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
s390 math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
sh math: Use expm1f from CORE-MATH 2024-11-01 11:27:35 -03:00
sparc math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00
unix LoongArch: Add RSEQ_SIG in rseq.h. 2024-11-01 10:41:20 +08:00
wordsize-32 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
wordsize-64 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
x86 x86: Enable non-temporal memset for Hygon processors 2024-08-26 10:01:58 -07:00
x86_64 math: Use log2p1f from CORE-MATH 2024-11-01 11:27:39 -03:00