{
if (++wbOutstanding == wbMax)
ableToIssue = false;
- DPRINTF(IEW, "wbOutstanding: %i\n", wbOutstanding);
+ DPRINTF(IEW, "wbOutstanding: %i [sn:%lli]\n", wbOutstanding, sn);
assert(wbOutstanding <= wbMax);
#ifdef DEBUG
wbList.insert(sn);
// Check if the instruction is squashed; if so then skip it
if (inst->isSquashed()) {
- DPRINTF(IEW, "Execute: Instruction was squashed.\n");
+ DPRINTF(IEW, "Execute: Instruction was squashed. PC: %s, [tid:%i]"
+ " [sn:%i]\n", inst->pcState(), inst->threadNumber,
+ inst->seqNum);
// Consider this instruction executed so that commit can go
// ahead and retire the instruction.
++lsqCacheBlocked;
- iewStage->decrWb(load_inst->seqNum);
+ // If the first part of a split access succeeds, then let the LSQ
+ // handle the decrWb when completeDataAccess is called upon return
+ // of the requested first part of data
+ if (!completedFirst)
+ iewStage->decrWb(load_inst->seqNum);
+
// There's an older load that's already going to squash.
if (isLoadBlocked && blockedLoadSeqNum < load_inst->seqNum)
return NoFault;