|
LLVM
3.7.0
|
#include <ARMBaseRegisterInfo.h>
Protected Member Functions | |
| ARMBaseRegisterInfo () | |
| unsigned | getOpcode (int Op) const |
Protected Attributes | |
| unsigned | BasePtr |
| BasePtr - ARM physical register used as a base ptr in complex stack frames. More... | |
Definition at line 79 of file ARMBaseRegisterInfo.h.
|
explicitprotected |
Definition at line 48 of file ARMBaseRegisterInfo.cpp.
| bool ARMBaseRegisterInfo::cannotEliminateFrame | ( | const MachineFunction & | MF | ) | const |
Definition at line 371 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFrameInfo::adjustsStack(), llvm::TargetOptions::DisableFramePointerElim(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getTarget(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::MachineFrameInfo::isFrameAddressTaken(), needsStackRealignment(), and llvm::TargetMachine::Options.
Referenced by llvm::ARMFrameLowering::determineCalleeSaves().
| bool ARMBaseRegisterInfo::canRealignStack | ( | const MachineFunction & | MF | ) | const |
Definition at line 333 of file ARMBaseRegisterInfo.cpp.
References BasePtr, llvm::MachineRegisterInfo::canReserveReg(), getFramePointerReg(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::Function::hasFnAttribute(), and llvm::ARMFunctionInfo::isThumb1OnlyFunction().
Referenced by needsFrameBaseReg(), and needsStackRealignment().
|
override |
Definition at line 690 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMII::AddrMode4, llvm::ARMII::AddrMode6, llvm::ARMII::AddrModeMask, llvm::ARMCC::AL, llvm::MachineOperand::ChangeToRegister(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::emitARMRegPlusImmediate(), llvm::emitT2RegPlusImmediate(), llvm::MachineInstr::findFirstPredOperandIdx(), llvm::ISD::FrameIndex, llvm::MachineInstr::getDebugLoc(), llvm::MachineInstr::getDesc(), llvm::MachineFunction::getFrameInfo(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineFunction::getInfo(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMFrameLowering::hasReservedCallFrame(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::MachineInstr::isDebugValue(), llvm::RegScavenger::isScavengingFrameIndex(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), llvm::AArch64CC::MI, llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::rewriteARMFrameIndex(), llvm::rewriteT2FrameIndex(), TII, and llvm::MCInstrDesc::TSFlags.
Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex().
|
virtual |
emitLoadConstPool - Emits a load from constpool to materialize the specified immediate.
Reimplemented in llvm::ThumbRegisterInfo.
Definition at line 392 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::C, llvm::MCInstrInfo::get(), llvm::ConstantInt::get(), llvm::MachineFunction::getConstantPool(), llvm::MachineConstantPool::getConstantPoolIndex(), llvm::Function::getContext(), llvm::getDefRegState(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::Type::getInt32Ty(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getSubtarget(), llvm::MachineInstrBuilder::setMIFlags(), and TII.
Referenced by emitThumbRegPlusImmInReg().
|
inline |
Definition at line 153 of file ARMBaseRegisterInfo.h.
References BasePtr.
Referenced by llvm::ARMFrameLowering::determineCalleeSaves(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().
|
override |
Code Generation virtual methods...
Definition at line 64 of file ARMBaseRegisterInfo.cpp.
References F(), llvm::Function::getCallingConv(), llvm::Function::getFnAttribute(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::Attribute::getValueAsString(), llvm::CallingConv::GHC, llvm::Function::hasFnAttribute(), llvm::ARMSubtarget::isMClass(), and llvm::ARMSubtarget::isTargetDarwin().
Referenced by llvm::ARMFrameLowering::determineCalleeSaves().
|
override |
Definition at line 94 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GHC, and llvm::ARMSubtarget::isTargetDarwin().
|
override |
Definition at line 187 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 433 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMII::AddrMode2, llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode5, llvm::ARMII::AddrMode_i12, llvm::ARMII::AddrModeMask, llvm::ARMII::AddrModeT1_s, llvm::ARMII::AddrModeT2_i12, llvm::ARMII::AddrModeT2_i8, 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::MachineOperand::getImm(), llvm::MachineInstr::getOperand(), llvm_unreachable, llvm::ARM_AM::sub, and llvm::MCInstrDesc::TSFlags.
Referenced by isFrameOffsetLegal().
|
override |
Definition at line 380 of file ARMBaseRegisterInfo.cpp.
References getFramePointerReg(), and llvm::MachineFunction::getSubtarget().
Referenced by llvm::ARMFrameLowering::determineCalleeSaves(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), needsFrameBaseReg(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().
|
override |
Definition at line 160 of file ARMBaseRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), llvm::TargetRegisterClass::getSuperClasses(), and I.
Referenced by llvm::ThumbRegisterInfo::getLargestLegalSuperClass().
| const uint32_t * ARMBaseRegisterInfo::getNoPreservedMask | ( | ) | const |
Definition at line 104 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 181 of file ARMBaseRegisterInfo.cpp.
Referenced by llvm::ThumbRegisterInfo::getPointerRegClass().
|
override |
Definition at line 224 of file ARMBaseRegisterInfo.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), getPairedGPR(), llvm::VirtRegMap::getPhys(), llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineFunction::getRegInfo(), llvm::VirtRegMap::hasPhys(), Hint(), I, llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MachineRegisterInfo::isReserved(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::ARMRI::RegPairEven, llvm::ARMRI::RegPairOdd, and llvm::ArrayRef< T >::size().
|
override |
Definition at line 194 of file ARMBaseRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), llvm::MachineFunction::getSubtarget(), and llvm::ARMSubtarget::isR9Reserved().
|
override |
Definition at line 128 of file ARMBaseRegisterInfo.cpp.
References BasePtr, llvm::TargetRegisterClass::begin(), llvm::TargetRegisterClass::end(), getFramePointerReg(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::ARMSubtarget::hasD16(), llvm::ARMSubtarget::hasVFP3(), I, llvm::ARMSubtarget::isR9Reserved(), llvm::Reserved, llvm::BitVector::set(), llvm::SI, and llvm::BitVector::test().
| const uint32_t * ARMBaseRegisterInfo::getThisReturnPreservedMask | ( | const MachineFunction & | MF, |
| 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 109 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GHC, and llvm::ARMSubtarget::isTargetDarwin().
| bool ARMBaseRegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 302 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), and needsStackRealignment().
Referenced by llvm::ARMFrameLowering::determineCalleeSaves(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), getReservedRegs(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().
|
override |
Definition at line 621 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMII::AddrMode2, llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode4, llvm::ARMII::AddrMode5, llvm::ARMII::AddrMode6, llvm::ARMII::AddrMode_i12, llvm::ARMII::AddrModeMask, llvm::ARMII::AddrModeT1_s, llvm::ARMII::AddrModeT2_i12, llvm::ARMII::AddrModeT2_i8, llvm::MachineInstr::getDesc(), getFrameIndexInstrOffset(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isFI(), llvm_unreachable, and llvm::MCInstrDesc::TSFlags.
Referenced by needsFrameBaseReg().
|
override |
materializeFrameBaseRegister - Insert defining instruction(s) for BaseReg to be a pointer to FrameIdx at the beginning of the basic block.
Definition at line 568 of file ARMBaseRegisterInfo.cpp.
References llvm::AddDefaultCC(), llvm::AddDefaultPred(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::DL, llvm::MachineBasicBlock::end(), llvm::MCInstrInfo::get(), llvm::MachineFunction::getInfo(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineBasicBlock::getParent(), llvm::TargetInstrInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MipsISD::Ins, llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumbFunction(), and TII.
|
override |
needsFrameBaseReg - Returns true if the instruction's frame index reference would be better served by a base register other than FP or SP.
Used by LocalStackFrameAllocation to determine which frame index references it should create new base registers for.
Definition at line 487 of file ARMBaseRegisterInfo.cpp.
References canRealignStack(), llvm::MachineFunction::getFrameInfo(), getFrameRegister(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getLocalFrameMaxAlign(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::TargetFrameLowering::getStackAlignment(), llvm::ARMFrameLowering::hasFP(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::MachineOperand::isFI(), isFrameOffsetLegal(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), and llvm::ARMFunctionInfo::isThumbFunction().
|
override |
Definition at line 359 of file ARMBaseRegisterInfo.cpp.
References canRealignStack(), F(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::MachineFrameInfo::getMaxAlignment(), llvm::TargetFrameLowering::getStackAlignment(), llvm::Function::hasFnAttribute(), and llvm::Attribute::StackAlignment.
Referenced by cannotEliminateFrame(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), hasBasePointer(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().
|
override |
Definition at line 423 of file ARMBaseRegisterInfo.cpp.
|
override |
Code Generation virtual methods...
Definition at line 413 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 428 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 593 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getInfo(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::isFI(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), llvm::rewriteARMFrameIndex(), llvm::rewriteT2FrameIndex(), and TII.
Referenced by llvm::ThumbRegisterInfo::resolveFrameIndex().
|
override |
SrcRC and DstRC will be morphed into NewRC if this returns true.
Definition at line 766 of file ARMBaseRegisterInfo.cpp.
References llvm::dbgs(), DEBUG, llvm::ARMFunctionInfo::getCoalescedWeight(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::TargetRegisterInfo::getRegClassWeight(), llvm::TargetRegisterClass::getSize(), and llvm::MachineRegisterInfo::getTargetRegisterInfo().
|
override |
Definition at line 418 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 278 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::MachineFunction::getRegInfo(), Hint(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::ARMRI::RegPairEven, llvm::ARMRI::RegPairOdd, and llvm::MachineRegisterInfo::setRegAllocationHint().
|
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 84 of file ARMBaseRegisterInfo.h.
Referenced by canRealignStack(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), getBaseRegister(), and getReservedRegs().
1.8.6