| module signext (input [31:0] a, | |
| input [1:0] sel, | |
| output [31:0] y); | |
| // 0 = normal (I) immediate | |
| // 1 = sw (S) immediate | |
| // 2 = branch (SB) immediate | |
| // 3 = jal (UJ) immediate | |
| mux4 #(32) m1 (.d0({{21{a[31]}}, a[30:20]}), | |
| .d1({{21{a[31]}}, a[30:25], a[11:7]}), | |
| .d2({{21{a[31]}}, a[7], a[30:25], a[11:8]}), | |
| .d3({{13{a[31]}}, a[19:12], a[20], a[30:21]}), | |
| .s(sel), | |
| .y(y)); | |
| endmodule // signext |