lib: add hint to generate more pipeline friendly code (#3138)

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
This commit is contained in:
Jun He 2022-07-30 01:28:04 +08:00 committed by GitHub
parent 558cf20d0d
commit ec5fdcde19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -543,7 +543,7 @@ void ZSTD_buildFSETable_body(ZSTD_seqSymbol* dt,
for (i=0; i<n; i++) { for (i=0; i<n; i++) {
tableDecode[position].baseValue = s; tableDecode[position].baseValue = s;
position = (position + step) & tableMask; 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 */ assert(position == 0); /* position must reach all cells once, otherwise normalizedCounter is incorrect */
} }