code wiki / (root) / smoke_regalloc_min3.nx

smoke_regalloc_min3.nx source

↩ module page · 31 lines · 945 B

1// Regalloc on 1-value function: const, return it. 2 3import "syscalls.nx" 4import "types.nx" 5import "ir.nx" 6import "regalloc.nx" 7 8func main() -> i64 { 9 let m_raw: *u8 = sys_mmap(256) 10 let m: *Module = m_raw as *Module 11 m.functions = 0 as *Function 12 m.n_functions = 0 13 let f: *Function = ir_function_new(m, "one" as *u8, 3, ir_type_i64()) 14 let b: *BasicBlock = ir_block_new(f) 15 let c: i64 = ir_const_i64(f, 42) 16 ir_emit_return(b, c) 17 18 let locs_raw: *u8 = sys_mmap(4096) 19 let locs: *ValueLoc = locs_raw as *ValueLoc 20 let mask_raw: *u8 = sys_mmap(16) 21 let mask: *i64 = mask_raw as *i64 22 *mask = 0 23 let sb_raw: *u8 = sys_mmap(16) 24 let sb: *i64 = sb_raw as *i64 25 *sb = 0 26 let mask_fpr_raw: *u8 = sys_mmap(16) 27 let mask_fpr: *i64 = mask_fpr_raw as *i64 28 *mask_fpr = 0 29 regalloc_function(f, locs, mask, mask_fpr, sb) 30 return __syscall(93, 42, 0, 0, 0, 0, 0) 31}