Go to the documentation of this file.
42 #ifndef __CPU_O3_RENAME_MAP_HH__
43 #define __CPU_O3_RENAME_MAP_HH__
53 #include "enums/VecRegRenameMode.hh"
234 assert(
vecMode == enums::Full);
237 assert(
vecMode == enums::Elem);
253 panic(
"rename rename(): unknown reg class %s\n",
276 assert(
vecMode == enums::Full);
280 assert(
vecMode == enums::Elem);
295 panic(
"rename lookup(): unknown reg class %s\n",
320 assert(
vecMode == enums::Full);
324 assert(
vecMode == enums::Elem);
338 assert(phys_reg ==
lookup(arch_reg));
342 panic(
"rename setEntry(): unknown reg class %s\n",
379 canRename(uint32_t intRegs, uint32_t floatRegs, uint32_t vectorRegs,
380 uint32_t vecElemRegs, uint32_t vecPredRegs,
381 uint32_t ccRegs)
const
409 #endif //__CPU_O3_RENAME_MAP_HH__
unsigned numFreePredEntries() const
void switchMode(VecMode newVecMode)
Set vector mode to Full or Elem.
@ VecElemClass
Vector Register Native Elem lane.
RegId zeroReg
The architectural index of the zero register.
@ CCRegClass
Condition-code register.
SimpleRenameMap::RenameInfo RenameInfo
RegIndex flatIndex() const
Index flattening.
Free list for a single class of registers (e.g., integer or floating point).
bool canRename(uint32_t intRegs, uint32_t floatRegs, uint32_t vectorRegs, uint32_t vecElemRegs, uint32_t vecPredRegs, uint32_t ccRegs) const
Return whether there are enough registers to serve the request.
const_iterator begin() const
const_iterator end() const
unsigned numFreeEntries() const
Return the number of free entries on the associated free list.
SimpleFreeList * freeList
Pointer to the free list from which new physical registers should be allocated in rename()
iterator end()
Forward end/cend to the map.
@ FloatRegClass
Floating-point register.
Arch2PhysMap::iterator iterator
@ MiscRegClass
Control (misc) register.
FreeList class that simply holds the list of free integer and floating point registers.
SimpleRenameMap intMap
The integer register rename map.
unsigned numFreeFloatEntries() const
unsigned numFreeRegs() const
Return the number of free registers on the list.
RegClass classValue() const
Class accessor.
void init(const RegClassInfo ®_class_info, SimpleFreeList *_freeList)
Because we have an array of rename maps (one per thread) in the CPU, it's awkward to initialize this ...
SimpleRenameMap vecElemMap
The vector element register rename map.
SimpleRenameMap predMap
The predicate register rename map.
SimpleRenameMap ccMap
The condition-code register rename map.
iterator begin()
Forward begin/cbegin to the map.
Simple physical register file class.
void switchFreeList(UnifiedFreeList *freeList)
Switch freeList of registers from Full to Elem or vicevers depending on vecMode (vector renaming mode...
unsigned numFreeIntEntries() const
const_iterator cend() const
SimpleRenameMap vecMap
The vector register rename map.
PhysRegIdPtr lookup(const RegId &arch_reg) const
Look up the physical register mapped to an architectural register.
size_t numArchRegs() const
UnifiedRenameMap()
Default constructor.
~UnifiedRenameMap()
Destructor.
void init(const BaseISA::RegClasses ®Classes, PhysRegFile *_regFile, UnifiedFreeList *freeList, VecMode _mode)
Initializes rename map with given parameters.
const char * className() const
Return a const char* with the register class name.
RenameInfo rename(const RegId &arch_reg)
Tell rename map to get a new free physical register to remap the specified architectural register.
unsigned numFreeCCEntries() const
SimpleRenameMap floatMap
The floating-point register rename map.
std::pair< PhysRegIdPtr, PhysRegIdPtr > RenameInfo
Pair of a physical register and a physical register.
@ VecRegClass
Vector Register.
unsigned numFreeEntries() const
Return the minimum number of free entries across all of the register classes.
PhysRegIdPtr getMiscRegId(RegIndex reg_idx)
Gets a misc register PhysRegIdPtr.
PhysRegIdPtr lookup(const RegId &arch_reg) const
Look up the physical register mapped to an architectural register.
unsigned numFreeVecEntries() const
const_iterator cbegin() const
void setEntry(const RegId &arch_reg, PhysRegIdPtr phys_reg)
Update rename map with a specific mapping.
bool is(RegClass reg_class) const
Arch2PhysMap::const_iterator const_iterator
Register rename map for a single class of registers (e.g., integer or floating point).
@ IntRegClass
Integer register.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
RenameInfo rename(const RegId &arch_reg)
Tell rename map to get a new free physical register to remap the specified architectural register.
Arch2PhysMap map
The acutal arch-to-phys register map.
PhysRegFile * regFile
The register file object is used only to get PhysRegIdPtr on MiscRegs, as they are stored in it.
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
enums::VecRegRenameMode VecMode
void setEntry(const RegId &arch_reg, PhysRegIdPtr phys_reg)
Update rename map with a specific mapping.
Unified register rename map for all classes of registers.
Generated on Tue Sep 7 2021 14:53:44 for gem5 by doxygen 1.8.17