From: W. Felix Handte Date: Thu, 3 Sep 2020 17:34:38 +0000 (-0400) Subject: Prefetch Chain Table Matches X-Git-Tag: v1.4.7~80^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20a020edbc7aac677552f273d1e9961c2a56d911;p=thirdparty%2Fzstd.git Prefetch Chain Table Matches --- diff --git a/lib/compress/zstd_lazy.c b/lib/compress/zstd_lazy.c index f2de622d8..0b70494fa 100644 --- a/lib/compress/zstd_lazy.c +++ b/lib/compress/zstd_lazy.c @@ -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];