17#include <mlir/Pass/PassManager.h>
18#include <mlir/Pass/PassRegistry.h>
19#include <mlir/Transforms/Passes.h>
27 *
this,
"max-degree", llvm::cl::desc(
"Maximum polynomial degree (must be ≥ 2)"),
39 PassPipelineRegistration<>(
40 "llzk-remove-unnecessary-ops",
41 "Remove unnecessary operations, such as redundant reads or repeated constraints",
42 [](OpPassManager &pm) {
48 PassPipelineRegistration<>(
49 "llzk-remove-unnecessary-ops-and-defs",
50 "Remove unnecessary operations, member definitions, and struct definitions",
54 PassPipelineRegistration<FullPolyLoweringOptions>(
55 "llzk-full-poly-lowering",
56 "Lower all polynomial constraints to a given max degree, then remove unnecessary operations "
67 PassPipelineRegistration<>(
68 "llzk-product-program",
69 "Convert @compute/@constrain functions to @product function and perform alignment",
70 [](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 > createFuseProductLoopsPass()
Option< unsigned > maxDegree