Go to the documentation of this file.
49 unsigned _numPhysicalFloatRegs,
50 unsigned _numPhysicalVecRegs,
51 unsigned _numPhysicalVecPredRegs,
52 unsigned _numPhysicalCCRegs,
54 : intRegFile(_numPhysicalIntRegs),
55 floatRegFile(_numPhysicalFloatRegs),
56 vectorRegFile(_numPhysicalVecRegs),
57 vecPredRegFile(_numPhysicalVecPredRegs),
58 ccRegFile(_numPhysicalCCRegs),
59 numPhysicalIntRegs(_numPhysicalIntRegs),
60 numPhysicalFloatRegs(_numPhysicalFloatRegs),
61 numPhysicalVecRegs(_numPhysicalVecRegs),
62 numPhysicalVecElemRegs(_numPhysicalVecRegs *
64 numPhysicalVecPredRegs(_numPhysicalVecPredRegs),
65 numPhysicalCCRegs(_numPhysicalCCRegs),
66 totalNumRegs(_numPhysicalIntRegs
67 + _numPhysicalFloatRegs
70 + _numPhysicalVecPredRegs
71 + _numPhysicalCCRegs),
80 warn(
"Non-zero number of physical CC regs specified, even though\n"
81 " ISA does not use them.\n");
107 eIdx, flat_reg_idx++);
155 elemIdx].
index() == reg_idx);
157 elemIdx].elemIndex() == elemIdx);
187 "Trying to get elems of a %s register",
reg->className());
188 auto idx =
reg->index();
189 return std::make_pair(
215 return std::make_pair(PhysIds::iterator(),
216 PhysIds::iterator());
222 switch (
reg->classValue()) {
230 "Trying to get the register of a %s register",
reg->className());
unsigned numPhysicalIntRegs
Number of physical general purpose registers.
std::vector< PhysRegId > vecPredRegIds
@ VecElemClass
Vector Register Native Elem lane.
std::vector< PhysRegId > floatRegIds
std::vector< VecRegContainer > vectorRegFile
Vector register file.
void addRegs(InputIt first, InputIt last)
Adds a register back to the free list.
std::vector< PhysRegId > ccRegIds
void initFreeList(UnifiedFreeList *freeList)
Initialize the free list.
Enums::VecRegRenameMode VecMode
IdRange getRegElemIds(PhysRegIdPtr reg)
Get the PhysRegIds of the elems of a vector register.
std::vector< PhysRegId > intRegIds
std::vector< PhysRegId > vecRegIds
@ FloatRegClass
Floating-point register.
PhysRegFile(unsigned _numPhysicalIntRegs, unsigned _numPhysicalFloatRegs, unsigned _numPhysicalVecRegs, unsigned _numPhysicalVecPredRegs, unsigned _numPhysicalCCRegs, VecMode vmode)
Constructs a physical register file with the specified amount of integer and floating point registers...
unsigned numPhysicalCCRegs
Number of physical CC registers.
RegClass
Enumerate the classes of registers.
constexpr unsigned NumVecElemPerVecReg
FreeList class that simply holds the list of free integer and floating point registers.
static constexpr auto NumVecElemPerVecReg
short int PhysRegIndex
Physical register index type.
VecMode vecMode
Mode in which vector registers are addressed.
@ IntRegClass
Integer register.
unsigned numPhysicalVecPredRegs
Number of physical predicate registers.
@ CCRegClass
Condition-code register.
std::vector< PhysRegId > miscRegIds
Misc Reg Ids.
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
@ MiscRegClass
Control (misc) register.
@ VecRegClass
Vector Register.
unsigned numPhysicalVecRegs
Number of physical vector registers.
uint16_t ElemIndex
Logical vector register elem index type.
PhysRegIdPtr getTrueId(PhysRegIdPtr reg)
Get the true physical register id.
unsigned numPhysicalFloatRegs
Number of physical floating point registers.
std::vector< PhysRegId > vecElemIds
IdRange getRegIds(RegClass cls)
Get the PhysRegIds of the elems of all vector registers.
Generated on Wed Sep 30 2020 14:02:09 for gem5 by doxygen 1.8.17