diff --git a/src/ieu/bmu/bmuctrl.sv b/src/ieu/bmu/bmuctrl.sv index abaf3655..ab275047 100644 --- a/src/ieu/bmu/bmuctrl.sv +++ b/src/ieu/bmu/bmuctrl.sv @@ -132,6 +132,15 @@ module bmuctrl( 17'b0110011_0100000_111: BMUControlsD = `BMUCTRLW'b111_0100_111; // andn 17'b0110011_0100000_110: BMUControlsD = `BMUCTRLW'b110_0100_111; // orn 17'b0110011_0100000_100: BMUControlsD = `BMUCTRLW'b100_0100_111; // xnor + 17'b0010011_0110101_101: if (`XLEN == 64) + BMUControlsD = `BMUCTRLW'b000_0100_011; // rev8 (rv64) + else + BMUControlsD = `BMUCTRLW'b000_0000_000; // illegal instruction + 17'b0010011_0110100_101: if (`XLEN == 32) + BMUControlsD = `BMUCTRLW'b000_0100_011; // rev8 (rv32) + else + BMUControlsD = `BMUCTRLW'b000_0000_000; // illegal instruction + 17'b0010011_0010100_101: BMUControlsD = `BMUCTRLW'b000_0100_011; // orc.b default: BMUControlsD = {Funct3D, {7'b0}}; // not B instruction or shift endcase diff --git a/src/ieu/bmu/byte.sv b/src/ieu/bmu/byte.sv index 6a076b7d..efd43d84 100644 --- a/src/ieu/bmu/byte.sv +++ b/src/ieu/bmu/byte.sv @@ -30,10 +30,10 @@ `include "wally-config.vh" module byteUnit #(parameter WIDTH=32) ( - input logic [WIDTH-1:0] A, // Operands - output logic [WIDTH-1:0] OrcBResult, // OrcB result - output logic [WIDTH-1:0] Rev8Result); // Rev8 result + input logic [WIDTH-1:0] A, B, // Operands + output logic [WIDTH-1:0] ByteResult); // rev8, orcb result + logic [WIDTH-1:0] OrcBResult, Rev8Result; genvar i; for (i=0;i