diff options
Diffstat (limited to 'src/cpu/inorder/resources/bpred_unit.cc')
-rw-r--r-- | src/cpu/inorder/resources/bpred_unit.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cpu/inorder/resources/bpred_unit.cc b/src/cpu/inorder/resources/bpred_unit.cc index 25b8b165a..778366532 100644 --- a/src/cpu/inorder/resources/bpred_unit.cc +++ b/src/cpu/inorder/resources/bpred_unit.cc @@ -250,7 +250,7 @@ BPredUnit::predict(DynInstPtr &inst, TheISA::PCState &predPC, ThreadID tid) tid, asid, inst->pcState(), target); } else { DPRINTF(InOrderBPred, "[tid:%i]: BTB doesn't have a " - "valid entry.\n",tid); + "valid entry, predicting false.\n",tid); pred_taken = false; } } @@ -369,7 +369,9 @@ BPredUnit::squash(const InstSeqNum &squashed_sn, BPUpdate((*hist_it).pc.instAddr(), actually_taken, pred_hist.front().bpHistory); - BTB.update((*hist_it).pc.instAddr(), corrTarget, asid); + // only update BTB on branch taken right??? + if (actually_taken) + BTB.update((*hist_it).pc.instAddr(), corrTarget, asid); DPRINTF(InOrderBPred, "[tid:%i]: Removing history for [sn:%i] " "PC %s.\n", tid, (*hist_it).seqNum, (*hist_it).pc); |