Go to the documentation of this file.
42 #ifndef __CPU_O3_REGFILE_HH__
43 #define __CPU_O3_REGFILE_HH__
48 #include "arch/vecregs.hh"
50 #include "config/the_isa.hh"
52 #include "debug/IEW.hh"
53 #include "enums/VecRegRenameMode.hh"
61 class UnifiedFreeList;
143 unsigned _numPhysicalFloatRegs,
144 unsigned _numPhysicalVecRegs,
145 unsigned _numPhysicalVecPredRegs,
146 unsigned _numPhysicalCCRegs,
189 DPRINTF(
IEW,
"RegFile: Access to int register %i, has data "
201 DPRINTF(
IEW,
"RegFile: Access to float register %i as int, "
202 "has data %#x\n", phys_reg->
index(), floatRegBits);
213 DPRINTF(
IEW,
"RegFile: Access to vector register %i, has "
214 "data %s\n",
int(phys_reg->
index()),
235 DPRINTF(
IEW,
"RegFile: Access to element %d of vector register %i,"
236 " has data %#x\n", phys_reg->
elemIndex(),
248 DPRINTF(
IEW,
"RegFile: Access to predicate register %i, has "
249 "data %s\n",
int(phys_reg->
index()),
269 DPRINTF(
IEW,
"RegFile: Access to cc register %i, has "
270 "data %#x\n", phys_reg->
index(),
282 DPRINTF(
IEW,
"RegFile: Setting int register %i to %#x\n",
294 DPRINTF(
IEW,
"RegFile: Setting float register %i to %#x\n",
306 DPRINTF(
IEW,
"RegFile: Setting vector register %i to %s\n",
318 DPRINTF(
IEW,
"RegFile: Setting element %d of vector register %i to"
332 DPRINTF(
IEW,
"RegFile: Setting predicate register %i to %s\n",
344 DPRINTF(
IEW,
"RegFile: Setting cc register %i to %#x\n",
373 #endif //__CPU_O3_REGFILE_HH__
void setCCReg(PhysRegIdPtr phys_reg, RegVal val)
Sets a condition-code register to the given value.
@ VecElemClass
Vector Register Native Elem lane.
TheISA::VecRegContainer & getWritableVecReg(PhysRegIdPtr phys_reg)
Reads a vector register for modification.
@ CCRegClass
Condition-code register.
const TheISA::VecRegContainer & readVecReg(PhysRegIdPtr phys_reg) const
Reads a vector register.
RegClass
Enumerate the classes of registers.
VecPredReg::Container VecPredRegContainer
unsigned numPhysicalVecElemRegs
Number of physical vector element registers.
const TheISA::VecElem & readVecElem(PhysRegIdPtr phys_reg) const
Reads a vector element.
PhysRegFile(unsigned _numPhysicalIntRegs, unsigned _numPhysicalFloatRegs, unsigned _numPhysicalVecRegs, unsigned _numPhysicalVecPredRegs, unsigned _numPhysicalCCRegs, const BaseISA::RegClasses ®Classes, VecMode vmode)
Constructs a physical register file with the specified amount of integer and floating point registers...
void setVecPredReg(PhysRegIdPtr phys_reg, const TheISA::VecPredRegContainer &val)
Sets a predicate register to the given value.
unsigned numIntPhysRegs() const
RegVal readFloatReg(PhysRegIdPtr phys_reg) const
std::vector< RegVal > intRegFile
Integer register file.
RegVal readIntReg(PhysRegIdPtr phys_reg) const
Reads an integer register.
unsigned numFloatPhysRegs() const
@ FloatRegClass
Floating-point register.
FreeList class that simply holds the list of free integer and floating point registers.
std::vector< PhysRegId > ccRegIds
IdRange getRegIds(RegClass cls)
Get the PhysRegIds of the elems of all vector registers.
TheISA::VecPredRegContainer & getWritableVecPredReg(PhysRegIdPtr phys_reg)
RegIndex index() const
Index accessors.
void setVecElem(PhysRegIdPtr phys_reg, const TheISA::VecElem val)
Sets a vector register to the given value.
PhysRegIdPtr getTrueId(PhysRegIdPtr reg)
Get the true physical register id.
unsigned numPhysicalVecRegs
Number of physical vector registers.
unsigned numCCPhysRegs() const
std::vector< PhysRegId > floatRegIds
std::vector< PhysRegId > miscRegIds
Misc Reg Ids.
std::vector< PhysRegId > vecElemIds
Simple physical register file class.
unsigned numPredPhysRegs() const
IEW handles both single threaded and SMT IEW (issue/execute/writeback).
std::vector< PhysRegId > vecRegIds
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
std::pair< PhysIds::iterator, PhysIds::iterator > IdRange
VecMode vecMode
Mode in which vector registers are addressed.
std::vector< PhysRegId > intRegIds
std::vector< TheISA::VecPredRegContainer > vecPredRegFile
Predicate register file.
std::vector< TheISA::VecRegContainer > vectorRegFile
Vector register file.
unsigned numPhysicalIntRegs
Number of physical general purpose registers.
unsigned numVecPhysRegs() const
~PhysRegFile()
Destructor to free resources.
unsigned numPhysicalVecPredRegs
Number of physical predicate registers.
IdRange getRegElemIds(PhysRegIdPtr reg)
Get the PhysRegIds of the elems of a vector register.
@ VecRegClass
Vector Register.
RegIndex elemIndex() const
Elem accessor.
PhysRegIdPtr getMiscRegId(RegIndex reg_idx)
Gets a misc register PhysRegIdPtr.
std::vector< RegVal > floatRegFile
Floating point register file.
unsigned totalNumRegs
Total number of physical registers.
unsigned numPhysicalCCRegs
Number of physical CC registers.
const TheISA::VecPredRegContainer & readVecPredReg(PhysRegIdPtr phys_reg) const
Reads a predicate register.
void initFreeList(UnifiedFreeList *freeList)
Initialize the free list.
std::vector< PhysRegId > vecPredRegIds
enums::VecRegRenameMode VecMode
void setFloatReg(PhysRegIdPtr phys_reg, RegVal val)
void setIntReg(PhysRegIdPtr phys_reg, RegVal val)
Sets an integer register to the given value.
std::vector< RegVal > ccRegFile
Condition-code register file.
unsigned numPhysicalFloatRegs
Number of physical floating point registers.
bool is(RegClass reg_class) const
void setVecReg(PhysRegIdPtr phys_reg, const TheISA::VecRegContainer &val)
Sets a vector register to the given value.
@ IntRegClass
Integer register.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
RegVal readCCReg(PhysRegIdPtr phys_reg)
Reads a condition-code register.
RegIndex index() const
Visible RegId methods.
unsigned numVecElemPhysRegs() const
Register ID: describe an architectural register with its class and index.
unsigned totalNumPhysRegs() const
Generated on Wed Jul 28 2021 12:10:24 for gem5 by doxygen 1.8.17