|
LLVM 24.0.0git
|
#include "Target/X86/X86RegisterInfo.h"
Definition at line 25 of file X86RegisterInfo.h.
Definition at line 41 of file X86RegisterInfo.cpp.
References llvm::X86_MC::initLLVMToSEHAndCVRegMapping().
|
override |
Definition at line 757 of file X86RegisterInfo.cpp.
References assert().
|
override |
Definition at line 805 of file X86RegisterInfo.cpp.
References llvm::TargetRegisterInfo::canRealignStack(), llvm::MachineRegisterInfo::canReserveReg(), CantUseSP(), llvm::MachineFunction::getFrameInfo(), and llvm::MachineFunction::getRegInfo().
| const TargetRegisterClass * X86RegisterInfo::constrainRegClassToNonRex2 | ( | const TargetRegisterClass * | RC | ) | const |
Definition at line 1244 of file X86RegisterInfo.cpp.
References llvm::MCRegisterClass::getID().
Referenced by llvm::X86InstrInfo::getRegClass(), and suppressEGPRRegClass().
| void X86RegisterInfo::eliminateFrameIndex | ( | MachineBasicBlock::iterator | II, |
| unsigned | FIOperandNum, | ||
| Register | BaseReg, | ||
| int | FIOffset ) const |
Definition at line 871 of file X86RegisterInfo.cpp.
References assert(), llvm::MachineOperand::ChangeToImmediate(), II, Imm, llvm::isInt(), MI, llvm::Offset, and Opc.
|
override |
Definition at line 911 of file X86RegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::MachineOperand::ChangeToImmediate(), contains(), DL, llvm::StackOffset::getFixed(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReferenceSP(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getSubtarget(), llvm::X86FrameLowering::getWin64EHFrameIndexRef(), llvm::getX86SubSuperRegister(), II, Imm, llvm::X86FrameLowering::Is64Bit, llvm::MachineFrameInfo::isFixedObjectIndex(), llvm::isFuncletReturnInstr(), llvm::isInt(), MBB, MBBI, MI, llvm::Offset, Opc, TII, and tryOptimizeLEAtoMOV().
|
inlineoverride |
Process frame indices in forwards block order because X86InstrInfo::getSPAdjust relies on it when searching for the ADJCALLSTACKUP pseudo following a call.
TODO: Fix this and return true like all other targets.
Definition at line 145 of file X86RegisterInfo.h.
| 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 1033 of file X86RegisterInfo.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::LiveRegUnits::available(), llvm::MachineFunction::callsEHReturn(), llvm::MachineFunction::getRegInfo(), llvm::MachineRegisterInfo::isReserved(), MBB, MBBI, and llvm::LiveRegUnits::stepBackward().
|
inline |
Definition at line 158 of file X86RegisterInfo.h.
Referenced by getReservedRegs().
|
override |
getCalleeSavedRegs - Return a null-terminated list of all of the callee-save registers on this target.
Definition at line 212 of file X86RegisterInfo.cpp.
References llvm::CallingConv::AnyReg, assert(), llvm::MachineFunction::callsEHReturn(), 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::HiPE, llvm::CallingConv::Intel_OCL_BI, llvm::CallingConv::PreserveAll, llvm::CallingConv::PreserveMost, llvm::CallingConv::PreserveNone, 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 358 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 368 of file X86RegisterInfo.cpp.
References llvm::CallingConv::AnyReg, 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::HiPE, llvm::CallingConv::Intel_OCL_BI, llvm::CallingConv::PreserveAll, llvm::CallingConv::PreserveMost, llvm::CallingConv::PreserveNone, llvm::X86TargetLowering::supportSwiftError(), llvm::CallingConv::SwiftTail, llvm::CallingConv::Win64, llvm::CallingConv::X86_64_SysV, llvm::CallingConv::X86_INTR, and llvm::CallingConv::X86_RegCall.
|
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 181 of file X86RegisterInfo.cpp.
|
inlineoverride |
Definition at line 182 of file X86RegisterInfo.h.
|
override |
Definition at line 1279 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget().
Definition at line 497 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 163 of file X86RegisterInfo.h.
|
override |
Definition at line 1080 of file X86RegisterInfo.cpp.
References llvm::TargetFrameLowering::hasFP().
Referenced by getPtrSizedFrameRegister().
|
override |
getIPRACSRegs - This API can be removed when rbp is safe to optimized out when IPRA is on.
Definition at line 354 of file X86RegisterInfo.cpp.
|
override |
Definition at line 100 of file X86RegisterInfo.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), llvm::X86Subtarget::getCLOpts(), llvm::MCRegisterClass::getID(), getRegClass(), llvm::MachineFunction::getSubtarget(), llvm::X86Subtarget::hasAVX512(), I, isNonRex2RegClass(), and llvm::MCRegisterClass::superclasses().
|
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 87 of file X86RegisterInfo.cpp.
Definition at line 493 of file X86RegisterInfo.cpp.
|
override |
Return the number of registers for the function.
Definition at line 667 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget().
| Register X86RegisterInfo::getPtrSizedFrameRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 1086 of file X86RegisterInfo.cpp.
References getFrameRegister(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), and llvm::X86Subtarget::isTarget64BitILP32().
| Register X86RegisterInfo::getPtrSizedStackRegister | ( | const MachineFunction & | MF | ) | const |
Definition at line 1095 of file X86RegisterInfo.cpp.
References getStackRegister(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), and llvm::X86Subtarget::isTarget64BitILP32().
|
override |
Definition at line 1148 of file X86RegisterInfo.cpp.
References assert(), llvm::SetVector< T, Vector, Set, N >::clear(), llvm::MCRegisterClass::contains(), llvm::SetVector< T, Vector, Set, N >::contains(), llvm::SmallSet< T, N, C >::count(), llvm::dbgs(), llvm::format_hex(), llvm::MCRegisterClass::getID(), llvm::X86::getNonNDVariant(), llvm::VirtRegMap::getPhys(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), getTileShape(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::SmallSet< T, N, C >::insert(), llvm::Register::isPhysical(), llvm::MachineRegisterInfo::isReserved(), LLVM_DEBUG, Matrix, MI, llvm::MCRegister::NoRegister, llvm::MachineRegisterInfo::reg_nodbg_operands(), Register, and TRI.
|
override |
Definition at line 192 of file X86RegisterInfo.cpp.
References llvm::MCRegisterClass::getID(), and llvm::TargetFrameLowering::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 501 of file X86RegisterInfo.cpp.
References assert(), llvm::MachineFunction::exposesReturnsTwice(), llvm::MachineFunction::framePointerIsReserved(), getBaseRegister(), llvm::X86MachineFunctionInfo::getBPClobberedByInvoke(), llvm::Function::getCallingConv(), llvm::MachineFunction::getContext(), llvm::X86MachineFunctionInfo::getFPClobberedByInvoke(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getName(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::getX86SubSuperRegister(), llvm::CallingConv::GRAAL, llvm::X86Subtarget::hasAVX512(), hasBasePointer(), llvm::TargetFrameLowering::hasFP(), llvm::X86Subtarget::isLFI(), llvm::MCRegAliasIterator::isValid(), llvm::MCContext::reportError(), llvm::MCContext::reportWarning(), llvm::Reserved, llvm::MachineRegisterInfo::reservedRegsFrozen(), and llvm::MachineFunction::size().
|
inline |
Definition at line 165 of file X86RegisterInfo.h.
Referenced by llvm::X86AsmPrinter::emitInstruction(), and llvm::X86MachineFunctionInfo::setRestoreBasePointer().
|
inline |
Definition at line 157 of file X86RegisterInfo.h.
Referenced by getPtrSizedStackRegister().
|
override |
Definition at line 75 of file X86RegisterInfo.cpp.
| bool X86RegisterInfo::hasBasePointer | ( | const MachineFunction & | MF | ) | const |
Definition at line 781 of file X86RegisterInfo.cpp.
References CantUseSP(), llvm::X86Subtarget::getCLOpts(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::X86MachineFunctionInfo::getStackPtrSaveMI(), llvm::MachineFunction::getSubtarget(), and llvm::X86MachineFunctionInfo::hasPreallocatedCall().
Referenced by getReservedRegs().
|
override |
isArgumentReg - Returns true if Reg can be used as an argument to a function.
Definition at line 697 of file X86RegisterInfo.cpp.
References llvm::any_of(), llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), TRI, llvm::CallingConv::Win64, and llvm::CallingConv::X86_64_SysV.
|
override |
Returns true if PhysReg is a fixed register.
Definition at line 736 of file X86RegisterInfo.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::TargetFrameLowering::hasFP(), and TRI.
| bool X86RegisterInfo::isNonRex2RegClass | ( | const TargetRegisterClass * | RC | ) | const |
Definition at line 1264 of file X86RegisterInfo.cpp.
References llvm::MCRegisterClass::getID().
Referenced by getLargestLegalSuperClass().
| bool X86RegisterInfo::isTileRegisterClass | ( | const TargetRegisterClass * | RC | ) | const |
Return true if it is tile register class.
Definition at line 753 of file X86RegisterInfo.cpp.
References llvm::MCRegisterClass::getID().
|
inlineoverride |
Definition at line 177 of file X86RegisterInfo.h.
|
override |
Definition at line 824 of file X86RegisterInfo.cpp.
References llvm::Function::getCallingConv(), llvm::MachineFunction::getFunction(), llvm::TargetRegisterInfo::shouldRealignStack(), and llvm::CallingConv::X86_INTR.