summaryrefslogtreecommitdiff
path: root/src/cpu/o3/rob_impl.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/o3/rob_impl.hh')
-rw-r--r--src/cpu/o3/rob_impl.hh16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/cpu/o3/rob_impl.hh b/src/cpu/o3/rob_impl.hh
index 093dd2840..b729a9d00 100644
--- a/src/cpu/o3/rob_impl.hh
+++ b/src/cpu/o3/rob_impl.hh
@@ -51,6 +51,7 @@
#include "debug/Fetch.hh"
#include "debug/ROB.hh"
#include "params/DerivO3CPU.hh"
+#include "debug/IFT.hh"
using namespace std;
@@ -429,6 +430,7 @@ ROB<Impl>::updateVisibleState()
bool prevBrsResolved=true;
bool prevInstsCommitted=true;
bool prevBrsCommitted=true;
+ bool prevBrsNotTainted=true;
while (inst_it != tail_inst_it) {
DynInstPtr inst = *inst_it++;
@@ -441,8 +443,15 @@ ROB<Impl>::updateVisibleState()
}
}
+ if (prevBrsNotTainted) {
+ inst->afterTaintedBranch = false;
+ DPRINTF(IFT, "Instruction PC: %s [sn:%lli] is not after a tainted branch.\n",
+ inst->pcState(), inst->seqNum);
+ }
+
if (!prevInstsComplete &&
- !prevBrsResolved) {
+ !prevBrsResolved &&
+ !prevBrsNotTainted) {
break;
}
@@ -468,6 +477,11 @@ ROB<Impl>::updateVisibleState()
|| inst->isSquashed()){
prevBrsResolved = false;
}
+ if (inst->isTainted) {
+ prevBrsNotTainted = false;
+ DPRINTF(IFT, "Instruction PC: %s [sn:%lli] is a tainted branch.\n",
+ inst->pcState(), inst->seqNum);
+ }
}
prevInstsCommitted = false;