LLVM  9.0.0svn
SystemZMachineFunctionInfo.h
Go to the documentation of this file.
1 //=== SystemZMachineFunctionInfo.h - SystemZ machine function info -*- C++ -*-//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINEFUNCTIONINFO_H
10 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINEFUNCTIONINFO_H
11 
13 
14 namespace llvm {
15 
17  virtual void anchor();
18  unsigned LowSavedGPR;
19  unsigned HighSavedGPR;
20  unsigned VarArgsFirstGPR;
21  unsigned VarArgsFirstFPR;
22  unsigned VarArgsFrameIndex;
23  unsigned RegSaveFrameIndex;
24  int FramePointerSaveIndex;
25  bool ManipulatesSP;
26  unsigned NumLocalDynamics;
27 
28 public:
30  : LowSavedGPR(0), HighSavedGPR(0), VarArgsFirstGPR(0), VarArgsFirstFPR(0),
31  VarArgsFrameIndex(0), RegSaveFrameIndex(0), FramePointerSaveIndex(0),
32  ManipulatesSP(false), NumLocalDynamics(0) {}
33 
34  // Get and set the first call-saved GPR that should be saved and restored
35  // by this function. This is 0 if no GPRs need to be saved or restored.
36  unsigned getLowSavedGPR() const { return LowSavedGPR; }
37  void setLowSavedGPR(unsigned Reg) { LowSavedGPR = Reg; }
38 
39  // Get and set the last call-saved GPR that should be saved and restored
40  // by this function.
41  unsigned getHighSavedGPR() const { return HighSavedGPR; }
42  void setHighSavedGPR(unsigned Reg) { HighSavedGPR = Reg; }
43 
44  // Get and set the number of fixed (as opposed to variable) arguments
45  // that are passed in GPRs to this function.
46  unsigned getVarArgsFirstGPR() const { return VarArgsFirstGPR; }
47  void setVarArgsFirstGPR(unsigned GPR) { VarArgsFirstGPR = GPR; }
48 
49  // Likewise FPRs.
50  unsigned getVarArgsFirstFPR() const { return VarArgsFirstFPR; }
51  void setVarArgsFirstFPR(unsigned FPR) { VarArgsFirstFPR = FPR; }
52 
53  // Get and set the frame index of the first stack vararg.
54  unsigned getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
55  void setVarArgsFrameIndex(unsigned FI) { VarArgsFrameIndex = FI; }
56 
57  // Get and set the frame index of the register save area
58  // (i.e. the incoming stack pointer).
59  unsigned getRegSaveFrameIndex() const { return RegSaveFrameIndex; }
60  void setRegSaveFrameIndex(unsigned FI) { RegSaveFrameIndex = FI; }
61 
62  // Get and set the frame index of where the old frame pointer is stored.
63  int getFramePointerSaveIndex() const { return FramePointerSaveIndex; }
64  void setFramePointerSaveIndex(int Idx) { FramePointerSaveIndex = Idx; }
65 
66  // Get and set whether the function directly manipulates the stack pointer,
67  // e.g. through STACKSAVE or STACKRESTORE.
68  bool getManipulatesSP() const { return ManipulatesSP; }
69  void setManipulatesSP(bool MSP) { ManipulatesSP = MSP; }
70 
71  // Count number of local-dynamic TLS symbols used.
72  unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics; }
73  void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics; }
74 };
75 
76 } // end namespace llvm
77 
78 #endif
This class represents lattice values for constants.
Definition: AllocatorList.h:23
class llvm::RegisterBankInfo GPR
unsigned Reg
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
static const MCPhysReg FPR[]
FPR - The set of FP registers that should be allocated for arguments, on Darwin.