log -header "SHL across AND: (a & b) << c" log -push design -reset read_verilog <> c" log -push design -reset read_verilog <> c; endmodule EOF check -assert equiv_opt -assert opt_shift -expand design -load postopt select -assert-count 1 t:$and select -assert-count 2 t:$shr design -reset log -pop log -header "SHR across XOR: (a ^ b) >> c" log -push design -reset read_verilog <> c; endmodule EOF check -assert equiv_opt -assert opt_shift -expand design -load postopt select -assert-count 1 t:$xor select -assert-count 2 t:$shr design -reset log -pop log -header "SSHR (arithmetic right shift) across AND: signed (a & b) >>> c" log -push design -reset read_verilog <>> c; endmodule EOF check -assert equiv_opt -assert opt_shift -expand design -load postopt select -assert-count 1 t:$and select -assert-count 2 t:$sshr design -reset log -pop log -header "Negative case: fanout from intermediate wire prevents expansion" log -push design -reset read_verilog <