LLVM
17.0.0git
|
#include "Target/X86/X86RegisterInfo.h"
Public Member Functions | |
X86RegisterInfo (const Triple &TT) | |
int | getSEHRegNum (unsigned i) const |
const TargetRegisterClass * | getMatchingSuperRegClass (const TargetRegisterClass *A, const TargetRegisterClass *B, unsigned Idx) const override |
getMatchingSuperRegClass - Return a subclass of the specified register class A so that each register in it has a sub-register of the specified sub-register index which is in the specified register class B. More... | |
const TargetRegisterClass * | getSubClassWithSubReg (const TargetRegisterClass *RC, unsigned Idx) const override |
const TargetRegisterClass * | getLargestLegalSuperClass (const TargetRegisterClass *RC, const MachineFunction &MF) const override |
bool | shouldRewriteCopySrc (const TargetRegisterClass *DefRC, unsigned DefSubReg, const TargetRegisterClass *SrcRC, unsigned SrcSubReg) const override |
const TargetRegisterClass * | getPointerRegClass (const MachineFunction &MF, unsigned Kind=0) const override |
getPointerRegClass - Returns a TargetRegisterClass used for pointer values. More... | |
const TargetRegisterClass * | getCrossCopyRegClass (const TargetRegisterClass *RC) const override |
getCrossCopyRegClass - Returns a legal register class to copy a register in the specified class to or from. More... | |
const TargetRegisterClass * | getGPRsForTailCall (const MachineFunction &MF) const |
getGPRsForTailCall - Returns a register class with registers that can be used in forming tail calls. More... | |
unsigned | getRegPressureLimit (const TargetRegisterClass *RC, MachineFunction &MF) const override |
const MCPhysReg * | getCalleeSavedRegs (const MachineFunction *MF) const override |
getCalleeSavedRegs - Return a null-terminated list of all of the callee-save registers on this target. More... | |
const MCPhysReg * | getCalleeSavedRegsViaCopy (const MachineFunction *MF) const |
const uint32_t * | getCallPreservedMask (const MachineFunction &MF, CallingConv::ID) const override |
const uint32_t * | getNoPreservedMask () const override |
const uint32_t * | getDarwinTLSCallPreservedMask () const |
BitVector | getReservedRegs (const MachineFunction &MF) const override |
getReservedRegs - Returns a bitset indexed by physical register number indicating if a register is a special register that has particular uses and should be considered unavailable at all times, e.g. More... | |
bool | isArgumentRegister (const MachineFunction &MF, MCRegister Reg) const override |
isArgumentReg - Returns true if Reg can be used as an argument to a function. More... | |
bool | isTileRegisterClass (const TargetRegisterClass *RC) const |
Return true if it is tile register class. More... | |
bool | isFixedRegister (const MachineFunction &MF, MCRegister PhysReg) const override |
Returns true if PhysReg is a fixed register. More... | |
void | adjustStackMapLiveOutMask (uint32_t *Mask) const override |
bool | hasBasePointer (const MachineFunction &MF) const |
bool | canRealignStack (const MachineFunction &MF) const override |
bool | eliminateFrameIndex (MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override |
unsigned | findDeadCallerSavedReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI) const |
findDeadCallerSavedReg - Return a caller-saved register that isn't live when it reaches the "return" instruction. More... | |
Register | getFrameRegister (const MachineFunction &MF) const override |
unsigned | getPtrSizedFrameRegister (const MachineFunction &MF) const |
unsigned | getPtrSizedStackRegister (const MachineFunction &MF) const |
Register | getStackRegister () const |
Register | getBaseRegister () const |
Register | getFramePtr () const |
Returns physical register used as frame pointer. More... | |
unsigned | getSlotSize () const |
bool | getRegAllocationHints (Register VirtReg, ArrayRef< MCPhysReg > Order, SmallVectorImpl< MCPhysReg > &Hints, const MachineFunction &MF, const VirtRegMap *VRM, const LiveRegMatrix *Matrix) const override |
Definition at line 24 of file X86RegisterInfo.h.
Definition at line 48 of file X86RegisterInfo.cpp.
References llvm::N86::EBX, llvm::N86::ESI, llvm::N86::ESP, llvm::X86_MC::initLLVMToSEHAndCVRegMapping(), and X86.
|
override |
Definition at line 683 of file X86RegisterInfo.cpp.
References assert(), and llvm::BitmaskEnumDetail::Mask().
|
override |
Definition at line 726 of file X86RegisterInfo.cpp.
References llvm::TargetRegisterInfo::canRealignStack(), llvm::MachineRegisterInfo::canReserveReg(), CantUseSP(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getRegInfo(), and MRI.
Referenced by llvm::X86InstrInfo::loadRegFromStackSlot(), and llvm::X86InstrInfo::storeRegToStackSlot().
|
override |
Definition at line 786 of file X86RegisterInfo.cpp.
References assert(), llvm::MachineOperand::ChangeToImmediate(), contains(), llvm::MachineBasicBlock::end(), false, llvm::ISD::FrameIndex, llvm::MachineBasicBlock::getFirstTerminator(), llvm::StackOffset::getFixed(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReferenceSP(), llvm::MachineFunction::getFrameInfo(), llvm::MachineBasicBlock::getParent(), llvm::X86FrameLowering::getWin64EHFrameIndexRef(), llvm::getX86SubSuperRegister(), llvm::RISCVMatInt::Imm, int, llvm::X86FrameLowering::Is64Bit, llvm::MachineBasicBlock::isEHFuncletEntry(), llvm::MachineFrameInfo::isFixedObjectIndex(), isFuncletReturnInstr(), MBB, MBBI, MI, llvm::Offset, llvm::ISD::PATCHPOINT, llvm::ISD::STACKMAP, and tryOptimizeLEAtoMOV().
unsigned X86RegisterInfo::findDeadCallerSavedReg | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator & | MBBI | ||
) | const |
findDeadCallerSavedReg - Return a caller-saved register that isn't live when it reaches the "return" instruction.
We can then pop a stack object to this register without worry about clobbering it.
Definition at line 866 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::callsEHReturn(), E, llvm::ISD::EH_RETURN, llvm::MachineBasicBlock::end(), llvm::N86::ESP, getGPRsForTailCall(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), I, llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::MCRegAliasIterator::isValid(), MBB, MBBI, llvm::ARCISD::RET, and Uses.
Referenced by llvm::X86FrameLowering::emitSPUpdate().
|
inline |
Definition at line 151 of file X86RegisterInfo.h.
Referenced by llvm::X86FrameLowering::determineCalleeSaves(), llvm::X86FrameLowering::emitPrologue(), llvm::X86FrameLowering::getFrameIndexReference(), getReservedRegs(), and llvm::X86FrameLowering::restoreWin32EHStackPointers().
|
override |
getCalleeSavedRegs - Return a null-terminated list of all of the callee-save registers on this target.
Definition at line 278 of file X86RegisterInfo.cpp.
References llvm::CallingConv::AnyReg, assert(), llvm::MachineFunction::callsEHReturn(), CC, llvm::CallingConv::CFGuard_Check, llvm::CallingConv::Cold, llvm::CallingConv::CXX_FAST_TLS, F, llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getSubtarget(), llvm::X86Subtarget::getTargetLowering(), llvm::CallingConv::GHC, llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::Function::hasFnAttribute(), llvm::X86Subtarget::hasSSE1(), llvm::CallingConv::HHVM, llvm::CallingConv::HiPE, llvm::CallingConv::Intel_OCL_BI, llvm::CallingConv::PreserveAll, llvm::CallingConv::PreserveMost, llvm::X86TargetLowering::supportSwiftError(), llvm::CallingConv::SwiftTail, llvm::CallingConv::Win64, llvm::CallingConv::X86_64_SysV, llvm::CallingConv::X86_INTR, and llvm::CallingConv::X86_RegCall.
const MCPhysReg * X86RegisterInfo::getCalleeSavedRegsViaCopy | ( | const MachineFunction * | MF | ) | const |
Definition at line 406 of file X86RegisterInfo.cpp.
References assert(), llvm::CallingConv::CXX_FAST_TLS, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), and llvm::X86MachineFunctionInfo::isSplitCSR().
|
override |
Definition at line 416 of file X86RegisterInfo.cpp.
References llvm::CallingConv::AnyReg, assert(), CC, llvm::CallingConv::CFGuard_Check, llvm::CallingConv::Cold, llvm::CallingConv::CXX_FAST_TLS, F, llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::X86Subtarget::getTargetLowering(), llvm::CallingConv::GHC, llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm::CallingConv::HHVM, llvm::CallingConv::HiPE, llvm::CallingConv::Intel_OCL_BI, llvm::CallingConv::PreserveAll, llvm::CallingConv::PreserveMost, llvm::X86TargetLowering::supportSwiftError(), llvm::CallingConv::SwiftTail, llvm::CallingConv::Win64, llvm::CallingConv::X86_64_SysV, llvm::CallingConv::X86_INTR, and llvm::CallingConv::X86_RegCall.
Referenced by getReservedRegs().
|
override |
getCrossCopyRegClass - Returns a legal register class to copy a register in the specified class to or from.
Returns NULL if it is possible to copy between a two registers of the specified class.
Definition at line 247 of file X86RegisterInfo.cpp.
Definition at line 527 of file X86RegisterInfo.cpp.
|
inline |
Returns physical register used as frame pointer.
This will always returns the frame pointer register, contrary to getFrameRegister() which returns the "base pointer" in situations involving a stack, frame and base pointer.
Definition at line 156 of file X86RegisterInfo.h.
Referenced by llvm::X86FrameLowering::getFrameIndexReference().
|
override |
Definition at line 915 of file X86RegisterInfo.cpp.
References llvm::X86FrameLowering::hasFP().
Referenced by llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::X86FrameLowering::emitCalleeSavedFrameMovesFullCFA(), llvm::X86FrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitPrologue(), llvm::X86FrameLowering::getFrameIndexReference(), getPtrSizedFrameRegister(), and llvm::X86FrameLowering::restoreWin32EHStackPointers().
const TargetRegisterClass * X86RegisterInfo::getGPRsForTailCall | ( | const MachineFunction & | MF | ) | const |
getGPRsForTailCall - Returns a register class with registers that can be used in forming tail calls.
Definition at line 233 of file X86RegisterInfo.cpp.
References F, llvm::MachineFunction::getFunction(), llvm::CallingConv::HiPE, and llvm::CallingConv::Win64.
Referenced by findDeadCallerSavedReg(), and getPointerRegClass().
|
override |
Definition at line 110 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::TargetRegisterClass::getSuperClasses(), llvm::X86Subtarget::hasAVX512(), and I.
|
override |
getMatchingSuperRegClass - Return a subclass of the specified register class A so that each register in it has a sub-register of the specified sub-register index which is in the specified register class B.
Definition at line 97 of file X86RegisterInfo.cpp.
References B.
Definition at line 523 of file X86RegisterInfo.cpp.
|
override |
getPointerRegClass - Returns a TargetRegisterClass used for pointer values.
Definition at line 177 of file X86RegisterInfo.cpp.
References getGPRsForTailCall(), llvm::MachineFunction::getSubtarget(), llvm::X86FrameLowering::hasFP(), llvm::X86Subtarget::isTarget64BitLP64(), llvm_unreachable, and llvm::X86FrameLowering::Uses64BitFramePtr.
unsigned X86RegisterInfo::getPtrSizedFrameRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 921 of file X86RegisterInfo.cpp.
References getFrameRegister(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), and llvm::X86Subtarget::isTarget64BitILP32().
Referenced by llvm::X86TargetLowering::getRegisterByName().
unsigned X86RegisterInfo::getPtrSizedStackRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 930 of file X86RegisterInfo.cpp.
References getStackRegister(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), and llvm::X86Subtarget::isTarget64BitILP32().
|
override |
Definition at line 974 of file X86RegisterInfo.cpp.
References llvm::SmallVectorImpl< T >::clear(), llvm::TargetRegisterClass::contains(), llvm::dbgs(), llvm::format_hex(), llvm::TargetRegisterClass::getID(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), getTileShape(), llvm::SmallSet< T, N, C >::insert(), llvm::MachineRegisterInfo::isReserved(), LLVM_DEBUG, Matrix, MRI, and llvm::MCRegister::NoRegister.
|
override |
Definition at line 258 of file X86RegisterInfo.cpp.
References llvm::TargetRegisterClass::getID(), and llvm::X86FrameLowering::hasFP().
|
override |
getReservedRegs - Returns a bitset indexed by physical register number indicating if a register is a special register that has particular uses and should be considered unavailable at all times, e.g.
SP, RA. This is used by register scavenger to determine what registers are free.
Definition at line 531 of file X86RegisterInfo.cpp.
References assert(), CC, llvm::MachineOperand::clobbersPhysReg(), llvm::X86AS::FS, getBaseRegister(), llvm::Function::getCallingConv(), getCallPreservedMask(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), llvm::X86AS::GS, llvm::X86Subtarget::hasAVX512(), hasBasePointer(), llvm::X86FrameLowering::hasFP(), llvm::MCRegAliasIterator::isValid(), n, llvm::report_fatal_error(), llvm::Reserved, llvm::X86AS::SS, and SubReg.
int X86RegisterInfo::getSEHRegNum | ( | unsigned | i | ) | const |
Definition at line 80 of file X86RegisterInfo.cpp.
References i.
|
inline |
Definition at line 158 of file X86RegisterInfo.h.
Referenced by llvm::X86AsmPrinter::emitInstruction(), llvm::X86FrameLowering::getInitialCFAOffset(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::X86MachineFunctionInfo::setRestoreBasePointer(), and llvm::X86FrameLowering::X86FrameLowering().
|
inline |
Definition at line 150 of file X86RegisterInfo.h.
Referenced by llvm::X86FrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReferenceSP(), getPtrSizedStackRegister(), llvm::X86FrameLowering::getWin64EHFrameIndexRef(), llvm::X86FrameLowering::X86FrameLowering(), and llvm::X86TargetLowering::X86TargetLowering().
|
override |
Definition at line 85 of file X86RegisterInfo.cpp.
bool X86RegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 707 of file X86RegisterInfo.cpp.
References CantUseSP(), EnableBasePointer, llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), and llvm::X86MachineFunctionInfo::hasPreallocatedCall().
Referenced by llvm::X86FrameLowering::canSimplifyCallFramePseudos(), llvm::X86FrameLowering::determineCalleeSaves(), llvm::X86FrameLowering::emitPrologue(), llvm::X86FrameLowering::getFrameIndexReference(), and getReservedRegs().
|
override |
isArgumentReg - Returns true if Reg can be used as an argument to a function.
Definition at line 623 of file X86RegisterInfo.cpp.
References llvm::any_of(), CC, llvm::N86::EAX, llvm::N86::ECX, llvm::N86::EDX, llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::MCRegisterInfo::isSuperOrSubRegisterEq(), llvm::ARM_MB::ST, TRI, llvm::CallingConv::Win64, and llvm::CallingConv::X86_64_SysV.
|
override |
Returns true if PhysReg is a fixed register.
Definition at line 662 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::X86FrameLowering::hasFP(), llvm::MCRegisterInfo::isSuperOrSubRegisterEq(), llvm::ARM_MB::ST, and TRI.
bool X86RegisterInfo::isTileRegisterClass | ( | const TargetRegisterClass * | RC | ) | const |
Return true if it is tile register class.
Definition at line 679 of file X86RegisterInfo.cpp.
References llvm::TargetRegisterClass::getID().
|
override |
Definition at line 217 of file X86RegisterInfo.cpp.
References llvm::TargetRegisterClass::hasSuperClassEq(), and llvm::TargetRegisterInfo::shouldRewriteCopySrc().