code wiki / (root) / nx_regalloc_soundness_test.nx

nx_regalloc_soundness_test.nx

buildroot/runtime/nx_regalloc_soundness_test.nx

6176 B164 linesdepth 5pulls 6 transitivereach 0 importersview sourcekind gate/prooftopic regalloc
docsdependenciesstructsconstsfunctions

about

nx_regalloc_soundness_test.nx -- BITS-UP soundness proof for the allocator running on compute_liveness' (correct) intervals. Builds a loop where K values are all live across the body (defined in entry, used in the header each iteration -> live across the back-edge), runs the FULL allocator flow WITH compute_liveness enabled, then checks the interference invariant: for every pair of values that are BOTH register-homed and whose (post-liveness) intervals OVERLAP, their registers MUST differ. A violation = linear-scan handed two simultaneously-live values the same register = a real miscompile source. Zero blast radius (executes the allocator, not the built IR). exit 0 = sound. 50 = an interference violation (prints the pair). other = setup divergence. license_tier: ORIGINAL

dependencies 4 imports · 0 importers

nx_syscalls.nx nx_types.nx nx_ir.nx nx_regalloc.nx nx_regalloc_soundness_test.nx

imports: nx_syscalls.nxnx_types.nxnx_ir.nxnx_regalloc.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main sys_mmap ir_function_new sys_mmap ↻ ir_type_i64 alloc_type sys_mmap ↻ ir_block_new nx_assert_ptr sys_write nx_puts_err sys_write ↻ nx_assert sys_write ↻ nx_puts_err ↻ nx_assert_lt sys_write ↻ nx_puti_err sys_mmap ↻ sys_write ↻ nx_puts_err ↻ ir_emit_binop nx_assert_ptr ↻ nx_assert ↻ alloc_instr nx_assert_ptr ↻ nx_assert ↻ nx_assert_lt ↻ alloc_value nx_assert_ptr ↻ nx_assert ↻ nx_assert_lt ↻ append_instr ir_const_i64 nx_assert_ptr ↻ nx_assert ↻ alloc_value ↻ ir_type_i64 ↻ ir_emit_br ir_bb_sealed

structs

none

consts

20const K: i64 = 24 // values live across the loop body (>16 GPRs -> forces spills)

functions

22func main() -> i64