Skip to content

Commit 09bbf5c

Browse files
committed
Fix rv32b
1 parent 51a5485 commit 09bbf5c

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

Diff for: src/main/scala/rocket/ALU.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class ALU(implicit p: Parameters) extends AbstractALU()(p) {
135135
))
136136
val popc_in = Mux(io.in2(1),
137137
Mux(io.dw === DW_32, io.in1(31,0), io.in1),
138-
PriorityEncoderOH(1.U ## tz_in) - 1.U)
138+
PriorityEncoderOH(1.U ## tz_in) - 1.U)(xLen-1,0)
139139
val count = PopCount(popc_in)
140140
val in1_bytes = io.in1.asTypeOf(Vec(xLen / 8, UInt(8.W)))
141141
val orcb = VecInit(in1_bytes.map(b => Fill(8, b =/= 0.U))).asUInt
@@ -152,7 +152,7 @@ class ALU(implicit p: Parameters) extends AbstractALU()(p) {
152152
val maxmin_out = Mux(io.cmp_out, io.in2, io.in1)
153153

154154
// ROL, ROR
155-
val rot_shamt = Mux(io.dw === DW_32, 32.U, 64.U) - shamt
155+
val rot_shamt = Mux(io.dw === DW_32, 32.U, xLen.U) - shamt
156156
val rotin = Mux(io.fn(0), shin_r, Reverse(shin_r))
157157
val rotout_r = (rotin >> rot_shamt)(xLen-1,0)
158158
val rotout_l = Reverse(rotout_r)

Diff for: src/main/scala/rocket/IDecode.scala

+3-4
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,6 @@ class ZbbDecode(implicit val p: Parameters) extends DecodeConstants
480480
ROL -> List(Y,N,N,N,N,N,Y,Y,A2_RS2 ,A1_RS1,IMM_X,DW_XPR,FN_ROL, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
481481
ROR -> List(Y,N,N,N,N,N,Y,Y,A2_RS2 ,A1_RS1,IMM_X,DW_XPR,FN_ROR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
482482
RORI -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_ROR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
483-
ZEXT_H -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
484483
SEXT_B -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
485484
SEXT_H -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
486485
)
@@ -496,15 +495,17 @@ class Zbb64Decode(implicit val p: Parameters) extends DecodeConstants
496495
ROLW -> List(Y,N,N,N,N,N,Y,Y,A2_RS2 ,A1_RS1,IMM_X,DW_32 ,FN_ROL, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
497496
RORW -> List(Y,N,N,N,N,N,Y,Y,A2_RS2 ,A1_RS1,IMM_X,DW_32 ,FN_ROR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
498497
RORIW -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_32 ,FN_ROR, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
498+
ZEXT_H -> List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
499499
)
500500
}
501501

502-
503502
class Zbb32Decode(implicit val p: Parameters) extends DecodeConstants
504503
{
505504
val table: Array[(BitPat, List[BitPat])] = Array(
506505
Instructions32.REV8 ->
507506
List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
507+
Instructions32.ZEXT_H ->
508+
List(Y,N,N,N,N,N,N,Y,A2_IMM ,A1_RS1,IMM_I,DW_XPR,FN_UNARY, N,M_X, N,N,N,N,N,N,Y,CSR.N,N,N,N,N),
508509
)
509510
}
510511

@@ -522,8 +523,6 @@ class ZbsDecode(implicit val p: Parameters) extends DecodeConstants
522523
)
523524
}
524525

525-
526-
527526
class RoCCDecode(implicit val p: Parameters) extends DecodeConstants
528527
{
529528
val table: Array[(BitPat, List[BitPat])] = Array(

0 commit comments

Comments
 (0)