module top ( input clock, input [31:0] dinA, dinB, input [2:0] opcode, output reg [31:0] dout ); always @(posedge clock) begin case (opcode) 0: dout <= dinA + dinB; 1: dout <= dinA - dinB; 2: dout <= dinA >> dinB; 3: dout <= $signed(dinA) >>> dinB; 4: dout <= dinA << dinB; 5: dout <= dinA & dinB; 6: dout <= dinA | dinB; `ifndef BUG 7: dout <= dinA ^ dinB; `else 7: dout <= -dinA ^ dinB; `endif endcase end endmodule