Quazim0t0 commited on
Commit
c6693a5
·
verified ·
1 Parent(s): 0517008

Upload web/TEST_RESULTS.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. web/TEST_RESULTS.md +10 -0
web/TEST_RESULTS.md CHANGED
@@ -166,6 +166,16 @@ three of them on real hardware and exposed one blind spot in our own gates:
166
  trusting a device model. (Denorm flush is additionally unreachable in the
167
  shipped math: the 1e-8 scale floor keeps every epilogue product ≥ ~1e-16 in
168
  magnitude, far above the ~1.2e-38 subnormal threshold.)
 
 
 
 
 
 
 
 
 
 
169
  - The blind spot: RDNA2 has non-IEEE instruction variants a compiler may pick
170
  — output modifiers and DX9-legacy multiplies that **flush −0 to +0**. Our
171
  gates compared f32 outputs with JS `!==`, for which `-0 !== 0` is *false*:
 
166
  trusting a device model. (Denorm flush is additionally unreachable in the
167
  shipped math: the 1e-8 scale floor keeps every epilogue product ≥ ~1e-16 in
168
  magnitude, far above the ~1.2e-38 subnormal threshold.)
169
+ - FMA contraction (`V_FMA_F32`: one rounding, not two) looked like a second
170
+ hazard — WGSL permits contracting the quantize's `x*inv + 0.5` — but turned
171
+ out to be an immunity: adding 0.5 is exact except at binade crossings, and
172
+ there the double-rounding anomaly stays on the same side of every integer
173
+ (RNE tie parity), so `floor()` — hence the int8 — is identical either way.
174
+ `test_b2b.js` asserts both halves: last-ulp fused-vs-stepped differences DO
175
+ occur (~175k per 2.8M edge-targeted draws), and zero survive floor. The
176
+ `+0.5` respec is contraction-immune by construction; `round(x/scale)` was
177
+ not. No gate can forbid the compiler an fma, so this had to be a theorem,
178
+ not a check.
179
  - The blind spot: RDNA2 has non-IEEE instruction variants a compiler may pick
180
  — output modifiers and DX9-legacy multiplies that **flush −0 to +0**. Our
181
  gates compared f32 outputs with JS `!==`, for which `-0 !== 0` is *false*: