Evaluator: dual-execution parity
Goal
Make eval observably identical to LLVM by construction.
Implementation Sketch
Default vectorization: eval runs the scalar form (provably equal). Under #fast_math, eval AND LLVM adopt the SAME compiler-defined reduction-tree / lane-visitation order; never eval-scalar-vs-LLVM-reassociated.
Spec References
Proposal §6 parity contract two regimes; §4 #fast_math definition.
Work Items
- For default vectorization, eval executes the ordinary scalar loop (parity by construction; no SIMD interpreter needed).
- Under #fast_math, eval AND LLVM implement the same compiler-defined reduction-tree / lane-visitation order so the reordered value/panic is identical across backends; never let eval stay on the divergent scalar left-fold while LLVM reassociates.