LLVM API Documentation

Public Member Functions | Protected Member Functions | Protected Attributes
llvm::ARMBaseRegisterInfo Class Reference

#include <ARMBaseRegisterInfo.h>

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

List of all members.

Public Member Functions

const MCPhysReggetCalleeSavedRegs (const MachineFunction *MF=nullptr) const override
 Code Generation virtual methods...
const uint32_t * getCallPreservedMask (CallingConv::ID) const override
const uint32_t * getNoPreservedMask () const
const uint32_t * getThisReturnPreservedMask (CallingConv::ID) const
BitVector getReservedRegs (const MachineFunction &MF) const override
const TargetRegisterClassgetPointerRegClass (const MachineFunction &MF, unsigned Kind=0) const override
const TargetRegisterClassgetCrossCopyRegClass (const TargetRegisterClass *RC) const override
const TargetRegisterClassgetLargestLegalSuperClass (const TargetRegisterClass *RC) const override
unsigned getRegPressureLimit (const TargetRegisterClass *RC, MachineFunction &MF) const override
void getRegAllocationHints (unsigned VirtReg, ArrayRef< MCPhysReg > Order, SmallVectorImpl< MCPhysReg > &Hints, const MachineFunction &MF, const VirtRegMap *VRM) const override
void UpdateRegAllocHint (unsigned Reg, unsigned NewReg, MachineFunction &MF) const override
bool avoidWriteAfterWrite (const TargetRegisterClass *RC) const override
bool hasBasePointer (const MachineFunction &MF) const
bool canRealignStack (const MachineFunction &MF) const
bool needsStackRealignment (const MachineFunction &MF) const override
int64_t getFrameIndexInstrOffset (const MachineInstr *MI, int Idx) const override
bool needsFrameBaseReg (MachineInstr *MI, int64_t Offset) const override
void materializeFrameBaseRegister (MachineBasicBlock *MBB, unsigned BaseReg, int FrameIdx, int64_t Offset) const override
void resolveFrameIndex (MachineInstr &MI, unsigned BaseReg, int64_t Offset) const override
bool isFrameOffsetLegal (const MachineInstr *MI, int64_t Offset) const override
bool cannotEliminateFrame (const MachineFunction &MF) const
unsigned getFrameRegister (const MachineFunction &MF) const override
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
bool mayOverrideLocalAssignment () const override
 Code Generation virtual methods...
bool requiresRegisterScavenging (const MachineFunction &MF) const override
bool trackLivenessAfterRegAlloc (const MachineFunction &MF) const override
bool requiresFrameIndexScavenging (const MachineFunction &MF) const override
bool requiresVirtualBaseRegisters (const MachineFunction &MF) const override
void eliminateFrameIndex (MachineBasicBlock::iterator II, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
bool shouldCoalesce (MachineInstr *MI, const TargetRegisterClass *SrcRC, unsigned SubReg, const TargetRegisterClass *DstRC, unsigned DstSubReg, const TargetRegisterClass *NewRC) const override
 SrcRC and DstRC will be morphed into NewRC if this returns true.

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.
unsigned BasePtr

Detailed Description

Definition at line 83 of file ARMBaseRegisterInfo.h.


Constructor & Destructor Documentation


Member Function Documentation

void ARMBaseRegisterInfo::eliminateFrameIndex ( MachineBasicBlock::iterator  II,
int  SPAdj,
unsigned  FIOperandNum,
RegScavenger RS = nullptr 
) const [override]
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]

Definition at line 183 of file ARMBaseRegisterInfo.cpp.

int64_t ARMBaseRegisterInfo::getFrameIndexInstrOffset ( const MachineInstr MI,
int  Idx 
) const [override]

Definition at line 103 of file ARMBaseRegisterInfo.cpp.

Reimplemented in llvm::Thumb1RegisterInfo.

Definition at line 177 of file ARMBaseRegisterInfo.cpp.

void ARMBaseRegisterInfo::getRegAllocationHints ( unsigned  VirtReg,
ArrayRef< MCPhysReg Order,
SmallVectorImpl< MCPhysReg > &  Hints,
const MachineFunction MF,
const VirtRegMap VRM 
) const [override]

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 108 of file ARMBaseRegisterInfo.cpp.

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

bool ARMBaseRegisterInfo::isFrameOffsetLegal ( const MachineInstr MI,
int64_t  Offset 
) const [override]
void ARMBaseRegisterInfo::materializeFrameBaseRegister ( MachineBasicBlock MBB,
unsigned  BaseReg,
int  FrameIdx,
int64_t  Offset 
) const [override]

Code Generation virtual methods...

Definition at line 426 of file ARMBaseRegisterInfo.cpp.

References llvm::ARMSubtarget::isTargetDarwin(), and STI.

bool ARMBaseRegisterInfo::needsFrameBaseReg ( MachineInstr MI,
int64_t  Offset 
) const [override]

Definition at line 442 of file ARMBaseRegisterInfo.cpp.

Definition at line 432 of file ARMBaseRegisterInfo.cpp.

Definition at line 447 of file ARMBaseRegisterInfo.cpp.

void ARMBaseRegisterInfo::resolveFrameIndex ( MachineInstr MI,
unsigned  BaseReg,
int64_t  Offset 
) const [override]
bool ARMBaseRegisterInfo::shouldCoalesce ( MachineInstr MI,
const TargetRegisterClass SrcRC,
unsigned  SubReg,
const TargetRegisterClass DstRC,
unsigned  DstSubReg,
const TargetRegisterClass NewRC 
) const [override]

Definition at line 437 of file ARMBaseRegisterInfo.cpp.

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

Member Data Documentation

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 93 of file ARMBaseRegisterInfo.h.

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

FramePtr - ARM physical register used as frame ptr.

Definition at line 88 of file ARMBaseRegisterInfo.h.

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


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