LLVM API Documentation

llvm::ARMRegisterInfo Struct Reference

#include <ARMRegisterInfo.h>

Inheritance diagram for llvm::ARMRegisterInfo:
[legend]
Collaboration diagram for llvm::ARMRegisterInfo:
[legend]

List of all members.

Public Member Functions

 ARMRegisterInfo (const TargetInstrInfo &tii, const ARMSubtarget &STI)
void emitLoadConstPool (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, unsigned DestReg, int Val, unsigned Pred, unsigned PredReg, const TargetInstrInfo *TII, bool isThumb) const
const unsigned * getCalleeSavedRegs (const MachineFunction *MF=0) const
 Code Generation virtual methods...
const TargetRegisterClass *const * getCalleeSavedRegClasses (const MachineFunction *MF=0) const
BitVector getReservedRegs (const MachineFunction &MF) const
bool isReservedReg (const MachineFunction &MF, unsigned Reg) const
bool requiresRegisterScavenging (const MachineFunction &MF) const
bool hasFP (const MachineFunction &MF) const
bool hasReservedCallFrame (MachineFunction &MF) const
void eliminateCallFramePseudoInstr (MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
void eliminateFrameIndex (MachineBasicBlock::iterator II, int SPAdj, RegScavenger *RS=NULL) const
void processFunctionBeforeCalleeSavedScan (MachineFunction &MF, RegScavenger *RS=NULL) const
void emitPrologue (MachineFunction &MF) const
void emitEpilogue (MachineFunction &MF, MachineBasicBlock &MBB) const
unsigned getRARegister () const
unsigned getFrameRegister (MachineFunction &MF) const
unsigned getEHExceptionRegister () const
unsigned getEHHandlerRegister () const
int getDwarfRegNum (unsigned RegNum, bool isEH) const
bool isLowRegister (unsigned Reg) const

Static Public Member Functions

static unsigned getRegisterNumbering (unsigned RegEnum)
static unsigned getRegisterNumbering (unsigned RegEnum, bool &isSPVFP)

Public Attributes

const TargetInstrInfo & TII
const ARMSubtarget & STI


Detailed Description

Definition at line 25 of file ARMRegisterInfo.h.


Constructor & Destructor Documentation

ARMRegisterInfo::ARMRegisterInfo ( const TargetInstrInfo &  tii,
const ARMSubtarget &  STI 
)

Definition at line 158 of file ARMRegisterInfo.cpp.


Member Function Documentation

void ARMRegisterInfo::emitLoadConstPool ( MachineBasicBlock &  MBB,
MachineBasicBlock::iterator &  MBBI,
unsigned  DestReg,
int  Val,
unsigned  Pred,
unsigned  PredReg,
const TargetInstrInfo *  TII,
bool  isThumb 
) const

unsigned ARMRegisterInfo::getRegisterNumbering ( unsigned  RegEnum  )  [static]

getRegisterNumbering - Given the enum value for some register, e.g. ARM::LR, return the number that it corresponds to (e.g. 14).

Definition at line 43 of file ARMRegisterInfo.cpp.

References llvm::X86II::D8, and llvm::X86II::D9.

Referenced by llvm::ARMJITInfo::relocate().

unsigned ARMRegisterInfo::getRegisterNumbering ( unsigned  RegEnum,
bool &  isSPVFP 
) [static]

Same as previous getRegisterNumbering except it returns true in isSPVFP if the register is a single precision VFP register.

Definition at line 84 of file ARMRegisterInfo.cpp.

References llvm::X86II::D8, and llvm::X86II::D9.

const unsigned * ARMRegisterInfo::getCalleeSavedRegs ( const MachineFunction *  MF = 0  )  const

Code Generation virtual methods...

Definition at line 208 of file ARMRegisterInfo.cpp.

References llvm::X86II::D8, llvm::X86II::D9, llvm::ARMSubtarget::isTargetDarwin(), and STI.

Referenced by emitEpilogue(), and processFunctionBeforeCalleeSavedScan().

const TargetRegisterClass *const * ARMRegisterInfo::getCalleeSavedRegClasses ( const MachineFunction *  MF = 0  )  const

Definition at line 230 of file ARMRegisterInfo.cpp.

Referenced by processFunctionBeforeCalleeSavedScan().

BitVector ARMRegisterInfo::getReservedRegs ( const MachineFunction &  MF  )  const

bool ARMRegisterInfo::isReservedReg ( const MachineFunction &  MF,
unsigned  Reg 
) const

bool ARMRegisterInfo::requiresRegisterScavenging ( const MachineFunction &  MF  )  const

bool ARMRegisterInfo::hasFP ( const MachineFunction &  MF  )  const

hasFP - Return true if the specified function should have a dedicated frame pointer register. This is true if the function has variable sized allocas or if frame pointer elimination is disabled.

Definition at line 285 of file ARMRegisterInfo.cpp.

References llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::hasVarSizedObjects(), MFI, and llvm::NoFramePointerElim.

Referenced by eliminateFrameIndex(), emitEpilogue(), emitPrologue(), getFrameRegister(), getReservedRegs(), isReservedReg(), and processFunctionBeforeCalleeSavedScan().

bool ARMRegisterInfo::hasReservedCallFrame ( MachineFunction &  MF  )  const

void ARMRegisterInfo::eliminateCallFramePseudoInstr ( MachineFunction &  MF,
MachineBasicBlock &  MBB,
MachineBasicBlock::iterator  I 
) const

void ARMRegisterInfo::eliminateFrameIndex ( MachineBasicBlock::iterator  II,
int  SPAdj,
RegScavenger *  RS = NULL 
) const

Definition at line 608 of file ARMRegisterInfo.cpp.

References llvm::MachineInstr::addOperand(), AddrMode, llvm::ARMII::AddrMode2, llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode5, llvm::ARMII::AddrModeMask, llvm::ARMII::AddrModeTs, AFI, llvm::ARMCC::AL, llvm::BuildMI(), calcNumMI(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::MachineOperand::CreateReg(), emitARMRegPlusImmediate(), emitLoadConstPool(), emitThumbConstant(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::MachineBasicBlock::erase(), llvm::MachineInstr::findFirstPredOperandIdx(), findScratchRegister(), FrameIndex, llvm::TargetInstrInfo::get(), llvm::ARM_AM::getAM2Offset(), llvm::ARM_AM::getAM2Op(), llvm::ARM_AM::getAM3Offset(), llvm::ARM_AM::getAM3Op(), llvm::ARM_AM::getAM5Offset(), llvm::ARM_AM::getAM5Op(), llvm::MachineInstr::getDesc(), llvm::ARMFunctionInfo::getDPRCalleeSavedAreaOffset(), llvm::MachineFunction::getFrameInfo(), llvm::ARMFunctionInfo::getFramePtrSpillOffset(), getFrameRegister(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea1Offset(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea2Offset(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineFunction::getInfo(), llvm::MachineInstr::getNumOperands(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getSOImmValRotate(), llvm::MachineFrameInfo::getStackSize(), hasFP(), llvm::ARMFunctionInfo::isDPRCalleeSavedAreaFrame(), llvm::MachineOperand::isFI(), llvm::ARMFunctionInfo::isGPRCalleeSavedArea1Frame(), llvm::ARMFunctionInfo::isGPRCalleeSavedArea2Frame(), llvm::ARMFunctionInfo::isR3LiveIn(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), llvm::TargetInstrDesc::mayLoad(), llvm::TargetInstrDesc::mayStore(), MBB, MF, MI, llvm::next(), Offset, Pred, llvm::MachineInstr::RemoveOperand(), llvm::ARM_AM::rotr32(), Scale, llvm::RegScavenger::scavengeRegister(), llvm::MachineInstr::setDesc(), llvm::ARM_AM::sub, TII, and llvm::TargetInstrDesc::TSFlags.

void ARMRegisterInfo::processFunctionBeforeCalleeSavedScan ( MachineFunction &  MF,
RegScavenger *  RS = NULL 
) const

Definition at line 942 of file ARMRegisterInfo.cpp.

References AddrMode, llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode5, llvm::ARMII::AddrModeMask, AFI, llvm::SmallVectorImpl< T >::back(), BB, llvm::MachineBasicBlock::begin(), llvm::MachineFunction::begin(), llvm::SmallVectorImpl< T >::begin(), llvm::MachineFrameInfo::CreateStackObject(), E, llvm::SmallVectorImpl< T >::empty(), llvm::MachineBasicBlock::end(), llvm::MachineFunction::end(), llvm::SmallVectorImpl< T >::end(), llvm::SmallVectorImpl< T >::erase(), estimateStackSize(), llvm::SmallVectorImpl< T >::front(), llvm::TargetInstrInfo::get(), llvm::TargetRegisterClass::getAlignment(), getCalleeSavedRegClasses(), getCalleeSavedRegs(), llvm::MachineFunction::getFrameInfo(), llvm::TargetMachine::getFrameInfo(), llvm::TargetInstrInfo::GetFunctionSizeInBytes(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), llvm::TargetRegisterClass::getSize(), llvm::TargetFrameInfo::getStackAlignment(), llvm::MachineFunction::getTarget(), hasFP(), isLowRegister(), llvm::MachineRegisterInfo::isPhysRegUsed(), isReservedReg(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMFunctionInfo::isThumbFunction(), MFI, llvm::SmallVectorImpl< T >::pop_back(), llvm::SmallVectorImpl< T >::push_back(), Reg, llvm::ARMFunctionInfo::setCSRegisterIsSpilled(), llvm::ARMFunctionInfo::setHasStackFrame(), llvm::ARMFunctionInfo::setLRIsSpilledForFarJump(), llvm::MachineRegisterInfo::setPhysRegUsed(), llvm::RegScavenger::setScavengingFrameIndex(), llvm::SmallVectorImpl< T >::size(), STI, TII, and llvm::TargetInstrDesc::TSFlags.

void ARMRegisterInfo::emitPrologue ( MachineFunction &  MF  )  const

Definition at line 1191 of file ARMRegisterInfo.cpp.

References AddDefaultCC(), AddDefaultPred(), llvm::ARMFunctionInfo::addDPRCalleeSavedAreaFrame(), llvm::ARMFunctionInfo::addGPRCalleeSavedArea1Frame(), llvm::ARMFunctionInfo::addGPRCalleeSavedArea2Frame(), llvm::MachineInstrBuilder::addImm(), AFI, llvm::ARMCC::AL, llvm::MachineBasicBlock::begin(), llvm::BuildMI(), E, emitSPUpdate(), llvm::MachineBasicBlock::end(), FI, llvm::MachineFunction::front(), llvm::TargetInstrInfo::get(), llvm::MachineFrameInfo::getCalleeSavedInfo(), llvm::MachineFunction::getFrameInfo(), llvm::ARMFunctionInfo::getFramePtrSpillOffset(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineFrameInfo::getOffsetAdjustment(), llvm::MachineFunction::getRegInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::ARMFunctionInfo::getVarArgsRegSaveSize(), hasFP(), llvm::ARMFunctionInfo::hasStackFrame(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMSubtarget::isTargetELF(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), llvm::MachineRegisterInfo::livein_begin(), llvm::MachineRegisterInfo::livein_end(), MBB, MBBI, MFI, movePastCSLoadStoreOps(), Reg, llvm::ARMFunctionInfo::setDPRCalleeSavedAreaOffset(), llvm::ARMFunctionInfo::setDPRCalleeSavedAreaSize(), llvm::ARMFunctionInfo::setFramePtrSpillOffset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea1Offset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea1Size(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea2Offset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea2Size(), llvm::MachineFrameInfo::setOffsetAdjustment(), llvm::ARMFunctionInfo::setR3IsLiveIn(), llvm::MachineFrameInfo::setStackSize(), STI, and TII.

void ARMRegisterInfo::emitEpilogue ( MachineFunction &  MF,
MachineBasicBlock &  MBB 
) const

unsigned ARMRegisterInfo::getRARegister (  )  const

Definition at line 1436 of file ARMRegisterInfo.cpp.

unsigned ARMRegisterInfo::getFrameRegister ( MachineFunction &  MF  )  const

unsigned ARMRegisterInfo::getEHExceptionRegister (  )  const

Definition at line 1447 of file ARMRegisterInfo.cpp.

unsigned ARMRegisterInfo::getEHHandlerRegister (  )  const

Definition at line 1452 of file ARMRegisterInfo.cpp.

int ARMRegisterInfo::getDwarfRegNum ( unsigned  RegNum,
bool  isEH 
) const

Definition at line 1457 of file ARMRegisterInfo.cpp.

bool ARMRegisterInfo::isLowRegister ( unsigned  Reg  )  const


Member Data Documentation


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