LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
TransformationPasses.h.inc
Go to the documentation of this file.
1/* Autogenerated by mlir-tblgen; don't manually edit */
2
3#ifdef GEN_PASS_DECL
4// Generate declarations for all passes.
5#define GEN_PASS_DECL_EXPOSECHILDMEMBERSPASS
6#define GEN_PASS_DECL_INLINESTRUCTSPASS
7#undef GEN_PASS_DECL
8#endif // GEN_PASS_DECL
9
10//===----------------------------------------------------------------------===//
11// ExposeChildMembersPass
12//===----------------------------------------------------------------------===//
13#ifdef GEN_PASS_DECL_EXPOSECHILDMEMBERSPASS
14struct ExposeChildMembersPassOptions {
15 std::string rootStruct = "";
16};
17std::unique_ptr<::mlir::Pass> createExposeChildMembersPass();
18std::unique_ptr<::mlir::Pass> createExposeChildMembersPass(ExposeChildMembersPassOptions options);
19#undef GEN_PASS_DECL_EXPOSECHILDMEMBERSPASS
20#endif // GEN_PASS_DECL_EXPOSECHILDMEMBERSPASS
21#ifdef GEN_PASS_DEF_EXPOSECHILDMEMBERSPASS
22
23namespace impl {
24 std::unique_ptr<::mlir::Pass> createExposeChildMembersPass();
25} // namespace impl
26
27namespace impl {
28 std::unique_ptr<::mlir::Pass> createExposeChildMembersPass(ExposeChildMembersPassOptions options);
29} // namespace impl
30namespace impl {
31
32template <typename DerivedT>
33class ExposeChildMembersPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
34public:
35 using Base = ExposeChildMembersPassBase;
36
37 ExposeChildMembersPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
38 ExposeChildMembersPassBase(const ExposeChildMembersPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
39 ExposeChildMembersPassBase& operator=(const ExposeChildMembersPassBase &) = delete;
40 ExposeChildMembersPassBase(ExposeChildMembersPassBase &&) = delete;
41 ExposeChildMembersPassBase& operator=(ExposeChildMembersPassBase &&) = delete;
42 ~ExposeChildMembersPassBase() = default;
43
45 static constexpr ::llvm::StringLiteral getArgumentName() {
46 return ::llvm::StringLiteral("llzk-expose-child-members");
47 }
48 ::llvm::StringRef getArgument() const override { return "llzk-expose-child-members"; }
49
50 ::llvm::StringRef getDescription() const override { return R"PD(Expose members of concrete child storage reachable from a selected root.)PD"; }
51
53 static constexpr ::llvm::StringLiteral getPassName() {
54 return ::llvm::StringLiteral("ExposeChildMembersPass");
55 }
56 ::llvm::StringRef getName() const override { return "ExposeChildMembersPass"; }
57
59 static bool classof(const ::mlir::Pass *pass) {
60 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
61 }
62
64 std::unique_ptr<::mlir::Pass> clonePass() const override {
65 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
66 }
67
69 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
70 registry.insert<llzk::LLZKDialect>();
71 registry.insert<llzk::boolean::BoolDialect>();
72 registry.insert<llzk::array::ArrayDialect>();
73 registry.insert<llzk::component::StructDialect>();
74 registry.insert<llzk::constrain::ConstrainDialect>();
75 registry.insert<llzk::felt::FeltDialect>();
76 registry.insert<llzk::global::GlobalDialect>();
77 registry.insert<llzk::include::IncludeDialect>();
78 registry.insert<llzk::function::FunctionDialect>();
79 registry.insert<llzk::string::StringDialect>();
80 registry.insert<llzk::polymorphic::PolymorphicDialect>();
81 registry.insert<mlir::arith::ArithDialect>();
82 registry.insert<mlir::scf::SCFDialect>();
83 }
84
88 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ExposeChildMembersPassBase<DerivedT>)
89
90 ExposeChildMembersPassBase(ExposeChildMembersPassOptions options) : ExposeChildMembersPassBase() {
91 rootStruct = std::move(options.rootStruct);
92 }
93protected:
94 ::mlir::Pass::Option<std::string> rootStruct{*this, "root-struct", ::llvm::cl::desc(R"PO(Root struct symbol path (defaults to llzk.main))PO"), ::llvm::cl::init("")};
95private:
96
97 friend std::unique_ptr<::mlir::Pass> createExposeChildMembersPass() {
98 return std::make_unique<DerivedT>();
99 }
100
101 friend std::unique_ptr<::mlir::Pass> createExposeChildMembersPass(ExposeChildMembersPassOptions options) {
102 return std::make_unique<DerivedT>(std::move(options));
103 }
104};
105} // namespace impl
106
107std::unique_ptr<::mlir::Pass> createExposeChildMembersPass() {
108 return impl::createExposeChildMembersPass();
109}
110
111std::unique_ptr<::mlir::Pass> createExposeChildMembersPass(ExposeChildMembersPassOptions options) {
112 return impl::createExposeChildMembersPass(std::move(options));
113}
114#undef GEN_PASS_DEF_EXPOSECHILDMEMBERSPASS
115#endif // GEN_PASS_DEF_EXPOSECHILDMEMBERSPASS
116
117//===----------------------------------------------------------------------===//
118// InlineStructsPass
119//===----------------------------------------------------------------------===//
120#ifdef GEN_PASS_DECL_INLINESTRUCTSPASS
121struct InlineStructsPassOptions {
122 uint64_t maxComplexity = 0;
123};
124std::unique_ptr<::mlir::Pass> createInlineStructsPass();
125std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options);
126#undef GEN_PASS_DECL_INLINESTRUCTSPASS
127#endif // GEN_PASS_DECL_INLINESTRUCTSPASS
128#ifdef GEN_PASS_DEF_INLINESTRUCTSPASS
129
130namespace impl {
131 std::unique_ptr<::mlir::Pass> createInlineStructsPass();
132} // namespace impl
133
134namespace impl {
135 std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options);
136} // namespace impl
137namespace impl {
138
139template <typename DerivedT>
140class InlineStructsPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
141public:
142 using Base = InlineStructsPassBase;
143
144 InlineStructsPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
145 InlineStructsPassBase(const InlineStructsPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
146 InlineStructsPassBase& operator=(const InlineStructsPassBase &) = delete;
147 InlineStructsPassBase(InlineStructsPassBase &&) = delete;
148 InlineStructsPassBase& operator=(InlineStructsPassBase &&) = delete;
149 ~InlineStructsPassBase() = default;
150
152 static constexpr ::llvm::StringLiteral getArgumentName() {
153 return ::llvm::StringLiteral("llzk-inline-structs");
154 }
155 ::llvm::StringRef getArgument() const override { return "llzk-inline-structs"; }
156
157 ::llvm::StringRef getDescription() const override { return R"PD(Inlines nested structs (i.e., subcomponents).)PD"; }
158
160 static constexpr ::llvm::StringLiteral getPassName() {
161 return ::llvm::StringLiteral("InlineStructsPass");
162 }
163 ::llvm::StringRef getName() const override { return "InlineStructsPass"; }
164
166 static bool classof(const ::mlir::Pass *pass) {
167 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
168 }
169
171 std::unique_ptr<::mlir::Pass> clonePass() const override {
172 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
173 }
174
176 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
177 registry.insert<llzk::LLZKDialect>();
178 registry.insert<llzk::boolean::BoolDialect>();
179 registry.insert<llzk::array::ArrayDialect>();
180 registry.insert<llzk::component::StructDialect>();
181 registry.insert<llzk::constrain::ConstrainDialect>();
182 registry.insert<llzk::felt::FeltDialect>();
183 registry.insert<llzk::global::GlobalDialect>();
184 registry.insert<llzk::include::IncludeDialect>();
185 registry.insert<llzk::function::FunctionDialect>();
186 registry.insert<llzk::string::StringDialect>();
187 registry.insert<llzk::polymorphic::PolymorphicDialect>();
188 registry.insert<mlir::arith::ArithDialect>();
189 registry.insert<mlir::scf::SCFDialect>();
190 }
191
195 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(InlineStructsPassBase<DerivedT>)
196
197 InlineStructsPassBase(InlineStructsPassOptions options) : InlineStructsPassBase() {
198 maxComplexity = std::move(options.maxComplexity);
199 }
200protected:
201 ::mlir::Pass::Option<uint64_t> maxComplexity{*this, "max-merge-complexity", ::llvm::cl::desc(R"PO(Maximum allowed constraint+multiplications in merged @constrain functions)PO"), ::llvm::cl::init(0)};
202private:
203
204 friend std::unique_ptr<::mlir::Pass> createInlineStructsPass() {
205 return std::make_unique<DerivedT>();
206 }
207
208 friend std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options) {
209 return std::make_unique<DerivedT>(std::move(options));
210 }
211};
212} // namespace impl
213
214std::unique_ptr<::mlir::Pass> createInlineStructsPass() {
215 return impl::createInlineStructsPass();
216}
217
218std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options) {
219 return impl::createInlineStructsPass(std::move(options));
220}
221#undef GEN_PASS_DEF_INLINESTRUCTSPASS
222#endif // GEN_PASS_DEF_INLINESTRUCTSPASS
223#ifdef GEN_PASS_REGISTRATION
224// Generate registrations for all passes.
225#define GEN_PASS_REGISTRATION_EXPOSECHILDMEMBERSPASS
226#define GEN_PASS_REGISTRATION_INLINESTRUCTSPASS
227#endif // GEN_PASS_REGISTRATION
228
229//===----------------------------------------------------------------------===//
230// ExposeChildMembersPass Registration
231//===----------------------------------------------------------------------===//
232#ifdef GEN_PASS_REGISTRATION_EXPOSECHILDMEMBERSPASS
233
234inline void registerExposeChildMembersPass() {
235 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
237 });
238}
239
240// Old registration code, kept for temporary backwards compatibility.
242 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
244 });
245}
246
247#undef GEN_PASS_REGISTRATION_EXPOSECHILDMEMBERSPASS
248#endif // GEN_PASS_REGISTRATION_EXPOSECHILDMEMBERSPASS
249
250//===----------------------------------------------------------------------===//
251// InlineStructsPass Registration
252//===----------------------------------------------------------------------===//
253#ifdef GEN_PASS_REGISTRATION_INLINESTRUCTSPASS
254
255inline void registerInlineStructsPass() {
256 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
258 });
259}
260
261// Old registration code, kept for temporary backwards compatibility.
262inline void registerInlineStructsPassPass() {
263 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
265 });
266}
267
268#undef GEN_PASS_REGISTRATION_INLINESTRUCTSPASS
269#endif // GEN_PASS_REGISTRATION_INLINESTRUCTSPASS
270#ifdef GEN_PASS_REGISTRATION
271
272//===----------------------------------------------------------------------===//
273// Transformation Registration
274//===----------------------------------------------------------------------===//
275
276inline void registerTransformationPasses() {
279}
280#undef GEN_PASS_REGISTRATION
281#endif // GEN_PASS_REGISTRATION
282#ifdef GEN_PASS_CLASSES
283#error "GEN_PASS_CLASSES is deprecated; use per-pass macros"
284#undef GEN_PASS_CLASSES
285#endif // GEN_PASS_CLASSES
void registerTransformationPasses()
std::unique_ptr<::mlir::Pass > createExposeChildMembersPass()
std::unique_ptr<::mlir::Pass > createInlineStructsPass()
void registerExposeChildMembersPassPass()