13#ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCHMACHINEFUNCTIONINFO_H
14#define LLVM_LIB_TARGET_LOONGARCH_LOONGARCHMACHINEFUNCTIONINFO_H
29 int VarArgsFrameIndex = 0;
31 int VarArgsSaveSize = 0;
34 unsigned CalleeSavedStackSize = 0;
45 int BranchRelaxationSpillFrameIndex = -1;
54 bool HasDynamicAllocation =
false;
77 IncomingIndirectArgs[ArgIndex] =
Reg;
80 auto It = IncomingIndirectArgs.find(ArgIndex);
81 assert(It != IncomingIndirectArgs.end() &&
"No incoming indirect arg");
86 return BranchRelaxationSpillFrameIndex;
89 BranchRelaxationSpillFrameIndex = Index;
99 JumpInfos.push_back(std::make_pair(JrMI, JTIIdx));
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file defines the DenseMap class.
bool hasDynamicAllocation() const
void setIncomingIndirectArg(unsigned ArgIndex, Register Reg)
void setDynamicAllocation()
void addSExt32Register(Register Reg)
int getJumpInfoJTIIndex(unsigned Idx)
LoongArchMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
void setVarArgsFrameIndex(int Index)
int getBranchRelaxationSpillFrameIndex()
int getVarArgsFrameIndex() const
unsigned getJumpInfoSize()
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
void setBranchRelaxationSpillFrameIndex(int Index)
void setVarArgsSaveSize(int Size)
MachineInstr * getJumpInfoJrMI(unsigned Idx)
unsigned getVarArgsSaveSize() const
unsigned getCalleeSavedStackSize() const
Register getIncomingIndirectArg(unsigned ArgIndex) const
void setJumpInfo(MachineInstr *JrMI, int JTIIdx)
void setCalleeSavedStackSize(unsigned Size)
bool isSExt32Register(Register Reg) const
Ty * cloneInfo(const Ty &Old)
Representation of each machine instruction.
Wrapper class representing virtual and physical registers.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
TargetSubtargetInfo - Generic base class for all target subtargets.
This is an optimization pass for GlobalISel generic memory operations.
bool is_contained(R &&Range, const E &Element)
Returns true if Element is found in Range.
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...