cst-to-llhd/test/counter.llhd

60 lines
1.6 KiB
Plaintext

proc %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) {
0:
%1 = prb i4$ %count
%count.shadow = var i4 %1
br %init
init:
%clk.prb = prb i1$ %clk
wait %check, %clk
check:
%2 = prb i4$ %count
st i4* %count.shadow, %2
%clk.prb1 = prb i1$ %clk
%3 = const i1 0
%4 = eq i1 %clk.prb, %3
%5 = neq i1 %clk.prb1, %3
%posedge = and i1 %4, %5
br %posedge, %init, %event
event:
%reset.prb = prb i1$ %reset
%6 = neq i1 %reset.prb, %3
%7 = const time 0s 1d
br %6, %if_false, %if_true
if_true:
%8 = const i4 0
drv i4$ %count, %8, %7
br %0
if_false:
%load.prb = prb i1$ %load
%9 = neq i1 %load.prb, %3
br %9, %if_false1, %if_true1
if_true1:
%data.prb = prb i4$ %data
drv i4$ %count, %data.prb, %7
br %0
if_false1:
%up_down.prb = prb i1$ %up_down
%10 = neq i1 %up_down.prb, %3
%11 = const i32 0
%12 = const i32 1
br %10, %if_false2, %if_true2
if_true2:
%count.shadow.ld = ld i4* %count.shadow
%zext = inss i32 %11, i4 %count.shadow.ld, 0, 4
%13 = add i32 %zext, %12
%14 = exts i4, i32 %13, 0, 4
drv i4$ %count, %14, %7
br %0
if_false2:
%count.shadow.ld1 = ld i4* %count.shadow
%zext1 = inss i32 %11, i4 %count.shadow.ld1, 0, 4
%15 = sub i32 %zext1, %12
%16 = exts i4, i32 %15, 0, 4
drv i4$ %count, %16, %7
br %0
}
entity @counter (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count) {
inst %counter.always.104.0 (i1$ %clk, i1$ %reset, i1$ %up_down, i1$ %load, i4$ %data) -> (i4$ %count)
}