; RUN: llhd-opt %s proc %always_ff (i1$ %clk_i, i1$ %rst_i, i32$ %pc_d) -> (i32$ %pc_q) { 0: br %init init: %clk_i1 = prb i1$ %clk_i wait %check, %clk_i check: %clk_i2 = prb i1$ %clk_i %1 = const i1 0 %2 = eq i1 %clk_i1, %1 %3 = neq i1 %clk_i2, %1 %posedge = and i1 %2, %3 br %posedge, %init, %event event: %rst_i1 = prb i1$ %rst_i %4 = const i32 65536 %pc_d1 = prb i32$ %pc_d %5 = [i32 %pc_d1, %4] %6 = mux [2 x i32] %5, i1 %rst_i1 %7 = const time 0s 1d drv i32$ %pc_q, %6, %7 br %0 } ; CHECK: proc %always_ff (i1$ %clk_i, i1$ %rst_i, i32$ %pc_d) -> (i32$ %pc_q) { ; CHECK: init: ; CHECK: %clk_i1 = prb i1$ %clk_i ; CHECK: %0 = const i1 0 ; CHECK: %1 = eq i1 %clk_i1, %0 ; CHECK: %2 = const i32 65536 ; CHECK: %3 = const time 0s 1d ; CHECK: wait %check, %clk_i ; CHECK: check: ; CHECK: %pc_d1 = prb i32$ %pc_d ; CHECK: %rst_i1 = prb i1$ %rst_i ; CHECK: %clk_i2 = prb i1$ %clk_i ; CHECK: %4 = neq i1 %clk_i2, %0 ; CHECK: %posedge = and i1 %1, %4 ; CHECK: %5 = [i32 %pc_d1, %2] ; CHECK: %6 = mux [2 x i32] %5, i1 %rst_i1 ; CHECK: drv i32$ %pc_q if %posedge, %6, %3 ; CHECK: br %init ; CHECK: }