gem5
v22.0.0.1
|
Simple physical register file class. More...
#include <regfile.hh>
Public Types | |
using | IdRange = std::pair< PhysIds::iterator, PhysIds::iterator > |
Public Member Functions | |
PhysRegFile (unsigned _numPhysicalIntRegs, unsigned _numPhysicalFloatRegs, unsigned _numPhysicalVecRegs, unsigned _numPhysicalVecPredRegs, unsigned _numPhysicalCCRegs, const BaseISA::RegClasses &classes) | |
Constructs a physical register file with the specified amount of integer and floating point registers. More... | |
~PhysRegFile () | |
Destructor to free resources. More... | |
void | initFreeList (UnifiedFreeList *freeList) |
Initialize the free list. More... | |
unsigned | totalNumPhysRegs () const |
PhysRegIdPtr | getMiscRegId (RegIndex reg_idx) |
Gets a misc register PhysRegIdPtr. More... | |
RegVal | getReg (PhysRegIdPtr phys_reg) const |
void | getReg (PhysRegIdPtr phys_reg, void *val) const |
void * | getWritableReg (PhysRegIdPtr phys_reg) |
void | setReg (PhysRegIdPtr phys_reg, RegVal val) |
void | setReg (PhysRegIdPtr phys_reg, const void *val) |
IdRange | getRegIds (RegClassType cls) |
Get the PhysRegIds of the elems of all vector registers. More... | |
PhysRegIdPtr | getTrueId (PhysRegIdPtr reg) |
Get the true physical register id. More... | |
Private Types | |
using | PhysIds = std::vector< PhysRegId > |
Private Attributes | |
RegFile | intRegFile |
Integer register file. More... | |
std::vector< PhysRegId > | intRegIds |
RegFile | floatRegFile |
Floating point register file. More... | |
std::vector< PhysRegId > | floatRegIds |
RegFile | vectorRegFile |
Vector register file. More... | |
std::vector< PhysRegId > | vecRegIds |
RegFile | vectorElemRegFile |
Vector element register file. More... | |
std::vector< PhysRegId > | vecElemIds |
RegFile | vecPredRegFile |
Predicate register file. More... | |
std::vector< PhysRegId > | vecPredRegIds |
RegFile | ccRegFile |
Condition-code register file. More... | |
std::vector< PhysRegId > | ccRegIds |
std::vector< PhysRegId > | miscRegIds |
Misc Reg Ids. More... | |
unsigned | numPhysicalIntRegs |
Number of physical general purpose registers. More... | |
unsigned | numPhysicalFloatRegs |
Number of physical floating point registers. More... | |
unsigned | numPhysicalVecRegs |
Number of physical vector registers. More... | |
unsigned | numPhysicalVecElemRegs |
Number of physical vector element registers. More... | |
unsigned | numPhysicalVecPredRegs |
Number of physical predicate registers. More... | |
unsigned | numPhysicalCCRegs |
Number of physical CC registers. More... | |
unsigned | totalNumRegs |
Total number of physical registers. More... | |
Simple physical register file class.
Definition at line 67 of file regfile.hh.
using gem5::o3::PhysRegFile::IdRange = std::pair<PhysIds::iterator, PhysIds::iterator> |
Definition at line 74 of file regfile.hh.
|
private |
Definition at line 71 of file regfile.hh.
gem5::o3::PhysRegFile::PhysRegFile | ( | unsigned | _numPhysicalIntRegs, |
unsigned | _numPhysicalFloatRegs, | ||
unsigned | _numPhysicalVecRegs, | ||
unsigned | _numPhysicalVecPredRegs, | ||
unsigned | _numPhysicalCCRegs, | ||
const BaseISA::RegClasses & | classes | ||
) |
Constructs a physical register file with the specified amount of integer and floating point registers.
Definition at line 52 of file regfile.cc.
References gem5::CCRegClass, ccRegIds, gem5::FloatRegClass, floatRegIds, gem5::IntRegClass, intRegIds, gem5::MiscRegClass, miscRegIds, numPhysicalCCRegs, numPhysicalFloatRegs, numPhysicalIntRegs, numPhysicalVecElemRegs, numPhysicalVecPredRegs, numPhysicalVecRegs, gem5::VecElemClass, vecElemIds, gem5::VecPredRegClass, vecPredRegIds, gem5::VecRegClass, and vecRegIds.
|
inline |
Destructor to free resources.
Definition at line 151 of file regfile.hh.
|
inline |
Gets a misc register PhysRegIdPtr.
Definition at line 160 of file regfile.hh.
References miscRegIds.
Referenced by gem5::o3::UnifiedRenameMap::lookup().
|
inline |
Definition at line 165 of file regfile.hh.
References gem5::CCRegClass, ccRegFile, gem5::PhysRegId::classValue(), DPRINTF, gem5::FloatRegClass, floatRegFile, gem5::PhysRegId::index(), gem5::IntRegClass, intRegFile, panic, gem5::RegFile::reg(), gem5::X86ISA::type, gem5::X86ISA::val, gem5::VecElemClass, and vectorElemRegFile.
Referenced by gem5::o3::CPU::getArchReg(), getReg(), and gem5::o3::CPU::getReg().
|
inline |
Definition at line 198 of file regfile.hh.
References gem5::CCRegClass, gem5::PhysRegId::classValue(), DPRINTF, gem5::FloatRegClass, gem5::RegFile::get(), getReg(), gem5::PhysRegId::index(), gem5::IntRegClass, panic, gem5::RegFile::regClass, gem5::X86ISA::type, gem5::X86ISA::val, gem5::RegClass::valString(), gem5::VecElemClass, gem5::VecPredRegClass, vecPredRegFile, gem5::VecRegClass, and vectorRegFile.
PhysRegFile::IdRange gem5::o3::PhysRegFile::getRegIds | ( | RegClassType | cls | ) |
Get the PhysRegIds of the elems of all vector registers.
Auxiliary function to transition from Full vector mode to Elem mode and to initialise the rename map.
Definition at line 172 of file regfile.cc.
References gem5::CCRegClass, ccRegIds, gem5::FloatRegClass, floatRegIds, gem5::IntRegClass, intRegIds, gem5::InvalidRegClass, gem5::MiscRegClass, miscRegIds, panic, gem5::VecElemClass, vecElemIds, gem5::VecPredRegClass, vecPredRegIds, gem5::VecRegClass, and vecRegIds.
PhysRegIdPtr gem5::o3::PhysRegFile::getTrueId | ( | PhysRegIdPtr | reg | ) |
Get the true physical register id.
As many parts work with PhysRegIdPtr, we need to be able to produce the pointer out of just class and register idx.
Definition at line 199 of file regfile.cc.
References panic_if, gem5::X86ISA::reg, gem5::VecElemClass, vecElemIds, gem5::VecRegClass, and vecRegIds.
|
inline |
Definition at line 232 of file regfile.hh.
References gem5::PhysRegId::classValue(), gem5::PhysRegId::index(), panic, gem5::RegFile::ptr(), gem5::X86ISA::type, gem5::VecPredRegClass, vecPredRegFile, gem5::VecRegClass, and vectorRegFile.
Referenced by gem5::o3::CPU::getWritableArchReg(), and gem5::o3::CPU::getWritableReg().
void gem5::o3::PhysRegFile::initFreeList | ( | UnifiedFreeList * | freeList | ) |
Initialize the free list.
Definition at line 127 of file regfile.cc.
References gem5::o3::UnifiedFreeList::addRegs(), ccRegIds, floatRegIds, gem5::MipsISA::index, intRegIds, numPhysicalCCRegs, numPhysicalFloatRegs, numPhysicalIntRegs, numPhysicalVecElemRegs, numPhysicalVecPredRegs, numPhysicalVecRegs, vecElemIds, vecPredRegIds, and vecRegIds.
Referenced by gem5::o3::UnifiedFreeList::UnifiedFreeList().
|
inline |
Definition at line 282 of file regfile.hh.
References gem5::CCRegClass, gem5::PhysRegId::classValue(), DPRINTF, gem5::FloatRegClass, gem5::PhysRegId::index(), gem5::IntRegClass, panic, gem5::RegFile::regClass, gem5::RegFile::set(), setReg(), gem5::X86ISA::type, gem5::X86ISA::val, gem5::RegClass::valString(), gem5::VecElemClass, gem5::VecPredRegClass, vecPredRegFile, gem5::VecRegClass, and vectorRegFile.
|
inline |
Definition at line 248 of file regfile.hh.
References gem5::CCRegClass, ccRegFile, gem5::PhysRegId::classValue(), DPRINTF, gem5::FloatRegClass, floatRegFile, gem5::PhysRegId::index(), gem5::IntRegClass, intRegFile, gem5::InvalidRegClass, panic, gem5::RegFile::reg(), gem5::X86ISA::type, gem5::X86ISA::val, gem5::VecElemClass, and vectorElemRegFile.
Referenced by gem5::o3::CPU::setArchReg(), setReg(), and gem5::o3::CPU::setReg().
|
inline |
Definition at line 157 of file regfile.hh.
References totalNumRegs.
|
private |
Condition-code register file.
Definition at line 97 of file regfile.hh.
|
private |
Definition at line 98 of file regfile.hh.
Referenced by getRegIds(), initFreeList(), and PhysRegFile().
|
private |
Floating point register file.
Definition at line 81 of file regfile.hh.
|
private |
Definition at line 82 of file regfile.hh.
Referenced by getRegIds(), initFreeList(), and PhysRegFile().
|
private |
Integer register file.
Definition at line 77 of file regfile.hh.
|
private |
Definition at line 78 of file regfile.hh.
Referenced by getRegIds(), initFreeList(), and PhysRegFile().
|
private |
Misc Reg Ids.
Definition at line 101 of file regfile.hh.
Referenced by getMiscRegId(), getRegIds(), and PhysRegFile().
|
private |
Number of physical CC registers.
Definition at line 131 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Number of physical floating point registers.
Definition at line 111 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Number of physical general purpose registers.
Definition at line 106 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Number of physical vector element registers.
Definition at line 121 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Number of physical predicate registers.
Definition at line 126 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Number of physical vector registers.
Definition at line 116 of file regfile.hh.
Referenced by initFreeList(), and PhysRegFile().
|
private |
Total number of physical registers.
Definition at line 134 of file regfile.hh.
Referenced by totalNumPhysRegs().
|
private |
Definition at line 90 of file regfile.hh.
Referenced by getRegIds(), getTrueId(), initFreeList(), and PhysRegFile().
|
private |
Predicate register file.
Definition at line 93 of file regfile.hh.
Referenced by getReg(), getWritableReg(), and setReg().
|
private |
Definition at line 94 of file regfile.hh.
Referenced by getRegIds(), initFreeList(), and PhysRegFile().
|
private |
Definition at line 86 of file regfile.hh.
Referenced by getRegIds(), getTrueId(), initFreeList(), and PhysRegFile().
|
private |
Vector element register file.
Definition at line 89 of file regfile.hh.
|
private |
Vector register file.
Definition at line 85 of file regfile.hh.
Referenced by getReg(), getWritableReg(), and setReg().