33 #ifndef __CPU_O3_REGFILE_HH__
34 #define __CPU_O3_REGFILE_HH__
38 #include "arch/isa_traits.hh"
39 #include "arch/kernel_stats.hh"
40 #include "arch/types.hh"
42 #include "config/the_isa.hh"
44 #include "debug/IEW.hh"
105 unsigned _numPhysicalFloatRegs,
106 unsigned _numPhysicalCCRegs);
162 DPRINTF(IEW,
"RegFile: Access to int register %i, has data "
175 DPRINTF(IEW,
"RegFile: Access to float register %i, has "
190 DPRINTF(IEW,
"RegFile: Access to float register %i as int, "
191 "has data %#x\n",
int(reg_idx), (uint64_t)floatRegBits);
204 DPRINTF(IEW,
"RegFile: Access to cc register %i, has "
205 "data %#x\n",
int(reg_idx),
ccRegFile[reg_offset]);
215 DPRINTF(IEW,
"RegFile: Setting int register %i to %#x\n",
230 DPRINTF(IEW,
"RegFile: Setting float register %i to %#x\n",
231 int(reg_idx), (uint64_t)val);
233 #if THE_ISA == ALPHA_ISA
246 DPRINTF(IEW,
"RegFile: Setting float register %i to %#x\n",
247 int(reg_idx), (uint64_t)val);
260 DPRINTF(IEW,
"RegFile: Setting cc register %i to %#x\n",
261 int(reg_idx), (uint64_t)val);
268 #endif //__CPU_O3_REGFILE_HH__
void setCCReg(PhysRegIndex reg_idx, CCReg val)
Sets a condition-code register to the given value.
Simple physical register file class.
FloatReg readFloatReg(PhysRegIndex reg_idx) const
Reads a floating point register (double precision).
unsigned totalNumRegs
Total number of physical registers.
unsigned baseFloatRegIndex
The first floating-point physical register index.
std::vector< PhysFloatReg > floatRegFile
Floating point register file.
CCReg readCCReg(PhysRegIndex reg_idx)
Reads a condition-code register.
void initFreeList(UnifiedFreeList *freeList)
Initialize the free list.
TheISA::FloatReg FloatReg
PhysRegFile(unsigned _numPhysicalIntRegs, unsigned _numPhysicalFloatRegs, unsigned _numPhysicalCCRegs)
Constructs a physical register file with the specified amount of integer and floating point registers...
void setFloatRegBits(PhysRegIndex reg_idx, FloatRegBits val)
~PhysRegFile()
Destructor to free resources.
unsigned numFloatPhysRegs() const
unsigned baseCCRegIndex
The first condition-code physical register index.
unsigned numCCPhysRegs() const
bool isIntPhysReg(PhysRegIndex reg_idx) const
void setIntReg(PhysRegIndex reg_idx, uint64_t val)
Sets an integer register to the given value.
FreeList class that simply holds the list of free integer and floating point registers.
std::vector< CCReg > ccRegFile
Condition-code register file.
std::vector< IntReg > intRegFile
Integer register file.
void setFloatReg(PhysRegIndex reg_idx, FloatReg val)
Sets a double precision floating point register to the given value.
unsigned numIntPhysRegs() const
unsigned totalNumPhysRegs() const
bool isFloatPhysReg(PhysRegIndex reg_idx) const
FloatRegBits readFloatRegBits(PhysRegIndex reg_idx) const
TheISA::FloatRegBits FloatRegBits
bool isCCPhysReg(PhysRegIndex reg_idx)
Return true if the specified physical register index corresponds to a condition-code physical registe...
uint64_t readIntReg(PhysRegIndex reg_idx) const
Reads an integer register.