OpenASIP 2.2
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
TDGenerator::RegisterClass Class Reference

#include <TDGen.hh>

Collaboration diagram for TDGenerator::RegisterClass:
Collaboration graph

Public Member Functions

 RegisterClass (const ValueType &vt, const TCEString &name)
 
 RegisterClass (const RegisterClass &other)
 
RegisterClassoperator= (const RegisterClass &other)
 
TCEString name () const
 
ValueType valueType () const
 
int alignment () const
 
std::vector< RegisterInforegisters () const
 
RegisterInfo registerInfo (int index) const
 
size_t numberOfRegisters () const
 
void addRegisters (const std::vector< RegisterInfo > &registers)
 

Private Attributes

TCEString name_
 RegisterClass name.
 
ValueType vt_
 Value type that is supported by this RegisterClass, e.g. v4i32.
 
int alignment_
 RegisterClass alignment in bits, at least 8.
 
std::vector< RegisterInforegisters_
 Register file registers that this RegisterClass uses.
 

Detailed Description

Represents TableGen RegisterClass class.

Definition at line 736 of file TDGen.hh.

Constructor & Destructor Documentation

◆ RegisterClass() [1/2]

RegisterClass::RegisterClass ( const ValueType vt,
const TCEString name 
)

Constructor.

Parameters
vtValueType that is supported by the RegisterClass.
nameName of the RegisterClass.

Definition at line 9013 of file TDGen.cc.

9014 : name_(name), vt_(vt), registers_(std::vector<RegisterInfo>()) {
9015 if (vt.width() < 8) {
9016 alignment_ = 8;
9017 } else {
9018 alignment_ = vt.width();
9019 }
9020}
int alignment_
RegisterClass alignment in bits, at least 8.
Definition TDGen.hh:758
std::vector< RegisterInfo > registers_
Register file registers that this RegisterClass uses.
Definition TDGen.hh:760
TCEString name() const
Definition TDGen.cc:9054
ValueType vt_
Value type that is supported by this RegisterClass, e.g. v4i32.
Definition TDGen.hh:756
TCEString name_
RegisterClass name.
Definition TDGen.hh:754
int width() const
Definition TDGen.cc:8776

References alignment_, and TDGenerator::ValueType::width().

Here is the call graph for this function:

◆ RegisterClass() [2/2]

RegisterClass::RegisterClass ( const RegisterClass other)

Copy constructor.

Parameters
otherRegisterClass to be copied.

Definition at line 9027 of file TDGen.cc.

9028 : name_(other.name_),
9029 vt_(other.vt_),
9030 alignment_(other.alignment_),
9031 registers_(other.registers_) {}

Member Function Documentation

◆ addRegisters()

void RegisterClass::addRegisters ( const std::vector< RegisterInfo > &  registers)

Sets the registers used by this RegisterClass.

Parameters
registersThe new registers used by this RegisterClass.

Definition at line 9107 of file TDGen.cc.

9107 {
9108 registers_.insert(registers_.end(), registers.begin(), registers.end());
9109}
std::vector< RegisterInfo > registers() const

References registers(), and registers_.

Referenced by TDGen::associateRegistersWithVectorRegisterClasses().

Here is the call graph for this function:

◆ alignment()

int RegisterClass::alignment ( ) const

Returns the RegisterClass's alignment in bits.

Returns
Alignment of RegisterClass in bits.

Definition at line 9074 of file TDGen.cc.

9074 {
9075 return alignment_;
9076}

References alignment_.

Referenced by TDGen::writeCallingConv(), and TDGen::writeVectorRegisterClasses().

◆ name()

TCEString RegisterClass::name ( ) const

◆ numberOfRegisters()

size_t RegisterClass::numberOfRegisters ( ) const

Returns how many registers is used by this RegisterClass.

Returns
A number of registers used by this RegisterClass.

Definition at line 9097 of file TDGen.cc.

9097 {
9098 return registers_.size();
9099}

References registers_.

Referenced by TDGen::createVectorRVDRegNums(), TDGen::genTCERegisterInfo_setReservedVectorRegs(), TDGen::writeCallingConv(), and TDGen::writeVectorRegisterClasses().

◆ operator=()

RegisterClass & RegisterClass::operator= ( const RegisterClass other)

Value assignment.

Parameters
otherRegisterClass to be assigned.
Returns
Reference with the assigned values.

Definition at line 9040 of file TDGen.cc.

9040 {
9041 this->name_ = other.name_;
9042 this->vt_ = other.vt_;
9043 this->alignment_ = other.alignment_;
9044 this->registers_ = other.registers_;
9045 return *this;
9046}

References alignment_, name_, registers_, and vt_.

◆ registerInfo()

RegisterInfo RegisterClass::registerInfo ( int  index) const

Returns RegisterInfo pointed by the index.

Returns
RegisterInfo pointed by the index.

Definition at line 9084 of file TDGen.cc.

9084 {
9085 assert(
9086 index >= static_cast<int>(0) &&
9087 index < static_cast<int>(registers_.size()));
9088 return registers_[index];
9089}
#define assert(condition)

References assert, and registers_.

Referenced by TDGen::createVectorRVDRegNums(), TDGen::genTCERegisterInfo_setReservedVectorRegs(), TDGen::writeCallingConv(), and TDGen::writeVectorRegisterClasses().

◆ registers()

std::vector< RegisterInfo > TDGenerator::RegisterClass::registers ( ) const

Referenced by addRegisters().

◆ valueType()

ValueType RegisterClass::valueType ( ) const

Member Data Documentation

◆ alignment_

int TDGenerator::RegisterClass::alignment_
private

RegisterClass alignment in bits, at least 8.

Definition at line 758 of file TDGen.hh.

Referenced by alignment(), operator=(), and RegisterClass().

◆ name_

TCEString TDGenerator::RegisterClass::name_
private

RegisterClass name.

Definition at line 754 of file TDGen.hh.

Referenced by name(), and operator=().

◆ registers_

std::vector<RegisterInfo> TDGenerator::RegisterClass::registers_
private

Register file registers that this RegisterClass uses.

Definition at line 760 of file TDGen.hh.

Referenced by addRegisters(), numberOfRegisters(), operator=(), and registerInfo().

◆ vt_

ValueType TDGenerator::RegisterClass::vt_
private

Value type that is supported by this RegisterClass, e.g. v4i32.

Definition at line 756 of file TDGen.hh.

Referenced by operator=(), and valueType().


The documentation for this class was generated from the following files: