123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- //=- LoongArchMachineFunctionInfo.h - LoongArch machine function info -----===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file declares LoongArch-specific per-machine-function information.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_LIB_TARGET_LOONGARCH_LOONGARCHMACHINEFUNCTIONINFO_H
- #define LLVM_LIB_TARGET_LOONGARCH_LOONGARCHMACHINEFUNCTIONINFO_H
- #include "LoongArchSubtarget.h"
- #include "llvm/CodeGen/MachineFrameInfo.h"
- #include "llvm/CodeGen/MachineFunction.h"
- namespace llvm {
- /// LoongArchMachineFunctionInfo - This class is derived from
- /// MachineFunctionInfo and contains private LoongArch-specific information for
- /// each MachineFunction.
- class LoongArchMachineFunctionInfo : public MachineFunctionInfo {
- private:
- /// FrameIndex for start of varargs area
- int VarArgsFrameIndex = 0;
- /// Size of the save area used for varargs
- int VarArgsSaveSize = 0;
- /// Size of stack frame to save callee saved registers
- unsigned CalleeSavedStackSize = 0;
- /// FrameIndex of the spill slot when there is no scavenged register in
- /// insertIndirectBranch.
- int BranchRelaxationSpillFrameIndex = -1;
- public:
- LoongArchMachineFunctionInfo(const Function &F,
- const TargetSubtargetInfo *STI) {}
- MachineFunctionInfo *
- clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF,
- const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
- const override {
- return DestMF.cloneInfo<LoongArchMachineFunctionInfo>(*this);
- }
- int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
- void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; }
- unsigned getVarArgsSaveSize() const { return VarArgsSaveSize; }
- void setVarArgsSaveSize(int Size) { VarArgsSaveSize = Size; }
- unsigned getCalleeSavedStackSize() const { return CalleeSavedStackSize; }
- void setCalleeSavedStackSize(unsigned Size) { CalleeSavedStackSize = Size; }
- int getBranchRelaxationSpillFrameIndex() {
- return BranchRelaxationSpillFrameIndex;
- }
- void setBranchRelaxationSpillFrameIndex(int Index) {
- BranchRelaxationSpillFrameIndex = Index;
- }
- };
- } // end namespace llvm
- #endif // LLVM_LIB_TARGET_LOONGARCH_LOONGARCHMACHINEFUNCTIONINFO_H
|