1use codegem::ir::*;
2use codegem::arch::urcl::UrclSelector;
3use codegem::regalloc::RegAlloc;
4
5fn main() -> Result<(), ModuleCreationError> {
6 let mut builder = ModuleBuilder::default().with_name("test");
7 let main_func = builder.new_function("main", Linkage::Public, &[], &Type::Void);
8 builder.switch_to_function(main_func);
9 let entry = builder.push_block().unwrap();
10 builder.switch_to_block(entry);
11 let val = builder.push_instruction(69u32.to_integer_operation())?.unwrap();
12 let val2 = builder.push_instruction(69u32.to_integer_operation())?.unwrap();
13 let val3 = builder.push_instruction(Operation::Add(val, val2))?.unwrap();
14 builder.set_terminator(Terminator::Return(val3))?;
15 let module = builder.build()?;
16 let mut vcode = module.lower_to_vcode::<_, UrclSelector>();
17 vcode.allocate_regs::<RegAlloc>();
18 vcode.emit_assembly(&mut std::fs::File::create("out.s").unwrap()).unwrap();
19 Ok(())
20}