nx_smoke_regalloc_min2.nx source
↩ module page · 40 lines · 1332 B
1// Regalloc on a 3-value function: const+const+add+ret.
2
3// nx_safety_envelope:
4// intended_use: AUTO_APPLIED -- primitive-specific tuning queued
5// sil_target: SIL1
6// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail]
7// verdict: NOT_YET_EVALUATED
8
9import "nx_syscalls.nx"
10import "nx_types.nx"
11import "nx_ir.nx"
12import "nx_regalloc.nx"
13const K_MAGIC_4096: i64 = 4096
14
15func main() -> i64 {
16 let m_raw: *u8 = sys_mmap(256)
17 let m: *Module = m_raw as *Module
18 m.functions = 0 as *Function
19 m.n_functions = 0
20 let f: *Function = ir_function_new(m, "addsum" as *u8, 6, ir_type_i64())
21 let b: *BasicBlock = ir_block_new(f)
22 let c10: i64 = ir_const_i64(f, 10)
23 let c20: i64 = ir_const_i64(f, 20)
24 let s: i64 = ir_emit_binop(b, OP_ADD, c10, c20, ir_type_i64())
25 ir_emit_return(b, s)
26
27 let locs_raw: *u8 = sys_mmap(K_MAGIC_4096)
28 let locs: *ValueLoc = locs_raw as *ValueLoc
29 let mask_raw: *u8 = sys_mmap(16)
30 let mask: *i64 = mask_raw as *i64
31 *mask = 0
32 let sb_raw: *u8 = sys_mmap(16)
33 let sb: *i64 = sb_raw as *i64
34 *sb = 0
35 let mask_fpr_raw: *u8 = sys_mmap(16)
36 let mask_fpr: *i64 = mask_fpr_raw as *i64
37 *mask_fpr = 0
38 regalloc_function(f, locs, mask, mask_fpr, sb)
39 return __syscall(93, 42, 0, 0, 0, 0, 0)
40}