mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merge pull request #1153 from davidharrishmc/dev
Fixed decoder for illegal 0b1e0c33 issue #1152
This commit is contained in:
commit
1888d40760
@ -119,13 +119,11 @@ module bmuctrl import cvw::*; #(parameter cvw_t P) (
|
|||||||
if (P.ZBC_SUPPORTED)
|
if (P.ZBC_SUPPORTED)
|
||||||
casez({OpD, Funct7D, Funct3D})
|
casez({OpD, Funct7D, Funct3D})
|
||||||
17'b0110011_0000101_010: BMUControlsD = `BMUCTRLW'b000_0011_0001_1_0_0_0_1_0_0_0_0_0; // clmulr
|
17'b0110011_0000101_010: BMUControlsD = `BMUCTRLW'b000_0011_0001_1_0_0_0_1_0_0_0_0_0; // clmulr
|
||||||
17'b0110011_0000101_0??: BMUControlsD = `BMUCTRLW'b000_0011_0000_1_0_0_0_1_0_0_0_0_0; // clmul/clmulh
|
17'b0110011_0000101_0?1: BMUControlsD = `BMUCTRLW'b000_0011_0000_1_0_0_0_1_0_0_0_0_0; // clmul/clmulh
|
||||||
endcase
|
endcase
|
||||||
if (P.ZBKC_SUPPORTED) begin
|
if (P.ZBKC_SUPPORTED) begin
|
||||||
casez({OpD, Funct7D, Funct3D})
|
casez({OpD, Funct7D, Funct3D})
|
||||||
17'b0110011_0000101_0??: BMUControlsD = `BMUCTRLW'b000_0011_0000_1_0_0_0_1_0_0_0_0_0; // clmul/clmulh
|
17'b0110011_0000101_0?1: BMUControlsD = `BMUCTRLW'b000_0011_0000_1_0_0_0_1_0_0_0_0_0; // clmul/clmulh
|
||||||
// 17'b0110011_0000101_001: BMUControlsD = `BMUCTRLW'b000_0011_0000_1_0_0_0_1_0_0_0_0_0; // clmul
|
|
||||||
// 17'b0110011_0000101_011: BMUControlsD = `BMUCTRLW'b000_0011_0001_1_0_0_0_1_0_0_0_0_0; // clmulh
|
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ module privdec import cvw::*; #(parameter cvw_t P) (
|
|||||||
|
|
||||||
// svinval instructions
|
// svinval instructions
|
||||||
// any svinval instruction is treated as sfence.vma on Wally
|
// any svinval instruction is treated as sfence.vma on Wally
|
||||||
assign sinvalvmaM = (InstrM[31:25] == 7'b0001001);
|
assign sinvalvmaM = (InstrM[31:25] == 7'b0001011);
|
||||||
assign sfencewinvalM = (InstrM[31:20] == 12'b000110000000) & rs1zeroM;
|
assign sfencewinvalM = (InstrM[31:20] == 12'b000110000000) & rs1zeroM;
|
||||||
assign sfenceinvalirM = (InstrM[31:20] == 12'b000110000001) & rs1zeroM;
|
assign sfenceinvalirM = (InstrM[31:20] == 12'b000110000001) & rs1zeroM;
|
||||||
assign invalM = P.SVINVAL_SUPPORTED & (sinvalvmaM | sfencewinvalM | sfenceinvalirM);
|
assign invalM = P.SVINVAL_SUPPORTED & (sinvalvmaM | sfencewinvalM | sfenceinvalirM);
|
||||||
|
@ -219,6 +219,10 @@ module instrNameDecTB(
|
|||||||
else if (imm == 258) name = "SRET";
|
else if (imm == 258) name = "SRET";
|
||||||
else if (imm == 770) name = "MRET";
|
else if (imm == 770) name = "MRET";
|
||||||
else if (funct7 == 9) name = "SFENCE.VMA";
|
else if (funct7 == 9) name = "SFENCE.VMA";
|
||||||
|
else if (funct7 == 11) name = "SINVAL.VMA";
|
||||||
|
else if (funct7 == 12 & rs2 == 0) name = "SFENCE.W.INVAL";
|
||||||
|
else if (funct7 == 12 & rs2 == 1) name = "SFENCE.INVAL.IR";
|
||||||
|
else if (imm == 259) name = "WFI";
|
||||||
else if (imm == 261) name = "WFI";
|
else if (imm == 261) name = "WFI";
|
||||||
else name = "ILLEGAL";
|
else name = "ILLEGAL";
|
||||||
10'b1110011_001: name = "CSRRW";
|
10'b1110011_001: name = "CSRRW";
|
||||||
|
Loading…
Reference in New Issue
Block a user