aboutsummaryrefslogtreecommitdiffstats
path: root/tests/arch/ice40/alu.v
blob: f82cc2e2115181e54439f8994598b82512505788 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
		7: dout <= dinA ^ dinB;
		endcase
	end
endmodule