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
{{ message }}
Repository navigation
SIMD AVX2 path is unverified pre-merge (no x86 CI on the stack) #87
The dev/review host is aarch64 (Apple Silicon), so local cargo test
exercises the NEON path, never AVX2.
gt_mask_dispatched_matches_scalar / lsb_mask_dispatched_matches_scalar
compare the dispatched kernel to scalar, i.e. only the host-native
vector path: AVX2 on x86, NEON on aarch64 — never both. On x86, lsb_mask has no AVX2 path, so that test is a vacuous scalar-vs-scalar
comparison there.
Net: an AVX2-only regression (e.g. the unsigned→signed bias trick, the movemask/to_le_bytes bit order) could ship through the whole stack
undetected. (The AVX2 logic was verified by reasoning in the #81 review and
is believed correct; what's missing is machine verification.)
Resolution options
x86 CI gate before merge — ensure these tests run on an x86_64 runner
(with AVX2) before ORE v2 (4/n): NEON + AVX2 SIMD backends #81 / the stack lands on main. Cheapest if CI already
uses x86 ubuntu runners; just make sure the stack hits CI.
Host-portable verification — a test that validates the encoding logic on
any arch, e.g. a forced-scalar vs portable-reference cross-check, so the
bit-order/contract is pinned even on an aarch64-only dev box.
qemu / cross-run — run the AVX2 path under emulation in CI for
defence-in-depth.
Acceptance
avx2::gt_mask_xor_256 is exercised (dispatched-vs-scalar) by CI on an x86_64
host with AVX2 before #81 merges to main, and the suite has some AVX2-vs-scalar
coverage that doesn't depend solely on the merge-to-main trigger.
Resolved. .github/workflows/test.yml now runs on every pull_request regardless of base branch, so stacked PRs get CI, and the test job runs on both ubuntu-latest (x86_64) and ubuntu-24.04-arm (aarch64). On x86_64 the *_dispatched_matches_scalar tests now exercise avx2::gt_mask_xor_256 against scalar; on aarch64 they exercise NEON. The ORE v2 stack merged to main with both green.
Activity
harden(simd): assert gather length; precise dispatch cfg (#81 self-re…
harden(simd): assert gather length; precise dispatch cfg (#81 self-re…
harden(simd): assert gather length; precise dispatch cfg (#81 self-re…
coderdan commentedon Oct 12, 2026
Resolved.
.github/workflows/test.ymlnow runs on everypull_requestregardless of base branch, so stacked PRs get CI, and the test job runs on bothubuntu-latest(x86_64) andubuntu-24.04-arm(aarch64). On x86_64 the*_dispatched_matches_scalartests now exerciseavx2::gt_mask_xor_256against scalar; on aarch64 they exercise NEON. The ORE v2 stack merged tomainwith both green.