From 34b2500f09639e950cb590a34e51a1db853abf11 Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Sun, 19 Jun 2011 21:43:37 -0400 Subject: inorder: no dep. tracking for zero reg this causes forwarding a bad value register value --- src/cpu/inorder/reg_dep_map.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/cpu/inorder/reg_dep_map.cc') 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); } } } -- cgit v1.2.3