|
LLVM
4.0.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 85 of file ARMBaseRegisterInfo.h.
|
explicitprotected |
Definition at line 48 of file ARMBaseRegisterInfo.cpp.
| bool ARMBaseRegisterInfo::cannotEliminateFrame | ( | const MachineFunction & | MF | ) | const |
Definition at line 396 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFrameInfo::adjustsStack(), llvm::TargetOptions::DisableFramePointerElim(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getTarget(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::MachineFrameInfo::isFrameAddressTaken(), and llvm::TargetMachine::Options.
Referenced by llvm::ARMFrameLowering::determineCalleeSaves().
|
override |
Definition at line 370 of file ARMBaseRegisterInfo.cpp.
References BasePtr, llvm::TargetRegisterInfo::canRealignStack(), llvm::MachineRegisterInfo::canReserveReg(), getFramePointerReg(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), and MRI.
Referenced by needsFrameBaseReg().
|
override |
Definition at line 712 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMII::AddrMode4, llvm::ARMII::AddrMode6, llvm::ARMII::AddrModeMask, llvm::ARMCC::AL, assert(), 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(), MBB, MI, Offset, 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 416 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), 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 163 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 56 of file ARMBaseRegisterInfo.cpp.
References llvm::CallingConv::CXX_FAST_TLS, F, llvm::Function::getAttributes(), llvm::Function::getCallingConv(), llvm::Function::getFnAttribute(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::getTargetLowering(), llvm::Attribute::getValueAsString(), llvm::CallingConv::GHC, llvm::AttributeSet::hasAttrSomewhere(), llvm::Function::hasFnAttribute(), llvm::ARMSubtarget::isMClass(), llvm::ARMFunctionInfo::isSplitCSR(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMSubtarget::splitFramePushPop(), and llvm::ARMTargetLowering::supportSwiftError().
Referenced by llvm::ARMFrameLowering::determineCalleeSaves().
| const MCPhysReg * ARMBaseRegisterInfo::getCalleeSavedRegsViaCopy | ( | const MachineFunction * | MF | ) | const |
Definition at line 96 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), and llvm::MachineFunction::getInfo().
|
override |
Definition at line 106 of file ARMBaseRegisterInfo.cpp.
References llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getAttributes(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::getTargetLowering(), llvm::CallingConv::GHC, llvm::AttributeSet::hasAttrSomewhere(), llvm::ARMSubtarget::isTargetDarwin(), and llvm::ARMTargetLowering::supportSwiftError().
|
override |
Definition at line 224 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 455 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, Desc, 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 405 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(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), and llvm::Thumb1FrameLowering::spillCalleeSavedRegisters().
|
override |
Definition at line 197 of file ARMBaseRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), llvm::TargetRegisterClass::getSuperClasses(), and I.
Referenced by llvm::ThumbRegisterInfo::getLargestLegalSuperClass().
Definition at line 123 of file ARMBaseRegisterInfo.cpp.
|
protected |
|
override |
Definition at line 218 of file ARMBaseRegisterInfo.cpp.
Referenced by llvm::ThumbRegisterInfo::getPointerRegClass().
|
override |
Definition at line 261 of file ARMBaseRegisterInfo.cpp.
References E, getPairedGPR(), llvm::VirtRegMap::getPhys(), llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineFunction::getRegInfo(), llvm::VirtRegMap::hasPhys(), I, llvm::is_contained(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MachineRegisterInfo::isReserved(), MRI, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::ARMRI::RegPairEven, llvm::ARMRI::RegPairOdd, and llvm::ArrayRef< T >::size().
|
override |
Definition at line 231 of file ARMBaseRegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), llvm::MachineFunction::getSubtarget(), and llvm::ARMSubtarget::isR9Reserved().
|
override |
Definition at line 164 of file ARMBaseRegisterInfo.cpp.
References assert(), BasePtr, llvm::TargetRegisterClass::begin(), E, llvm::TargetRegisterClass::end(), getFramePointerReg(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::ARMSubtarget::hasD16(), llvm::ARMSubtarget::hasVFP3(), I, llvm::ARMSubtarget::isR9Reserved(), PC, SI, and llvm::BitVector::test().
| const uint32_t * ARMBaseRegisterInfo::getSjLjDispatchPreservedMask | ( | const MachineFunction & | MF | ) | const |
Definition at line 135 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::hasVFP2(), llvm::ARMSubtarget::isThumb1Only(), and llvm::ARMSubtarget::useSoftFloat().
| 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 145 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::CallingConv::GHC, and llvm::ARMSubtarget::isTargetDarwin().
| const uint32_t * ARMBaseRegisterInfo::getTLSCallPreservedMask | ( | const MachineFunction & | MF | ) | const |
Definition at line 128 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::MachineFunction::getSubtarget(), and llvm::ARMSubtarget::isTargetDarwin().
| bool ARMBaseRegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 339 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::ARMFunctionInfo::isThumb2Function(), and llvm::ARMFunctionInfo::isThumbFunction().
Referenced by llvm::ARMFrameLowering::determineCalleeSaves(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), getReservedRegs(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().
|
override |
Definition at line 643 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, assert(), Desc, llvm::MachineInstr::getDesc(), getFrameIndexInstrOffset(), llvm::MachineInstr::getOperand(), i, llvm::MachineOperand::isFI(), llvm_unreachable, llvm::BitmaskEnumDetail::Mask(), Offset, 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 590 of file ARMBaseRegisterInfo.cpp.
References llvm::AddDefaultCC(), llvm::AddDefaultPred(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineBasicBlock::begin(), llvm::BuildMI(), llvm::MachineRegisterInfo::constrainRegClass(), 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(), MRI, 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 509 of file ARMBaseRegisterInfo.cpp.
References assert(), 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(), i, llvm::MachineOperand::isFI(), isFrameOffsetLegal(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), and llvm::ARMFunctionInfo::isThumbFunction().
|
override |
Definition at line 445 of file ARMBaseRegisterInfo.cpp.
|
override |
Code Generation virtual methods...
Definition at line 435 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 450 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 615 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::MachineFunction::getInfo(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineFunction::getSubtarget(), i, llvm::MachineOperand::isFI(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), MBB, Offset, 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 788 of file ARMBaseRegisterInfo.cpp.
References llvm::dbgs(), DEBUG, llvm::ARMFunctionInfo::getCoalescedWeight(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::TargetRegisterInfo::getRegClassWeight(), llvm::TargetRegisterClass::getSize(), llvm::MachineRegisterInfo::getTargetRegisterInfo(), MBB, MRI, and llvm::MachineBasicBlock::size().
|
override |
Definition at line 440 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 315 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::MachineFunction::getRegInfo(), llvm::TargetRegisterInfo::isVirtualRegister(), MRI, 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 90 of file ARMBaseRegisterInfo.h.
Referenced by canRealignStack(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), getBaseRegister(), and getReservedRegs().
1.8.6