18#include <mlir/Pass/PassManager.h>
19#include <mlir/Pass/PassRegistry.h>
20#include <mlir/Transforms/Passes.h>
28 *
this,
"max-degree", llvm::cl::desc(
"Maximum polynomial degree (must be ≥ 2)"),
40 PassPipelineRegistration<>(
41 "llzk-remove-unnecessary-ops",
42 "Remove unnecessary operations, such as redundant reads or repeated constraints",
43 [](OpPassManager &pm) {
49 PassPipelineRegistration<>(
50 "llzk-remove-unnecessary-ops-and-defs",
51 "Remove unnecessary operations, member definitions, and struct definitions",
55 PassPipelineRegistration<FullPolyLoweringOptions>(
56 "llzk-full-poly-lowering",
57 "Lower all polynomial constraints to a given max degree, then remove unnecessary operations "
68 PassPipelineRegistration<>(
69 "llzk-full-r1cs-lowering",
"Lower all polynomial constraints to r1cs", [](OpPassManager &pm) {
80 pm.addPass(mlir::createCSEPass());
84 PassPipelineRegistration<>(
85 "llzk-product-program",
86 "Convert @compute/@constrain functions to @product function and perform alignment",
87 [](OpPassManager &pm) {
std::unique_ptr< mlir::Pass > createRedundantOperationEliminationPass()
void registerTransformationPassPipelines()
std::unique_ptr< Pass > createComputeConstrainToProductPass()
std::unique_ptr< mlir::Pass > createRedundantReadAndWriteEliminationPass()
std::unique_ptr< mlir::Pass > createUnusedDeclarationEliminationPass()
std::unique_ptr< mlir::Pass > createPolyLoweringPass()
void addRemoveUnnecessaryOpsAndDefsPipeline(OpPassManager &pm)
std::unique_ptr< mlir::Pass > createR1CSLoweringPass()
std::unique_ptr< mlir::Pass > createFuseProductLoopsPass()
Option< unsigned > maxDegree