gem5
[DEVELOP-FOR-23.0]
|
Register ID: describe an architectural register with its class and index. More...
#include <reg_class.hh>
Public Member Functions | |
constexpr | RegId () |
constexpr | RegId (const RegClass ®_class, RegIndex reg_idx) |
constexpr | operator RegIndex () const |
constexpr bool | operator== (const RegId &that) const |
constexpr bool | operator!= (const RegId &that) const |
constexpr bool | operator< (const RegId &that) const |
Order operator. More... | |
constexpr bool | isRenameable () const |
Return true if this register can be renamed. More... | |
constexpr bool | is (RegClassType reg_class) const |
Protected Attributes | |
const RegClass * | _regClass = nullptr |
RegIndex | regIdx |
int | numPinnedWrites |
Friends | |
struct | std::hash< RegId > |
class | RegClassIterator |
std::ostream & | operator<< (std::ostream &os, const RegId &rid) |
constexpr RegIndex | index () const |
Index accessors. More... | |
constexpr const RegClass & | regClass () const |
Class accessor. More... | |
constexpr RegClassType | classValue () const |
constexpr const char * | className () const |
Return a const char* with the register class name. More... | |
constexpr bool | isFlat () const |
RegId | flatten (const BaseISA &isa) const |
int | getNumPinnedWrites () const |
void | setNumPinnedWrites (int num_writes) |
Register ID: describe an architectural register with its class and index.
This structure is used instead of just the register index to disambiguate between different classes of registers. For example, a integer register with index 3 is represented by Regid(IntRegClass, 3).
Definition at line 92 of file reg_class.hh.
|
inlineconstexpr |
Definition at line 266 of file reg_class.hh.
Definition at line 105 of file reg_class.hh.
|
inlineconstexpr |
Return a const char* with the register class name.
Definition at line 275 of file reg_class.hh.
References _regClass, and gem5::RegClass::name().
Referenced by gem5::o3::Rename::renameDestRegs(), gem5::o3::Rename::renameSrcRegs(), and gem5::o3::ElasticTrace::updateRegDep().
|
inlineconstexpr |
Definition at line 274 of file reg_class.hh.
References _regClass, and gem5::RegClass::type().
Referenced by gem5::Checker< gem5::RefCountingPtr >::copyResult(), isRenameable(), gem5::o3::UnifiedRenameMap::lookup(), std::hash< gem5::RegId >::operator()(), operator<(), operator==(), gem5::o3::UnifiedRenameMap::rename(), gem5::o3::Rename::renameSrcRegs(), and gem5::o3::UnifiedRenameMap::setEntry().
Definition at line 279 of file reg_class.hh.
References _regClass, and gem5::RegClass::flatten().
Referenced by gem5::minor::Scoreboard::canInstIssue(), gem5::minor::Scoreboard::execSeqNumToWaitFor(), gem5::SimpleThread::getReg(), gem5::SimpleThread::getWritableReg(), gem5::minor::Scoreboard::markupInstDests(), gem5::o3::Rename::renameDestRegs(), gem5::o3::Rename::renameSrcRegs(), gem5::SimpleThread::setReg(), and gem5::CheckerCPU::setRegOperand().
|
inline |
Definition at line 161 of file reg_class.hh.
References numPinnedWrites.
Referenced by gem5::o3::SimpleRenameMap::rename(), and gem5::o3::Rename::renameDestRegs().
|
inlineconstexpr |
Index accessors.
Definition at line 150 of file reg_class.hh.
References regIdx.
Referenced by gem5::Checker< gem5::RefCountingPtr >::copyResult(), gem5::X86ISA::FloatRegClassOps::flatten(), gem5::ArmISA::IntRegClassOps::flatten(), gem5::o3::SimpleRenameMap::lookup(), gem5::o3::UnifiedRenameMap::lookup(), operator RegIndex(), std::hash< gem5::RegId >::operator()(), operator<(), operator==(), gem5::Iris::ThreadContext::readVecPredReg(), gem5::Iris::ThreadContext::readVecReg(), gem5::o3::SimpleRenameMap::rename(), gem5::o3::Rename::renameDestRegs(), gem5::o3::Rename::renameSrcRegs(), gem5::o3::SimpleRenameMap::setEntry(), and gem5::CheckerCPU::setMiscRegOperand().
|
inlineconstexpr |
Definition at line 269 of file reg_class.hh.
References _regClass, and gem5::RegClass::type().
Referenced by gem5::o3::SimpleRenameMap::rename(), and gem5::o3::ElasticTrace::updateRegDep().
|
inlineconstexpr |
Definition at line 277 of file reg_class.hh.
References _regClass, and gem5::RegClass::isFlat().
|
inlineconstexpr |
Return true if this register can be renamed.
Definition at line 140 of file reg_class.hh.
References classValue(), gem5::InvalidRegClass, and gem5::MiscRegClass.
Referenced by gem5::o3::DynInst::forwardOldRegs(), gem5::PhysRegId::isFixedMapping(), gem5::o3::UnifiedRenameMap::rename(), and gem5::o3::UnifiedRenameMap::setEntry().
|
inlineconstexpr |
Definition at line 109 of file reg_class.hh.
References index().
|
inlineconstexpr |
Definition at line 121 of file reg_class.hh.
Referenced by gem5::PhysRegId::operator!=().
|
inlineconstexpr |
Order operator.
The order is required to implement maps with key type RegId
Definition at line 130 of file reg_class.hh.
References classValue(), index(), and regIdx.
Referenced by gem5::PhysRegId::operator<().
|
inlineconstexpr |
Definition at line 115 of file reg_class.hh.
References classValue(), index(), and regIdx.
Referenced by gem5::PhysRegId::operator==().
|
inlineconstexpr |
Class accessor.
Definition at line 153 of file reg_class.hh.
References _regClass.
Referenced by gem5::o3::DynInst::forwardOldRegs(), gem5::operator<<(), and gem5::CheckerCPU::setRegOperand().
|
inline |
Definition at line 162 of file reg_class.hh.
References numPinnedWrites.
Referenced by gem5::o3::Rename::renameDestRegs().
|
friend |
Definition at line 285 of file reg_class.hh.
|
friend |
Definition at line 100 of file reg_class.hh.
|
friend |
Definition at line 99 of file reg_class.hh.
|
protected |
Definition at line 95 of file reg_class.hh.
Referenced by className(), classValue(), flatten(), is(), isFlat(), and regClass().
|
protected |
Definition at line 97 of file reg_class.hh.
Referenced by gem5::PhysRegId::decrNumPinnedWrites(), getNumPinnedWrites(), gem5::PhysRegId::getNumPinnedWrites(), gem5::PhysRegId::incrNumPinnedWrites(), setNumPinnedWrites(), and gem5::PhysRegId::setNumPinnedWrites().
|
protected |
Definition at line 96 of file reg_class.hh.
Referenced by index(), operator<(), and operator==().