Files
BFM-decomp/docs
Drew T 29478ab9b0 docs(phase-26): cookbook §48 — the 12-core jr crack wave (9/12 MATCH): allocno-pricing dials, the EBB rule, type-driven codegen, the cross-jump ratchet
- §48-A allocno-PRICING DIALS (global.c:594): sink an init into the if/else arms to collapse a
  live-range and RAISE priority byte-neutrally (cross_jump re-merges the tails after regalloc);
  the local-alloc $s0 occupant that pushes arg0 to $s1; block-scoped per-case temps as a
  local-alloc tie gate (local-alloc.c:1765 refuses to tie a multi-block pseudo).
- §48-B THE EBB RULE, the general form of §46-L2: anything that must survive cse needs its def and
  uses in different extended basic blocks — reg-reg copies, held global addresses (la $sN in a loop
  preheader, def at loop top + use inside a jtbl-reached case), pointers-to-global across calls.
  Corollary: a pointer-to-global survives only if EVERY use is at offset 0 (fold_rtx folds sym+k).
- §48-C the C TYPE selects the addressing mode: scalar global -> lui/%lo, struct global -> la+offset;
  lwl/lwr block copy == a plain assign of a 2-byte-aligned struct (mips.c:output_block_move needs
  align>=4 for the lw/sw arm); the dead-sibling-scalar trap (cost 108 ins — use a real array).
- §48-D the CROSS-JUMP RATCHET: two cases needing opposite branch senses cannot be a mirrored
  if/else — cross_jump + jump.c's invert-over-uncond-jump collapse them into one. Use gotos into
  labels inside the other case.
- 9/12 first-pass MATCH by ordinary agents applying the map. Fable5 discovers a class; everyone
  else applies it.
2026-07-14 00:10:43 -06:00
..