aarch64: Optimized memset for Kunpeng processor.
authorXuelei Zhang <zhangxuelei4@huawei.com>
Thu, 19 Dec 2019 15:26:33 +0000 (15:26 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 19 Dec 2019 19:31:04 +0000 (16:31 -0300)
commit525de033a9d19bc79ce353745d14927a793dd4e8
tree8c12f0bd8573525387a8ecbdd447f0347c7894c3
parentc2150769d015dca1805334af7743829f1e4c0b6a
aarch64: Optimized memset for Kunpeng processor.

Due to the branch prediction issue of Kunpeng processor, we found
memset_generic has poor performance on middle sizes setting, and so
we reconstructed the logic, expanded the loop by 4 times in set_long
to solve the problem, even when setting below 1K sizes have benefit.

Another change is that DZ_ZVA seems no work when setting zero, so we
discarded it and used set_long to set zero instead. Fewer branches and
predictions also make the zero case have slightly improvement.

Checked on aarch64-linux-gnu.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
sysdeps/aarch64/multiarch/Makefile
sysdeps/aarch64/multiarch/ifunc-impl-list.c
sysdeps/aarch64/multiarch/memset.c
sysdeps/aarch64/multiarch/memset_kunpeng.S [new file with mode: 0644]