From 20a020edbc7aac677552f273d1e9961c2a56d911 Mon Sep 17 00:00:00 2001 From: "W. Felix Handte" Date: Thu, 3 Sep 2020 13:34:38 -0400 Subject: [PATCH] Prefetch Chain Table Matches --- lib/compress/zstd_lazy.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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];