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_soa): iter_i32x16 / iter_i64x8 typed lane iterators on MultiLaneColumn
Follow-up unblocking the gridlake wiring (lance-graph #635 COMMENTARY):
lane J's GridBatch carries i32 min/max and i64 sum columns, but
MultiLaneColumn only exposed f32/f64/u64/u8 lane views — #227's onebrc
gridlake probe got away with f32 min/max columns. Add the signed integer
lane widths so a batch SoA can be viewed through the gridlake carrier
directly, no f32 recast.
- `i32x16_from_chunk` / `i64x8_from_chunk` — LE decoders mirroring the
existing `f32x16_from_chunk` / `u64x8_from_chunk` (scalar `from_le_bytes`
loop, lowered to a single register-width load on LE targets; no pointer
cast of the u8-aligned Arc<[u8]>).
- `iter_i32x16` / `iter_i64x8` methods + `len_i32x16` / `len_i64x8`,
routed through `crate::simd::{I32x16, I64x8}` per the W1a layering rule
(never dipping into simd_avx512/simd_neon/scalar directly).
- Parity tests: `iter_i32x16_le_round_trip` (incl. negatives, proves
sign-extension survives the decode) + `iter_i64x8_le_round_trip`;
extended the empty-count, 3-lane-count, and len asserts.
These are layout-only zero-copy reinterpretations of the backing store
(the same category as the existing typed iterators), not new compute
kernels — no per-arch AVX/NEON/scalar backend needed beyond the lane
types crate::simd already provides.
simd_soa: 13/13 tests pass; clippy -D warnings clean; fmt clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MLBnPuScZy6w9di2QEjsXM
0 commit comments