smoke_regalloc_min4.nx source
↩ module page · 31 lines · 964 B
1// 2-value function: 2 consts.
2import "syscalls.nx"
3import "types.nx"
4import "ir.nx"
5import "regalloc.nx"
6
7func main() -> i64 {
8 let m_raw: *u8 = sys_mmap(256)
9 let m: *Module = m_raw as *Module
10 m.functions = 0 as *Function
11 m.n_functions = 0
12 let f: *Function = ir_function_new(m, "two" as *u8, 3, ir_type_i64())
13 let b: *BasicBlock = ir_block_new(f)
14 let c1: i64 = ir_const_i64(f, 10)
15 let c2: i64 = ir_const_i64(f, 20)
16 ir_emit_return(b, c2)
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}