DPRINTF(InOrderDecode,
"[tid:%i]: %s Setting Destination Register(s) for [sn:%i].\n",
tid, inst->instName(), inst->seqNum);
- regDepMap[tid]->insert(inst);
//inst->printSked();
}
+ //@todo: may want to make a separate schedule entry for setting
+ // destination register dependencies
+ //@note: typically want to set the output dependencies right
+ // before we do any reading or writing of registers
+ // (in RegFile Manager(use_def.cc)) but there are some
+ // instructions that dont have src regs, so just in case
+ // take care of reg. dep. map stuff here
+ if (!inst->isRegDepEntry()) {
+ regDepMap[tid]->insert(inst);
+ }
+
switch (exec_req->cmd)
{
case ExecuteInst:
lastControlTick = curTick();
// Evaluate Branch
- DPRINTF(IEW, "Pre-Execute %s PC:%s nextPC:%s predPC:%s\n", inst->instName(), inst->pcState(), inst->readPredTarg());
fault = inst->execute();
executions++;
inst->setExecuted();
- DPRINTF(IEW, "Post-Execute %s PC:%s nextPC:%s predPC:%s\n", inst->instName(), inst->pcState(), inst->readPredTarg());
if (fault == NoFault) {
// If branch is mispredicted, then signal squash
*nonSpecSeqNum[tid] = seq_num;
}
+ //@todo: may want to make a separate schedule entry for setting
+ // destination register dependencies
+ if (!inst->isRegDepEntry()) {
+ regDepMap[tid]->insert(inst);
+ }
+
switch (ud_req->cmd)
{
case ReadSrcReg: