LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
LLZKTransformationPasses.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_POLYLOWERINGPASS
6#define GEN_PASS_DECL_REDUNDANTOPERATIONELIMINATIONPASS
7#define GEN_PASS_DECL_REDUNDANTREADANDWRITEELIMINATIONPASS
8#define GEN_PASS_DECL_UNUSEDDECLARATIONELIMINATIONPASS
9#undef GEN_PASS_DECL
10#endif // GEN_PASS_DECL
11
12//===----------------------------------------------------------------------===//
13// PolyLoweringPass
14//===----------------------------------------------------------------------===//
15#ifdef GEN_PASS_DECL_POLYLOWERINGPASS
16struct PolyLoweringPassOptions {
17 unsigned maxDegree = 2;
18};
19#undef GEN_PASS_DECL_POLYLOWERINGPASS
20#endif // GEN_PASS_DECL_POLYLOWERINGPASS
21#ifdef GEN_PASS_DEF_POLYLOWERINGPASS
22namespace impl {
23
24template <typename DerivedT>
25class PolyLoweringPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
26public:
27 using Base = PolyLoweringPassBase;
28
29 PolyLoweringPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
30 PolyLoweringPassBase(const PolyLoweringPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
31
33 static constexpr ::llvm::StringLiteral getArgumentName() {
34 return ::llvm::StringLiteral("llzk-poly-lowering-pass");
35 }
36 ::llvm::StringRef getArgument() const override { return "llzk-poly-lowering-pass"; }
37
38 ::llvm::StringRef getDescription() const override { return "Lowers the degree of all polynomial equations to a specified maximum"; }
39
41 static constexpr ::llvm::StringLiteral getPassName() {
42 return ::llvm::StringLiteral("PolyLoweringPass");
43 }
44 ::llvm::StringRef getName() const override { return "PolyLoweringPass"; }
45
47 static bool classof(const ::mlir::Pass *pass) {
48 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
49 }
50
52 std::unique_ptr<::mlir::Pass> clonePass() const override {
53 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
54 }
55
57 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
58 registry.insert<llzk::LLZKDialect>();
59 registry.insert<llzk::boolean::BoolDialect>();
60 registry.insert<llzk::array::ArrayDialect>();
61 registry.insert<llzk::component::StructDialect>();
62 registry.insert<llzk::constrain::ConstrainDialect>();
63 registry.insert<llzk::felt::FeltDialect>();
64 registry.insert<llzk::global::GlobalDialect>();
65 registry.insert<llzk::include::IncludeDialect>();
66 registry.insert<llzk::function::FunctionDialect>();
67 registry.insert<llzk::string::StringDialect>();
68 registry.insert<llzk::polymorphic::PolymorphicDialect>();
69 registry.insert<llzk::undef::UndefDialect>();
70 registry.insert<mlir::arith::ArithDialect>();
71 registry.insert<mlir::scf::SCFDialect>();
72 }
73
77 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(PolyLoweringPassBase<DerivedT>)
78
79 PolyLoweringPassBase(const PolyLoweringPassOptions &options) : PolyLoweringPassBase() {
80 maxDegree = options.maxDegree;
81 }
82protected:
83 ::mlir::Pass::Option<unsigned> maxDegree{*this, "max-degree", ::llvm::cl::desc("Maximum degree of constraint polynomials (default 2, minimum 2)"), ::llvm::cl::init(2)};
84private:
85};
86} // namespace impl
87#undef GEN_PASS_DEF_POLYLOWERINGPASS
88#endif // GEN_PASS_DEF_POLYLOWERINGPASS
89
90//===----------------------------------------------------------------------===//
91// RedundantOperationEliminationPass
92//===----------------------------------------------------------------------===//
93#ifdef GEN_PASS_DECL_REDUNDANTOPERATIONELIMINATIONPASS
94#undef GEN_PASS_DECL_REDUNDANTOPERATIONELIMINATIONPASS
95#endif // GEN_PASS_DECL_REDUNDANTOPERATIONELIMINATIONPASS
96#ifdef GEN_PASS_DEF_REDUNDANTOPERATIONELIMINATIONPASS
97namespace impl {
98
99template <typename DerivedT>
100class RedundantOperationEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
101public:
102 using Base = RedundantOperationEliminationPassBase;
103
104 RedundantOperationEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
105 RedundantOperationEliminationPassBase(const RedundantOperationEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
106
108 static constexpr ::llvm::StringLiteral getArgumentName() {
109 return ::llvm::StringLiteral("llzk-duplicate-op-elim");
110 }
111 ::llvm::StringRef getArgument() const override { return "llzk-duplicate-op-elim"; }
112
113 ::llvm::StringRef getDescription() const override { return "Remove redundant operations"; }
114
116 static constexpr ::llvm::StringLiteral getPassName() {
117 return ::llvm::StringLiteral("RedundantOperationEliminationPass");
118 }
119 ::llvm::StringRef getName() const override { return "RedundantOperationEliminationPass"; }
120
122 static bool classof(const ::mlir::Pass *pass) {
123 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
124 }
125
127 std::unique_ptr<::mlir::Pass> clonePass() const override {
128 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
129 }
130
132 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
133 registry.insert<llzk::LLZKDialect>();
134 registry.insert<llzk::boolean::BoolDialect>();
135 registry.insert<llzk::array::ArrayDialect>();
136 registry.insert<llzk::component::StructDialect>();
137 registry.insert<llzk::constrain::ConstrainDialect>();
138 registry.insert<llzk::felt::FeltDialect>();
139 registry.insert<llzk::global::GlobalDialect>();
140 registry.insert<llzk::include::IncludeDialect>();
141 registry.insert<llzk::function::FunctionDialect>();
142 registry.insert<llzk::string::StringDialect>();
143 registry.insert<llzk::polymorphic::PolymorphicDialect>();
144 registry.insert<llzk::undef::UndefDialect>();
145 registry.insert<mlir::arith::ArithDialect>();
146 registry.insert<mlir::scf::SCFDialect>();
147 }
148
152 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(RedundantOperationEliminationPassBase<DerivedT>)
153
154protected:
155private:
156};
157} // namespace impl
158#undef GEN_PASS_DEF_REDUNDANTOPERATIONELIMINATIONPASS
159#endif // GEN_PASS_DEF_REDUNDANTOPERATIONELIMINATIONPASS
160
161//===----------------------------------------------------------------------===//
162// RedundantReadAndWriteEliminationPass
163//===----------------------------------------------------------------------===//
164#ifdef GEN_PASS_DECL_REDUNDANTREADANDWRITEELIMINATIONPASS
165#undef GEN_PASS_DECL_REDUNDANTREADANDWRITEELIMINATIONPASS
166#endif // GEN_PASS_DECL_REDUNDANTREADANDWRITEELIMINATIONPASS
167#ifdef GEN_PASS_DEF_REDUNDANTREADANDWRITEELIMINATIONPASS
168namespace impl {
169
170template <typename DerivedT>
171class RedundantReadAndWriteEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
172public:
173 using Base = RedundantReadAndWriteEliminationPassBase;
174
175 RedundantReadAndWriteEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
176 RedundantReadAndWriteEliminationPassBase(const RedundantReadAndWriteEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
177
179 static constexpr ::llvm::StringLiteral getArgumentName() {
180 return ::llvm::StringLiteral("llzk-duplicate-read-write-elim");
181 }
182 ::llvm::StringRef getArgument() const override { return "llzk-duplicate-read-write-elim"; }
183
184 ::llvm::StringRef getDescription() const override { return "Remove redundant reads and writes"; }
185
187 static constexpr ::llvm::StringLiteral getPassName() {
188 return ::llvm::StringLiteral("RedundantReadAndWriteEliminationPass");
189 }
190 ::llvm::StringRef getName() const override { return "RedundantReadAndWriteEliminationPass"; }
191
193 static bool classof(const ::mlir::Pass *pass) {
194 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
195 }
196
198 std::unique_ptr<::mlir::Pass> clonePass() const override {
199 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
200 }
201
203 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
204 registry.insert<llzk::LLZKDialect>();
205 registry.insert<llzk::boolean::BoolDialect>();
206 registry.insert<llzk::array::ArrayDialect>();
207 registry.insert<llzk::component::StructDialect>();
208 registry.insert<llzk::constrain::ConstrainDialect>();
209 registry.insert<llzk::felt::FeltDialect>();
210 registry.insert<llzk::global::GlobalDialect>();
211 registry.insert<llzk::include::IncludeDialect>();
212 registry.insert<llzk::function::FunctionDialect>();
213 registry.insert<llzk::string::StringDialect>();
214 registry.insert<llzk::polymorphic::PolymorphicDialect>();
215 registry.insert<llzk::undef::UndefDialect>();
216 registry.insert<mlir::arith::ArithDialect>();
217 registry.insert<mlir::scf::SCFDialect>();
218 }
219
223 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(RedundantReadAndWriteEliminationPassBase<DerivedT>)
224
225protected:
226private:
227};
228} // namespace impl
229#undef GEN_PASS_DEF_REDUNDANTREADANDWRITEELIMINATIONPASS
230#endif // GEN_PASS_DEF_REDUNDANTREADANDWRITEELIMINATIONPASS
231
232//===----------------------------------------------------------------------===//
233// UnusedDeclarationEliminationPass
234//===----------------------------------------------------------------------===//
235#ifdef GEN_PASS_DECL_UNUSEDDECLARATIONELIMINATIONPASS
236struct UnusedDeclarationEliminationPassOptions {
237 bool removeStructs = false;
238};
239#undef GEN_PASS_DECL_UNUSEDDECLARATIONELIMINATIONPASS
240#endif // GEN_PASS_DECL_UNUSEDDECLARATIONELIMINATIONPASS
241#ifdef GEN_PASS_DEF_UNUSEDDECLARATIONELIMINATIONPASS
242namespace impl {
243
244template <typename DerivedT>
245class UnusedDeclarationEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
246public:
247 using Base = UnusedDeclarationEliminationPassBase;
248
249 UnusedDeclarationEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
250 UnusedDeclarationEliminationPassBase(const UnusedDeclarationEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
251
253 static constexpr ::llvm::StringLiteral getArgumentName() {
254 return ::llvm::StringLiteral("llzk-unused-declaration-elim");
255 }
256 ::llvm::StringRef getArgument() const override { return "llzk-unused-declaration-elim"; }
257
258 ::llvm::StringRef getDescription() const override { return "Remove unused field and struct declarations"; }
259
261 static constexpr ::llvm::StringLiteral getPassName() {
262 return ::llvm::StringLiteral("UnusedDeclarationEliminationPass");
263 }
264 ::llvm::StringRef getName() const override { return "UnusedDeclarationEliminationPass"; }
265
267 static bool classof(const ::mlir::Pass *pass) {
268 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
269 }
270
272 std::unique_ptr<::mlir::Pass> clonePass() const override {
273 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
274 }
275
277 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
278 registry.insert<llzk::LLZKDialect>();
279 registry.insert<llzk::boolean::BoolDialect>();
280 registry.insert<llzk::array::ArrayDialect>();
281 registry.insert<llzk::component::StructDialect>();
282 registry.insert<llzk::constrain::ConstrainDialect>();
283 registry.insert<llzk::felt::FeltDialect>();
284 registry.insert<llzk::global::GlobalDialect>();
285 registry.insert<llzk::include::IncludeDialect>();
286 registry.insert<llzk::function::FunctionDialect>();
287 registry.insert<llzk::string::StringDialect>();
288 registry.insert<llzk::polymorphic::PolymorphicDialect>();
289 registry.insert<llzk::undef::UndefDialect>();
290 registry.insert<mlir::arith::ArithDialect>();
291 registry.insert<mlir::scf::SCFDialect>();
292 }
293
297 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(UnusedDeclarationEliminationPassBase<DerivedT>)
298
299 UnusedDeclarationEliminationPassBase(const UnusedDeclarationEliminationPassOptions &options) : UnusedDeclarationEliminationPassBase() {
300 removeStructs = options.removeStructs;
301 }
302protected:
303 ::mlir::Pass::Option<bool> removeStructs{*this, "remove-structs", ::llvm::cl::desc("Whether to remove unused struct definitions as well. Requires module to declare a Main component, otherwise all components will appear unused."), ::llvm::cl::init(false)};
304private:
305};
306} // namespace impl
307#undef GEN_PASS_DEF_UNUSEDDECLARATIONELIMINATIONPASS
308#endif // GEN_PASS_DEF_UNUSEDDECLARATIONELIMINATIONPASS
309#ifdef GEN_PASS_REGISTRATION
310
311//===----------------------------------------------------------------------===//
312// PolyLoweringPass Registration
313//===----------------------------------------------------------------------===//
314
315inline void registerPolyLoweringPass() {
316 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
318 });
319}
320
321// Old registration code, kept for temporary backwards compatibility.
322inline void registerPolyLoweringPassPass() {
323 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
325 });
326}
327
328//===----------------------------------------------------------------------===//
329// RedundantOperationEliminationPass Registration
330//===----------------------------------------------------------------------===//
331
333 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
335 });
336}
337
338// Old registration code, kept for temporary backwards compatibility.
340 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
342 });
343}
344
345//===----------------------------------------------------------------------===//
346// RedundantReadAndWriteEliminationPass Registration
347//===----------------------------------------------------------------------===//
348
350 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
352 });
353}
354
355// Old registration code, kept for temporary backwards compatibility.
357 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
359 });
360}
361
362//===----------------------------------------------------------------------===//
363// UnusedDeclarationEliminationPass Registration
364//===----------------------------------------------------------------------===//
365
367 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
369 });
370}
371
372// Old registration code, kept for temporary backwards compatibility.
374 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
376 });
377}
378
379//===----------------------------------------------------------------------===//
380// Transformation Registration
381//===----------------------------------------------------------------------===//
382
383inline void registerTransformationPasses() {
388}
389#undef GEN_PASS_REGISTRATION
390#endif // GEN_PASS_REGISTRATION
391// Deprecated. Please use the new per-pass macros.
392#ifdef GEN_PASS_CLASSES
393
394template <typename DerivedT>
395class PolyLoweringPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
396public:
397 using Base = PolyLoweringPassBase;
398
399 PolyLoweringPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
400 PolyLoweringPassBase(const PolyLoweringPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
401
403 static constexpr ::llvm::StringLiteral getArgumentName() {
404 return ::llvm::StringLiteral("llzk-poly-lowering-pass");
405 }
406 ::llvm::StringRef getArgument() const override { return "llzk-poly-lowering-pass"; }
407
408 ::llvm::StringRef getDescription() const override { return "Lowers the degree of all polynomial equations to a specified maximum"; }
409
411 static constexpr ::llvm::StringLiteral getPassName() {
412 return ::llvm::StringLiteral("PolyLoweringPass");
413 }
414 ::llvm::StringRef getName() const override { return "PolyLoweringPass"; }
415
417 static bool classof(const ::mlir::Pass *pass) {
418 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
419 }
420
422 std::unique_ptr<::mlir::Pass> clonePass() const override {
423 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
424 }
425
427 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
428 registry.insert<llzk::LLZKDialect>();
429 registry.insert<llzk::boolean::BoolDialect>();
430 registry.insert<llzk::array::ArrayDialect>();
431 registry.insert<llzk::component::StructDialect>();
432 registry.insert<llzk::constrain::ConstrainDialect>();
433 registry.insert<llzk::felt::FeltDialect>();
434 registry.insert<llzk::global::GlobalDialect>();
435 registry.insert<llzk::include::IncludeDialect>();
436 registry.insert<llzk::function::FunctionDialect>();
437 registry.insert<llzk::string::StringDialect>();
438 registry.insert<llzk::polymorphic::PolymorphicDialect>();
439 registry.insert<llzk::undef::UndefDialect>();
440 registry.insert<mlir::arith::ArithDialect>();
441 registry.insert<mlir::scf::SCFDialect>();
442 }
443
447 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(PolyLoweringPassBase<DerivedT>)
448
449protected:
450 ::mlir::Pass::Option<unsigned> maxDegree{*this, "max-degree", ::llvm::cl::desc("Maximum degree of constraint polynomials (default 2, minimum 2)"), ::llvm::cl::init(2)};
451};
452
453template <typename DerivedT>
454class RedundantOperationEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
455public:
456 using Base = RedundantOperationEliminationPassBase;
457
458 RedundantOperationEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
459 RedundantOperationEliminationPassBase(const RedundantOperationEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
460
462 static constexpr ::llvm::StringLiteral getArgumentName() {
463 return ::llvm::StringLiteral("llzk-duplicate-op-elim");
464 }
465 ::llvm::StringRef getArgument() const override { return "llzk-duplicate-op-elim"; }
466
467 ::llvm::StringRef getDescription() const override { return "Remove redundant operations"; }
468
470 static constexpr ::llvm::StringLiteral getPassName() {
471 return ::llvm::StringLiteral("RedundantOperationEliminationPass");
472 }
473 ::llvm::StringRef getName() const override { return "RedundantOperationEliminationPass"; }
474
476 static bool classof(const ::mlir::Pass *pass) {
477 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
478 }
479
481 std::unique_ptr<::mlir::Pass> clonePass() const override {
482 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
483 }
484
486 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
487 registry.insert<llzk::LLZKDialect>();
488 registry.insert<llzk::boolean::BoolDialect>();
489 registry.insert<llzk::array::ArrayDialect>();
490 registry.insert<llzk::component::StructDialect>();
491 registry.insert<llzk::constrain::ConstrainDialect>();
492 registry.insert<llzk::felt::FeltDialect>();
493 registry.insert<llzk::global::GlobalDialect>();
494 registry.insert<llzk::include::IncludeDialect>();
495 registry.insert<llzk::function::FunctionDialect>();
496 registry.insert<llzk::string::StringDialect>();
497 registry.insert<llzk::polymorphic::PolymorphicDialect>();
498 registry.insert<llzk::undef::UndefDialect>();
499 registry.insert<mlir::arith::ArithDialect>();
500 registry.insert<mlir::scf::SCFDialect>();
501 }
502
506 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(RedundantOperationEliminationPassBase<DerivedT>)
507
508protected:
509};
510
511template <typename DerivedT>
512class RedundantReadAndWriteEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
513public:
514 using Base = RedundantReadAndWriteEliminationPassBase;
515
516 RedundantReadAndWriteEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
517 RedundantReadAndWriteEliminationPassBase(const RedundantReadAndWriteEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
518
520 static constexpr ::llvm::StringLiteral getArgumentName() {
521 return ::llvm::StringLiteral("llzk-duplicate-read-write-elim");
522 }
523 ::llvm::StringRef getArgument() const override { return "llzk-duplicate-read-write-elim"; }
524
525 ::llvm::StringRef getDescription() const override { return "Remove redundant reads and writes"; }
526
528 static constexpr ::llvm::StringLiteral getPassName() {
529 return ::llvm::StringLiteral("RedundantReadAndWriteEliminationPass");
530 }
531 ::llvm::StringRef getName() const override { return "RedundantReadAndWriteEliminationPass"; }
532
534 static bool classof(const ::mlir::Pass *pass) {
535 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
536 }
537
539 std::unique_ptr<::mlir::Pass> clonePass() const override {
540 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
541 }
542
544 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
545 registry.insert<llzk::LLZKDialect>();
546 registry.insert<llzk::boolean::BoolDialect>();
547 registry.insert<llzk::array::ArrayDialect>();
548 registry.insert<llzk::component::StructDialect>();
549 registry.insert<llzk::constrain::ConstrainDialect>();
550 registry.insert<llzk::felt::FeltDialect>();
551 registry.insert<llzk::global::GlobalDialect>();
552 registry.insert<llzk::include::IncludeDialect>();
553 registry.insert<llzk::function::FunctionDialect>();
554 registry.insert<llzk::string::StringDialect>();
555 registry.insert<llzk::polymorphic::PolymorphicDialect>();
556 registry.insert<llzk::undef::UndefDialect>();
557 registry.insert<mlir::arith::ArithDialect>();
558 registry.insert<mlir::scf::SCFDialect>();
559 }
560
564 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(RedundantReadAndWriteEliminationPassBase<DerivedT>)
565
566protected:
567};
568
569template <typename DerivedT>
570class UnusedDeclarationEliminationPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
571public:
572 using Base = UnusedDeclarationEliminationPassBase;
573
574 UnusedDeclarationEliminationPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
575 UnusedDeclarationEliminationPassBase(const UnusedDeclarationEliminationPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
576
578 static constexpr ::llvm::StringLiteral getArgumentName() {
579 return ::llvm::StringLiteral("llzk-unused-declaration-elim");
580 }
581 ::llvm::StringRef getArgument() const override { return "llzk-unused-declaration-elim"; }
582
583 ::llvm::StringRef getDescription() const override { return "Remove unused field and struct declarations"; }
584
586 static constexpr ::llvm::StringLiteral getPassName() {
587 return ::llvm::StringLiteral("UnusedDeclarationEliminationPass");
588 }
589 ::llvm::StringRef getName() const override { return "UnusedDeclarationEliminationPass"; }
590
592 static bool classof(const ::mlir::Pass *pass) {
593 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
594 }
595
597 std::unique_ptr<::mlir::Pass> clonePass() const override {
598 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
599 }
600
602 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
603 registry.insert<llzk::LLZKDialect>();
604 registry.insert<llzk::boolean::BoolDialect>();
605 registry.insert<llzk::array::ArrayDialect>();
606 registry.insert<llzk::component::StructDialect>();
607 registry.insert<llzk::constrain::ConstrainDialect>();
608 registry.insert<llzk::felt::FeltDialect>();
609 registry.insert<llzk::global::GlobalDialect>();
610 registry.insert<llzk::include::IncludeDialect>();
611 registry.insert<llzk::function::FunctionDialect>();
612 registry.insert<llzk::string::StringDialect>();
613 registry.insert<llzk::polymorphic::PolymorphicDialect>();
614 registry.insert<llzk::undef::UndefDialect>();
615 registry.insert<mlir::arith::ArithDialect>();
616 registry.insert<mlir::scf::SCFDialect>();
617 }
618
622 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(UnusedDeclarationEliminationPassBase<DerivedT>)
623
624protected:
625 ::mlir::Pass::Option<bool> removeStructs{*this, "remove-structs", ::llvm::cl::desc("Whether to remove unused struct definitions as well. Requires module to declare a Main component, otherwise all components will appear unused."), ::llvm::cl::init(false)};
626};
627#undef GEN_PASS_CLASSES
628#endif // GEN_PASS_CLASSES
void registerTransformationPasses()
void registerUnusedDeclarationEliminationPassPass()
std::unique_ptr< mlir::Pass > createRedundantOperationEliminationPass()
void registerRedundantOperationEliminationPass()
void registerPolyLoweringPassPass()
void registerUnusedDeclarationEliminationPass()
void registerRedundantOperationEliminationPassPass()
std::unique_ptr< mlir::Pass > createRedundantReadAndWriteEliminationPass()
std::unique_ptr< mlir::Pass > createUnusedDeclarationEliminationPass()
std::unique_ptr< mlir::Pass > createPolyLoweringPass()
void registerRedundantReadAndWriteEliminationPass()
void registerPolyLoweringPass()
void registerRedundantReadAndWriteEliminationPassPass()