Skip to content

SIMD AVX2 path is unverified pre-merge (no x86 CI on the stack) #87

Closed

Description

@coderdan

Problem

The SIMD AVX2 kernel added in PR #81 (packages/ore-rs/src/primitives/simd.rs,
avx2::gt_mask_xor_256) is not exercised by any machine before merge:

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

  1. 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.
  2. 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.
  3. 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.

Activity

  1. coderdan commented on Oct 12, 2026

    @coderdan
    ContributorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions