]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
lib: add hint to generate more pipeline friendly code (#3138)
authorJun He <jun.he@arm.com>
Fri, 29 Jul 2022 17:28:04 +0000 (01:28 +0800)
committerGitHub <noreply@github.com>
Fri, 29 Jul 2022 17:28:04 +0000 (10:28 -0700)
With statistic data of test data files of silesia
the chance of position beyond highThreshold is very
low (~1.3%@L8 in most cases, all <2.5%), and is in
"lowprob area". Add the branch hint so compiler can
get better pipiline codegen.
With this change it is observed ~1% of mozilla and
xml, and slight (0.3%~0.8%) but consistent uplift on
other files on Arm N1.

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

lib/decompress/zstd_decompress_block.c

index 20211f72b2fbfb349806a74fd6f20c62d76a7225..6ebda486c554243beb5a8830b31058cc030804a9 100644 (file)
@@ -543,7 +543,7 @@ void ZSTD_buildFSETable_body(ZSTD_seqSymbol* dt,
             for (i=0; i<n; i++) {
                 tableDecode[position].baseValue = s;
                 position = (position + step) & tableMask;
-                while (position > highThreshold) position = (position + step) & tableMask;   /* lowprob area */
+                while (UNLIKELY(position > highThreshold)) position = (position + step) & tableMask;   /* lowprob area */
         }   }
         assert(position == 0); /* position must reach all cells once, otherwise normalizedCounter is incorrect */
     }