LLVM API Documentation

Classes | Public Types | Public Member Functions | Friends
llvm::MCRegisterInfo Class Reference

#include <MCRegisterInfo.h>

Inheritance diagram for llvm::MCRegisterInfo:
Inheritance graph
[legend]

List of all members.

Classes

class  DiffListIterator
struct  DwarfLLVMRegPair

Public Types

typedef const MCRegisterClassregclass_iterator

Public Member Functions

void InitMCRegisterInfo (const MCRegisterDesc *D, unsigned NR, unsigned RA, unsigned PC, const MCRegisterClass *C, unsigned NC, const uint16_t(*RURoots)[2], unsigned NRU, const MCPhysReg *DL, const char *Strings, const uint16_t *SubIndices, unsigned NumIndices, const uint16_t *RET)
 Initialize MCRegisterInfo, called by TableGen auto-generated routines. *DO NOT USE*.
void mapLLVMRegsToDwarfRegs (const DwarfLLVMRegPair *Map, unsigned Size, bool isEH)
 Used to initialize LLVM register to Dwarf register number mapping. Called by TableGen auto-generated routines. DO NOT USE*.
void mapDwarfRegsToLLVMRegs (const DwarfLLVMRegPair *Map, unsigned Size, bool isEH)
 Used to initialize Dwarf register to LLVM register number mapping. Called by TableGen auto-generated routines. DO NOT USE*.
void mapLLVMRegToSEHReg (unsigned LLVMReg, int SEHReg)
unsigned getRARegister () const
 This method should return the register where the return address can be found.
unsigned getProgramCounter () const
 Return the register which is the program counter.
const MCRegisterDescoperator[] (unsigned RegNo) const
const MCRegisterDescget (unsigned RegNo) const
 Provide a get method, equivalent to [], but more useful with a pointer to this object.
unsigned getSubReg (unsigned Reg, unsigned Idx) const
 Returns the physical register number of sub-register "Index" for physical register RegNo. Return zero if the sub-register does not exist.
unsigned getMatchingSuperReg (unsigned Reg, unsigned SubIdx, const MCRegisterClass *RC) const
 Return a super-register of the specified register Reg so its sub-register of index SubIdx is Reg.
unsigned getSubRegIndex (unsigned RegNo, unsigned SubRegNo) const
 For a given register pair, return the sub-register index if the second register is a sub-register of the first. Return zero otherwise.
const char * getName (unsigned RegNo) const
 Return the human-readable symbolic target-specific name for the specified physical register.
unsigned getNumRegs () const
 Return the number of registers this target has (useful for sizing arrays holding per register information)
unsigned getNumSubRegIndices () const
 Return the number of sub-register indices understood by the target. Index 0 is reserved for the no-op sub-register, while 1 to getNumSubRegIndices() - 1 represent real sub-registers.
unsigned getNumRegUnits () const
 Return the number of (native) register units in the target. Register units are numbered from 0 to getNumRegUnits() - 1. They can be accessed through MCRegUnitIterator defined below.
int getDwarfRegNum (unsigned RegNum, bool isEH) const
 Map a target register to an equivalent dwarf register number. Returns -1 if there is no equivalent value. The second parameter allows targets to use different numberings for EH info and debugging info.
int getLLVMRegNum (unsigned RegNum, bool isEH) const
 Map a dwarf register back to a target register.
int getSEHRegNum (unsigned RegNum) const
 Map a target register to an equivalent SEH register number. Returns LLVM register number if there is no equivalent value.
regclass_iterator regclass_begin () const
regclass_iterator regclass_end () const
unsigned getNumRegClasses () const
const MCRegisterClassgetRegClass (unsigned i) const
 Returns the register class associated with the enumeration value. See class MCOperandInfo.
uint16_t getEncodingValue (unsigned RegNo) const
 Returns the encoding for RegNo.
bool isSubRegister (unsigned RegA, unsigned RegB) const
 Returns true if RegB is a sub-register of RegA.
bool isSuperRegister (unsigned RegA, unsigned RegB) const
 Returns true if RegB is a super-register of RegA.
bool isSubRegisterEq (unsigned RegA, unsigned RegB) const
 Returns true if RegB is a sub-register of RegA or if RegB == RegA.
bool isSuperRegisterEq (unsigned RegA, unsigned RegB) const
 Returns true if RegB is a super-register of RegA or if RegB == RegA.

Friends

class MCSubRegIterator
class MCSuperRegIterator
class MCRegAliasIterator
class MCRegUnitIterator
class MCRegUnitRootIterator

Detailed Description

MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc objects that represent all of the machine registers that the target has. As such, we simply have to track a pointer to this array so that we can turn register number into a register descriptor.

