diff --git a/hardware/src/ara_dispatcher.sv b/hardware/src/ara_dispatcher.sv index 237408f12..48987175e 100644 --- a/hardware/src/ara_dispatcher.sv +++ b/hardware/src/ara_dispatcher.sv @@ -3206,7 +3206,7 @@ module ara_dispatcher import ara_pkg::*; import rvv_pkg::*; #( // During a vstore, if vstart > 0, reshuffle immediately not to complicate operand fetch stage reshuffle_req_d = {ara_req_d.use_vs1 && (ara_req_d.eew_vs1 != eew_q[ara_req_d.vs1]) && eew_valid_q[ara_req_d.vs1] && (in_lane_op || (is_vstore && (csr_vstart_q != '0))), ara_req_d.use_vs2 && (ara_req_d.eew_vs2 != eew_q[ara_req_d.vs2]) && eew_valid_q[ara_req_d.vs2] && in_lane_op, - ara_req_d.use_vd && (ara_req_d.vtype.vsew != eew_q[ara_req_d.vd ]) && eew_valid_q[ara_req_d.vd ] && csr_vl_q != ((VLENB << ara_req_d.emul[1:0]) >> ara_req_d.vtype.vsew)}; + ara_req_d.use_vd && (ara_req_d.vtype.vsew != eew_q[ara_req_d.vd ]) && eew_valid_q[ara_req_d.vd ] && !(csr_vstart_q == 0 && (csr_vl_q == ((VLENB << ara_req_d.emul[1:0]) >> ara_req_d.vtype.vsew)))}; // Mask out requests if they refer to the same register! reshuffle_req_d &= { (insn.varith_type.rs1 != insn.varith_type.rs2) && (insn.varith_type.rs1 != insn.varith_type.rd),