Added BMU instructions to instruction name decoder

This commit is contained in:
David Harris 2023-06-15 09:26:09 -07:00
parent 72002625eb
commit 45ee4c2f9f

View file

@ -54,12 +54,28 @@ module instrNameDecTB(
10'b0010011_000: if (instr[31:15] == 0 & instr[11:7] ==0) name = "NOP/FLUSH"; 10'b0010011_000: if (instr[31:15] == 0 & instr[11:7] ==0) name = "NOP/FLUSH";
else name = "ADDI"; else name = "ADDI";
10'b0010011_001: if (funct7[6:1] == 6'b000000) name = "SLLI"; 10'b0010011_001: if (funct7[6:1] == 6'b000000) name = "SLLI";
else name = "ILLEGAL"; else if (funct7[6:1] == 6'b010010) name = "BCLRI";
else if (funct7[6:1] == 6'b011010) name = "BINVI";
else if (funct7[6:1] == 6'b001010) name = "BSETI";
else if (funct7 == 7'b0110000) begin
case (rs2)
5'b00000: name = "CLZ";
5'b00010: name = "CPOP";
5'b00001: name = "CTZ";
5'b00100: name = "SEXT.B";
5'b00101: name = "SEXT.H";
default: name = "ILLEGAL";
endcase
end else name = "ILLEGAL";
10'b0010011_010: name = "SLTI"; 10'b0010011_010: name = "SLTI";
10'b0010011_011: name = "SLTIU"; 10'b0010011_011: name = "SLTIU";
10'b0010011_100: name = "XORI"; 10'b0010011_100: name = "XORI";
10'b0010011_101: if (funct7[6:1] == 6'b000000) name = "SRLI"; 10'b0010011_101: if (funct7[6:1] == 6'b000000) name = "SRLI";
else if (funct7[6:1] == 6'b010000) name = "SRAI"; else if (funct7[6:1] == 6'b010000) name = "SRAI";
else if (funct7[6:1] == 6'b011010 & rs2 == 5'b11000) name = "REV8";
else if (funct7[6:1] == 6'b011000) name = "RORI";
else if (funct7[6:1] == 6'b010010) name = "BEXTI";
else if (funct7 == 7'b0010100 & rs2 == 5'b00111) name = "ORC.B";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0010011_110: name = "ORI"; 10'b0010011_110: name = "ORI";
10'b0010011_111: name = "ANDI"; 10'b0010011_111: name = "ANDI";
@ -69,22 +85,41 @@ module instrNameDecTB(
10'b0100011_010: name = "SW"; 10'b0100011_010: name = "SW";
10'b0100011_011: name = "SD"; 10'b0100011_011: name = "SD";
10'b0011011_000: name = "ADDIW"; 10'b0011011_000: name = "ADDIW";
10'b0011011_001: name = "SLLIW"; 10'b0011011_001: if (funct7 == 7'b0000000 )name = "SLLIW";
else if (funct7[6:1] == 6'b000010) name = "SLLI.UW";
else if (funct7 == 7'b0110000) begin
case (rs2)
5'b00000: name = "CLZW";
5'b00010: name = "CPOPW";
5'b00001: name = "CTZW";
default: name = "ILLEGAL";
endcase
end else name = "ILLEGAL";
10'b0011011_101: if (funct7 == 7'b0000000) name = "SRLIW"; 10'b0011011_101: if (funct7 == 7'b0000000) name = "SRLIW";
else if (funct7 == 7'b0100000) name = "SRAIW"; else if (funct7 == 7'b0100000) name = "SRAIW";
else if (funct7 == 7'b0110000) name = "RORIW";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0111011_000: if (funct7 == 7'b0000000) name = "ADDW"; 10'b0111011_000: if (funct7 == 7'b0000000) name = "ADDW";
else if (funct7 == 7'b0100000) name = "SUBW"; else if (funct7 == 7'b0100000) name = "SUBW";
else if (funct7 == 7'b0000001) name = "MULW"; else if (funct7 == 7'b0000001) name = "MULW";
else if (funct7 == 7'b0000100) name = "ADD.UW";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0111011_001: if (funct7 == 7'b0000000) name = "SLLW"; 10'b0111011_001: if (funct7 == 7'b0000000) name = "SLLW";
else if (funct7 == 7'b0000001) name = "DIVW"; else if (funct7 == 7'b0000001) name = "DIVW";
else if (funct7 == 7'b0110000) name = "ROLW";
else name = "ILLEGAL";
10'b0111011_010: if (funct7 == 7'b0010000) name = "SH1ADD.UW";
else name = "ILLEGAL";
10'b0111011_100: if (funct7 == 7'b0010000) name = "SH2ADD.UW";
else if (funct7 == 7'b0000100) name = "ZEXT.H";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0111011_101: if (funct7 == 7'b0000000) name = "SRLW"; 10'b0111011_101: if (funct7 == 7'b0000000) name = "SRLW";
else if (funct7 == 7'b0100000) name = "SRAW"; else if (funct7 == 7'b0100000) name = "SRAW";
else if (funct7 == 7'b0000001) name = "DIVUW"; else if (funct7 == 7'b0000001) name = "DIVUW";
else if (funct7 == 7'b0110000) name = "RORW";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0111011_110: if (funct7 == 7'b0000001) name = "REMW"; 10'b0111011_110: if (funct7 == 7'b0000001) name = "REMW";
else if (funct7 == 7'b0010000) name = "SH3ADD.UW";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0111011_111: if (funct7 == 7'b0000001) name = "REMUW"; 10'b0111011_111: if (funct7 == 7'b0000001) name = "REMUW";
else name = "ILLEGAL"; else name = "ILLEGAL";
@ -94,25 +129,45 @@ module instrNameDecTB(
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_001: if (funct7 == 7'b0000000) name = "SLL"; 10'b0110011_001: if (funct7 == 7'b0000000) name = "SLL";
else if (funct7 == 7'b0000001) name = "MULH"; else if (funct7 == 7'b0000001) name = "MULH";
else if (funct7 == 7'b0110000) name = "ROL";
else if (funct7 == 7'b0000101) name = "CLMUL";
else if (funct7 == 7'b0100100) name = "BCLR";
else if (funct7 == 7'b0110100) name = "BINV";
else if (funct7 == 7'b0010100) name = "BSET";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_010: if (funct7 == 7'b0000000) name = "SLT"; 10'b0110011_010: if (funct7 == 7'b0000000) name = "SLT";
else if (funct7 == 7'b0000001) name = "MULHSU"; else if (funct7 == 7'b0000001) name = "MULHSU";
else if (funct7 == 7'b0010000) name = "SH1ADD";
else if (funct7 == 7'b0000101) name = "CLMULR";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_011: if (funct7 == 7'b0000000) name = "SLTU"; 10'b0110011_011: if (funct7 == 7'b0000000) name = "SLTU";
else if (funct7 == 7'b0000001) name = "MULHU"; else if (funct7 == 7'b0000001) name = "MULHU";
else if (funct7 == 7'b0000101) name = "CLMULH";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_100: if (funct7 == 7'b0000000) name = "XOR"; 10'b0110011_100: if (funct7 == 7'b0000000) name = "XOR";
else if (funct7 == 7'b0000001) name = "DIV"; else if (funct7 == 7'b0000001) name = "DIV";
else if (funct7 == 7'b0010000) name = "SH2ADD";
else if (funct7 == 7'b0000101) name = "MIN";
else if (funct7 == 7'b0100000) name = "ORN";
else if (funct7 == 7'b0000100) name = "ZEXT.H";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_101: if (funct7 == 7'b0000000) name = "SRL"; 10'b0110011_101: if (funct7 == 7'b0000000) name = "SRL";
else if (funct7 == 7'b0000001) name = "DIVU"; else if (funct7 == 7'b0000001) name = "DIVU";
else if (funct7 == 7'b0100000) name = "SRA"; else if (funct7 == 7'b0100000) name = "SRA";
else if (funct7 == 7'b0000101) name = "MINU";
else if (funct7 == 7'b0110000) name = "ROR";
else if (funct7 == 7'b0100100) name = "BEXT";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_110: if (funct7 == 7'b0000000) name = "OR"; 10'b0110011_110: if (funct7 == 7'b0000000) name = "OR";
else if (funct7 == 7'b0000001) name = "REM"; else if (funct7 == 7'b0000001) name = "REM";
else if (funct7 == 7'b0010000) name = "SH3ADD";
else if (funct7 == 7'b0000101) name = "MAX";
else if (funct7 == 7'b0100000) name = "XNOR";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110011_111: if (funct7 == 7'b0000000) name = "AND"; 10'b0110011_111: if (funct7 == 7'b0000000) name = "AND";
else if (funct7 == 7'b0000001) name = "REMU"; else if (funct7 == 7'b0000001) name = "REMU";
else if (funct7 == 7'b0000101) name = "MAXU";
else if (funct7 == 7'b0100000) name = "ANDN";
else name = "ILLEGAL"; else name = "ILLEGAL";
10'b0110111_???: name = "LUI"; 10'b0110111_???: name = "LUI";
10'b1100011_000: name = "BEQ"; 10'b1100011_000: name = "BEQ";