Note this class is designed to be a base class of TargetRegisterInfo, which is the interface used by codegen. However, specific targets *should never* specialize this class. MCRegisterInfo should only contain getters to access TableGen generated physical register data. It must not be extended with virtual methods.

Definition at line 139 of file MCRegisterInfo.h.


Member Typedef Documentation

Reimplemented in llvm::TargetRegisterInfo.

Definition at line 141 of file MCRegisterInfo.h.


Member Function Documentation

const MCRegisterDesc& llvm::MCRegisterInfo::get ( unsigned  RegNo) const [inline]

Provide a get method, equivalent to [], but more useful with a pointer to this object.

Definition at line 316 of file MCRegisterInfo.h.

References operator[]().

Referenced by llvm::MCRegAliasIterator::MCRegAliasIterator(), llvm::MCRegUnitIterator::MCRegUnitIterator(), llvm::MCSubRegIterator::MCSubRegIterator(), and llvm::MCSuperRegIterator::MCSuperRegIterator().

int MCRegisterInfo::getDwarfRegNum ( unsigned  RegNum,
bool  isEH 
) const
uint16_t llvm::MCRegisterInfo::getEncodingValue ( unsigned  RegNo) const [inline]

Returns the encoding for RegNo.

Definition at line 389 of file MCRegisterInfo.h.

Referenced by HandleVRSaveUpdate(), llvm::X86_MC::InitLLVM2SEHRegisterMapping(), and llvm::MipsAsmPrinter::printSavedRegsBitmask().

int MCRegisterInfo::getLLVMRegNum ( unsigned  RegNum,
bool  isEH 
) const

Map a dwarf register back to a target register.

Definition at line 60 of file MCRegisterInfo.cpp.

References llvm::MCRegisterInfo::DwarfLLVMRegPair::FromReg, I, and llvm::MCRegisterInfo::DwarfLLVMRegPair::ToReg.

unsigned MCRegisterInfo::getMatchingSuperReg ( unsigned  Reg,
unsigned  SubIdx,
const MCRegisterClass RC 
) const

Return a super-register of the specified register Reg so its sub-register of index SubIdx is Reg.

Definition at line 18 of file MCRegisterInfo.cpp.

References llvm::MCRegisterClass::contains(), getSubReg(), and llvm::MCRegisterInfo::DiffListIterator::isValid().

Referenced by llvm::ARMInstPrinter::printInst().

const char* llvm::MCRegisterInfo::getName ( unsigned  RegNo) const [inline]
unsigned llvm::MCRegisterInfo::getNumRegClasses ( ) const [inline]

Reimplemented in llvm::TargetRegisterInfo.

Definition at line 377 of file MCRegisterInfo.h.

References regclass_begin(), and regclass_end().

Referenced by getRegClass().

unsigned llvm::MCRegisterInfo::getNumRegs ( ) const [inline]
unsigned llvm::MCRegisterInfo::getNumRegUnits ( ) const [inline]

Return the number of (native) register units in the target. Register units are numbered from 0 to getNumRegUnits() - 1. They can be accessed through MCRegUnitIterator defined below.

Definition at line 357 of file MCRegisterInfo.h.

Referenced by llvm::MachineRegisterInfo::MachineRegisterInfo(), and llvm::PrintRegUnit::print().

unsigned llvm::MCRegisterInfo::getNumSubRegIndices ( ) const [inline]

Return the number of sub-register indices understood by the target. Index 0 is reserved for the no-op sub-register, while 1 to getNumSubRegIndices() - 1 represent real sub-registers.

Definition at line 350 of file MCRegisterInfo.h.

Referenced by getSubReg(), llvm::TargetRegisterInfo::getSubRegIndexLaneMask(), and llvm::TargetRegisterInfo::getSubRegIndexName().

unsigned llvm::MCRegisterInfo::getProgramCounter ( ) const [inline]

Return the register which is the program counter.

Definition at line 304 of file MCRegisterInfo.h.

Referenced by llvm::MCInstrDesc::mayAffectControlFlow().

unsigned llvm::MCRegisterInfo::getRARegister ( ) const [inline]

This method should return the register where the return address can be found.

Definition at line 299 of file MCRegisterInfo.h.

Referenced by llvm::MipsAsmPrinter::emitFrameDirective(), llvm::HexagonTargetLowering::LowerRETURNADDR(), and llvm::PPCFrameLowering::processFunctionBeforeCalleeSavedScan().

const MCRegisterClass& llvm::MCRegisterInfo::getRegClass ( unsigned  i) const [inline]

Returns the register class associated with the enumeration value. See class MCOperandInfo.

Reimplemented in llvm::TargetRegisterInfo.

Definition at line 383 of file MCRegisterInfo.h.

References getNumRegClasses().

Referenced by llvm::ARMInstPrinter::printInst().

int MCRegisterInfo::getSEHRegNum ( unsigned  RegNum) const

