9#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGONMACHINEFUNCTIONINFO_H
10#define LLVM_LIB_TARGET_HEXAGON_HEXAGONMACHINEFUNCTIONINFO_H
34 unsigned SRetReturnReg = 0;
36 int VarArgsFrameIndex;
37 int RegSavedAreaStartFrameIndex;
38 int FirstNamedArgFrameIndex;
39 int LastNamedArgFrameIndex;
40 bool HasClobberLR =
false;
41 bool HasEHReturn =
false;
42 std::map<const MachineInstr*, unsigned> PacketInfo;
43 virtual void anchor();
80 auto It = PacketInfo.find(
MI);
84 auto It = PacketInfo.find(
MI);
Register const TargetRegisterInfo * TRI
Hexagon target-specific information for each MachineFunction.
void setStartPacket(MachineInstr *MI)
bool isStartPacket(const MachineInstr *MI) const
bool isEndPacket(const MachineInstr *MI) const
int getVarArgsFrameIndex()
void setEndPacket(MachineInstr *MI)
void setStackAlignBaseReg(Register R)
void setSRetReturnReg(unsigned Reg)
int getLastNamedArgFrameIndex()
void setLastNamedArgFrameIndex(int v)
unsigned getSRetReturnReg() const
int getFirstNamedArgFrameIndex()
void setFirstNamedArgFrameIndex(int v)
void setVarArgsFrameIndex(int v)
void setRegSavedAreaStartFrameIndex(int v)
int getRegSavedAreaStartFrameIndex()
HexagonMachineFunctionInfo()=default
void setHasEHReturn(bool H=true)
bool hasClobberLR() const
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
Register getStackAlignBaseReg() const
void initializeBaseYamlFields(const yaml::HexagonFunctionInfo &YamlMFI)
HexagonMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
void setHasClobberLR(bool v)
Representation of each machine instruction.
Wrapper class representing virtual and physical registers.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
TargetSubtargetInfo - Generic base class for all target subtargets.
void mapOptional(StringRef Key, T &Val)
const unsigned int EndPacket
const unsigned int StartPacket
This is an optimization pass for GlobalISel generic memory operations.
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...
Hexagon-specific MachineFunction properties for YAML serialization.
void mappingImpl(yaml::IO &YamlIO) override
HexagonFunctionInfo()=default
~HexagonFunctionInfo() override=default
StringValue StackAlignBaseReg
Targets should override this in a way that mirrors the implementation of llvm::MachineFunctionInfo.
static void mapping(IO &YamlIO, HexagonFunctionInfo &MFI)
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
A wrapper around std::string which contains a source range that's being set during parsing.