LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::ARMBaseRegisterInfo Class Reference

#include <ARMBaseRegisterInfo.h>

Inheritance diagram for llvm::ARMBaseRegisterInfo:
Inheritance graph
[legend]
Collaboration diagram for llvm::ARMBaseRegisterInfo:
Collaboration graph
[legend]

Public Member Functions

const uint16_t * getCalleeSavedRegs (const MachineFunction *MF=0) const
 Code Generation virtual methods... More...
 
const uint32_t * getCallPreservedMask (CallingConv::ID) const
 
const uint32_t * getNoPreservedMask () const
 
const uint32_t * getThisReturnPreservedMask (CallingConv::ID) const
 
BitVector getReservedRegs (const MachineFunction &MF) const
 
const TargetRegisterClassgetPointerRegClass (const MachineFunction &MF, unsigned Kind=0) const
 
const TargetRegisterClassgetCrossCopyRegClass (const TargetRegisterClass *RC) const
 
const TargetRegisterClassgetLargestLegalSuperClass (const TargetRegisterClass *RC) const
 
unsigned getRegPressureLimit (const TargetRegisterClass *RC, MachineFunction &MF) const
 
void getRegAllocationHints (unsigned VirtReg, ArrayRef< MCPhysReg > Order, SmallVectorImpl< MCPhysReg > &Hints, const MachineFunction &MF, const VirtRegMap *VRM) const
 
void UpdateRegAllocHint (unsigned Reg, unsigned NewReg, MachineFunction &MF) const
 
virtual bool avoidWriteAfterWrite (const TargetRegisterClass *RC) const
 
bool hasBasePointer (const MachineFunction &MF) const
 
bool canRealignStack (const MachineFunction &MF) const
 
bool needsStackRealignment (const MachineFunction &MF) const
 
int64_t getFrameIndexInstrOffset (const MachineInstr *MI, int Idx) const
 
bool needsFrameBaseReg (MachineInstr *MI, int64_t Offset) const
 
void materializeFrameBaseRegister (MachineBasicBlock *MBB, unsigned BaseReg, int FrameIdx, int64_t Offset) const
 
void resolveFrameIndex (MachineBasicBlock::iterator I, unsigned BaseReg, int64_t Offset) const
 
bool isFrameOffsetLegal (const MachineInstr *MI, int64_t Offset) const
 
bool cannotEliminateFrame (const MachineFunction &MF) const
 
unsigned getFrameRegister (const MachineFunction &MF) const
 
unsigned getBaseRegister () const
 
bool isLowRegister (unsigned Reg) const
 
virtual void emitLoadConstPool (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, DebugLoc dl, unsigned DestReg, unsigned SubIdx, int Val, ARMCC::CondCodes Pred=ARMCC::AL, unsigned PredReg=0, unsigned MIFlags=MachineInstr::NoFlags) const
 
virtual bool requiresRegisterScavenging (const MachineFunction &MF) const
 Code Generation virtual methods... More...
 
virtual bool trackLivenessAfterRegAlloc (const MachineFunction &MF) const
 
virtual bool requiresFrameIndexScavenging (const MachineFunction &MF) const
 
virtual bool requiresVirtualBaseRegisters (const MachineFunction &MF) const
 
virtual void eliminateFrameIndex (MachineBasicBlock::iterator II, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=NULL) const
 

Protected Member Functions

 ARMBaseRegisterInfo (const ARMSubtarget &STI)
 
unsigned getOpcode (int Op) const
 

Protected Attributes

const ARMSubtargetSTI
 
unsigned FramePtr
 FramePtr - ARM physical register used as frame ptr. More...
 
unsigned BasePtr
 

Detailed Description

Definition at line 75 of file ARMBaseRegisterInfo.h.

Constructor & Destructor Documentation

ARMBaseRegisterInfo::ARMBaseRegisterInfo ( const ARMSubtarget STI)
explicitprotected

Definition at line 46 of file ARMBaseRegisterInfo.cpp.

Member Function Documentation

bool ARMBaseRegisterInfo::avoidWriteAfterWrite ( const TargetRegisterClass RC) const
virtual
bool ARMBaseRegisterInfo::cannotEliminateFrame ( const MachineFunction MF) const
bool ARMBaseRegisterInfo::canRealignStack ( const MachineFunction MF) const
void ARMBaseRegisterInfo::eliminateFrameIndex ( MachineBasicBlock::iterator  II,
int  SPAdj,
unsigned  FIOperandNum,
RegScavenger RS = NULL 
) const
virtual
void ARMBaseRegisterInfo::emitLoadConstPool ( MachineBasicBlock MBB,
MachineBasicBlock::iterator MBBI,
DebugLoc  dl,
unsigned  DestReg,
unsigned  SubIdx,
int  Val,
ARMCC::CondCodes  Pred = ARMCC::AL,
unsigned  PredReg = 0,
unsigned  MIFlags = MachineInstr::NoFlags 
) const
virtual
unsigned llvm::ARMBaseRegisterInfo::getBaseRegister ( ) const
inline
const uint16_t * ARMBaseRegisterInfo::getCalleeSavedRegs ( const MachineFunction MF = 0) const
const uint32_t * ARMBaseRegisterInfo::getCallPreservedMask ( CallingConv::ID  CC) const
const TargetRegisterClass * ARMBaseRegisterInfo::getCrossCopyRegClass ( const TargetRegisterClass RC) const

