Commit 07a7a03
committed
simd: surface the runtime-dispatch trampolines through ndarray::simd::*
The W1a consumer invariant is "all SIMD from ndarray::simd", but the
simd_runtime trampolines (matmul_bf16_to_f32, matmul_f32, gemm_u8_i8,
vnni_dot_u8_i8, matmul_i8_to_i32) were only reachable as
ndarray::simd_runtime::* -- forcing consumers (the tesseract-rs
recognizer's int8 GEMM among them) off the canonical polyfill import
path. Re-export them under simd:: behind the runtime-dispatch feature.
matmul_i8_to_i32 needs care: on x86_64+std the name already exists in
simd:: (the hpc::amx_matmul re-export -- the IDENTICAL function the
simd_runtime wrapper #[inline(always)]-aliases), so the trampoline
re-export is gated not(target_arch = "x86_64") to make the import path
arch-uniform without a name collision. Pure re-exports of the same
tier ladders -- bit-identical by construction, no new pub fn in any
simd_*.rs, so the W1a three-backend ceremony is not triggered.
Verified: builds with and without runtime-dispatch; 233 simd lib tests
green; clippy -D warnings + fmt clean; the tesseract-rs consumer flip
reproduces its byte-parity E2E regression ("qLLiy,,") through the new
path unchanged.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p11 parent 5760284 commit 07a7a03
1 file changed
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
614 | 614 | | |
615 | 615 | | |
616 | 616 | | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
617 | 635 | | |
618 | 636 | | |
619 | 637 | | |
| |||
0 commit comments