LLVM 22.0.0git
XtensaMachineFunctionInfo.h
Go to the documentation of this file.
1//==- XtensaMachineFunctionInfo.h - Xtensa machine function info --*- C++ -*-=//
2//
3// The LLVM Compiler Infrastructure
4//
5// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
6// See https://llvm.org/LICENSE.txt for license information.
7// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8//
9//===----------------------------------------------------------------------===//
10//
11// This file declares Xtensa-specific per-machine-function information.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_LIB_TARGET_XTENSA_XTENSAMACHINEFUNCTIONINFO_H
16#define LLVM_LIB_TARGET_XTENSA_XTENSAMACHINEFUNCTIONINFO_H
17
21
22namespace llvm {
23
25 /// FrameIndex of the spill slot for the scratch register in BranchRelaxation.
26 int BranchRelaxationScratchFrameIndex = -1;
27 unsigned VarArgsFirstGPR;
28 int VarArgsOnStackFrameIndex;
29 int VarArgsInRegsFrameIndex;
30 bool SaveFrameRegister = false;
31 unsigned CPLabelId = 0;
32
33public:
35 const TargetSubtargetInfo *STI)
36 : VarArgsFirstGPR(0), VarArgsOnStackFrameIndex(0),
37 VarArgsInRegsFrameIndex(0) {}
38
40 return BranchRelaxationScratchFrameIndex;
41 }
43 BranchRelaxationScratchFrameIndex = Index;
44 }
45
46 unsigned getVarArgsFirstGPR() const { return VarArgsFirstGPR; }
47 void setVarArgsFirstGPR(unsigned GPR) { VarArgsFirstGPR = GPR; }
48
49 int getVarArgsOnStackFrameIndex() const { return VarArgsOnStackFrameIndex; }
50 void setVarArgsOnStackFrameIndex(int FI) { VarArgsOnStackFrameIndex = FI; }
51
52 // Get and set the frame index of the first stack vararg.
53 int getVarArgsInRegsFrameIndex() const { return VarArgsInRegsFrameIndex; }
54 void setVarArgsInRegsFrameIndex(int FI) { VarArgsInRegsFrameIndex = FI; }
55
56 bool isSaveFrameRegister() const { return SaveFrameRegister; }
57 void setSaveFrameRegister() { SaveFrameRegister = true; }
58
59 unsigned createCPLabelId() { return CPLabelId++; }
60};
61
62} // namespace llvm
63
64#endif /* LLVM_LIB_TARGET_XTENSA_XTENSAMACHINEFUNCTIONINFO_H */
uint32_t Index
#define F(x, y, z)
Definition: MD5.cpp:55
TargetSubtargetInfo - Generic base class for all target subtargets.
XtensaMachineFunctionInfo(const Function &F, const TargetSubtargetInfo *STI)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...