Definition at line 174 of file ARMBaseRegisterInfo.cpp.

int64_t ARMBaseRegisterInfo::getFrameIndexInstrOffset ( const MachineInstr MI,
int  Idx 
) const
unsigned ARMBaseRegisterInfo::getFrameRegister ( const MachineFunction MF) const
const TargetRegisterClass * ARMBaseRegisterInfo::getLargestLegalSuperClass ( const TargetRegisterClass RC) const
const uint32_t * ARMBaseRegisterInfo::getNoPreservedMask ( ) const

Definition at line 94 of file ARMBaseRegisterInfo.cpp.

unsigned llvm::ARMBaseRegisterInfo::getOpcode ( int  Op) const
protected
const TargetRegisterClass * ARMBaseRegisterInfo::getPointerRegClass ( const MachineFunction MF,
unsigned  Kind = 0 
) const

Definition at line 168 of file ARMBaseRegisterInfo.cpp.

void ARMBaseRegisterInfo::getRegAllocationHints ( unsigned  VirtReg,
ArrayRef< MCPhysReg Order,
SmallVectorImpl< MCPhysReg > &  Hints,
const MachineFunction MF,
const VirtRegMap VRM 
) const
unsigned ARMBaseRegisterInfo::getRegPressureLimit ( const TargetRegisterClass RC,
MachineFunction MF 
) const
BitVector ARMBaseRegisterInfo::getReservedRegs ( const MachineFunction MF) const
const uint32_t * ARMBaseRegisterInfo::getThisReturnPreservedMask ( CallingConv::ID  CC) const

getThisReturnPreservedMask - Returns a call preserved mask specific to the case that 'returned' is on an i32 first argument if the calling convention is one that can (partially) model this attribute with a preserved mask (i.e. it is a calling convention that uses the same register for the first i32 argument and an i32 return value)

Should return NULL in the case that the calling convention does not have this property

Definition at line 99 of file ARMBaseRegisterInfo.cpp.

References llvm::CallingConv::GHC, llvm::ARMSubtarget::isAAPCS_ABI(), llvm::ARMSubtarget::isTargetIOS(), and STI.

bool ARMBaseRegisterInfo::hasBasePointer ( const MachineFunction MF) const
bool ARMBaseRegisterInfo::isFrameOffsetLegal ( const MachineInstr MI,
int64_t  Offset 
) const
bool llvm::ARMBaseRegisterInfo::isLowRegister ( unsigned  Reg) const
void ARMBaseRegisterInfo::materializeFrameBaseRegister ( MachineBasicBlock MBB,
unsigned  BaseReg,
int  FrameIdx,
int64_t  Offset 
) const
bool ARMBaseRegisterInfo::needsFrameBaseReg ( MachineInstr MI,
int64_t  Offset 
) const
bool ARMBaseRegisterInfo::needsStackRealignment ( const MachineFunction MF) const
bool ARMBaseRegisterInfo::requiresFrameIndexScavenging ( const MachineFunction MF) const
virtual

Definition at line 422 of file ARMBaseRegisterInfo.cpp.

bool ARMBaseRegisterInfo::requiresRegisterScavenging ( const MachineFunction MF) const
virtual

Code Generation virtual methods...

Definition at line 412 of file ARMBaseRegisterInfo.cpp.

bool ARMBaseRegisterInfo::requiresVirtualBaseRegisters ( const MachineFunction MF) const
virtual

Definition at line 427 of file ARMBaseRegisterInfo.cpp.

void ARMBaseRegisterInfo::resolveFrameIndex ( MachineBasicBlock::iterator  I,
unsigned  BaseReg,
int64_t  Offset 
) const
bool ARMBaseRegisterInfo::trackLivenessAfterRegAlloc ( const MachineFunction MF) const
virtual

Definition at line 417 of file ARMBaseRegisterInfo.cpp.

void ARMBaseRegisterInfo::UpdateRegAllocHint ( unsigned  Reg,
unsigned  NewReg,
MachineFunction MF 
) const

Member Data Documentation

unsigned llvm::ARMBaseRegisterInfo::BasePtr
protected

BasePtr - ARM physical register used as a base ptr in complex stack frames. I.e., when we need a 3rd base, not just SP and FP, due to variable size stack objects.

Definition at line 85 of file ARMBaseRegisterInfo.h.

Referenced by canRealignStack(), llvm::Thumb1RegisterInfo::eliminateFrameIndex(), getBaseRegister(), and getReservedRegs().

unsigned llvm::ARMBaseRegisterInfo::FramePtr
protected

FramePtr - ARM physical register used as frame ptr.

Definition at line 80 of file ARMBaseRegisterInfo.h.

Referenced by canRealignStack(), getFrameRegister(), and getReservedRegs().

const ARMSubtarget& llvm::ARMBaseRegisterInfo::STI
protected

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