1 //=== SystemZMachineFunctionInfo.h - SystemZ machine function info -*- C++ -*-//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINEFUNCTIONINFO_H
10 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZMACHINEFUNCTIONINFO_H
12 #include "llvm/CodeGen/MachineFunction.h"
16 class SystemZMachineFunctionInfo
: public MachineFunctionInfo
{
17 virtual void anchor();
19 unsigned HighSavedGPR
;
20 unsigned VarArgsFirstGPR
;
21 unsigned VarArgsFirstFPR
;
22 unsigned VarArgsFrameIndex
;
23 unsigned RegSaveFrameIndex
;
24 int FramePointerSaveIndex
;
26 unsigned NumLocalDynamics
;
29 explicit SystemZMachineFunctionInfo(MachineFunction
&MF
)
30 : LowSavedGPR(0), HighSavedGPR(0), VarArgsFirstGPR(0), VarArgsFirstFPR(0),
31 VarArgsFrameIndex(0), RegSaveFrameIndex(0), FramePointerSaveIndex(0),
32 ManipulatesSP(false), NumLocalDynamics(0) {}
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
; }
39 // Get and set the last call-saved GPR that should be saved and restored
41 unsigned getHighSavedGPR() const { return HighSavedGPR
; }
42 void setHighSavedGPR(unsigned Reg
) { HighSavedGPR
= Reg
; }
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
; }
50 unsigned getVarArgsFirstFPR() const { return VarArgsFirstFPR
; }
51 void setVarArgsFirstFPR(unsigned FPR
) { VarArgsFirstFPR
= FPR
; }
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
; }
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
; }
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
; }
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
; }
71 // Count number of local-dynamic TLS symbols used.
72 unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics
; }
73 void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics
; }
76 } // end namespace llvm