You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* zstd: bump avo pin, regenerate arm64 with BMI2 lowering
Bumps the pinned avo commit (honeycombio/avo) past today's fixes: a
flag-liveness bug and a 32-bit CMPL/TESTL fold bug (neither actually reachable
from this codebase - seqdec's generated output is byte-identical without
them, and CMPL/TESTL aren't used here at all), plus a new EQ/NE-only
sub-32-bit CMPW/TESTB lowering that fse_decoder's buildDtable needs.
Checked whether the sub-word compare/test fold (the general form of which the
new avo now refuses to lower) actually produced wrong output in the
already-shipped fse_decoder_arm64.s: it didn't. All three call sites happened
to operate on registers already clean above the compared width (via an
upstream sign/zero-extending load, or a preceding bounds check), verified by
tracing register provenance by hand. Real risk, but mitigated by accident
rather than by design - which is exactly why the stricter check is worth
having going forward.
The new avo also prefers the BMI2 twin over the generic one when lowering to
arm64 (arm64 has native flag-free equivalents for the BMI2 idioms), so
seqdec_arm64.s now lowers sequenceDecs_decode_bmi2/decodeSync_bmi2 instead of
the generic variants. Symbol names are unaffected (arm64Name strips the
_bmi2/_amd64 suffix either way).
Validated: go vet and go test ./zstd/... pass natively on arm64; FuzzDecodeAll
(26.4M execs), FuzzDecoder (9.6M execs), and FuzzDecAllNoBMI2 pass with zero
crashers.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
* zstd: bump avo pin, prefer generic (non-BMI2) twin on arm64
Benchmarking the BMI2-preferred seqdec on real hardware (Apple M4, Cortex-A72)
showed it's 13-50% slower than the generic twin, not faster as assumed -- see
the follow-up avo commit for why. Bump past that fix; avo's arm64 lowering now
defaults to the generic twin (ARM64PreferBMI2 defaults false), which this repo
doesn't override. seqdec_arm64.s is now byte-identical to what #1160 shipped,
aside from the skip-reason comment text; fse_decoder_arm64.s is unchanged
(the CMPW/TESTB fix has no BMI2 twin to choose between).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
0 commit comments