diff options
author | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:37 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:37 -0400 |
commit | 34b2500f09639e950cb590a34e51a1db853abf11 (patch) | |
tree | 464ee3a0eefe0fc4fa1d253ddb9b8a53db7af710 /src/cpu/inorder/reg_dep_map.cc | |
parent | d02fa0f6b6b29a2caf969235feb265dbad6675ff (diff) | |
download | gem5-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.cc | 19 |
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); } } } |