glibc/sysdeps
Adhemerval Zanella 0e1a1178ee math: Remove the SVID error handling from remainder
The optimized i386 version is faster than the generic one, and
gcc implements it through the builtin. This optimization enables
us to migrate the implementation to a C version.  The performance
on a Zen3 chip is similar to the SVID one.

The m68k provided an optimized version through __m81_u(remainderf)
(mathimpl.h), and gcc does not implement it through a builtin
(different than i386).

Performance improves a bit on x86_64 (Zen3, gcc 15.2.1):

reciprocal-throughput           input    master   NO-SVID  improvement
x86_64                     subnormals   18.8522   16.2506       13.80%
x86_64                         normal  421.8260  403.9270        4.24%
x86_64                 close-exponent   21.0579   18.7642       10.89%
i686                       subnormals   21.3443   21.4229       -0.37%
i686                           normal  525.8380   538.807       -2.47%
i686                   close-exponent   21.6589   21.7983       -0.64%

Tested on x86_64-linux-gnu and i686-linux-gnu.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
2025-11-04 04:14:01 -03:00
..
aarch64 nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
alpha nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
arc nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
arm nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
csky nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
generic nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
gnu Updates struct tcp_zerocopy_receive from 5.11 to netinet/tcp.h. 2025-10-29 12:54:12 -03:00
hppa nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
htl
hurd
i386 math: Remove the SVID error handling from remainder 2025-11-04 04:14:01 -03:00
ieee754 math: Remove the SVID error handling from remainder 2025-11-04 04:14:01 -03:00
loongarch nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
m68k math: Remove the SVID error handling from remainder 2025-11-04 04:14:01 -03:00
mach math: Remove the SVID error handling from remainder 2025-11-04 04:14:01 -03:00
microblaze nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
mips nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
nptl
or1k nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
posix assert: Refactor assert/assert_perror 2025-09-23 10:29:24 -03:00
powerpc nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
pthread Add once_flag, ONCE_FLAG_INIT and call_once to stdlib.h for C23 2025-10-01 15:15:15 +00:00
riscv nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
s390 nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
sh nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
sparc nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
unix math: Remove the SVID error handling from remainder 2025-11-04 04:14:01 -03:00
wordsize-32 Replace count_leading_zeros with stdc_leading_zeros 2025-10-29 12:53:55 -03:00
wordsize-64
x86 nptl: Remove ATOMIC_EXCHANGE_USES_CAS usage 2025-11-04 04:14:01 -03:00
x86_64 x86: fix wmemset ifunc stray '!' (bug 33542) 2025-10-29 12:54:14 -03:00