diff options
author | Matt Horsnell <Matt.Horsnell@arm.com> | 2011-01-18 16:30:05 -0600 |
---|---|---|
committer | Matt Horsnell <Matt.Horsnell@arm.com> | 2011-01-18 16:30:05 -0600 |
commit | c98df6f8c2f3a3685fd9210ccaee2fac07e4f604 (patch) | |
tree | ed5ac803a0e28bcb59737ab08cf17cb9bbb8da73 /src | |
parent | 1167ef19cf0c478e73fc6e1848f005863525cc13 (diff) | |
download | gem5-c98df6f8c2f3a3685fd9210ccaee2fac07e4f604.tar.xz |
O3: Don't test misprediction on load instructions until executed.
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/o3/iew_impl.hh | 6 |
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"); |