|
LLVM 24.0.0git
|
#include "Target/ARM/ARMBaseRegisterInfo.h"
Protected Member Functions | |
| ARMBaseRegisterInfo () | |
Protected Attributes | |
| unsigned | BasePtr = ARM::R6 |
| BasePtr - ARM physical register used as a base ptr in complex stack frames. | |
Definition at line 52 of file ARMBaseRegisterInfo.h.
|
explicitprotected |
Definition at line 56 of file ARMBaseRegisterInfo.cpp.
References llvm::ARM_MC::initLLVMToCVRegMapping().
| bool ARMBaseRegisterInfo::cannotEliminateFrame | ( | const MachineFunction & | MF | ) | const |
|
override |
Definition at line 487 of file ARMBaseRegisterInfo.cpp.
References BasePtr, llvm::TargetRegisterInfo::canRealignStack(), llvm::MachineRegisterInfo::canReserveReg(), llvm::ARMSubtarget::getFramePointerReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), and llvm::ARMFrameLowering::hasReservedCallFrame().
Referenced by checkNumAlignedDPRCS2Regs(), and needsFrameBaseReg().
|
override |
Definition at line 834 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMII::AddrMode4, llvm::ARMII::AddrMode6, llvm::ARMII::AddrModeMask, llvm::ARMII::AddrModeT2_i7, llvm::ARMII::AddrModeT2_i7s2, llvm::ARMII::AddrModeT2_i7s4, llvm::ARMCC::AL, assert(), llvm::MachineOperand::ChangeToImmediate(), llvm::MCRegisterClass::contains(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::Done, llvm::emitARMRegPlusImmediate(), llvm::emitT2RegPlusImmediate(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::ARMFrameLowering::getNonLocalFrameIndexReference(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMFrameLowering::hasReservedCallFrame(), llvm::MachineFrameInfo::hasVarSizedObjects(), II, llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), llvm::Register::isVirtual(), MBB, MI, llvm::Offset, Register, llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::rewriteARMFrameIndex(), llvm::rewriteT2FrameIndex(), and TII.
Referenced by llvm::ThumbRegisterInfo::eliminateFrameIndex().
|
virtual |
emitLoadConstPool - Emits a load from constpool to materialize the specified immediate.
Reimplemented in llvm::ThumbRegisterInfo.
Definition at line 540 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), C(), llvm::MachineFunction::getConstantPool(), llvm::Function::getContext(), llvm::getDefRegState(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::Type::getInt32Ty(), llvm::MachineFunction::getSubtarget(), MBB, MBBI, llvm::predOps(), llvm::MachineInstrBuilder::setMIFlags(), and TII.
Referenced by emitThumbRegPlusImmInReg().
|
inline |
Definition at line 131 of file ARMBaseRegisterInfo.h.
References BasePtr.
Referenced by getLocalAddressRegister().
|
override |
Code Generation virtual methods...
Definition at line 62 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::CallingConv::CFGuard_Check, llvm::CallingConv::CXX_FAST_TLS, F, llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::ARMSubtarget::getPushPopSplitVariation(), llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::getTargetLowering(), llvm::CallingConv::GHC, llvm::ARMSubtarget::isMClass(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMSubtarget::SplitR11AAPCSSignRA, llvm::ARMSubtarget::SplitR11WindowsSEH, llvm::ARMSubtarget::SplitR7, llvm::ARMTargetLowering::supportSwiftError(), and llvm::CallingConv::SwiftTail.
| const MCPhysReg * ARMBaseRegisterInfo::getCalleeSavedRegsViaCopy | ( | const MachineFunction * | MF | ) | const |
Definition at line 146 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), and llvm::ARMFunctionInfo::isSplitCSR().
|
override |
Definition at line 156 of file ARMBaseRegisterInfo.cpp.
References llvm::CallingConv::CFGuard_Check, llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getAttributes(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::getTargetLowering(), llvm::CallingConv::GHC, llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMTargetLowering::supportSwiftError(), and llvm::CallingConv::SwiftTail.
|
override |
Definition at line 318 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 574 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::ARMII::AddrModeT2_i8neg, llvm::ARMII::AddrModeT2_i8pos, 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::MachineOperand::getImm(), llvm_unreachable, MI, and llvm::ARM_AM::sub.
Referenced by isFrameOffsetLegal().
|
override |
Definition at line 519 of file ARMBaseRegisterInfo.cpp.
References llvm::ARMSubtarget::getFramePointerReg(), and llvm::MachineFunction::getSubtarget().
Referenced by getLocalAddressRegister(), and needsFrameBaseReg().
|
override |
Definition at line 218 of file ARMBaseRegisterInfo.cpp.
References llvm::ArrayRef().
|
override |
Definition at line 282 of file ARMBaseRegisterInfo.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::MCRegisterClass::getID(), getRegClass(), llvm::MachineFunction::getSubtarget(), I, and llvm::MCRegisterClass::superclasses().
Referenced by llvm::ThumbRegisterInfo::getLargestLegalSuperClass().
| unsigned ARMBaseRegisterInfo::getLocalAddressRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 529 of file ARMBaseRegisterInfo.cpp.
References getBaseRegister(), llvm::MachineFunction::getFrameInfo(), getFrameRegister(), and llvm::MachineFunction::hasEHFunclets().
Definition at line 179 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 313 of file ARMBaseRegisterInfo.cpp.
Referenced by llvm::ThumbRegisterInfo::getPointerRegClass().
|
override |
Definition at line 364 of file ARMBaseRegisterInfo.cpp.
References llvm::MCRegisterClass::contains(), getPairedGPR(), llvm::VirtRegMap::getPhys(), llvm::MachineRegisterInfo::getRegAllocationHint(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::VirtRegMap::hasPhys(), llvm::is_contained(), llvm::Register::isPhysical(), llvm::MachineRegisterInfo::isReserved(), Matrix, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::ARMRI::RegLR, llvm::ARMRI::RegPairEven, and llvm::ARMRI::RegPairOdd.
|
override |
Definition at line 327 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MCRegisterClass::getID(), llvm::MachineFunction::getSubtarget(), llvm::MachineFrameInfo::isMaxCallFrameSizeComputed(), and llvm::ARMSubtarget::isR9Reserved().
|
override |
Definition at line 224 of file ARMBaseRegisterInfo.cpp.
References assert(), BasePtr, llvm::ARM::D16, llvm::ARMSubtarget::getFramePointerReg(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::ARMSubtarget::isR9Reserved(), and llvm::Reserved.
Referenced by isAsmClobberable().
|
inline |
Definition at line 162 of file ARMBaseRegisterInfo.h.
| const uint32_t * ARMBaseRegisterInfo::getSjLjDispatchPreservedMask | ( | const MachineFunction & | MF | ) | const |
Definition at line 191 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::ARMSubtarget::hasVFP2Base(), and llvm::ARMSubtarget::isThumb1Only().
| 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 200 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 184 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::MachineFunction::getSubtarget(), and llvm::ARMSubtarget::isTargetDarwin().
| bool ARMBaseRegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 444 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineFunction::hasEHFunclets(), llvm::MachineFrameInfo::hasVarSizedObjects(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), and llvm::ARMFunctionInfo::isThumb2Function().
Referenced by getReservedRegs(), and isInlineAsmReadOnlyReg().
|
override |
Definition at line 261 of file ARMBaseRegisterInfo.cpp.
References getReservedRegs(), and llvm::BitVector::test().
|
override |
Definition at line 765 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::ARMII::AddrModeT2_i8neg, llvm::ARMII::AddrModeT2_i8pos, assert(), getFrameIndexInstrOffset(), isSigned(), llvm_unreachable, MI, and llvm::Offset.
Referenced by needsFrameBaseReg().
|
override |
Definition at line 266 of file ARMBaseRegisterInfo.cpp.
References assert(), BasePtr, llvm::ARMSubtarget::getFramePointerReg(), llvm::MachineFunction::getSubtarget(), hasBasePointer(), llvm::MCRegister::id(), and llvm::Reserved.
|
override |
materializeFrameBaseRegister - Insert defining instruction(s) for BaseReg to be a pointer to FrameIdx at the beginning of the basic block.
Definition at line 709 of file ARMBaseRegisterInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::ARMCC::AL, llvm::BuildMI(), llvm::condCodeOp(), llvm::MachineRegisterInfo::constrainRegClass(), llvm::MachineRegisterInfo::createVirtualRegister(), DL, llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumbFunction(), MBB, llvm::Offset, llvm::predOps(), 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 627 of file ARMBaseRegisterInfo.cpp.
References assert(), canRealignStack(), llvm::MachineFunction::getFrameInfo(), getFrameRegister(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getLocalFrameMaxAlign(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::TargetFrameLowering::getStackAlign(), llvm::TargetFrameLowering::hasFP(), llvm::MachineFrameInfo::hasVarSizedObjects(), isFrameOffsetLegal(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumbFunction(), MI, llvm::Offset, and Opc.
|
override |
Definition at line 564 of file ARMBaseRegisterInfo.cpp.
|
override |
Code Generation virtual methods...
Definition at line 559 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 569 of file ARMBaseRegisterInfo.cpp.
|
override |
Definition at line 737 of file ARMBaseRegisterInfo.cpp.
References assert(), llvm::Done, llvm::MachineFunction::getInfo(), llvm::MachineFunction::getSubtarget(), llvm::ARMFunctionInfo::isThumb1OnlyFunction(), llvm::ARMFunctionInfo::isThumb2Function(), llvm::ARMFunctionInfo::isThumbFunction(), MBB, MI, llvm::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 927 of file ARMBaseRegisterInfo.cpp.
References llvm::dbgs(), llvm::ARMFunctionInfo::getCoalescedWeight(), llvm::TargetRegisterInfo::getRegClassWeight(), llvm::MachineRegisterInfo::getTargetRegisterInfo(), LLVM_DEBUG, MBB, and MI.
|
override |
|
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 57 of file ARMBaseRegisterInfo.h.
Referenced by canRealignStack(), getBaseRegister(), getReservedRegs(), and isInlineAsmReadOnlyReg().