summaryrefslogtreecommitdiff
path: root/src/cpu/o3/iew_impl.hh
diff options
context:
space:
mode:
authorMatt Horsnell <Matt.Horsnell@arm.com>2011-01-18 16:30:05 -0600
committerMatt Horsnell <Matt.Horsnell@arm.com>2011-01-18 16:30:05 -0600
commitc98df6f8c2f3a3685fd9210ccaee2fac07e4f604 (patch)
treeed5ac803a0e28bcb59737ab08cf17cb9bbb8da73 /src/cpu/o3/iew_impl.hh
parent1167ef19cf0c478e73fc6e1848f005863525cc13 (diff)
downloadgem5-c98df6f8c2f3a3685fd9210ccaee2fac07e4f604.tar.xz
O3: Don't test misprediction on load instructions until executed.
Diffstat (limited to 'src/cpu/o3/iew_impl.hh')
-rw-r--r--src/cpu/o3/iew_impl.hh6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cpu/o3/iew_impl.hh b/src/cpu/o3/iew_impl.hh
index 29c6786c0..ce58868ba 100644
--- a/src/cpu/o3/iew_impl.hh
+++ b/src/cpu/o3/iew_impl.hh
@@ -1297,7 +1297,11 @@ DefaultIEW<Impl>::executeInsts()
!toCommit->squash[tid] ||
toCommit->squashedSeqNum[tid] > inst->seqNum) {
- if (inst->mispredicted()) {
+ // Prevent testing for misprediction on load instructions,
+ // that have not been executed.
+ bool loadNotExecuted = !inst->isExecuted() && inst->isLoad();
+
+ if (inst->mispredicted() && !loadNotExecuted) {
fetchRedirect[tid] = true;
DPRINTF(IEW, "Execute: Branch mispredict detected.\n");