LLZK 2.1.1
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
AnalysisPasses.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_CALLGRAPHPRINTERPASS
6#define GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
7#define GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
8#define GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
9#define GEN_PASS_DECL_PREDECESSORPRINTERPASS
10#define GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
11#define GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
12#undef GEN_PASS_DECL
13#endif // GEN_PASS_DECL
14
15//===----------------------------------------------------------------------===//
16// CallGraphPrinterPass
17//===----------------------------------------------------------------------===//
18#ifdef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
19struct CallGraphPrinterPassOptions {
21};
22std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass();
23std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options);
24#undef GEN_PASS_DECL_CALLGRAPHPRINTERPASS
25#endif // GEN_PASS_DECL_CALLGRAPHPRINTERPASS
26#ifdef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
27
28namespace impl {
29 std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass();
30} // namespace impl
31
32namespace impl {
33 std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options);
34} // namespace impl
35namespace impl {
36
37template <typename DerivedT>
38class CallGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
39public:
40 using Base = CallGraphPrinterPassBase;
41
42 CallGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
43 CallGraphPrinterPassBase(const CallGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
44 CallGraphPrinterPassBase& operator=(const CallGraphPrinterPassBase &) = delete;
45 CallGraphPrinterPassBase(CallGraphPrinterPassBase &&) = delete;
46 CallGraphPrinterPassBase& operator=(CallGraphPrinterPassBase &&) = delete;
47 ~CallGraphPrinterPassBase() = default;
48
50 static constexpr ::llvm::StringLiteral getArgumentName() {
51 return ::llvm::StringLiteral("llzk-print-call-graph");
52 }
53 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph"; }
54
55 ::llvm::StringRef getDescription() const override { return "Print the LLZK module's call graph."; }
56
58 static constexpr ::llvm::StringLiteral getPassName() {
59 return ::llvm::StringLiteral("CallGraphPrinterPass");
60 }
61 ::llvm::StringRef getName() const override { return "CallGraphPrinterPass"; }
62
64 static bool classof(const ::mlir::Pass *pass) {
65 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
66 }
67
69 std::unique_ptr<::mlir::Pass> clonePass() const override {
70 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
71 }
72
74 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
75 registry.insert<llzk::LLZKDialect>();
76 registry.insert<llzk::boolean::BoolDialect>();
77 registry.insert<llzk::array::ArrayDialect>();
78 registry.insert<llzk::component::StructDialect>();
79 registry.insert<llzk::constrain::ConstrainDialect>();
80 registry.insert<llzk::felt::FeltDialect>();
81 registry.insert<llzk::global::GlobalDialect>();
82 registry.insert<llzk::include::IncludeDialect>();
83 registry.insert<llzk::function::FunctionDialect>();
84 registry.insert<llzk::string::StringDialect>();
85 registry.insert<llzk::polymorphic::PolymorphicDialect>();
86 registry.insert<mlir::arith::ArithDialect>();
87 registry.insert<mlir::scf::SCFDialect>();
88 }
89
93 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphPrinterPassBase<DerivedT>)
94
95 CallGraphPrinterPassBase(CallGraphPrinterPassOptions options) : CallGraphPrinterPassBase() {
96 outputStream = std::move(options.outputStream);
97 }
98protected:
99 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
101 "Print pass output to 'llvm::outs()'"),
103 "Print pass output to 'llvm::errs()'"),
105 "Print pass output to 'llvm::dbgs()'")
106 )};
107private:
108
109 friend std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass() {
110 return std::make_unique<DerivedT>();
111 }
112
113 friend std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options) {
114 return std::make_unique<DerivedT>(std::move(options));
115 }
116};
117} // namespace impl
118
119std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass() {
120 return impl::createCallGraphPrinterPass();
121}
122
123std::unique_ptr<::mlir::Pass> createCallGraphPrinterPass(CallGraphPrinterPassOptions options) {
124 return impl::createCallGraphPrinterPass(std::move(options));
125}
126#undef GEN_PASS_DEF_CALLGRAPHPRINTERPASS
127#endif // GEN_PASS_DEF_CALLGRAPHPRINTERPASS
128
129//===----------------------------------------------------------------------===//
130// CallGraphSCCsPrinterPass
131//===----------------------------------------------------------------------===//
132#ifdef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
133struct CallGraphSCCsPrinterPassOptions {
135};
136std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass();
137std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options);
138#undef GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
139#endif // GEN_PASS_DECL_CALLGRAPHSCCSPRINTERPASS
140#ifdef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
141
142namespace impl {
143 std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass();
144} // namespace impl
145
146namespace impl {
147 std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options);
148} // namespace impl
149namespace impl {
150
151template <typename DerivedT>
152class CallGraphSCCsPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
153public:
154 using Base = CallGraphSCCsPrinterPassBase;
155
156 CallGraphSCCsPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
157 CallGraphSCCsPrinterPassBase(const CallGraphSCCsPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
158 CallGraphSCCsPrinterPassBase& operator=(const CallGraphSCCsPrinterPassBase &) = delete;
159 CallGraphSCCsPrinterPassBase(CallGraphSCCsPrinterPassBase &&) = delete;
160 CallGraphSCCsPrinterPassBase& operator=(CallGraphSCCsPrinterPassBase &&) = delete;
161 ~CallGraphSCCsPrinterPassBase() = default;
162
164 static constexpr ::llvm::StringLiteral getArgumentName() {
165 return ::llvm::StringLiteral("llzk-print-call-graph-sccs");
166 }
167 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph-sccs"; }
168
169 ::llvm::StringRef getDescription() const override { return "Print the SCCs from the LLZK module's call graph."; }
170
172 static constexpr ::llvm::StringLiteral getPassName() {
173 return ::llvm::StringLiteral("CallGraphSCCsPrinterPass");
174 }
175 ::llvm::StringRef getName() const override { return "CallGraphSCCsPrinterPass"; }
176
178 static bool classof(const ::mlir::Pass *pass) {
179 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
180 }
181
183 std::unique_ptr<::mlir::Pass> clonePass() const override {
184 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
185 }
186
188 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
189 registry.insert<llzk::LLZKDialect>();
190 registry.insert<llzk::boolean::BoolDialect>();
191 registry.insert<llzk::array::ArrayDialect>();
192 registry.insert<llzk::component::StructDialect>();
193 registry.insert<llzk::constrain::ConstrainDialect>();
194 registry.insert<llzk::felt::FeltDialect>();
195 registry.insert<llzk::global::GlobalDialect>();
196 registry.insert<llzk::include::IncludeDialect>();
197 registry.insert<llzk::function::FunctionDialect>();
198 registry.insert<llzk::string::StringDialect>();
199 registry.insert<llzk::polymorphic::PolymorphicDialect>();
200 registry.insert<mlir::arith::ArithDialect>();
201 registry.insert<mlir::scf::SCFDialect>();
202 }
203
207 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphSCCsPrinterPassBase<DerivedT>)
208
209 CallGraphSCCsPrinterPassBase(CallGraphSCCsPrinterPassOptions options) : CallGraphSCCsPrinterPassBase() {
210 outputStream = std::move(options.outputStream);
211 }
212protected:
213 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
215 "Print pass output to 'llvm::outs()'"),
217 "Print pass output to 'llvm::errs()'"),
219 "Print pass output to 'llvm::dbgs()'")
220 )};
221private:
222
223 friend std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass() {
224 return std::make_unique<DerivedT>();
225 }
226
227 friend std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options) {
228 return std::make_unique<DerivedT>(std::move(options));
229 }
230};
231} // namespace impl
232
233std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass() {
234 return impl::createCallGraphSCCsPrinterPass();
235}
236
237std::unique_ptr<::mlir::Pass> createCallGraphSCCsPrinterPass(CallGraphSCCsPrinterPassOptions options) {
238 return impl::createCallGraphSCCsPrinterPass(std::move(options));
239}
240#undef GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
241#endif // GEN_PASS_DEF_CALLGRAPHSCCSPRINTERPASS
242
243//===----------------------------------------------------------------------===//
244// ConstraintDependencyGraphPrinterPass
245//===----------------------------------------------------------------------===//
246#ifdef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
247struct ConstraintDependencyGraphPrinterPassOptions {
249 bool runIntraprocedural = false;
250};
251std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass();
252std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options);
253#undef GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
254#endif // GEN_PASS_DECL_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
255#ifdef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
256
257namespace impl {
258 std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass();
259} // namespace impl
260
261namespace impl {
262 std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options);
263} // namespace impl
264namespace impl {
265
266template <typename DerivedT>
267class ConstraintDependencyGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
268public:
269 using Base = ConstraintDependencyGraphPrinterPassBase;
270
271 ConstraintDependencyGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
272 ConstraintDependencyGraphPrinterPassBase(const ConstraintDependencyGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
273 ConstraintDependencyGraphPrinterPassBase& operator=(const ConstraintDependencyGraphPrinterPassBase &) = delete;
274 ConstraintDependencyGraphPrinterPassBase(ConstraintDependencyGraphPrinterPassBase &&) = delete;
275 ConstraintDependencyGraphPrinterPassBase& operator=(ConstraintDependencyGraphPrinterPassBase &&) = delete;
276 ~ConstraintDependencyGraphPrinterPassBase() = default;
277
279 static constexpr ::llvm::StringLiteral getArgumentName() {
280 return ::llvm::StringLiteral("llzk-print-constraint-dependency-graphs");
281 }
282 ::llvm::StringRef getArgument() const override { return "llzk-print-constraint-dependency-graphs"; }
283
284 ::llvm::StringRef getDescription() const override { return "Print constraint dependency graph for all LLZK structs."; }
285
287 static constexpr ::llvm::StringLiteral getPassName() {
288 return ::llvm::StringLiteral("ConstraintDependencyGraphPrinterPass");
289 }
290 ::llvm::StringRef getName() const override { return "ConstraintDependencyGraphPrinterPass"; }
291
293 static bool classof(const ::mlir::Pass *pass) {
294 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
295 }
296
298 std::unique_ptr<::mlir::Pass> clonePass() const override {
299 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
300 }
301
303 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
304 registry.insert<llzk::LLZKDialect>();
305 registry.insert<llzk::boolean::BoolDialect>();
306 registry.insert<llzk::array::ArrayDialect>();
307 registry.insert<llzk::component::StructDialect>();
308 registry.insert<llzk::constrain::ConstrainDialect>();
309 registry.insert<llzk::felt::FeltDialect>();
310 registry.insert<llzk::global::GlobalDialect>();
311 registry.insert<llzk::include::IncludeDialect>();
312 registry.insert<llzk::function::FunctionDialect>();
313 registry.insert<llzk::string::StringDialect>();
314 registry.insert<llzk::polymorphic::PolymorphicDialect>();
315 registry.insert<mlir::arith::ArithDialect>();
316 registry.insert<mlir::scf::SCFDialect>();
317 }
318
322 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ConstraintDependencyGraphPrinterPassBase<DerivedT>)
323
324 ConstraintDependencyGraphPrinterPassBase(ConstraintDependencyGraphPrinterPassOptions options) : ConstraintDependencyGraphPrinterPassBase() {
325 outputStream = std::move(options.outputStream);
326 runIntraprocedural = std::move(options.runIntraprocedural);
327 }
328protected:
329 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
331 "Print pass output to 'llvm::outs()'"),
333 "Print pass output to 'llvm::errs()'"),
335 "Print pass output to 'llvm::dbgs()'")
336 )};
337 ::mlir::Pass::Option<bool> runIntraprocedural{*this, "intraprocedural", ::llvm::cl::desc("Whether to run the analysis intra-procedurally only (default is false)."), ::llvm::cl::init(false)};
338private:
339
340 friend std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass() {
341 return std::make_unique<DerivedT>();
342 }
343
344 friend std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options) {
345 return std::make_unique<DerivedT>(std::move(options));
346 }
347};
348} // namespace impl
349
350std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass() {
351 return impl::createConstraintDependencyGraphPrinterPass();
352}
353
354std::unique_ptr<::mlir::Pass> createConstraintDependencyGraphPrinterPass(ConstraintDependencyGraphPrinterPassOptions options) {
355 return impl::createConstraintDependencyGraphPrinterPass(std::move(options));
356}
357#undef GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
358#endif // GEN_PASS_DEF_CONSTRAINTDEPENDENCYGRAPHPRINTERPASS
359
360//===----------------------------------------------------------------------===//
361// IntervalAnalysisPrinterPass
362//===----------------------------------------------------------------------===//
363#ifdef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
364struct IntervalAnalysisPrinterPassOptions {
366 std::string fieldName = "";
367 bool propagateInputConstraints = false;
368 bool printSolverConstraints = false;
369 bool printComputeIntervals = false;
370 bool printUnreducedIntervals = false;
371 bool printSSAIntervals = false;
372};
373std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass();
374std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options);
375#undef GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
376#endif // GEN_PASS_DECL_INTERVALANALYSISPRINTERPASS
377#ifdef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
378
379namespace impl {
380 std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass();
381} // namespace impl
382
383namespace impl {
384 std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options);
385} // namespace impl
386namespace impl {
387
388template <typename DerivedT>
389class IntervalAnalysisPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
390public:
391 using Base = IntervalAnalysisPrinterPassBase;
392
393 IntervalAnalysisPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
394 IntervalAnalysisPrinterPassBase(const IntervalAnalysisPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
395 IntervalAnalysisPrinterPassBase& operator=(const IntervalAnalysisPrinterPassBase &) = delete;
396 IntervalAnalysisPrinterPassBase(IntervalAnalysisPrinterPassBase &&) = delete;
397 IntervalAnalysisPrinterPassBase& operator=(IntervalAnalysisPrinterPassBase &&) = delete;
398 ~IntervalAnalysisPrinterPassBase() = default;
399
401 static constexpr ::llvm::StringLiteral getArgumentName() {
402 return ::llvm::StringLiteral("llzk-print-interval-analysis");
403 }
404 ::llvm::StringRef getArgument() const override { return "llzk-print-interval-analysis"; }
405
406 ::llvm::StringRef getDescription() const override { return "Print interval analysis results for all LLZK structs."; }
407
409 static constexpr ::llvm::StringLiteral getPassName() {
410 return ::llvm::StringLiteral("IntervalAnalysisPrinterPass");
411 }
412 ::llvm::StringRef getName() const override { return "IntervalAnalysisPrinterPass"; }
413
415 static bool classof(const ::mlir::Pass *pass) {
416 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
417 }
418
420 std::unique_ptr<::mlir::Pass> clonePass() const override {
421 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
422 }
423
425 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
426 registry.insert<llzk::LLZKDialect>();
427 registry.insert<llzk::boolean::BoolDialect>();
428 registry.insert<llzk::array::ArrayDialect>();
429 registry.insert<llzk::component::StructDialect>();
430 registry.insert<llzk::constrain::ConstrainDialect>();
431 registry.insert<llzk::felt::FeltDialect>();
432 registry.insert<llzk::global::GlobalDialect>();
433 registry.insert<llzk::include::IncludeDialect>();
434 registry.insert<llzk::function::FunctionDialect>();
435 registry.insert<llzk::string::StringDialect>();
436 registry.insert<llzk::polymorphic::PolymorphicDialect>();
437 registry.insert<mlir::arith::ArithDialect>();
438 registry.insert<mlir::scf::SCFDialect>();
439 }
440
444 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(IntervalAnalysisPrinterPassBase<DerivedT>)
445
446 IntervalAnalysisPrinterPassBase(IntervalAnalysisPrinterPassOptions options) : IntervalAnalysisPrinterPassBase() {
447 outputStream = std::move(options.outputStream);
448 fieldName = std::move(options.fieldName);
449 propagateInputConstraints = std::move(options.propagateInputConstraints);
450 printSolverConstraints = std::move(options.printSolverConstraints);
451 printComputeIntervals = std::move(options.printComputeIntervals);
452 printUnreducedIntervals = std::move(options.printUnreducedIntervals);
453 printSSAIntervals = std::move(options.printSSAIntervals);
454 }
455protected:
456 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
458 "Print pass output to 'llvm::outs()'"),
460 "Print pass output to 'llvm::errs()'"),
462 "Print pass output to 'llvm::dbgs()'")
463 )};
464 ::mlir::Pass::Option<std::string> fieldName{*this, "field", ::llvm::cl::desc("The field to use for interval analysis. If supplied, this always overrides the module's detected field. If omitted, the pass first tries to detect a single field from the enclosing module's felt usage and otherwise falls back to bn128. Supported fields: bn128/bn254, babybear, goldilocks, grumpkin, koalabear, mersenne31"), ::llvm::cl::init("")};
465 ::mlir::Pass::Option<bool> propagateInputConstraints{*this, "propagate-input-constraints", ::llvm::cl::desc("Whether to propagate constraints on inputs from @constrain to @compute functions. This allows for tighter intervals to possibly be found for computed values, assuming that the witness generator would include constraints as assertions during the computation."), ::llvm::cl::init(false)};
466 ::mlir::Pass::Option<bool> printSolverConstraints{*this, "print-solver-constraints", ::llvm::cl::desc("Whether to output SMT solver constraints along with intervals."), ::llvm::cl::init(false)};
467 ::mlir::Pass::Option<bool> printComputeIntervals{*this, "print-compute-intervals", ::llvm::cl::desc("Whether to print compute function intervals (default only prints constrain function intervals)."), ::llvm::cl::init(false)};
468 ::mlir::Pass::Option<bool> printUnreducedIntervals{*this, "print-unreduced-intervals", ::llvm::cl::desc("Whether to print tracked unreduced intervals alongside reduced interval summaries."), ::llvm::cl::init(false)};
469 ::mlir::Pass::Option<bool> printSSAIntervals{*this, "print-ssa-intervals", ::llvm::cl::desc("Whether to print per-SSA intervals for function arguments and scalar op results."), ::llvm::cl::init(false)};
470private:
471
472 friend std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass() {
473 return std::make_unique<DerivedT>();
474 }
475
476 friend std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options) {
477 return std::make_unique<DerivedT>(std::move(options));
478 }
479};
480} // namespace impl
481
482std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass() {
483 return impl::createIntervalAnalysisPrinterPass();
484}
485
486std::unique_ptr<::mlir::Pass> createIntervalAnalysisPrinterPass(IntervalAnalysisPrinterPassOptions options) {
487 return impl::createIntervalAnalysisPrinterPass(std::move(options));
488}
489#undef GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
490#endif // GEN_PASS_DEF_INTERVALANALYSISPRINTERPASS
491
492//===----------------------------------------------------------------------===//
493// PredecessorPrinterPass
494//===----------------------------------------------------------------------===//
495#ifdef GEN_PASS_DECL_PREDECESSORPRINTERPASS
496struct PredecessorPrinterPassOptions {
498 bool preRunRequiredAnalyses = false;
499};
500std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass();
501std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options);
502#undef GEN_PASS_DECL_PREDECESSORPRINTERPASS
503#endif // GEN_PASS_DECL_PREDECESSORPRINTERPASS
504#ifdef GEN_PASS_DEF_PREDECESSORPRINTERPASS
505
506namespace impl {
507 std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass();
508} // namespace impl
509
510namespace impl {
511 std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options);
512} // namespace impl
513namespace impl {
514
515template <typename DerivedT>
516class PredecessorPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
517public:
518 using Base = PredecessorPrinterPassBase;
519
520 PredecessorPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
521 PredecessorPrinterPassBase(const PredecessorPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
522 PredecessorPrinterPassBase& operator=(const PredecessorPrinterPassBase &) = delete;
523 PredecessorPrinterPassBase(PredecessorPrinterPassBase &&) = delete;
524 PredecessorPrinterPassBase& operator=(PredecessorPrinterPassBase &&) = delete;
525 ~PredecessorPrinterPassBase() = default;
526
528 static constexpr ::llvm::StringLiteral getArgumentName() {
529 return ::llvm::StringLiteral("llzk-print-predecessors");
530 }
531 ::llvm::StringRef getArgument() const override { return "llzk-print-predecessors"; }
532
533 ::llvm::StringRef getDescription() const override { return "Print the predecessors of all operations."; }
534
536 static constexpr ::llvm::StringLiteral getPassName() {
537 return ::llvm::StringLiteral("PredecessorPrinterPass");
538 }
539 ::llvm::StringRef getName() const override { return "PredecessorPrinterPass"; }
540
542 static bool classof(const ::mlir::Pass *pass) {
543 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
544 }
545
547 std::unique_ptr<::mlir::Pass> clonePass() const override {
548 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
549 }
550
552 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
553 registry.insert<llzk::LLZKDialect>();
554 registry.insert<llzk::boolean::BoolDialect>();
555 registry.insert<llzk::array::ArrayDialect>();
556 registry.insert<llzk::component::StructDialect>();
557 registry.insert<llzk::constrain::ConstrainDialect>();
558 registry.insert<llzk::felt::FeltDialect>();
559 registry.insert<llzk::global::GlobalDialect>();
560 registry.insert<llzk::include::IncludeDialect>();
561 registry.insert<llzk::function::FunctionDialect>();
562 registry.insert<llzk::string::StringDialect>();
563 registry.insert<llzk::polymorphic::PolymorphicDialect>();
564 registry.insert<mlir::arith::ArithDialect>();
565 registry.insert<mlir::scf::SCFDialect>();
566 }
567
571 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(PredecessorPrinterPassBase<DerivedT>)
572
573 PredecessorPrinterPassBase(PredecessorPrinterPassOptions options) : PredecessorPrinterPassBase() {
574 outputStream = std::move(options.outputStream);
575 preRunRequiredAnalyses = std::move(options.preRunRequiredAnalyses);
576 }
577protected:
578 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
580 "Print pass output to 'llvm::outs()'"),
582 "Print pass output to 'llvm::errs()'"),
584 "Print pass output to 'llvm::dbgs()'")
585 )};
586 ::mlir::Pass::Option<bool> preRunRequiredAnalyses{*this, "prerun", ::llvm::cl::desc("Whether to pre-run the required dataflow analyses (e.g., liveness analysis)."), ::llvm::cl::init(false)};
587private:
588
589 friend std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass() {
590 return std::make_unique<DerivedT>();
591 }
592
593 friend std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options) {
594 return std::make_unique<DerivedT>(std::move(options));
595 }
596};
597} // namespace impl
598
599std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass() {
600 return impl::createPredecessorPrinterPass();
601}
602
603std::unique_ptr<::mlir::Pass> createPredecessorPrinterPass(PredecessorPrinterPassOptions options) {
604 return impl::createPredecessorPrinterPass(std::move(options));
605}
606#undef GEN_PASS_DEF_PREDECESSORPRINTERPASS
607#endif // GEN_PASS_DEF_PREDECESSORPRINTERPASS
608
609//===----------------------------------------------------------------------===//
610// SymbolDefTreePrinterPass
611//===----------------------------------------------------------------------===//
612#ifdef GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
613struct SymbolDefTreePrinterPassOptions {
615 bool saveDotGraph = false;
616};
617std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass();
618std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options);
619#undef GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
620#endif // GEN_PASS_DECL_SYMBOLDEFTREEPRINTERPASS
621#ifdef GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
622
623namespace impl {
624 std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass();
625} // namespace impl
626
627namespace impl {
628 std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options);
629} // namespace impl
630namespace impl {
631
632template <typename DerivedT>
633class SymbolDefTreePrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
634public:
635 using Base = SymbolDefTreePrinterPassBase;
636
637 SymbolDefTreePrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
638 SymbolDefTreePrinterPassBase(const SymbolDefTreePrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
639 SymbolDefTreePrinterPassBase& operator=(const SymbolDefTreePrinterPassBase &) = delete;
640 SymbolDefTreePrinterPassBase(SymbolDefTreePrinterPassBase &&) = delete;
641 SymbolDefTreePrinterPassBase& operator=(SymbolDefTreePrinterPassBase &&) = delete;
642 ~SymbolDefTreePrinterPassBase() = default;
643
645 static constexpr ::llvm::StringLiteral getArgumentName() {
646 return ::llvm::StringLiteral("llzk-print-symbol-def-tree");
647 }
648 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-def-tree"; }
649
650 ::llvm::StringRef getDescription() const override { return "Print symbol definition tree."; }
651
653 static constexpr ::llvm::StringLiteral getPassName() {
654 return ::llvm::StringLiteral("SymbolDefTreePrinterPass");
655 }
656 ::llvm::StringRef getName() const override { return "SymbolDefTreePrinterPass"; }
657
659 static bool classof(const ::mlir::Pass *pass) {
660 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
661 }
662
664 std::unique_ptr<::mlir::Pass> clonePass() const override {
665 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
666 }
667
669 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
670 registry.insert<llzk::LLZKDialect>();
671 registry.insert<llzk::boolean::BoolDialect>();
672 registry.insert<llzk::array::ArrayDialect>();
673 registry.insert<llzk::component::StructDialect>();
674 registry.insert<llzk::constrain::ConstrainDialect>();
675 registry.insert<llzk::felt::FeltDialect>();
676 registry.insert<llzk::global::GlobalDialect>();
677 registry.insert<llzk::include::IncludeDialect>();
678 registry.insert<llzk::function::FunctionDialect>();
679 registry.insert<llzk::string::StringDialect>();
680 registry.insert<llzk::polymorphic::PolymorphicDialect>();
681 registry.insert<mlir::arith::ArithDialect>();
682 registry.insert<mlir::scf::SCFDialect>();
683 }
684
688 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolDefTreePrinterPassBase<DerivedT>)
689
690 SymbolDefTreePrinterPassBase(SymbolDefTreePrinterPassOptions options) : SymbolDefTreePrinterPassBase() {
691 outputStream = std::move(options.outputStream);
692 saveDotGraph = std::move(options.saveDotGraph);
693 }
694protected:
695 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
697 "Print pass output to 'llvm::outs()'"),
699 "Print pass output to 'llvm::errs()'"),
701 "Print pass output to 'llvm::dbgs()'")
702 )};
703 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc("Whether to dump the graph to DOT format."), ::llvm::cl::init(false)};
704private:
705
706 friend std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass() {
707 return std::make_unique<DerivedT>();
708 }
709
710 friend std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options) {
711 return std::make_unique<DerivedT>(std::move(options));
712 }
713};
714} // namespace impl
715
716std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass() {
717 return impl::createSymbolDefTreePrinterPass();
718}
719
720std::unique_ptr<::mlir::Pass> createSymbolDefTreePrinterPass(SymbolDefTreePrinterPassOptions options) {
721 return impl::createSymbolDefTreePrinterPass(std::move(options));
722}
723#undef GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
724#endif // GEN_PASS_DEF_SYMBOLDEFTREEPRINTERPASS
725
726//===----------------------------------------------------------------------===//
727// SymbolUseGraphPrinterPass
728//===----------------------------------------------------------------------===//
729#ifdef GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
730struct SymbolUseGraphPrinterPassOptions {
732 bool saveDotGraph = false;
733};
734std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass();
735std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options);
736#undef GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
737#endif // GEN_PASS_DECL_SYMBOLUSEGRAPHPRINTERPASS
738#ifdef GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
739
740namespace impl {
741 std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass();
742} // namespace impl
743
744namespace impl {
745 std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options);
746} // namespace impl
747namespace impl {
748
749template <typename DerivedT>
750class SymbolUseGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
751public:
752 using Base = SymbolUseGraphPrinterPassBase;
753
754 SymbolUseGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
755 SymbolUseGraphPrinterPassBase(const SymbolUseGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
756 SymbolUseGraphPrinterPassBase& operator=(const SymbolUseGraphPrinterPassBase &) = delete;
757 SymbolUseGraphPrinterPassBase(SymbolUseGraphPrinterPassBase &&) = delete;
758 SymbolUseGraphPrinterPassBase& operator=(SymbolUseGraphPrinterPassBase &&) = delete;
759 ~SymbolUseGraphPrinterPassBase() = default;
760
762 static constexpr ::llvm::StringLiteral getArgumentName() {
763 return ::llvm::StringLiteral("llzk-print-symbol-use-graph");
764 }
765 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-use-graph"; }
766
767 ::llvm::StringRef getDescription() const override { return "Print symbol use graph."; }
768
770 static constexpr ::llvm::StringLiteral getPassName() {
771 return ::llvm::StringLiteral("SymbolUseGraphPrinterPass");
772 }
773 ::llvm::StringRef getName() const override { return "SymbolUseGraphPrinterPass"; }
774
776 static bool classof(const ::mlir::Pass *pass) {
777 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
778 }
779
781 std::unique_ptr<::mlir::Pass> clonePass() const override {
782 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
783 }
784
786 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
787 registry.insert<llzk::LLZKDialect>();
788 registry.insert<llzk::boolean::BoolDialect>();
789 registry.insert<llzk::array::ArrayDialect>();
790 registry.insert<llzk::component::StructDialect>();
791 registry.insert<llzk::constrain::ConstrainDialect>();
792 registry.insert<llzk::felt::FeltDialect>();
793 registry.insert<llzk::global::GlobalDialect>();
794 registry.insert<llzk::include::IncludeDialect>();
795 registry.insert<llzk::function::FunctionDialect>();
796 registry.insert<llzk::string::StringDialect>();
797 registry.insert<llzk::polymorphic::PolymorphicDialect>();
798 registry.insert<mlir::arith::ArithDialect>();
799 registry.insert<mlir::scf::SCFDialect>();
800 }
801
805 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolUseGraphPrinterPassBase<DerivedT>)
806
807 SymbolUseGraphPrinterPassBase(SymbolUseGraphPrinterPassOptions options) : SymbolUseGraphPrinterPassBase() {
808 outputStream = std::move(options.outputStream);
809 saveDotGraph = std::move(options.saveDotGraph);
810 }
811protected:
812 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
814 "Print pass output to 'llvm::outs()'"),
816 "Print pass output to 'llvm::errs()'"),
818 "Print pass output to 'llvm::dbgs()'")
819 )};
820 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc("Whether to dump the graph to DOT format."), ::llvm::cl::init(false)};
821private:
822
823 friend std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass() {
824 return std::make_unique<DerivedT>();
825 }
826
827 friend std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options) {
828 return std::make_unique<DerivedT>(std::move(options));
829 }
830};
831} // namespace impl
832
833std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass() {
834 return impl::createSymbolUseGraphPrinterPass();
835}
836
837std::unique_ptr<::mlir::Pass> createSymbolUseGraphPrinterPass(SymbolUseGraphPrinterPassOptions options) {
838 return impl::createSymbolUseGraphPrinterPass(std::move(options));
839}
840#undef GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
841#endif // GEN_PASS_DEF_SYMBOLUSEGRAPHPRINTERPASS
842#ifdef GEN_PASS_REGISTRATION
843
844//===----------------------------------------------------------------------===//
845// CallGraphPrinterPass Registration
846//===----------------------------------------------------------------------===//
847
848inline void registerCallGraphPrinterPass() {
849 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
851 });
852}
853
854// Old registration code, kept for temporary backwards compatibility.
856 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
858 });
859}
860
861//===----------------------------------------------------------------------===//
862// CallGraphSCCsPrinterPass Registration
863//===----------------------------------------------------------------------===//
864
866 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
868 });
869}
870
871// Old registration code, kept for temporary backwards compatibility.
873 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
875 });
876}
877
878//===----------------------------------------------------------------------===//
879// ConstraintDependencyGraphPrinterPass Registration
880//===----------------------------------------------------------------------===//
881
883 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
885 });
886}
887
888// Old registration code, kept for temporary backwards compatibility.
890 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
892 });
893}
894
895//===----------------------------------------------------------------------===//
896// IntervalAnalysisPrinterPass Registration
897//===----------------------------------------------------------------------===//
898
900 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
902 });
903}
904
905// Old registration code, kept for temporary backwards compatibility.
907 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
909 });
910}
911
912//===----------------------------------------------------------------------===//
913// PredecessorPrinterPass Registration
914//===----------------------------------------------------------------------===//
915
916inline void registerPredecessorPrinterPass() {
917 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
919 });
920}
921
922// Old registration code, kept for temporary backwards compatibility.
924 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
926 });
927}
928
929//===----------------------------------------------------------------------===//
930// SymbolDefTreePrinterPass Registration
931//===----------------------------------------------------------------------===//
932
934 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
936 });
937}
938
939// Old registration code, kept for temporary backwards compatibility.
941 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
943 });
944}
945
946//===----------------------------------------------------------------------===//
947// SymbolUseGraphPrinterPass Registration
948//===----------------------------------------------------------------------===//
949
951 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
953 });
954}
955
956// Old registration code, kept for temporary backwards compatibility.
958 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
960 });
961}
962
963//===----------------------------------------------------------------------===//
964// Analysis Registration
965//===----------------------------------------------------------------------===//
966
967inline void registerAnalysisPasses() {
975}
976#undef GEN_PASS_REGISTRATION
977#endif // GEN_PASS_REGISTRATION
978// Deprecated. Please use the new per-pass macros.
979#ifdef GEN_PASS_CLASSES
980
981template <typename DerivedT>
982class CallGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
983public:
984 using Base = CallGraphPrinterPassBase;
985
986 CallGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
987 CallGraphPrinterPassBase(const CallGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
988 CallGraphPrinterPassBase& operator=(const CallGraphPrinterPassBase &) = delete;
989 CallGraphPrinterPassBase(CallGraphPrinterPassBase &&) = delete;
990 CallGraphPrinterPassBase& operator=(CallGraphPrinterPassBase &&) = delete;
991 ~CallGraphPrinterPassBase() = default;
992
994 static constexpr ::llvm::StringLiteral getArgumentName() {
995 return ::llvm::StringLiteral("llzk-print-call-graph");
996 }
997 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph"; }
998
999 ::llvm::StringRef getDescription() const override { return "Print the LLZK module's call graph."; }
1000
1002 static constexpr ::llvm::StringLiteral getPassName() {
1003 return ::llvm::StringLiteral("CallGraphPrinterPass");
1004 }
1005 ::llvm::StringRef getName() const override { return "CallGraphPrinterPass"; }
1006
1008 static bool classof(const ::mlir::Pass *pass) {
1009 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1010 }
1011
1013 std::unique_ptr<::mlir::Pass> clonePass() const override {
1014 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1015 }
1016
1018 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1019 registry.insert<llzk::LLZKDialect>();
1020 registry.insert<llzk::boolean::BoolDialect>();
1021 registry.insert<llzk::array::ArrayDialect>();
1022 registry.insert<llzk::component::StructDialect>();
1023 registry.insert<llzk::constrain::ConstrainDialect>();
1024 registry.insert<llzk::felt::FeltDialect>();
1025 registry.insert<llzk::global::GlobalDialect>();
1026 registry.insert<llzk::include::IncludeDialect>();
1027 registry.insert<llzk::function::FunctionDialect>();
1028 registry.insert<llzk::string::StringDialect>();
1029 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1030 registry.insert<mlir::arith::ArithDialect>();
1031 registry.insert<mlir::scf::SCFDialect>();
1032 }
1033
1037 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphPrinterPassBase<DerivedT>)
1038
1039protected:
1040 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1042 "Print pass output to 'llvm::outs()'"),
1044 "Print pass output to 'llvm::errs()'"),
1046 "Print pass output to 'llvm::dbgs()'")
1047 )};
1048};
1049
1050template <typename DerivedT>
1051class CallGraphSCCsPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1052public:
1053 using Base = CallGraphSCCsPrinterPassBase;
1054
1055 CallGraphSCCsPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1056 CallGraphSCCsPrinterPassBase(const CallGraphSCCsPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1057 CallGraphSCCsPrinterPassBase& operator=(const CallGraphSCCsPrinterPassBase &) = delete;
1058 CallGraphSCCsPrinterPassBase(CallGraphSCCsPrinterPassBase &&) = delete;
1059 CallGraphSCCsPrinterPassBase& operator=(CallGraphSCCsPrinterPassBase &&) = delete;
1060 ~CallGraphSCCsPrinterPassBase() = default;
1061
1063 static constexpr ::llvm::StringLiteral getArgumentName() {
1064 return ::llvm::StringLiteral("llzk-print-call-graph-sccs");
1065 }
1066 ::llvm::StringRef getArgument() const override { return "llzk-print-call-graph-sccs"; }
1067
1068 ::llvm::StringRef getDescription() const override { return "Print the SCCs from the LLZK module's call graph."; }
1069
1071 static constexpr ::llvm::StringLiteral getPassName() {
1072 return ::llvm::StringLiteral("CallGraphSCCsPrinterPass");
1073 }
1074 ::llvm::StringRef getName() const override { return "CallGraphSCCsPrinterPass"; }
1075
1077 static bool classof(const ::mlir::Pass *pass) {
1078 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1079 }
1080
1082 std::unique_ptr<::mlir::Pass> clonePass() const override {
1083 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1084 }
1085
1087 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1088 registry.insert<llzk::LLZKDialect>();
1089 registry.insert<llzk::boolean::BoolDialect>();
1090 registry.insert<llzk::array::ArrayDialect>();
1091 registry.insert<llzk::component::StructDialect>();
1092 registry.insert<llzk::constrain::ConstrainDialect>();
1093 registry.insert<llzk::felt::FeltDialect>();
1094 registry.insert<llzk::global::GlobalDialect>();
1095 registry.insert<llzk::include::IncludeDialect>();
1096 registry.insert<llzk::function::FunctionDialect>();
1097 registry.insert<llzk::string::StringDialect>();
1098 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1099 registry.insert<mlir::arith::ArithDialect>();
1100 registry.insert<mlir::scf::SCFDialect>();
1101 }
1102
1106 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(CallGraphSCCsPrinterPassBase<DerivedT>)
1107
1108protected:
1109 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1111 "Print pass output to 'llvm::outs()'"),
1113 "Print pass output to 'llvm::errs()'"),
1115 "Print pass output to 'llvm::dbgs()'")
1116 )};
1117};
1118
1119template <typename DerivedT>
1120class ConstraintDependencyGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1121public:
1122 using Base = ConstraintDependencyGraphPrinterPassBase;
1123
1124 ConstraintDependencyGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1125 ConstraintDependencyGraphPrinterPassBase(const ConstraintDependencyGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1126 ConstraintDependencyGraphPrinterPassBase& operator=(const ConstraintDependencyGraphPrinterPassBase &) = delete;
1127 ConstraintDependencyGraphPrinterPassBase(ConstraintDependencyGraphPrinterPassBase &&) = delete;
1128 ConstraintDependencyGraphPrinterPassBase& operator=(ConstraintDependencyGraphPrinterPassBase &&) = delete;
1129 ~ConstraintDependencyGraphPrinterPassBase() = default;
1130
1132 static constexpr ::llvm::StringLiteral getArgumentName() {
1133 return ::llvm::StringLiteral("llzk-print-constraint-dependency-graphs");
1134 }
1135 ::llvm::StringRef getArgument() const override { return "llzk-print-constraint-dependency-graphs"; }
1136
1137 ::llvm::StringRef getDescription() const override { return "Print constraint dependency graph for all LLZK structs."; }
1138
1140 static constexpr ::llvm::StringLiteral getPassName() {
1141 return ::llvm::StringLiteral("ConstraintDependencyGraphPrinterPass");
1142 }
1143 ::llvm::StringRef getName() const override { return "ConstraintDependencyGraphPrinterPass"; }
1144
1146 static bool classof(const ::mlir::Pass *pass) {
1147 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1148 }
1149
1151 std::unique_ptr<::mlir::Pass> clonePass() const override {
1152 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1153 }
1154
1156 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1157 registry.insert<llzk::LLZKDialect>();
1158 registry.insert<llzk::boolean::BoolDialect>();
1159 registry.insert<llzk::array::ArrayDialect>();
1160 registry.insert<llzk::component::StructDialect>();
1161 registry.insert<llzk::constrain::ConstrainDialect>();
1162 registry.insert<llzk::felt::FeltDialect>();
1163 registry.insert<llzk::global::GlobalDialect>();
1164 registry.insert<llzk::include::IncludeDialect>();
1165 registry.insert<llzk::function::FunctionDialect>();
1166 registry.insert<llzk::string::StringDialect>();
1167 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1168 registry.insert<mlir::arith::ArithDialect>();
1169 registry.insert<mlir::scf::SCFDialect>();
1170 }
1171
1175 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ConstraintDependencyGraphPrinterPassBase<DerivedT>)
1176
1177protected:
1178 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1180 "Print pass output to 'llvm::outs()'"),
1182 "Print pass output to 'llvm::errs()'"),
1184 "Print pass output to 'llvm::dbgs()'")
1185 )};
1186 ::mlir::Pass::Option<bool> runIntraprocedural{*this, "intraprocedural", ::llvm::cl::desc("Whether to run the analysis intra-procedurally only (default is false)."), ::llvm::cl::init(false)};
1187};
1188
1189template <typename DerivedT>
1190class IntervalAnalysisPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1191public:
1192 using Base = IntervalAnalysisPrinterPassBase;
1193
1194 IntervalAnalysisPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1195 IntervalAnalysisPrinterPassBase(const IntervalAnalysisPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1196 IntervalAnalysisPrinterPassBase& operator=(const IntervalAnalysisPrinterPassBase &) = delete;
1197 IntervalAnalysisPrinterPassBase(IntervalAnalysisPrinterPassBase &&) = delete;
1198 IntervalAnalysisPrinterPassBase& operator=(IntervalAnalysisPrinterPassBase &&) = delete;
1199 ~IntervalAnalysisPrinterPassBase() = default;
1200
1202 static constexpr ::llvm::StringLiteral getArgumentName() {
1203 return ::llvm::StringLiteral("llzk-print-interval-analysis");
1204 }
1205 ::llvm::StringRef getArgument() const override { return "llzk-print-interval-analysis"; }
1206
1207 ::llvm::StringRef getDescription() const override { return "Print interval analysis results for all LLZK structs."; }
1208
1210 static constexpr ::llvm::StringLiteral getPassName() {
1211 return ::llvm::StringLiteral("IntervalAnalysisPrinterPass");
1212 }
1213 ::llvm::StringRef getName() const override { return "IntervalAnalysisPrinterPass"; }
1214
1216 static bool classof(const ::mlir::Pass *pass) {
1217 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1218 }
1219
1221 std::unique_ptr<::mlir::Pass> clonePass() const override {
1222 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1223 }
1224
1226 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1227 registry.insert<llzk::LLZKDialect>();
1228 registry.insert<llzk::boolean::BoolDialect>();
1229 registry.insert<llzk::array::ArrayDialect>();
1230 registry.insert<llzk::component::StructDialect>();
1231 registry.insert<llzk::constrain::ConstrainDialect>();
1232 registry.insert<llzk::felt::FeltDialect>();
1233 registry.insert<llzk::global::GlobalDialect>();
1234 registry.insert<llzk::include::IncludeDialect>();
1235 registry.insert<llzk::function::FunctionDialect>();
1236 registry.insert<llzk::string::StringDialect>();
1237 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1238 registry.insert<mlir::arith::ArithDialect>();
1239 registry.insert<mlir::scf::SCFDialect>();
1240 }
1241
1245 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(IntervalAnalysisPrinterPassBase<DerivedT>)
1246
1247protected:
1248 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1250 "Print pass output to 'llvm::outs()'"),
1252 "Print pass output to 'llvm::errs()'"),
1254 "Print pass output to 'llvm::dbgs()'")
1255 )};
1256 ::mlir::Pass::Option<std::string> fieldName{*this, "field", ::llvm::cl::desc("The field to use for interval analysis. If supplied, this always overrides the module's detected field. If omitted, the pass first tries to detect a single field from the enclosing module's felt usage and otherwise falls back to bn128. Supported fields: bn128/bn254, babybear, goldilocks, grumpkin, koalabear, mersenne31"), ::llvm::cl::init("")};
1257 ::mlir::Pass::Option<bool> propagateInputConstraints{*this, "propagate-input-constraints", ::llvm::cl::desc("Whether to propagate constraints on inputs from @constrain to @compute functions. This allows for tighter intervals to possibly be found for computed values, assuming that the witness generator would include constraints as assertions during the computation."), ::llvm::cl::init(false)};
1258 ::mlir::Pass::Option<bool> printSolverConstraints{*this, "print-solver-constraints", ::llvm::cl::desc("Whether to output SMT solver constraints along with intervals."), ::llvm::cl::init(false)};
1259 ::mlir::Pass::Option<bool> printComputeIntervals{*this, "print-compute-intervals", ::llvm::cl::desc("Whether to print compute function intervals (default only prints constrain function intervals)."), ::llvm::cl::init(false)};
1260 ::mlir::Pass::Option<bool> printUnreducedIntervals{*this, "print-unreduced-intervals", ::llvm::cl::desc("Whether to print tracked unreduced intervals alongside reduced interval summaries."), ::llvm::cl::init(false)};
1261 ::mlir::Pass::Option<bool> printSSAIntervals{*this, "print-ssa-intervals", ::llvm::cl::desc("Whether to print per-SSA intervals for function arguments and scalar op results."), ::llvm::cl::init(false)};
1262};
1263
1264template <typename DerivedT>
1265class PredecessorPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1266public:
1267 using Base = PredecessorPrinterPassBase;
1268
1269 PredecessorPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1270 PredecessorPrinterPassBase(const PredecessorPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1271 PredecessorPrinterPassBase& operator=(const PredecessorPrinterPassBase &) = delete;
1272 PredecessorPrinterPassBase(PredecessorPrinterPassBase &&) = delete;
1273 PredecessorPrinterPassBase& operator=(PredecessorPrinterPassBase &&) = delete;
1274 ~PredecessorPrinterPassBase() = default;
1275
1277 static constexpr ::llvm::StringLiteral getArgumentName() {
1278 return ::llvm::StringLiteral("llzk-print-predecessors");
1279 }
1280 ::llvm::StringRef getArgument() const override { return "llzk-print-predecessors"; }
1281
1282 ::llvm::StringRef getDescription() const override { return "Print the predecessors of all operations."; }
1283
1285 static constexpr ::llvm::StringLiteral getPassName() {
1286 return ::llvm::StringLiteral("PredecessorPrinterPass");
1287 }
1288 ::llvm::StringRef getName() const override { return "PredecessorPrinterPass"; }
1289
1291 static bool classof(const ::mlir::Pass *pass) {
1292 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1293 }
1294
1296 std::unique_ptr<::mlir::Pass> clonePass() const override {
1297 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1298 }
1299
1301 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1302 registry.insert<llzk::LLZKDialect>();
1303 registry.insert<llzk::boolean::BoolDialect>();
1304 registry.insert<llzk::array::ArrayDialect>();
1305 registry.insert<llzk::component::StructDialect>();
1306 registry.insert<llzk::constrain::ConstrainDialect>();
1307 registry.insert<llzk::felt::FeltDialect>();
1308 registry.insert<llzk::global::GlobalDialect>();
1309 registry.insert<llzk::include::IncludeDialect>();
1310 registry.insert<llzk::function::FunctionDialect>();
1311 registry.insert<llzk::string::StringDialect>();
1312 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1313 registry.insert<mlir::arith::ArithDialect>();
1314 registry.insert<mlir::scf::SCFDialect>();
1315 }
1316
1320 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(PredecessorPrinterPassBase<DerivedT>)
1321
1322protected:
1323 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1325 "Print pass output to 'llvm::outs()'"),
1327 "Print pass output to 'llvm::errs()'"),
1329 "Print pass output to 'llvm::dbgs()'")
1330 )};
1331 ::mlir::Pass::Option<bool> preRunRequiredAnalyses{*this, "prerun", ::llvm::cl::desc("Whether to pre-run the required dataflow analyses (e.g., liveness analysis)."), ::llvm::cl::init(false)};
1332};
1333
1334template <typename DerivedT>
1335class SymbolDefTreePrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1336public:
1337 using Base = SymbolDefTreePrinterPassBase;
1338
1339 SymbolDefTreePrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1340 SymbolDefTreePrinterPassBase(const SymbolDefTreePrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1341 SymbolDefTreePrinterPassBase& operator=(const SymbolDefTreePrinterPassBase &) = delete;
1342 SymbolDefTreePrinterPassBase(SymbolDefTreePrinterPassBase &&) = delete;
1343 SymbolDefTreePrinterPassBase& operator=(SymbolDefTreePrinterPassBase &&) = delete;
1344 ~SymbolDefTreePrinterPassBase() = default;
1345
1347 static constexpr ::llvm::StringLiteral getArgumentName() {
1348 return ::llvm::StringLiteral("llzk-print-symbol-def-tree");
1349 }
1350 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-def-tree"; }
1351
1352 ::llvm::StringRef getDescription() const override { return "Print symbol definition tree."; }
1353
1355 static constexpr ::llvm::StringLiteral getPassName() {
1356 return ::llvm::StringLiteral("SymbolDefTreePrinterPass");
1357 }
1358 ::llvm::StringRef getName() const override { return "SymbolDefTreePrinterPass"; }
1359
1361 static bool classof(const ::mlir::Pass *pass) {
1362 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1363 }
1364
1366 std::unique_ptr<::mlir::Pass> clonePass() const override {
1367 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1368 }
1369
1371 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1372 registry.insert<llzk::LLZKDialect>();
1373 registry.insert<llzk::boolean::BoolDialect>();
1374 registry.insert<llzk::array::ArrayDialect>();
1375 registry.insert<llzk::component::StructDialect>();
1376 registry.insert<llzk::constrain::ConstrainDialect>();
1377 registry.insert<llzk::felt::FeltDialect>();
1378 registry.insert<llzk::global::GlobalDialect>();
1379 registry.insert<llzk::include::IncludeDialect>();
1380 registry.insert<llzk::function::FunctionDialect>();
1381 registry.insert<llzk::string::StringDialect>();
1382 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1383 registry.insert<mlir::arith::ArithDialect>();
1384 registry.insert<mlir::scf::SCFDialect>();
1385 }
1386
1390 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolDefTreePrinterPassBase<DerivedT>)
1391
1392protected:
1393 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1395 "Print pass output to 'llvm::outs()'"),
1397 "Print pass output to 'llvm::errs()'"),
1399 "Print pass output to 'llvm::dbgs()'")
1400 )};
1401 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc("Whether to dump the graph to DOT format."), ::llvm::cl::init(false)};
1402};
1403
1404template <typename DerivedT>
1405class SymbolUseGraphPrinterPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
1406public:
1407 using Base = SymbolUseGraphPrinterPassBase;
1408
1409 SymbolUseGraphPrinterPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
1410 SymbolUseGraphPrinterPassBase(const SymbolUseGraphPrinterPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
1411 SymbolUseGraphPrinterPassBase& operator=(const SymbolUseGraphPrinterPassBase &) = delete;
1412 SymbolUseGraphPrinterPassBase(SymbolUseGraphPrinterPassBase &&) = delete;
1413 SymbolUseGraphPrinterPassBase& operator=(SymbolUseGraphPrinterPassBase &&) = delete;
1414 ~SymbolUseGraphPrinterPassBase() = default;
1415
1417 static constexpr ::llvm::StringLiteral getArgumentName() {
1418 return ::llvm::StringLiteral("llzk-print-symbol-use-graph");
1419 }
1420 ::llvm::StringRef getArgument() const override { return "llzk-print-symbol-use-graph"; }
1421
1422 ::llvm::StringRef getDescription() const override { return "Print symbol use graph."; }
1423
1425 static constexpr ::llvm::StringLiteral getPassName() {
1426 return ::llvm::StringLiteral("SymbolUseGraphPrinterPass");
1427 }
1428 ::llvm::StringRef getName() const override { return "SymbolUseGraphPrinterPass"; }
1429
1431 static bool classof(const ::mlir::Pass *pass) {
1432 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
1433 }
1434
1436 std::unique_ptr<::mlir::Pass> clonePass() const override {
1437 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
1438 }
1439
1441 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
1442 registry.insert<llzk::LLZKDialect>();
1443 registry.insert<llzk::boolean::BoolDialect>();
1444 registry.insert<llzk::array::ArrayDialect>();
1445 registry.insert<llzk::component::StructDialect>();
1446 registry.insert<llzk::constrain::ConstrainDialect>();
1447 registry.insert<llzk::felt::FeltDialect>();
1448 registry.insert<llzk::global::GlobalDialect>();
1449 registry.insert<llzk::include::IncludeDialect>();
1450 registry.insert<llzk::function::FunctionDialect>();
1451 registry.insert<llzk::string::StringDialect>();
1452 registry.insert<llzk::polymorphic::PolymorphicDialect>();
1453 registry.insert<mlir::arith::ArithDialect>();
1454 registry.insert<mlir::scf::SCFDialect>();
1455 }
1456
1460 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(SymbolUseGraphPrinterPassBase<DerivedT>)
1461
1462protected:
1463 ::mlir::Pass::Option<::llzk::OutputStream> outputStream{*this, "stream", ::llvm::cl::desc("Specifies the stream to which the pass prints."), ::llvm::cl::init(::llzk::OutputStream::Errs), ::llvm::cl::values(
1465 "Print pass output to 'llvm::outs()'"),
1467 "Print pass output to 'llvm::errs()'"),
1469 "Print pass output to 'llvm::dbgs()'")
1470 )};
1471 ::mlir::Pass::Option<bool> saveDotGraph{*this, "saveDot", ::llvm::cl::desc("Whether to dump the graph to DOT format."), ::llvm::cl::init(false)};
1472};
1473#undef GEN_PASS_CLASSES
1474#endif // GEN_PASS_CLASSES
std::unique_ptr<::mlir::Pass > createConstraintDependencyGraphPrinterPass()
std::unique_ptr<::mlir::Pass > createPredecessorPrinterPass()
std::unique_ptr<::mlir::Pass > createSymbolUseGraphPrinterPass()
std::unique_ptr<::mlir::Pass > createIntervalAnalysisPrinterPass()
std::unique_ptr<::mlir::Pass > createCallGraphSCCsPrinterPass()
std::unique_ptr<::mlir::Pass > createSymbolDefTreePrinterPass()
std::unique_ptr<::mlir::Pass > createCallGraphPrinterPass()
void registerIntervalAnalysisPrinterPassPass()
void registerSymbolDefTreePrinterPassPass()
void registerPredecessorPrinterPassPass()
void registerIntervalAnalysisPrinterPass()
void registerSymbolUseGraphPrinterPassPass()
void registerCallGraphPrinterPass()
void registerConstraintDependencyGraphPrinterPass()
void registerSymbolUseGraphPrinterPass()
void registerCallGraphPrinterPassPass()
::llvm::StringRef stringifyOutputStream(OutputStream val)
void registerPredecessorPrinterPass()
void registerCallGraphSCCsPrinterPass()
void registerConstraintDependencyGraphPrinterPassPass()
void registerCallGraphSCCsPrinterPassPass()
void registerAnalysisPasses()
void registerSymbolDefTreePrinterPass()