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
feat(simd): missing-lanes sweep — U16x16/U32x8/U64x4/I32x8/I64x4 across all backends
PR #178's matrix audit surfaced five 256-bit int lane types that were
either entirely missing or stranded in `simd_nightly` only. Adds them
across every backend so `crate::simd::{U16x16, U32x8, U64x4, I32x8,
I64x4}` resolves uniformly on v3 / v4 / native / nightly / scalar /
aarch64 paths.
`src/simd_avx2.rs`
+ 5× `avx2_int_type!` instantiations producing scalar-storage
`[$elem; $lanes]` polyfills (align 64). Same macro pattern as the
existing 512-bit polyfills (U8x64, U16x32, …). Native AVX2 `__m256i`
upgrades are TD-SIMD-3.
+ 5× lowercase aliases (`u16x16 = U16x16`, etc.) matching the
std::simd convention used by every other lane type in the file.
`src/simd_scalar.rs`
+ 5× `impl_int_type!` instantiations mirroring the AVX2 polyfills
above. Consumers on non-x86/non-aarch64 (wasm32, riscv, thumb)
reach the same type names through `crate::simd::*`.
+ Lowercase aliases.
`src/simd_avx512.rs`
+ Re-export of the new types from `simd_avx2` so the v4 dispatch
arm in `simd.rs` can surface them without forking the macro into
this file. Both files are already gated on `target_arch = "x86_64"`,
so the re-export is cheap. Native `__m256i` upgrades here are
TD-SIMD-3 (same story as the v3 polyfills).
`src/simd_nightly/u_word_types.rs`
+ `U16x16` wrapper backed by `core::simd::u16x16`. Same API surface
as the existing 32-/16-/8-lane wrappers — splat, from_slice,
from_array, to_array, copy_to_slice, reduce_{sum,min,max},
simd_min/max, cmpeq_mask, cmpgt_mask, Default.
`src/simd_nightly/i_word_types.rs`
+ `I32x8` and `I64x4` wrappers backed by `core::simd::{i32x8, i64x4}`.
Same API surface as siblings; PartialEq via array compare.
`src/simd_nightly/mod.rs`
+ Re-exports for the three new types + lowercase aliases.
`src/simd.rs`
+ All 5 dispatch arms (nightly, v4, v3, aarch64, scalar fallback)
updated to surface the new types through `crate::simd::*`.
`.claude/knowledge/simd-dispatch-architecture.md`
+ Parity matrix updated — the five rows previously marked ❌ across
most backends now show 🟠 polyfill (v3, v4-via-v3, scalar) /
🔵 (nightly via `core::simd`).
Verified: `cargo check` clean under default v3 features and under
`-Ctarget-cpu=x86-64-v4` (via `CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS`
+ explicit `--target` so build scripts don't SIGILL on non-AVX-512
runners — same pattern as the tier4-avx512-check job).
0 commit comments