proc @foo (i32$ %consec_pc, i32$ %alu_result, i2$ %rd_select, i32$ %rd_bypass) -> (i32$ %alu_writeback) {
0:
br %body
body:
%rd_select1 = prb i2$ %rd_select
%1 = const i1 0
%2 = const i2 0
%3 = const i2 3
%4 = and i2 %rd_select1, %3
%5 = and i2 %2, %3
%6 = eq i2 %4, %5
%7 = or i1 %1, %6
br %7, %8, %case_body
check:
wait %body, %consec_pc, %alu_result, %rd_select, %rd_bypass
case_exit:
br %check
case_body:
%alu_result1 = prb i32$ %alu_result
%9 = const time 0s 1e
drv i32$ %alu_writeback, %alu_result1, %9
br %case_exit
8:
%10 = const i1 0
%11 = const i2 1
%12 = const i2 3
%13 = and i2 %rd_select1, %12
%14 = and i2 %11, %12
%15 = eq i2 %13, %14
%16 = or i1 %10, %15
br %16, %17, %case_body1
case_body1:
%consec_pc1 = prb i32$ %consec_pc
%18 = const time 0s 1e
drv i32$ %alu_writeback, %consec_pc1, %18
br %case_exit
17:
%19 = const i1 0
%20 = const i2 2
%21 = const i2 3
%22 = and i2 %rd_select1, %21
%23 = and i2 %20, %21
%24 = eq i2 %22, %23
%25 = or i1 %19, %24
br %25, %26, %case_body2
case_body2:
%rd_bypass1 = prb i32$ %rd_bypass
%27 = const time 0s 1e
drv i32$ %alu_writeback, %rd_bypass1, %27
br %case_exit
26:
%alu_result2 = prb i32$ %alu_result
%28 = const time 0s 1e
drv i32$ %alu_writeback, %alu_result2, %28
br %case_exit
}