summaryrefslogtreecommitdiff
path: root/src/cpu/inorder/reg_dep_map.cc
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:37 -0400
committerKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:37 -0400
commit34b2500f09639e950cb590a34e51a1db853abf11 (patch)
tree464ee3a0eefe0fc4fa1d253ddb9b8a53db7af710 /src/cpu/inorder/reg_dep_map.cc
parentd02fa0f6b6b29a2caf969235feb265dbad6675ff (diff)
downloadgem5-34b2500f09639e950cb590a34e51a1db853abf11.tar.xz
inorder: no dep. tracking for zero reg
this causes forwarding a bad value register value
Diffstat (limited to 'src/cpu/inorder/reg_dep_map.cc')
-rw-r--r--src/cpu/inorder/reg_dep_map.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/cpu/inorder/reg_dep_map.cc b/src/cpu/inorder/reg_dep_map.cc
index 9898de43d..075c31208 100644
--- a/src/cpu/inorder/reg_dep_map.cc
+++ b/src/cpu/inorder/reg_dep_map.cc
@@ -103,6 +103,14 @@ RegDepMap::insert(DynInstPtr inst)
inst->seqNum, i, raw_idx, flat_idx);
inst->flattenDestReg(i, flat_idx);
+
+ if (flat_idx == TheISA::ZeroReg) {
+ DPRINTF(IntRegs, "[sn:%i]: Ignoring Insert-Dependency tracking for "
+ "ISA-ZeroReg (Int. Reg %i).\n", inst->seqNum,
+ flat_idx);
+ continue;
+ }
+
insert(reg_type, flat_idx, inst);
}
}
@@ -134,8 +142,17 @@ RegDepMap::remove(DynInstPtr inst)
for (int i = 0; i < dest_regs; i++) {
+ RegIndex flat_idx = inst->flattenedDestRegIdx(i);
+
+ if (flat_idx == TheISA::ZeroReg) {
+ DPRINTF(IntRegs, "[sn:%i]: Ignoring Remove-Dependency tracking for "
+ "ISA-ZeroReg (Int. Reg %i).\n", inst->seqNum,
+ flat_idx);
+ continue;
+ }
+
InOrderCPU::RegType reg_type = cpu->getRegType(inst->destRegIdx(i));
- remove(reg_type, inst->flattenedDestRegIdx(i), inst);
+ remove(reg_type, flat_idx, inst);
}
}
}