# zr_front5 mutants: NAME<TAB>class<TAB>sed expression. class: req = must FAIL (synthetic stimulus OR the fight
# capture, hostile memory 23 clk + 60 % output back-pressure) | perf = reported, reason in the header of the run.
# MEASURED 2026-09-22 (front_synth 12 frames + hvpoly 4 frames; G5* re-run on attract 20 frames): every F and G
# killed except these, re-classed with the census that explains them (COVERAGE line of tb_zr_front5, 92 frames):
#   G9  perf -- REDUNDANT BY CONSTRUCTION: the snapshot writer needs 21 clocks after S_Q2 and never pauses inside a
#               quad; the shortest S1 path S_Q2 -> S_QH is ~40 clocks. The wait is kept as a guard.
#   G5 / G5d perf -- NOT REACHED: adder collisions happen (attract 40, hvmodel 40, ref 10, synth 12) but only in
#               S_QI0 / S_QI1, whose identical guards G5b / G5c ARE killed; S_QI4 / S_QI8 never met an S2 add.
#   G11 perf -- NOT REACHED: multiplier collisions (S_QI6 vs S2's products) = 0 in all 92 frames.
# ---- F1-F22: v4's MAME misreadings, re-targeted at v5 text (see mutate_zr_front.sh for each one's meaning) ----
F1	req	s/S_QN4: if (dotp >= 0)/S_QN4: if (dotp > 0)/
F2	req	s/ + 35'sh4000;/ + 35'sh0;/
F3	req	s/\[2\] <= 0)/[2] < 0)/g
F4	req	s/S_QI8: if (!s2_add) begin add_a = fv1s;/S_QI8: if (!s2_add) begin add_a = fv2s;/
F5	req	s/32'h43488000/32'h43480000/
F6	req	s/else if (vf\[2:0\] == 3'd1 \&\& fp_eq(c2_q, pmy))/else if (vf[2:0] == 3'd1 \&\& fp_eq(c2_q, pmx))/
F7	req	s/pmx <= 32'hc47a0000; pmy <= 32'hc47a0000;/pmx <= 32'hff7fffff; pmy <= 32'hff7fffff;/
F8	req	s/if (rw_off\[6:0\] == 7'h06) texdata <=/if (1'b0) texdata <=/
F9	req	s/8'h08: mdone <= 1'b1;/8'h08: begin mdone <= 1'b1; ment <= 9'd0; end/
F10	req	s/S_QP: st <= (nout < 3'd3)/S_QP: st <= (nout < 3'd4)/
F11	req	s/<< (4'd9 - 4'(texdata\[24:22\]))/<< (4'd8 - 4'(texdata[24:22]))/
F12	req	s/rw_off\[0\] ? {rw_data\[15:0\], rf_q\[15:0\]}/rw_off[0] ? {rf_q[31:16], rw_data[15:0]}/
F13	req	s/mtx\[rr\]\[cc\] <= s\[31:16\];/mtx[rr][cc] <= s[30:15];/
F14	req	s/mtx\[1\]\[2\] <= \$signed(sw\[0\]\[31:16\]);/mtx[1][2] <= $signed(sw[0][15:0]);/
F15	req	s/(f0 \& 32'hffff7f) == 0/(f0 \& 32'hffffff) == 0/
F16	req	s/32'h43008000/32'h43000000/
F17	req	s/47'(rn\[0\]) \* 47'(vk\[0\]\[0\]) + 47'(rn\[1\]) \* 47'(vk\[0\]\[1\]) + 47'(rn\[2\]) \* 47'(vk\[0\]\[2\])/47'(rn[0]) * 47'(vk[1][0]) + 47'(rn[1]) * 47'(vk[1][1]) + 47'(rn[2]) * 47'(vk[1][2])/
F18	req	s/assign ush = 4'd8 - 4'(r04\[5:4\]);/assign ush = 4'd8 - 4'(r04[7:6]);/
F19	req	s/24'h00c040: palbase <= m_hi;/24'h00c040: ;/
F20	req	s/24'h008000, 24'h018000: objdata <= m_hi;/24'h008000, 24'h018000: ;/
F21	req	s/vu\[qi\] <= iuvz\[23:16\]; vv\[qi\] <= iuvz\[31:24\];/vu[qi] <= iuvz[31:24]; vv[qi] <= iuvz[23:16];/
F22	req	s/S_QI0: if (!s2_add) begin add_a = 32'h44000000; add_b = fv1s;/S_QI0: if (!s2_add) begin add_a = 32'h44000000; add_b = fv2s;/
# ---- G: the v5 structure ----
#   G1 a 3-vertex quad emits this bank's slot 3 instead of the persistent one   G2 slot 3 never captured
#   G3 x adjust dropped at emit                        G4 RB record does not wait for S2 (stream order)
#   G5 zclip add advances while S2 owns the adder      G6 decode: command end misjudged
#   G7 snapshot reads reg 7c instead of 7e            G8 snapshot always bank 0
#   G9 handoff does not wait for the snapshot writer  G10 consumer releases divider 0 always
#   G11 S2 ignores S1's multiplier priority           G12 projected x / y written to S1's bank
#   G13 consumer reads y as x                         G14 emit reads the current word, not the next
G1	req	s/if (vf\[5:3\] == 3'd3 \&\& s2_n == 3'd3) e_val = p3\[vf\[2:0\]\];/if (1'b0) e_val = p3[vf[2:0]];/
G2	req	s/e_cap = (vf\[5:3\] == 3'd3) \&\& s2_n >= 3'd4;/e_cap = 1'b0;/
G3	req	s/fp_eq(c2_q, pmx)) e_val = pmxa;/fp_eq(c2_q, pmx)) e_val = c2_q;/
G4	req	s/S_RB: if (sk != 0 || (of_free >= 7'd2 \&\& !s2_on)) begin/S_RB: if (sk != 0 || (of_free >= 7'd2)) begin/
G5	perf	s/S_QI4: if (!s2_add) begin ff <= ff + 3'd1;/S_QI4: begin ff <= ff + 3'd1;/
G6	req	s/if (dcnt + 5'd2 == (mquad ? 5'd14 : 5'd2)) st <= S_MDEC;/if (dcnt + 5'd2 == (mquad ? 5'd12 : 5'd2)) st <= S_MDEC;/
G7	req	s/2'd1: rf_ra = 10'h07e;/2'd1: rf_ra = 10'h07c;/
G8	req	s/sn_wa <= {b1, sn_w\[4:0\]};/sn_wa <= {1'b0, sn_w[4:0]};/
G9	perf	s/assign s1_hand = (st == S_QH) \&\& sn_k == 5'd21 \&\& !s2_on;/assign s1_hand = (st == S_QH) \&\& !s2_on;/
G10	req	s/res_v\[ci\[0\]\] <= 1'b0;/res_v[0] <= 1'b0;/
G11	perf	s/    s1_mul = (st == S_QI6);/    s1_mul = 1'b0;/
G12	req	s/assign w2 = c2_we \&\& (s2_bk == 1'(gc));/assign w2 = c2_we \&\& (b1 == 1'(gc));/
G13	req	s/(cs == 3'd0) ? 3'd0 : 3'd1};/(cs == 3'd0) ? 3'd1 : 3'd0};/
G14	req	s/if (ps == P_EMIT) c2_ra = cvw(eo + 6'd1);/if (ps == P_EMIT) c2_ra = cvw(eo);/
G5b	req	s/S_QI0: if (!s2_add) st <= S_QI1; /S_QI0: st <= S_QI1; /
G5c	req	s/S_QI1: if (!s2_add) st <= S_QI2;/S_QI1: st <= S_QI2;/
G5d	perf	s/S_QI8: if (!s2_add) begin ff <= ff + 3'd1;/S_QI8: begin ff <= ff + 3'd1;/
