@@ -83,6 +83,7 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
8383 val state = RegInit (new FSMState (), initState)
8484
8585 val req_released_chiOpcode = RegInit (0 .U .asTypeOf(UInt (OPCODE_WIDTH .W )))
86+ val req_released_likelyShared = RegInit (false .B )
8687
8788 assert(! (req_valid && dirResult.hit && ! isT(meta.state) && meta.dirty),
8889 " directory valid read with dirty under non-T state" )
@@ -394,9 +395,8 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
394395 oa.ns := enableNS.B
395396 // set 'LikelyShared' to 1 here when:
396397 // - WriteEvictOrEvict (on retry) with SC state
397- oa.likelyshared := Mux (
398- release_valid2,
399- afterIssueEbOrElse(req_released_chiOpcode === WriteEvictOrEvict && meta.state === BRANCH , false .B ),
398+ oa.likelyshared := afterIssueEbOrElse(
399+ Mux (release_valid2, req_released_likelyShared, false .B ),
400400 false .B
401401 )
402402 oa.allowRetry := state.s_reissue.getOrElse(false .B )
@@ -1053,6 +1053,7 @@ class MSHR(implicit p: Parameters) extends TL2CHIL2Module with HasCHIOpcodes {
10531053 }
10541054 }.elsewhen (mp_release_valid) {
10551055 req_released_chiOpcode := mp_release.chiOpcode.get
1056+ req_released_likelyShared := mp_release.likelyshared.get
10561057 state.s_release := true .B
10571058 state.s_cbwrdata.get := isEvict
10581059 when (isEvict) {
0 commit comments