LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
llzk-opt.cpp
Go to the documentation of this file.
1//===-- llzk-opt.cpp - LLZK opt tool ----------------------------*- C++ -*-===//
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//===----------------------------------------------------------------------===//
14//===----------------------------------------------------------------------===//
15
17#include "llzk/Config/Config.h"
25#include "r1cs/Dialect/IR/Dialect.h"
26#include "r1cs/InitAllDialects.h"
27
28#include <mlir/IR/DialectRegistry.h>
29#include <mlir/Pass/PassManager.h>
30#include <mlir/Pass/PassRegistry.h>
31#include <mlir/Tools/mlir-opt/MlirOptMain.h>
32
33#include <llvm/ADT/StringRef.h>
34#include <llvm/Support/CommandLine.h>
35#include <llvm/Support/PrettyStackTrace.h>
36#include <llvm/Support/Signals.h>
37
38#include "tools/config.h"
39
40#if LLZK_WITH_PCL
41#include <pcl/Dialect/IR/Dialect.h>
42#include <pcl/InitAllDialects.h>
43#endif // LLZK_WITH_PCL
44
45static llvm::cl::list<std::string> IncludeDirs(
46 "I", llvm::cl::desc("Directory of include files"), llvm::cl::value_desc("directory"),
47 llvm::cl::Prefix
48);
49
50static llvm::cl::opt<bool>
51 PrintAllOps("print-llzk-ops", llvm::cl::desc("Print a list of all ops registered in LLZK"));
52
53int main(int argc, char **argv) {
54 llvm::sys::PrintStackTraceOnErrorSignal(llvm::StringRef());
55 llvm::setBugReportMsg(
56 "PLEASE submit a bug report to " BUG_REPORT_URL
57 " and include the crash backtrace, relevant LLZK files,"
58 " and associated run script(s).\n"
59 );
60 llvm::cl::AddExtraVersionPrinter([](llvm::raw_ostream &os) {
61 os << "\nLLZK (" LLZK_URL "):\n LLZK version " LLZK_VERSION_STRING "\n";
62 });
63
64 // MLIR initialization
65 mlir::DialectRegistry registry;
67 r1cs::registerAllDialects(registry);
68#if LLZK_WITH_PCL
69 pcl::registerAllDialects(registry);
70#endif // LLZK_WITH_PCL
71
79
80 // Register and parse command line options.
81 std::string inputFilename, outputFilename;
82 std::tie(inputFilename, outputFilename) =
83 registerAndParseCLIOptions(argc, argv, "llzk-opt", registry);
84
85 if (PrintAllOps) {
86 mlir::MLIRContext context;
87 context.appendDialectRegistry(registry);
88 context.loadAllAvailableDialects();
89 llvm::outs() << "All ops registered in LLZK IR: {\n";
90 for (const auto &opName : context.getRegisteredOperations()) {
91 llvm::outs().indent(2) << opName.getStringRef() << '\n';
92 }
93 llvm::outs() << "}\n";
94 return EXIT_SUCCESS;
95 }
96
97 // Set the include directories from CL option
98 if (mlir::failed(llzk::GlobalSourceMgr::get().setup(IncludeDirs))) {
99 return EXIT_FAILURE;
100 }
101
102 // Run 'mlir-opt'
103 auto result = mlir::MlirOptMain(argc, argv, inputFilename, outputFilename, registry);
104 return mlir::asMainReturnCode(result);
105}
#define LLZK_VERSION_STRING
Definition Config.h:12
#define LLZK_URL
Definition Config.h:17
static GlobalSourceMgr & get()
#define BUG_REPORT_URL
Definition config.h:14
int main(int argc, char **argv)
Definition llzk-opt.cpp:53
This file defines llzk::registerAllDialects.
void registerTransformationPasses()
void registerTransformationPasses()
void registerTransformationPassPipelines()
void registerValidationPasses()
void registerAllDialects(mlir::DialectRegistry &registry)
void registerAnalysisPasses()