mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-06 01:04:13 -04:00
3.8 KiB
3.8 KiB
T8.c2: delever drain + rung R + gte_rt_m comment fix
Setup
- R22 pre (
.run/logs/t8c2_r22_pre.log) 218/218;delever_oracle --snapshot-baselineat 6a2684514 (7428 objs);--calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16OK (146/146, controls OK);restruct --selftest --real114/114 OK. - Driver:
.run/T8/batch.sh LABEL [--headers]: calibrate if stale, apply --batch 300 -j 12, require exit 0 +final N/N, R22 to.run/P36/baseline/r22_<label>.log,git add -fledger/run/apply/batch/calibrate logs, commit_task src include.
Batches (all final N/N identical, R22 218/218 each)
- t8_tus1 3695293d75: 300 files, 431 bodies, removed 68 / needed 802.
- t8_tus2 bb84bb1ab5: 295 files, 495 bodies (11 lever-free, 416 residue, 68 NOTHING-USABLE), removed 255 / needed 1591 / refused 145.
- t8_tus3 ac3a3b5f8a, t8_tus4 586729bb45: 1 file each,
src/md_MAIN_003/md_MAIN_003_jr_800D1E18.c, removed 0, refused 2; the only change is the label in two REFUSED asm-data.sectionmarkers. A fixed point:--plankeeps listing this file (4 "removable" sites, all REFUSED asm-data), so the plan never reaches "nothing to do". TU plan treated as drained. harness: delever --plan counts REFUSED asm-data sites as removable. - t8_hdr1 836575d461: 15 headers, removed 22 / needed 33;
--plan --headersafterwards: 0 drawable. - Sites removed by kind (ledger, labels t8_*): gte-lever 343, barrier 2 (total 345). Refused: gte-lever 88, instruction 29, launder 32.
Rung R
- t8_r1 (limit 20): 0 closed, 880 compiles, 14 s.
- t8_r2 (no limit, cap 60, -j 12): 1424 TU bodies judged (146 LEVER-FREE: R7 142, R6 4), then serial header bodies at ~4 min each (6 done, ~100 left), so I killed it (pid) at ~60 min wall.
--restorecleared the in-flight header; src/shared clean. R22 218/218; commit 075d9a2c74. Log.run/P36/delever/recipes_t8_r2.log. - Residue not reached: ~95 header bodies.
- Finding: 139 of the banked edits are pure brace wraps (
x;->{ x; },.run/T8/bracewrap.py) with "0 pin(s) gone". Example: ov_SC03_094_jr_8017BEBC.c func_80183CC4: its t8_r2 row has emptysites(earlier tus9 row: 3 pins + keepalive NEEDED). Bodies that are RESIDUE in the ledger but have no live site get a no-op textual change banked as LEVER-FREE. The census moved only by volatile-needed -6 / asm -4. Expert: decide whether to revert the brace wraps. --propagate: blocked. Recipe rows carry noafter_text("no banked reshape … (its row must carry after_text)"), so no rung-R bank can be propagated. Siblings in TUs were all judged by t8_r2 anyway. harness gap (tools/ is off-limits to me).
Comment fix (b2: commit after r2)
.run/T8/comments.py: 55 files. TheGTE VARIANTgte_rt_m…gte_rt`` header comment now namesgte_rtv0tr_m/gte_rtv0tr(55 lines), and// !FAKE: gte via gte_rt_m … gte_rtnamesgte_rtv0tr_m … gte_rtv0tr(70 lines). The script asserted that each file calls gte_rtv0tr_m and never gte_rt_m. 0gte_rt_mleft in src/include.
Gates
lever_census.py --check -j 16: 3,364 sites, 3,364 marked, 0 UNMARKED, orphans 0, OK.- R22 final (
.run/P36/baseline/r22_t8_comments.log): 218 passed 0 failed. - Census strict before: pins 1868, asm 1409, gte-levers 434, direct GTE 0 (inline 0), volatile-needed 1587, register-needed 50.
- Census strict after: pins 1868, asm 1405, gte-levers 91, direct GTE 343 (inline 343), volatile-needed 1581, register-needed 50.
- Finding (important): removing a gte-lever (rung B) strips the extra clobber but leaves the statement as inline
__asm__GTE with no marker (e.g. 800.c"mtc2 $14, $11;" : : "r"(rotp) : "$12","$13","$14" );, plus trailing spaces where the marker was). This undoes T7.1's "direct GTE 0": the 343 removals became 343 inline direct-GTE statements. They need converting to the gte_inline.h macros (gte_consolidate?). Not in scope here.