glibc/sysdeps
Raoni Fassina Firmino 23fdf8178c powerpc64le: Optimize memset for POWER10
This implementation is based on __memset_power8 and integrates a lot
of suggestions from Anton Blanchard.

The biggest difference is that it makes extensive use of stxvl to
alignment and tail code to avoid branches and small stores.  It has
three main execution paths:

a) "Short lengths" for lengths up to 64 bytes, avoiding as many
   branches as possible.

b) "General case" for larger lengths, it has an alignment section
   using stxvl to avoid branches, a 128 bytes loop and then a tail
   code, again using stxvl with few branches.

c) "Zeroing cache blocks" for lengths from 256 bytes upwards and set
   value being zero.  It is mostly the __memset_power8 code but the
   alignment phase was simplified because, at this point, address is
   already 16-bytes aligned and also changed to use vector stores.
   The tail code was also simplified to reuse the general case tail.

All unaligned stores use stxvl instructions that do not generate
alignment interrupts on POWER10, making it safe to use on
caching-inhibited memory.

On average, this implementation provides something around 30%
improvement when compared to __memset_power8.

Reviewed-by: Matheus Castanho <msc@linux.ibm.com>
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2021-04-30 18:12:08 -03:00
..
aarch64
alpha nptl: Move pthread_spin_trylock into libc 2021-04-23 17:06:48 +02:00
arc
arm
csky
generic
gnu
hppa nptl: Move pthread_spin_init, Move pthread_spin_unlock into libc 2021-04-23 17:06:44 +02:00
htl Add __attribute_access_none to disable GCC warnings [BZ #27714] 2021-04-27 13:01:55 -06:00
hurd
i386 nptl: Move pthread_spin_trylock into libc 2021-04-23 17:06:48 +02:00
ia64 nptl: Move pthread_spin_trylock into libc 2021-04-23 17:06:48 +02:00
ieee754
m68k
mach
microblaze
mips
nios2
nptl Add __attribute_access_none to disable GCC warnings [BZ #27714] 2021-04-27 13:01:55 -06:00
posix
powerpc powerpc64le: Optimize memset for POWER10 2021-04-30 18:12:08 -03:00
pthread Pass a valid pointer to pthread_setspecific to avoid GCC 11 warning. 2021-04-27 19:07:49 -06:00
riscv
s390
sh nptl: Move pthread_spin_trylock into libc 2021-04-23 17:06:48 +02:00
sparc nptl: Move pthread_spin_trylock into libc 2021-04-23 17:06:48 +02:00
unix Update kernel version to 5.12 in tst-mman-consts.py. 2021-04-29 10:50:11 +00:00
wordsize-32
wordsize-64
x86
x86_64 regenerate ulps on x86_64 with -march=native 2021-04-28 12:46:00 +02:00