Go to the documentation of this file.
13 #ifndef LLVM_LIB_TARGET_X86_X86MACHINEFUNCTIONINFO_H
14 #define LLVM_LIB_TARGET_X86_X86MACHINEFUNCTIONINFO_H
26 virtual void anchor();
32 bool ForceFramePointer =
false;
38 signed char RestoreBasePointerOffset = 0;
46 unsigned CalleeSavedFrameSize = 0;
51 unsigned BytesToPopOnReturn = 0;
54 int ReturnAddrIndex = 0;
57 int FrameAddrIndex = 0;
61 int TailCallReturnAddrDelta = 0;
74 int VarArgsFrameIndex = 0;
76 int RegSaveFrameIndex = 0;
78 unsigned VarArgsGPOffset = 0;
80 unsigned VarArgsFPOffset = 0;
83 unsigned ArgumentStackSize = 0;
85 unsigned NumLocalDynamics = 0;
88 bool HasPushSequences =
false;
92 bool HasSEHFramePtrSave =
false;
96 int SEHFramePtrSaveIndex = 0;
100 bool IsSplitCSR =
false;
103 bool UsesRedZone =
false;
106 bool HasDynAlloca =
false;
109 bool HasPreallocatedCall =
false;
114 bool HasSwiftAsyncContext =
false;
118 bool HasVirtualTileReg =
false;
150 return WinEHXMMSlotInfo; }
198 return ForwardedMustTailRegParms;
220 return SwiftAsyncContextFrameIdx;
227 PreallocatedStackSizes.push_back(0);
230 return Insert.first->second;
234 PreallocatedStackSizes[
Id] = StackSize;
238 assert(PreallocatedStackSizes[
Id] != 0 &&
"stack size not set");
239 return PreallocatedStackSizes[
Id];
247 assert(!PreallocatedArgOffsets[
Id].
empty() &&
"arg offsets not set");
248 return PreallocatedArgOffsets[
Id];
void setPreallocatedStackSize(size_t Id, size_t StackSize)
unsigned getArgumentStackSize() const
size_t getPreallocatedStackSize(const size_t Id)
This is an optimization pass for GlobalISel generic memory operations.
bool getRestoreBasePointer() const
const DenseMap< int, unsigned > & getWinEHXMMSlotInfo() const
Vector Rotate Left Mask Mask Insert
unsigned getNumLocalDynamicTLSAccesses() const
bool hasSwiftAsyncContext() const
void setRestoreBasePointer(const MachineFunction *MF)
void setCalleeSavedFrameSize(unsigned bytes)
Reg
All possible values of the reg field in the ModR/M byte.
void setHasSEHFramePtrSave(bool V)
void setFAIndex(int Index)
int getRestoreBasePointerOffset() const
void setHasDynAlloca(bool v)
bool hasDynAlloca() const
void setIsSplitCSR(bool s)
X86MachineFunctionInfo(MachineFunction &MF)
bool getHasPushSequences() const
bool hasPreallocatedCall() const
void setSEHFramePtrSaveIndex(int Index)
void setSwiftAsyncContextFrameIdx(int v)
int getTCReturnAddrDelta() const
unsigned getCalleeSavedFrameSize() const
int getRegSaveFrameIndex() const
void setPreallocatedArgOffsets(size_t Id, ArrayRef< size_t > AO)
void setVarArgsFPOffset(unsigned Offset)
unsigned getVarArgsGPOffset() const
void setRegSaveFrameIndex(int Idx)
void setHasPreallocatedCall(bool v)
void setForceFramePointer(bool forceFP)
void setTCReturnAddrDelta(int delta)
bool getUsesRedZone() const
DenseMap< int, unsigned > & getWinEHXMMSlotInfo()
multiplies can be turned into SHL s
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool hasVirtualTileReg() const
void setHasVirtualTileReg(bool v)
unsigned getVarArgsFPOffset() const
X86MachineFunctionInfo - This class is derived from MachineFunction and contains private X86 target-s...
X86MachineFunctionInfo()=default
void incNumLocalDynamicTLSAccesses()
auto size(R &&Range, std::enable_if_t< std::is_base_of< std::random_access_iterator_tag, typename std::iterator_traits< decltype(Range.begin())>::iterator_category >::value, void > *=nullptr)
Get the size of a range.
void setHasSwiftAsyncContext(bool v)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
unsigned getBytesToPopOnReturn() const
int getVarArgsFrameIndex() const
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
Optional< int > getSwiftAsyncContextFrameIdx() const
void setRAIndex(int Index)
Wrapper class representing virtual and physical registers.
void setBytesToPopOnReturn(unsigned bytes)
void setHasPushSequences(bool HasPush)
constexpr bool empty(const T &RangeOrContainer)
Test whether RangeOrContainer is empty. Similar to C++17 std::empty.
void assign(size_type NumElts, ValueParamT Elt)
void setUsesRedZone(bool V)
bool getHasSEHFramePtrSave() const
bool getForceFramePointer() const
void setArgumentStackSize(unsigned size)
Register getGlobalBaseReg() const
void setVarArgsFrameIndex(int Idx)
size_t getPreallocatedIdForCallSite(const Value *CS)
SmallVectorImpl< ForwardedRegister > & getForwardedMustTailRegParms()
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
ArrayRef< size_t > getPreallocatedArgOffsets(const size_t Id)
void setSRetReturnReg(Register Reg)
void setVarArgsGPOffset(unsigned Offset)
Register getSRetReturnReg() const
void setGlobalBaseReg(Register Reg)
int getSEHFramePtrSaveIndex() const
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
LLVM Value Representation.
reference emplace_back(ArgTypes &&... Args)