xref: /llvm-project/llvm/lib/Target/VE/VEMachineFunctionInfo.h (revision 69e75ae695d9ef1360a2a1fbefd6e0e0456c3f7b)
192600c2eSKazushi (Jam) Marukawa //===- VEMachineFunctionInfo.h - VE Machine Function Info -------*- C++ -*-===//
292600c2eSKazushi (Jam) Marukawa //
392600c2eSKazushi (Jam) Marukawa // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
492600c2eSKazushi (Jam) Marukawa // See https://llvm.org/LICENSE.txt for license information.
592600c2eSKazushi (Jam) Marukawa // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
692600c2eSKazushi (Jam) Marukawa //
792600c2eSKazushi (Jam) Marukawa //===----------------------------------------------------------------------===//
892600c2eSKazushi (Jam) Marukawa //
992600c2eSKazushi (Jam) Marukawa // This file declares  VE specific per-machine-function information.
1092600c2eSKazushi (Jam) Marukawa //
1192600c2eSKazushi (Jam) Marukawa //===----------------------------------------------------------------------===//
1292600c2eSKazushi (Jam) Marukawa #ifndef LLVM_LIB_TARGET_VE_VEMACHINEFUNCTIONINFO_H
1392600c2eSKazushi (Jam) Marukawa #define LLVM_LIB_TARGET_VE_VEMACHINEFUNCTIONINFO_H
1492600c2eSKazushi (Jam) Marukawa 
1592600c2eSKazushi (Jam) Marukawa #include "llvm/CodeGen/MachineFunction.h"
1692600c2eSKazushi (Jam) Marukawa 
1792600c2eSKazushi (Jam) Marukawa namespace llvm {
1892600c2eSKazushi (Jam) Marukawa 
1992600c2eSKazushi (Jam) Marukawa class VEMachineFunctionInfo : public MachineFunctionInfo {
2092600c2eSKazushi (Jam) Marukawa   virtual void anchor();
2192600c2eSKazushi (Jam) Marukawa 
2292600c2eSKazushi (Jam) Marukawa private:
2360431bd7SKazushi (Jam) Marukawa   Register GlobalBaseReg;
2460431bd7SKazushi (Jam) Marukawa 
2507c9f757SKazushi (Jam) Marukawa   /// VarArgsFrameOffset - Frame offset to start of varargs area.
2607c9f757SKazushi (Jam) Marukawa   int VarArgsFrameOffset;
2707c9f757SKazushi (Jam) Marukawa 
2892600c2eSKazushi (Jam) Marukawa   /// IsLeafProc - True if the function is a leaf procedure.
2992600c2eSKazushi (Jam) Marukawa   bool IsLeafProc;
3092600c2eSKazushi (Jam) Marukawa 
3192600c2eSKazushi (Jam) Marukawa public:
VEMachineFunctionInfo()32f3a344d2SKazu Hirata   VEMachineFunctionInfo() : VarArgsFrameOffset(0), IsLeafProc(false) {}
VEMachineFunctionInfo(const Function & F,const TargetSubtargetInfo * STI)33*69e75ae6SMatt Arsenault   VEMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
34f3a344d2SKazu Hirata       : VarArgsFrameOffset(0), IsLeafProc(false) {}
3560431bd7SKazushi (Jam) Marukawa 
36cc5a1b3dSMatt Arsenault   MachineFunctionInfo *
37cc5a1b3dSMatt Arsenault   clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF,
38cc5a1b3dSMatt Arsenault         const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
39cc5a1b3dSMatt Arsenault       const override;
40cc5a1b3dSMatt Arsenault 
getGlobalBaseReg()4160431bd7SKazushi (Jam) Marukawa   Register getGlobalBaseReg() const { return GlobalBaseReg; }
setGlobalBaseReg(Register Reg)4260431bd7SKazushi (Jam) Marukawa   void setGlobalBaseReg(Register Reg) { GlobalBaseReg = Reg; }
4307c9f757SKazushi (Jam) Marukawa 
getVarArgsFrameOffset()4407c9f757SKazushi (Jam) Marukawa   int getVarArgsFrameOffset() const { return VarArgsFrameOffset; }
setVarArgsFrameOffset(int Offset)4507c9f757SKazushi (Jam) Marukawa   void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; }
4692600c2eSKazushi (Jam) Marukawa 
setLeafProc(bool rhs)4792600c2eSKazushi (Jam) Marukawa   void setLeafProc(bool rhs) { IsLeafProc = rhs; }
isLeafProc()4892600c2eSKazushi (Jam) Marukawa   bool isLeafProc() const { return IsLeafProc; }
4992600c2eSKazushi (Jam) Marukawa };
5092600c2eSKazushi (Jam) Marukawa } // namespace llvm
5192600c2eSKazushi (Jam) Marukawa 
5292600c2eSKazushi (Jam) Marukawa #endif
53