1/* 2 * Copyright (c) 2012 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 71 unchanged lines hidden (view full) --- 80 typedef typename CPUPol::RenameStruct RenameStruct; 81 typedef typename CPUPol::TimeStruct TimeStruct; 82 typedef typename CPUPol::FreeList FreeList; 83 typedef typename CPUPol::RenameMap RenameMap; 84 // These are used only for initialization. 85 typedef typename CPUPol::IEW IEW; 86 typedef typename CPUPol::Commit Commit; 87 |
88 // A deque is used to queue the instructions. Barrier insts must 89 // be added to the front of the queue, which is the only reason for 90 // using a deque instead of a queue. (Most other stages use a 91 // queue) 92 typedef std::deque<DynInstPtr> InstQueue; 93 94 public: 95 /** Overall rename status. Used to determine if the CPU can --- 197 unchanged lines hidden (view full) --- 293 */ 294 void serializeAfter(InstQueue &inst_list, ThreadID tid); 295 296 /** Holds the information for each destination register rename. It holds 297 * the instruction's sequence number, the arch register, the old physical 298 * register for that arch. register, and the new physical register. 299 */ 300 struct RenameHistory { |
301 RenameHistory(InstSeqNum _instSeqNum, RegId _archReg, |
302 PhysRegIndex _newPhysReg, PhysRegIndex _prevPhysReg) 303 : instSeqNum(_instSeqNum), archReg(_archReg), 304 newPhysReg(_newPhysReg), prevPhysReg(_prevPhysReg) 305 { 306 } 307 308 /** The sequence number of the instruction that renamed. */ 309 InstSeqNum instSeqNum; 310 /** The architectural register index that was renamed. */ |
311 RegId archReg; |
312 /** The new physical register that the arch. register is renamed to. */ 313 PhysRegIndex newPhysReg; 314 /** The old physical register that the arch. register was renamed to. */ 315 PhysRegIndex prevPhysReg; 316 }; 317 318 /** A per-thread list of all destination register renames, used to either 319 * undo rename mappings or free old physical registers. --- 209 unchanged lines hidden --- |