powerpc: POWER8 memcpy optimization for cached memory
commitc9cd7b0ce5c52a3dac7347084651d7df0b39a6d0
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>
Mon, 11 Dec 2017 19:39:42 +0000 (11 17:39 -0200)
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Mon, 11 Dec 2017 19:39:42 +0000 (11 17:39 -0200)
tree725d9e24e8a3c66866e2b8963928d4857f09b561
parente70c6fee466d26af36a38270e451cbe3273a6660
powerpc: POWER8 memcpy optimization for cached memory

On POWER8, unaligned memory accesses to cached memory has little impact
on performance as opposed to its ancestors.

It is disabled by default and will only be available when the tunable
glibc.tune.cached_memopt is set to 1.

                 __memcpy_power8_cached      __memcpy_power7
============================================================
    max-size=4096:     33325.70 ( 12.65%)        38153.00
    max-size=8192:     32878.20 ( 11.17%)        37012.30
   max-size=16384:     33782.20 ( 11.61%)        38219.20
   max-size=32768:     33296.20 ( 11.30%)        37538.30
   max-size=65536:     33765.60 ( 10.53%)        37738.40

* manual/tunables.texi (Hardware Capability Tunables): Document
glibc.tune.cached_memopt.
* sysdeps/powerpc/cpu-features.c: New file.
* sysdeps/powerpc/cpu-features.h: New file.
* sysdeps/powerpc/dl-procinfo.c [!IS_IN(ldconfig)]: Add
_dl_powerpc_cpu_features.
* sysdeps/powerpc/dl-tunables.list: New file.
* sysdeps/powerpc/ldsodefs.h: Include cpu-features.h.
* sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
(INIT_ARCH): Initialize use_aligned_memopt.
* sysdeps/powerpc/powerpc64/dl-machine.h [defined(SHARED &&
IS_IN(rtld))]: Restrict dl_platform_init availability and
initialize CPU features used by tunables.
* sysdeps/powerpc/powerpc64/multiarch/Makefile (sysdep_routines):
Add memcpy-power8-cached.
* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Add
__memcpy_power8_cached.
* sysdeps/powerpc/powerpc64/multiarch/memcpy.c: Likewise.
* sysdeps/powerpc/powerpc64/multiarch/memcpy-power8-cached.S:
New file.

Reviewed-by: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
13 files changed:
ChangeLog
manual/tunables.texi
sysdeps/powerpc/cpu-features.c [new file with mode: 0644]
sysdeps/powerpc/cpu-features.h [new file with mode: 0644]
sysdeps/powerpc/dl-procinfo.c
sysdeps/powerpc/dl-tunables.list [new file with mode: 0644]
sysdeps/powerpc/ldsodefs.h
sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h
sysdeps/powerpc/powerpc64/dl-machine.h
sysdeps/powerpc/powerpc64/multiarch/Makefile
sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
sysdeps/powerpc/powerpc64/multiarch/memcpy-power8-cached.S [new file with mode: 0644]
sysdeps/powerpc/powerpc64/multiarch/memcpy.c