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:
%b = neg i9 %a
%a = exts i32 %7, 4, 9
%r = call i32 @bar (i32 %8, i9 %b)
%many = [32 x i9 %b]
%some = exts [32 x i9] %many, 2, 9
%one = extf [9 x i9] %some, 3
neg i9 %one
ret i32 %3
}
entity @magic (i32$ %data, i1$ %clk) -> (i32$ %out) {
%0 = reg i32 %asdf0, %4 rise %cmp
con i32$ %out, %0
}
"};
println!("Dump:");
let module = llhd::assembly::parse_module(input).unwrap();
println!("{}", module.dump());
println!("");
println!("Written:");
llhd::assembly::write_module(std::io::stdout(), &module);
}