code wiki / _hdl_build / nx_regalloc_absorb_governed_test.nx
nx_regalloc_absorb_governed_test.nx
buildroot/runtime/_hdl_build/nx_regalloc_absorb_governed_test.nx
about
nx_regalloc_absorb_governed_test.nx -- the LOOP governs absorbing the allocator
into codegen. Absorption is the risky step (the prior g1 attempt miscompiled), so
it goes through the crew council (3->2->1) with the REAL gates as the Engineer's
evidence:
ENGINEER = the allocator is sound (ra_validate) AND execution-equivalent to the
reference (ri_interp_ref == ri_interp_alloc) AND fits (0 spills).
GENEALOGIST = novel (a new codegen path, not a duplicate).
WARDEN = additive-safe (a NEW path; the known-good compiler is untouched).
Only then does the Conductor ACT (absorb). A MISCOMPILING allocator (Engineer
evidence fails) must be DENIED/ESCALATED -- governance blocks the g1 regression.
Known answer: proven allocator -> council ACT (absorb); miscompiling allocator ->
council NOT ACT (blocked). exit 0.
dependencies 2 imports · 0 importers
imports: nx_crew_council.nxnx_regalloc_interp.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 20 | const AB_N: i64 = 11 |
| 21 | const AB_NREG: i64 = 8 |
| 22 | const AB_K: i64 = 6364136223846793005 |
| 23 | const AB_A: i64 = 1442695040888963407 |
| 24 | const AB_M: i64 = 65535 |
| 25 | const AB_KK: i64 = 1000000 |
functions
| 18 | func ab_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } called by 1: main |
| 27 | func ab_rng(s: i64) -> i64 { return s * 6364136223846793005 + 1442695040888963407 } called by 1: ab_engineer_ok |
| 30 | func ab_build_ir(op: *i64, u0: *i64, u1: *i64, imm: *i64) -> i64 called by 1: main |
| 47 | func ab_engineer_ok(op: *i64, u0: *i64, u1: *i64, imm: *i64, last_use: *i64, alloc: *i64) -> i64 |
| 64 | func main() -> i64 |