use indoc::indoc; fn main() { let input = indoc! {" declare @bar (i32, i9) i32 func @foo (i32 %x, i8 %y) i32 { %entry: %asdf0 = const i32 42 %1 = const time 1.489ns 10d 9e %hello = alias i32 %asdf0 %2 = not i32 %asdf0 %3 = neg i32 %2 %4 = add i32 %2, %3 %5 = sub i32 %2, %3 %6 = and i32 %2, %3 %7 = or i32 %2, %3 %8 = xor i32 %2, %3 %cmp = eq i32 %7, %7 br %cmp, %entry, %next %next: %a = exts i9, i32 %7, 4, 9 %b = neg i9 %a %r = call i32 @bar (i32 %8, i9 %b) %many = [32 x i9 %b] %some = exts [9 x i9], [32 x i9] %many, 2, 9 %one = extf i9, [9 x i9] %some, 3 neg i9 %one ret i32 %3 } entity @magic (i32$ %data, i1$ %clk) -> (i32$ %out) { %datap = prb i32$ %data %cmp = const i1 0 reg i32$ %out, [%datap, rise %cmp] } "}; println!("Dump:"); let module = llhd::assembly::parse_module(input).unwrap(); println!("{}", module.dump()); println!(""); println!("Written:"); llhd::assembly::write_module(std::io::stdout(), &module); }