ReviewOS

zig-utils/zig-js

WebAssembly SIMD: memory, lane, shuffle, and bitwise operations

#280
Closed chris opened this 9 days ago ·
9 days ago

Parent: #264 Depends on: #279 Roadmap: #142, #134

Implement the byte/lane movement half of fixed-width SIMD with exact bounds and alignment semantics.

Acceptance:

  • Implement v128.const, load/store, load-splat, load-extend, load-zero, and lane load/store forms.
  • Implement splat, extract/replace lane, swizzle, shuffle, bitselect, any_true, and v128 bitwise operations.
  • Validate every memarg and lane immediate, including natural-alignment limits and malformed lane indices.
  • Trap before mutation on out-of-bounds access, including zero-length/end and overflow edges.
  • Preserve byte order and every source/destination bit across unaligned memory and lane operations.
  • Publish focused official-corpus totals for the selected files with zero hidden exclusions.
9 days ago

Two small execution checkpoints are now on main:

  • 15343076 implements v128.const, scalar/vector splats, every extract/replace lane form, shuffle/swizzle, bitselect, any_true, and v128 bitwise operations.
  • 2d27127b implements v128 load/store, load-extend, load-splat, load-zero, and every lane load/store form with portable little-endian behavior and pre-mutation bounds checks.

Focused evidence is green: the lane/bitwise and memory suites each run with the shared root/private checks (3/3). Memory coverage includes unaligned+offset addressing, exact 128-bit round trips, signed widening, zero loads, lane preservation, and atomic OOB traps.

Next I am tightening the width-specific lane-immediate validator, then wiring the pinned official SIMD corpus so this issue closes on auditable totals rather than only hand-built modules.

9 days ago

Pinned SIMD corpus scoring is now reproducible on main in f44e364d. The runner uses the exact WebAssembly/simd revision a78b98a6899c9e91a13095e560767af6e99d98fd, WABT 1.0.39 / ad75c5edcdff96d73c245b57fbc07607aaca9f95, the raw u128 conformance boundary, and a declared 20-file #280 selection from the 56-file proposal suite.

Current transparent audit: 2,069 / 2,253 applicable pass, 184 fail, 351 explicit text-format n/a, 0 runner errors (2,604 total commands). Fully green owned files already include address, alignment, bitwise, every lane load/store width, load-extend, load-splat, load-zero, and store. simd_bitwise.wast is 169/169 and simd_align.wast is 66/66 applicable.

The remaining 184 failures are not hidden runner gaps: they are execution traps from later integer/float operation families used as contextual operands inside simd_boolean, simd_const, simd_lane, simd_load, and simd_splat. I am leaving #280 open until those shared official files turn fully green through #281/#282, then I will check in the zero-failure inventory and update README/docs with terminal totals.

9 days ago

README and WebAssembly status now publish the live pinned score in 1fc8c91c. After the three portable integer checkpoints, the declared 20-file audit is 2,240/2,253 applicable, 13 fail, 351 explicit text-format n/a, 0 runner errors. Eighteen files are fully green. The only remaining shared-file failures are float/conversion contexts assigned to #282; no #280 memory/lane/bitwise failure remains.

9 days ago

Closed with terminal evidence on main:

  • execution: 15343076, 2d27127b, 7e3bb69f, plus shared integer/float context checkpoints through 6306ed59
  • pinned runner: f44e364d
  • checked-in terminal inventory and README/docs: 9aa42500
  • exact result: 2,253/2,253 applicable pass, 0 fail, 351 explicit text-format n/a, 0 runner errors, across the declared 20-file selection from all 56 pinned proposal files
  • verifier locks repository/commit, 56 available files, 20 scored files, command totals, terminal zero-failure state, and detailed file count

All six acceptance items are checked. Later arithmetic/conversion families remain explicitly owned by #281/#282; terminal whole-SIMD score/performance remains #283.

Sign in to comment on this issue.