73inline static void registerTransformsPasses() {
75 mlir::registerCanonicalizer();
76 mlir::registerCompositeFixedPointPass();
77 mlir::registerControlFlowSink();
78 mlir::registerGenerateRuntimeVerification();
79 mlir::registerInliner();
80 mlir::registerLocationSnapshot();
81 mlir::registerLoopInvariantCodeMotion();
82 mlir::registerLoopInvariantSubsetHoisting();
83 mlir::registerMem2Reg();
84 mlir::registerPrintIRPass();
85 mlir::registerPrintOpStats();
89 mlir::registerStripDebugInfo();
90 mlir::registerSymbolDCE();
91 mlir::registerSymbolPrivatize();
92 mlir::registerTopologicalSort();
93 mlir::registerViewOpGraph();
98int main(
int argc,
char **argv) {
99 llvm::sys::PrintStackTraceOnErrorSignal(llvm::StringRef());
100 llvm::setBugReportMsg(
102 " and include the crash backtrace, relevant LLZK files,"
103 " and associated run script(s).\n"
105 llvm::cl::AddExtraVersionPrinter([](llvm::raw_ostream &os) {
110 mlir::DialectRegistry registry;
112 mlir_hotfix::registerTransformsPasses();
114 r1cs::registerAllDialects(registry);
115 zklean::registerAllDialects(registry);
116 mlir::func::registerInlinerExtension(registry);
118 pcl::registerAllDialects(registry);
130 r1cs::registerTransformationPasses();
131 zklean::registerConversionPasses();
133 pcl::registerPCLConversionPasses();
135 llzk::smt::registerConversionPasses();
138 r1cs::registerTransformationPassPipelines();
141 std::string inputFilename, outputFilename;
142 std::tie(inputFilename, outputFilename) =
143 registerAndParseCLIOptions(argc, argv,
"llzk-opt", registry);
146 mlir::MLIRContext context;
147 context.appendDialectRegistry(registry);
148 context.loadAllAvailableDialects();
149 llvm::outs() <<
"All ops registered in LLZK IR: {\n";
150 for (
const auto &opName : context.getRegisteredOperations()) {
151 llvm::outs().indent(2) << opName.getStringRef() <<
'\n';
153 llvm::outs() <<
"}\n";
163 auto result = mlir::MlirOptMain(argc, argv, inputFilename, outputFilename, registry);
164 return mlir::asMainReturnCode(result);