Map a target register to an equivalent SEH register number. Returns LLVM register number if there is no equivalent value.

Definition at line 70 of file MCRegisterInfo.cpp.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT >::find(), and I.

unsigned MCRegisterInfo::getSubReg ( unsigned  Reg,
unsigned  Idx 
) const
unsigned MCRegisterInfo::getSubRegIndex ( unsigned  RegNo,
unsigned  SubRegNo 
) const

For a given register pair, return the sub-register index if the second register is a sub-register of the first. Return zero otherwise.

Definition at line 38 of file MCRegisterInfo.cpp.

References getNumRegs(), and llvm::MCRegisterInfo::DiffListIterator::isValid().

Referenced by isNopCopy().

void llvm::MCRegisterInfo::InitMCRegisterInfo ( const MCRegisterDesc D,
unsigned  NR,
unsigned  RA,
unsigned  PC,
const MCRegisterClass C,
unsigned  NC,
const uint16_t(*)  RURoots[2],
unsigned  NRU,
const MCPhysReg DL,
const char *  Strings,
const uint16_t *  SubIndices,
unsigned  NumIndices,
const uint16_t *  RET 
) [inline]

Initialize MCRegisterInfo, called by TableGen auto-generated routines. *DO NOT USE*.

Definition at line 235 of file MCRegisterInfo.h.

References llvm::CallingConv::C, and NC.

bool llvm::MCRegisterInfo::isSubRegister ( unsigned  RegA,
unsigned  RegB 
) const [inline]
bool llvm::MCRegisterInfo::isSubRegisterEq ( unsigned  RegA,
unsigned  RegB 
) const [inline]

Returns true if RegB is a sub-register of RegA or if RegB == RegA.

Definition at line 404 of file MCRegisterInfo.h.

References isSuperRegisterEq().

Referenced by llvm::MCInstrDesc::hasDefOfPhysReg().

bool llvm::MCRegisterInfo::isSuperRegister ( unsigned  RegA,
unsigned  RegB 
) const [inline]
bool llvm::MCRegisterInfo::isSuperRegisterEq ( unsigned  RegA,
unsigned  RegB 
) const [inline]

Returns true if RegB is a super-register of RegA or if RegB == RegA.

Definition at line 410 of file MCRegisterInfo.h.

References isSuperRegister().

Referenced by isSubRegisterEq().

void llvm::MCRegisterInfo::mapDwarfRegsToLLVMRegs ( const DwarfLLVMRegPair Map,
unsigned  Size,
bool  isEH 
) [inline]

Used to initialize Dwarf register to LLVM register number mapping. Called by TableGen auto-generated routines. DO NOT USE*.

Definition at line 277 of file MCRegisterInfo.h.

void llvm::MCRegisterInfo::mapLLVMRegsToDwarfRegs ( const DwarfLLVMRegPair Map,
unsigned  Size,
bool  isEH 
) [inline]

Used to initialize LLVM register to Dwarf register number mapping. Called by TableGen auto-generated routines. DO NOT USE*.

Definition at line 263 of file MCRegisterInfo.h.

void llvm::MCRegisterInfo::mapLLVMRegToSEHReg ( unsigned  LLVMReg,
int  SEHReg 
) [inline]

mapLLVMRegToSEHReg - Used to initialize LLVM register to SEH register number mapping. By default the SEH register number is just the same as the LLVM register number. FIXME: TableGen these numbers. Currently this requires target specific initialization code.

Definition at line 293 of file MCRegisterInfo.h.

Referenced by llvm::X86_MC::InitLLVM2SEHRegisterMapping().

const MCRegisterDesc& llvm::MCRegisterInfo::operator[] ( unsigned  RegNo) const [inline]

Definition at line 308 of file MCRegisterInfo.h.

Referenced by get().

regclass_iterator llvm::MCRegisterInfo::regclass_begin ( ) const [inline]

Reimplemented in llvm::TargetRegisterInfo.

Definition at line 374 of file MCRegisterInfo.h.

Referenced by getNumRegClasses().

regclass_iterator llvm::MCRegisterInfo::regclass_end ( ) const [inline]

Reimplemented in llvm::TargetRegisterInfo.

Definition at line 375 of file MCRegisterInfo.h.

Referenced by getNumRegClasses().


Friends And Related Function Documentation

friend class MCRegAliasIterator [friend]

Definition at line 229 of file MCRegisterInfo.h.

friend class MCRegUnitIterator [friend]

Definition at line 230 of file MCRegisterInfo.h.

friend class MCRegUnitRootIterator [friend]

Definition at line 231 of file MCRegisterInfo.h.

friend class MCSubRegIterator [friend]

Definition at line 227 of file MCRegisterInfo.h.

friend class MCSuperRegIterator [friend]

Definition at line 228 of file MCRegisterInfo.h.


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