LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
DialectRegistration.cpp
Go to the documentation of this file.
1//===-- DialectRegistration.cpp ---------------------------------*- 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//===----------------------------------------------------------------------===//
13//===----------------------------------------------------------------------===//
14
16
17#include "smt/Conversions/ConversionPasses.h"
18
47
48#include <mlir/Dialect/Arith/IR/Arith.h>
49#include <mlir/Dialect/Func/Extensions/InlinerExtension.h>
50#include <mlir/Dialect/SCF/IR/SCF.h>
51#include <mlir/Dialect/SMT/IR/SMTDialect.h>
52#include <mlir/IR/DialectRegistry.h>
53#include <mlir/Pass/PassRegistry.h>
54#include <mlir/Transforms/Passes.h>
55
56namespace llzk {
57
85
89namespace mlir_patch {
90
91static inline void registerTransformsPasses() {
92 mlir::registerBubbleDownMemorySpaceCastsPass();
93 mlir::registerCSEPass();
94 mlir::registerCanonicalizerPass();
95 mlir::registerCompositeFixedPointPass();
96 mlir::registerControlFlowSinkPass();
97 mlir::registerGenerateRuntimeVerificationPass();
98 mlir::registerInlinerPass();
99 mlir::registerLocationSnapshotPass();
100 mlir::registerLoopInvariantCodeMotionPass();
101 mlir::registerLoopInvariantSubsetHoistingPass();
102 mlir::registerMem2RegPass();
103 mlir::registerPrintIRPass();
104 mlir::registerPrintOpStatsPass();
106 mlir::registerSCCPPass();
107 mlir::registerSROAPass();
108 mlir::registerStripDebugInfoPass();
109 mlir::registerSymbolDCEPass();
110 mlir::registerSymbolPrivatizePass();
111 mlir::registerTopologicalSortPass();
112 mlir::registerTrivialDeadCodeEliminationPass();
113 mlir::registerViewOpGraphPass();
114}
115
116} // namespace mlir_patch
117
118void registerPasses(mlir::DialectRegistry &registry) {
129 llzk::smt::registerConversionPasses();
131
132 // Inlining extensions for `llzk-inline-structs` (or MLIR inlining in general)
134
135 // Inlining extensions for `llzk-inline-free-functions` and smt lowering
136 mlir::func::registerInlinerExtension(registry);
137
138 // MLIR builtin pass registration
139 mlir_patch::registerTransformsPasses();
140}
141
142} // namespace llzk
Provides SpecializedSROA<AllocOpTy> and SpecializedMem2Reg<AllocOpTy>: pass templates that replicate ...
Common LLZK attributes.
Definition Dialect.h.inc:13
LLZK array operations.
Definition Dialect.h.inc:13
LLZK boolean operations.
Definition Dialect.h.inc:13
LLZK type conversion operations.
Definition Dialect.h.inc:13
LLZK component/struct operations.
Definition Dialect.h.inc:13
LLZK constraint emission operations.
Definition Dialect.h.inc:13
LLZK felt (Field ELemenT) type and operations.
Definition Dialect.h.inc:13
LLZK function operations.
Definition Dialect.h.inc:13
LLZK support for global values, defined outside of structs.
Definition Dialect.h.inc:13
LLZK include operations.
Definition Dialect.h.inc:13
Dialect for working with plain-old-data structs.
Definition Dialect.h.inc:13
LLZK types and operations to support templated/parameterized structs.
Definition Dialect.h.inc:13
LLZK support for random access memory during witness generation.
Definition Dialect.h.inc:13
SMT-LIB script metadata retained through emission.
LLZK string type and operations.
Definition Dialect.h.inc:13
LLZK verification dialect for encoding specifications for functions and structs.
Definition Dialect.h.inc:13
Declares dialect and pass registration functions for core LLZK dialects.
void registerTransformationPasses()
void registerTransformationPasses()
void registerTransformationPasses()
void registerTransformationPasses()
Replace mlir::registerTransformsPasses() to register a custom remove-dead-values pass because MLIR ve...
void registerTransformationPasses()
void registerExtensions(mlir::DialectRegistry &registry)
Registers dialect extensions for the verif dialect.
Definition Dialect.cpp:107
std::unique_ptr< mlir::Pass > createRemoveDeadValuesWorkaroundPass()
void registerDialects(mlir::DialectRegistry &registry)
Register core LLZK dialects, the MLIR arith, scf, and smt dialects, and verification extensions in re...
void registerValidationPasses()
void registerAnalysisPasses()
void registerPasses(mlir::DialectRegistry &registry)
Register LLZK analysis, validation, and transformation passes and pipelines, SMT conversion passes,...
void registerInliningExtensions(DialectRegistry &registry)