glibc/sysdeps/powerpc
Mahesh Bodapati 82b5340ebd powerpc64: Optimize strcpy and stpcpy for Power9/10
This patch modifies the current Power9 implementation of strcpy and
stpcpy to optimize it for Power9 and Power10.

No new Power10 instructions are used, so the original Power9 strcpy
is modified instead of creating a new implementation for Power10.

The changes also affect stpcpy, which uses the same implementation
with some additional code before returning.

Improvements compared to the old Power9 version:

Use simple comparisons for the first ~512 bytes:
  The main loop is good for long strings, but comparing 16B each time is
  better for shorter strings. After aligning the address to 16 bytes, we
  unroll the loop four times, checking 128 bytes each time. There may be
  some overlap with the main loop for unaligned strings, but it is better
  for shorter strings.

Loop with 64 bytes for longer bytes:
  Use 4 consecutive lxv/stxv instructions.

Showed an average improvement of 13%.

Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>
Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
2024-08-23 16:48:32 -05:00
..
bits Refer to C23 in place of C2X in glibc 2024-02-01 11:02:01 +00:00
fpu powerpc64le: Update ulps 2024-08-08 13:42:12 +02:00
nofpu powerpc: Regenerate ULPs for soft-fp 2024-08-07 11:02:03 -03:00
nptl Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
power4 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
power6 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
powerpc32 nptl: Fix Race conditions in pthread cancellation [BZ#12683] 2024-08-23 14:27:43 -03:00
powerpc64 powerpc64: Optimize strcpy and stpcpy for Power9/10 2024-08-23 16:48:32 -05:00
sys/platform Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
abort-instr.h
atomic-machine.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-procinfo.c powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture. 2024-03-19 17:19:27 -05:00
dl-procinfo.h elf: Remove HWCAP_IMPORTANT 2024-06-18 10:45:36 +02:00
dl-tls.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-tls.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-tunables.list Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
elf-initfini.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fpu_control.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
gccframe.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hwcapinfo.c powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture. 2024-03-19 17:19:27 -05:00
hwcapinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ifunc-sel.h Fix powerpc ifunc-sel.h build for -Os. 2018-03-02 22:27:56 +00:00
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ldsodefs.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc-tls.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
locale-defines.sym powerpc: strcasestr optmization for power8 2016-04-22 19:23:13 +05:30
longjmp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
machine-gmon.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Makefile powerpc: Fix unrecognized instruction errors with recent binutils 2021-09-29 14:42:20 -05:00
math-tests-snan-cast.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
math-use-builtins-ffs.h string: Use builtins for ffs and ffsll 2024-02-01 09:31:33 -03:00
mod-cache-ppc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mod-tlsopt-powerpc.c elf/tst-tlsopt-powerpc fails when compiled with -mcpu=power10 (BZ# 29776) 2022-11-14 22:04:25 +10:30
mp_clz_tab.c
novmx-longjmp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
novmx-sigjmp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
novmxsetjmp.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
preconfigure powerpc: Placeholder and infrastructure/build support to add Power11 related changes. 2024-03-19 21:11:34 -05:00
preconfigure.ac powerpc: Placeholder and infrastructure/build support to add Power11 related changes. 2024-03-19 21:11:34 -05:00
rtld-global-offsets.sym powerpc: Move cache line size to rtld_global_ro 2020-01-17 09:05:03 -03:00
sigjmp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sotruss-lib.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
stackinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
string-fza.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sysdep.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-arith.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-arithf.c
test-get_hwcap-static.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-get_hwcap.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
test-gettimebase.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cache-ppc-static-dlopen.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cache-ppc-static.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-cache-ppc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-set_ppr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-stack-align.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-tlsifunc-static.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-tlsifunc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-tlsopt-powerpc.c tst-tlsopt-powerpc as a shared lib 2017-08-03 15:39:21 +09:30
utmp-size.h login: Check default sizes of structs utmp, utmpx, lastlog 2024-04-19 14:38:17 +02:00
Versions powerpc: Add space for HWCAP3/HWCAP4 in the TCB for future Power. 2023-12-15 20:20:14 -06:00