MLIR 22.0.0git
Pass.h
Go to the documentation of this file.
1//===- Pass.h - TableGen pass definitions -----------------------*- 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 MLIR_TABLEGEN_PASS_H_
10#define MLIR_TABLEGEN_PASS_H_
11
12#include "mlir/Support/LLVM.h"
13#include <vector>
14
15namespace llvm {
16class Record;
17} // namespace llvm
18
19namespace mlir {
20namespace tblgen {
21//===----------------------------------------------------------------------===//
22// PassOption
23//===----------------------------------------------------------------------===//
25public:
26 explicit PassOption(const llvm::Record *def) : def(def) {}
27
28 /// Return the name for the C++ option variable.
29 StringRef getCppVariableName() const;
30
31 /// Return the command line argument to use for this option.
32 StringRef getArgument() const;
33
34 /// Return the C++ type of the option.
35 StringRef getType() const;
36
37 /// Return the default value of the option.
38 std::optional<StringRef> getDefaultValue() const;
39
40 /// Return the description for this option.
41 StringRef getDescription() const;
42
43 /// Return the additional flags passed to the option constructor.
44 std::optional<StringRef> getAdditionalFlags() const;
45
46 /// Flag indicating if this is a list option.
47 bool isListOption() const;
48
49private:
50 const llvm::Record *def;
51};
52
53//===----------------------------------------------------------------------===//
54// PassStatistic
55//===----------------------------------------------------------------------===//
57public:
58 explicit PassStatistic(const llvm::Record *def) : def(def) {}
59
60 /// Return the name for the C++ statistic variable.
61 StringRef getCppVariableName() const;
62
63 /// Return the name of the statistic.
64 StringRef getName() const;
65
66 /// Return the description for this statistic.
67 StringRef getDescription() const;
68
69private:
70 const llvm::Record *def;
71};
72
73//===----------------------------------------------------------------------===//
74// Pass
75//===----------------------------------------------------------------------===//
76
77/// Wrapper class providing helper methods for Passes defined in TableGen.
78class Pass {
79public:
80 explicit Pass(const llvm::Record *def);
81
82 /// Return the command line argument of the pass.
83 StringRef getArgument() const;
84
85 /// Return the name for the C++ base class.
86 StringRef getBaseClass() const;
87
88 /// Return the short 1-line summary of the pass.
89 StringRef getSummary() const;
90
91 /// Return the description of the pass.
92 StringRef getDescription() const;
93
94 /// Return the C++ constructor call to create an instance of this pass.
95 StringRef getConstructor() const;
96
97 /// Return the dialects this pass needs to be registered.
99
100 /// Return the options provided by this pass.
102
103 /// Return the statistics provided by this pass.
105
106 const llvm::Record *getDef() const { return def; }
107
108private:
109 const llvm::Record *def;
110 std::vector<StringRef> dependentDialects;
111 std::vector<PassOption> options;
112 std::vector<PassStatistic> statistics;
113};
114
115} // namespace tblgen
116} // namespace mlir
117
118#endif // MLIR_TABLEGEN_PASS_H_
static llvm::ManagedStatic< PassManagerOptions > options
StringRef getType() const
Return the C++ type of the option.
Definition Pass.cpp:27
PassOption(const llvm::Record *def)
Definition Pass.h:26
std::optional< StringRef > getDefaultValue() const
Return the default value of the option.
Definition Pass.cpp:29
StringRef getCppVariableName() const
Return the name for the C++ option variable.
Definition Pass.cpp:19
StringRef getDescription() const
Return the description for this option.
Definition Pass.cpp:34
StringRef getArgument() const
Return the command line argument to use for this option.
Definition Pass.cpp:23
bool isListOption() const
Flag indicating if this is a list option.
Definition Pass.cpp:43
std::optional< StringRef > getAdditionalFlags() const
Return the additional flags passed to the option constructor.
Definition Pass.cpp:38
PassStatistic(const llvm::Record *def)
Definition Pass.h:58
StringRef getName() const
Return the name of the statistic.
Definition Pass.cpp:55
StringRef getCppVariableName() const
Return the name for the C++ statistic variable.
Definition Pass.cpp:51
StringRef getDescription() const
Return the description for this statistic.
Definition Pass.cpp:59
const llvm::Record * getDef() const
Definition Pass.h:106
StringRef getArgument() const
Return the command line argument of the pass.
ArrayRef< StringRef > getDependentDialects() const
Return the dialects this pass needs to be registered.
Definition Pass.cpp:94
StringRef getConstructor() const
Return the C++ constructor call to create an instance of this pass.
Definition Pass.cpp:90
StringRef getDescription() const
Return the description of the pass.
StringRef getBaseClass() const
Return the name for the C++ base class.
Definition Pass.cpp:80
Pass(const llvm::Record *def)
Definition Pass.cpp:67
StringRef getSummary() const
Return the short 1-line summary of the pass.
Definition Pass.cpp:84
ArrayRef< PassStatistic > getStatistics() const
Return the statistics provided by this pass.
ArrayRef< PassOption > getOptions() const
Return the options provided by this pass.
Definition Pass.cpp:98
The OpAsmOpInterface, see OpAsmInterface.td for more details.
Definition CallGraph.h:229
Include the generated interface declarations.