rename.hh (11246:93d2a1526103) rename.hh (12104:edd63f9c6184)
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
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 // Typedefs from the ISA.
89 typedef TheISA::RegIndex RegIndex;
90
91 // A deque is used to queue the instructions. Barrier insts must
92 // be added to the front of the queue, which is the only reason for
93 // using a deque instead of a queue. (Most other stages use a
94 // queue)
95 typedef std::deque<DynInstPtr> InstQueue;
96
97 public:
98 /** Overall rename status. Used to determine if the CPU can

--- 197 unchanged lines hidden (view full) ---

296 */
297 void serializeAfter(InstQueue &inst_list, ThreadID tid);
298
299 /** Holds the information for each destination register rename. It holds
300 * the instruction's sequence number, the arch register, the old physical
301 * register for that arch. register, and the new physical register.
302 */
303 struct RenameHistory {
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 {
304 RenameHistory(InstSeqNum _instSeqNum, RegIndex _archReg,
301 RenameHistory(InstSeqNum _instSeqNum, RegId _archReg,
305 PhysRegIndex _newPhysReg, PhysRegIndex _prevPhysReg)
306 : instSeqNum(_instSeqNum), archReg(_archReg),
307 newPhysReg(_newPhysReg), prevPhysReg(_prevPhysReg)
308 {
309 }
310
311 /** The sequence number of the instruction that renamed. */
312 InstSeqNum instSeqNum;
313 /** The architectural register index that was renamed. */
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. */
314 RegIndex archReg;
311 RegId archReg;
315 /** The new physical register that the arch. register is renamed to. */
316 PhysRegIndex newPhysReg;
317 /** The old physical register that the arch. register was renamed to. */
318 PhysRegIndex prevPhysReg;
319 };
320
321 /** A per-thread list of all destination register renames, used to either
322 * undo rename mappings or free old physical registers.

--- 209 unchanged lines hidden ---
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 ---