gem5
v21.2.1.0
|
Free list for a single class of registers (e.g., integer or floating point). More...
#include <free_list.hh>
Public Member Functions | |
SimpleFreeList () | |
void | addReg (PhysRegIdPtr reg) |
Add a physical register to the free list. More... | |
template<class InputIt > | |
void | addRegs (InputIt first, InputIt last) |
Add physical registers to the free list. More... | |
PhysRegIdPtr | getReg () |
Get the next available register from the free list. More... | |
unsigned | numFreeRegs () const |
Return the number of free registers on the list. More... | |
bool | hasFreeRegs () const |
True iff there are free registers on the list. More... | |
Private Attributes | |
std::queue< PhysRegIdPtr > | freeRegs |
The actual free list. More... | |
Free list for a single class of registers (e.g., integer or floating point).
Because the register class is implicitly determined by the rename map instance being accessed, all architectural register index parameters and values in this class are relative (e.g., fp2 is just index 2).
Definition at line 69 of file free_list.hh.
|
inline |
Definition at line 78 of file free_list.hh.
|
inline |
Add a physical register to the free list.
Definition at line 81 of file free_list.hh.
References freeRegs, and gem5::X86ISA::reg.
Referenced by gem5::o3::UnifiedFreeList::addCCReg(), gem5::o3::UnifiedFreeList::addFloatReg(), gem5::o3::UnifiedFreeList::addIntReg(), gem5::o3::UnifiedFreeList::addReg(), gem5::o3::UnifiedFreeList::addVecElem(), gem5::o3::UnifiedFreeList::addVecPredReg(), and gem5::o3::UnifiedFreeList::addVecReg().
|
inline |
Add physical registers to the free list.
Definition at line 86 of file free_list.hh.
References freeRegs, and gem5::X86ISA::reg.
Referenced by gem5::o3::UnifiedFreeList::addRegs().
|
inline |
Get the next available register from the free list.
Definition at line 93 of file free_list.hh.
References freeRegs.
Referenced by gem5::o3::UnifiedFreeList::getCCReg(), gem5::o3::UnifiedFreeList::getFloatReg(), gem5::o3::UnifiedFreeList::getIntReg(), gem5::o3::UnifiedFreeList::getVecElem(), gem5::o3::UnifiedFreeList::getVecPredReg(), gem5::o3::UnifiedFreeList::getVecReg(), and gem5::o3::SimpleRenameMap::rename().
|
inline |
True iff there are free registers on the list.
Definition at line 105 of file free_list.hh.
References freeRegs.
Referenced by gem5::o3::UnifiedFreeList::hasFreeCCRegs(), gem5::o3::UnifiedFreeList::hasFreeFloatRegs(), gem5::o3::UnifiedFreeList::hasFreeIntRegs(), gem5::o3::UnifiedFreeList::hasFreeVecElems(), gem5::o3::UnifiedFreeList::hasFreeVecPredRegs(), and gem5::o3::UnifiedFreeList::hasFreeVecRegs().
|
inline |
Return the number of free registers on the list.
Definition at line 102 of file free_list.hh.
References freeRegs.
Referenced by gem5::o3::UnifiedFreeList::numFreeCCRegs(), gem5::o3::SimpleRenameMap::numFreeEntries(), gem5::o3::UnifiedFreeList::numFreeFloatRegs(), gem5::o3::UnifiedFreeList::numFreeIntRegs(), gem5::o3::UnifiedFreeList::numFreeVecElems(), gem5::o3::UnifiedFreeList::numFreeVecPredRegs(), and gem5::o3::UnifiedFreeList::numFreeVecRegs().
|
private |
The actual free list.
Definition at line 74 of file free_list.hh.
Referenced by addReg(), addRegs(), getReg(), hasFreeRegs(), and numFreeRegs().