summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNikos Nikoleris <nikos.nikoleris@arm.com>2017-07-27 23:36:17 +0100
committerNikos Nikoleris <nikos.nikoleris@arm.com>2017-10-13 08:41:08 +0000
commit64b8feeb0e70c7e138d7e9485ccacb7fd39ae044 (patch)
tree8752e59c7ec30c60d38596e877939ee1782b67f5 /src
parentf6ff203ea591bf713a10d7cd0a22ee7ea936eab9 (diff)
downloadgem5-64b8feeb0e70c7e138d7e9485ccacb7fd39ae044.tar.xz
cpu-o3: Check predication before the SQ size for a debug print
The size of the store entry in the LSQ is used to indicate a fault in the execution of the store. At the same time, a store that is predicated false will also have 0 size in the corresponding store queue entry. This changeset ensures that we check if the store was predicated false before checking the size field. This way we avoid printing stores as faulting when they are only predicated false. Change-Id: Ie07982197bd73d7b44d26a3257d54ecb103a952a Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/4821 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src')
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index 65abaa438..ca6a7f399 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -679,18 +679,18 @@ LSQUnit<Impl>::executeStore(DynInstPtr &store_inst)
store_fault == NoFault)
return store_fault;
- if (!store_inst->readPredicate())
+ if (!store_inst->readPredicate()) {
+ DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
+ store_inst->seqNum);
store_inst->forwardOldRegs();
+ return store_fault;
+ }
if (storeQueue[store_idx].size == 0) {
DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
store_inst->pcState(), store_inst->seqNum);
return store_fault;
- } else if (!store_inst->readPredicate()) {
- DPRINTF(LSQUnit, "Store [sn:%lli] not executed from predication\n",
- store_inst->seqNum);
- return store_fault;
}
assert(store_fault == NoFault);