]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Prefetch Chain Table Matches
authorW. Felix Handte <w@felixhandte.com>
Thu, 3 Sep 2020 17:34:38 +0000 (13:34 -0400)
committerW. Felix Handte <w@felixhandte.com>
Fri, 11 Sep 2020 02:10:02 +0000 (22:10 -0400)
lib/compress/zstd_lazy.c

index f2de622d8c3ee0083e2d93a84fecb73c52206f95..0b70494fa0d8213ad2d7fb25dbe611e723419029 100644 (file)
@@ -653,9 +653,13 @@ size_t ZSTD_HcFindBestMatch_generic (
             U32 const chainLength = chainPackedPointer & 0xFF;
             U32 const chainAttempts = nbAttempts - ddsAttempt;
             U32 const chainLimit = chainAttempts > chainLength ? chainLength : chainAttempts;
-            U32 chainAttempt = 0;
+            U32 chainAttempt;
 
-            for ( ; chainAttempt < chainLimit; chainAttempt++, chainIndex++) {
+            for (chainAttempt = 0 ; chainAttempt < chainLimit; chainAttempt++) {
+                PREFETCH_L1(ddsBase + dms->chainTable[chainIndex + chainAttempt]);
+            }
+
+            for (chainAttempt = 0 ; chainAttempt < chainLimit; chainAttempt++, chainIndex++) {
                 size_t currentMl=0;
                 const BYTE* match;
                 matchIndex = dms->chainTable[chainIndex];