LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
AnalysisPasses.td
Go to the documentation of this file.
1//===-- AnalysisPasses.td - LLZK Analysis Passes -----------*- tablegen -*-===//
2//
3// Part of the LLZK Project, under the Apache License v2.0.
4// See LICENSE.txt for license information.
5// Copyright 2025 Veridise Inc.
6// SPDX-License-Identifier: Apache-2.0
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLZK_ANALYSIS_TD
11#define LLZK_ANALYSIS_TD
12
13include "llzk/Pass/PassBase.td"
14
15def CallGraphPrinterPass : LLZKPass<"llzk-print-call-graph"> {
16 let summary = "Print the LLZK module's call graph.";
17 let constructor = "llzk::createCallGraphPrinterPass(llvm::errs())";
18}
19
20def CallGraphSCCsPrinterPass : LLZKPass<"llzk-print-call-graph-sccs"> {
21 let summary = "Print the SCCs from the LLZK module's call graph.";
22 let constructor = "llzk::createCallGraphSCCsPrinterPass(llvm::errs())";
23}
24
25def ConstraintDependencyGraphPrinterPass
26 : LLZKPass<"llzk-print-constraint-dependency-graphs"> {
27 let summary = "Print constraint dependency graph for all LLZK structs.";
28 let constructor =
29 "llzk::createConstraintDependencyGraphPrinterPass(llvm::errs())";
30}
31
32def IntervalAnalysisPrinterPass : LLZKPass<"llzk-print-interval-analysis"> {
33 let summary = "Print interval analysis results for all LLZK structs.";
34 let constructor = "llzk::createIntervalAnalysisPrinterPass(llvm::errs())";
35 let options =
36 [Option<"fieldName", "field", "std::string", /* default */ "\"bn128\"",
37 "The field to use for interval analysis. Supported fields: "
38 "bn128/bn254, babybear, goldilocks, mersenne31">,
39 Option<"printSolverConstraints", "print-solver-constraints", "bool",
40 /* default */ "false",
41 "Whether to output SMT solver constraints along with intervals.">,
42 ];
43}
44
45#endif // LLZK_ANALYSIS_TD