Expand description
Scalar erasure-coding kernels — the permanent oracles every SIMD twin (M4) is gated against, and the fallback on every CPU.
All kernels consume ISA-L’s expanded 32-byte nibble tables
(tables::init_tables / tables::mul_table32), exactly as the vector
kernels will: per byte, c*x = tbl[x & 0xf] ^ tbl[16 + (x >> 4)]. Length
agreement is validated — a mismatch is a typed error, never a silent
truncation and never a panic.
Structs§
- Kernels
- A pluggable kernel set. The choice is made ONCE, at coder construction or
the facade surface (never inside a loop — the dispatch-placement law), and
core stays free of all detection machinery: this crate only ever provides
Kernels::scalar; SIMD sets come fromrusty_erasure-accelvia the facade.
Statics§
- SCALAR_
CENSUS_ BYTES - Census counter for the scalar kernel set: source bytes processed. The reach census (mission plan §7.1) is always on — one relaxed add per call, never per element — so “which kernels does production actually run” is a measured fact, not an assumption.
Functions§
- vect_
dot_ prod dest[i] = XOR_j (c_j · srcs[j][i])— the GF(2^8) dot product at the heart of encode (ISA-L’sgf_vect_dot_prod).gftblsholds one 32-byte table per source, in source order.- vect_
mad dest ^= c · src— multiply-and-add, the incremental-update primitive (ISA-L’sgf_vect_mad).- vect_
mul dest = c · srcwheretblisc’s expanded 32-byte table (ISA-L’sgf_vect_mul, without its len-multiple-of-32 restriction).