about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@sourceware.org>2018-05-11 00:11:52 +0530
committerSiddhesh Poyarekar <siddhesh@sourceware.org>2018-05-11 00:11:52 +0530
commitdb725a458e1cb0e17204daa543744faf08bb2e06 (patch)
treefc19e9be431ff0128b7bdd6ea3f46609ec0cf303 /ChangeLog
parent70c97f8493ab2a215c2543d78f212abb23f151ed (diff)
downloadglibc-db725a458e1cb0e17204daa543744faf08bb2e06.tar.gz
glibc-db725a458e1cb0e17204daa543744faf08bb2e06.tar.xz
glibc-db725a458e1cb0e17204daa543744faf08bb2e06.zip
aarch64,falkor: Ignore prefetcher tagging for smaller copies
For smaller and medium sized copies, the effect of hardware
prefetching are not as dominant as instruction level parallelism.
Hence it makes more sense to load data into multiple registers than to
try and route them to the same prefetch unit.  This is also the case
for the loop exit where we are unable to latch on to the same prefetch
unit anyway so it makes more sense to have data loaded in parallel.

The performance results are a bit mixed with memcpy-random, with
numbers jumping between -1% and +3%, i.e. the numbers don't seem
repeatable.  memcpy-walk sees a 70% improvement (i.e. > 2x) for 128
bytes and that improvement reduces down as the impact of the tail copy
decreases in comparison to the loop.

	* sysdeps/aarch64/multiarch/memcpy_falkor.S (__memcpy_falkor):
	Use multiple registers to copy data in loop tail.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog3
1 files changed, 3 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c3b2e03c3b..b4ecc711b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2018-05-11  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
+	* sysdeps/aarch64/multiarch/memcpy_falkor.S (__memcpy_falkor):
+	Use multiple registers to copy data in loop tail.
+
 	* sysdeps/aarch64/multiarch/memmove_falkor.S
 	(__memmove_falkor): Use multiple registers to move data in
 	loop tail.