1//===-- AnalysisPasses.td - LLZK Analysis Passes -----------*- tablegen -*-===//
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
8//===----------------------------------------------------------------------===//
10#ifndef LLZK_ANALYSIS_TD
11#define LLZK_ANALYSIS_TD
13include "llzk/Pass/PassBase.td"
15def CallGraphPrinterPass : LLZKPass<"llzk-print-call-graph"> {
16 let summary = "Print the LLZK module's call graph.";
17 let constructor = "llzk::createCallGraphPrinterPass(llvm::errs())";
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())";
25def ConstraintDependencyGraphPrinterPass
26 : LLZKPass<"llzk-print-constraint-dependency-graphs"> {
27 let summary = "Print constraint dependency graph for all LLZK structs.";
29 "llzk::createConstraintDependencyGraphPrinterPass(llvm::errs())";
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())";
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.">,
45#endif // LLZK_ANALYSIS_TD