]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
decomp: add prefetch for matched seq on aarch64 (#3164)
authorJun He <jun.he@arm.com>
Fri, 29 Jul 2022 17:27:20 +0000 (01:27 +0800)
committerGitHub <noreply@github.com>
Fri, 29 Jul 2022 17:27:20 +0000 (10:27 -0700)
match is used for following sequence copy. It is
only updated when extDict is needed, which is a
low probability case. So it can be prefetched to
reduce cache miss.
The benchmarks on various Arm platforms showed
uplift from 1% ~ 14% with gcc-11/clang-14.

Signed-off-by: Jun He <jun.he@arm.com>
Change-Id: If201af4799d2455d74c79f8387404439d7f684ae

lib/decompress/zstd_decompress_block.c

index 6df4c3849e02ae5a34a5e0638b1870881b11a331..20211f72b2fbfb349806a74fd6f20c62d76a7225 100644 (file)
@@ -967,6 +967,11 @@ size_t ZSTD_execSequence(BYTE* op,
 
     assert(op != NULL /* Precondition */);
     assert(oend_w < oend /* No underflow */);
+
+#if defined(__aarch64__)
+    /* prefetch sequence starting from match that will be used for copy later */
+    PREFETCH_L1(match);
+#endif
     /* Handle edge cases in a slow path:
      *   - Read beyond end of literals
      *   - Match end is within WILDCOPY_OVERLIMIT of oend