LLZK
3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Toggle main menu visibility
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
15
#include "
llzk/Dialect/DialectRegistration.h
"
16
17
#include "smt/Conversions/ConversionPasses.h"
18
19
#include "
llzk/Analysis/AnalysisPasses.h
"
20
#include "
llzk/Dialect/Array/IR/Dialect.h
"
21
#include "
llzk/Dialect/Array/Transforms/TransformationPasses.h
"
22
#include "
llzk/Dialect/Bool/IR/Dialect.h
"
23
#include "
llzk/Dialect/Bool/Transforms/TransformationPasses.h
"
24
#include "
llzk/Dialect/Cast/IR/Dialect.h
"
25
#include "
llzk/Dialect/Constrain/IR/Dialect.h
"
26
#include "
llzk/Dialect/Felt/IR/Dialect.h
"
27
#include "
llzk/Dialect/Function/IR/Dialect.h
"
28
#include "
llzk/Dialect/Global/IR/Dialect.h
"
29
#include "
llzk/Dialect/Global/Transforms/TransformationPasses.h
"
30
#include "
llzk/Dialect/Include/IR/Dialect.h
"
31
#include "
llzk/Dialect/Include/Transforms/InlineIncludesPass.h
"
32
#include "
llzk/Dialect/LLZK/IR/Dialect.h
"
33
#include "
llzk/Dialect/POD/IR/Dialect.h
"
34
#include "
llzk/Dialect/POD/Transforms/TransformationPasses.h
"
35
#include "
llzk/Dialect/Polymorphic/IR/Dialect.h
"
36
#include "
llzk/Dialect/Polymorphic/Transforms/TransformationPasses.h
"
37
#include "
llzk/Dialect/RAM/IR/Dialect.h
"
38
#include "
llzk/Dialect/SMTInfo/IR/SMTInfoDialect.h
"
39
#include "
llzk/Dialect/String/IR/Dialect.h
"
40
#include "
llzk/Dialect/Struct/IR/Dialect.h
"
41
#include "
llzk/Dialect/Struct/Transforms/TransformationPasses.h
"
42
#include "
llzk/Dialect/Verif/IR/Dialect.h
"
43
#include "
llzk/Transforms/LLZKTransformationPassPipelines.h
"
44
#include "
llzk/Transforms/LLZKTransformationPasses.h
"
45
#include "
llzk/Transforms/SpecializedMemoryPasses.h
"
46
#include "
llzk/Validators/LLZKValidationPasses.h
"
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
56
namespace
llzk
{
57
58
void
registerDialects
(mlir::DialectRegistry ®istry) {
59
registry.insert<
60
// clang-format off
61
llzk::LLZKDialect
,
62
llzk::array::ArrayDialect
,
63
llzk::boolean::BoolDialect
,
64
llzk::cast::CastDialect
,
65
llzk::component::StructDialect
,
66
llzk::constrain::ConstrainDialect
,
67
llzk::felt::FeltDialect
,
68
llzk::function::FunctionDialect
,
69
llzk::global::GlobalDialect
,
70
llzk::include::IncludeDialect
,
71
llzk::pod::PODDialect
,
72
llzk::polymorphic::PolymorphicDialect
,
73
llzk::ram::RAMDialect
,
74
llzk::smt_info::SMTInfoDialect
,
75
llzk::string::StringDialect
,
76
llzk::verif::VerifDialect
,
77
mlir::arith::ArithDialect,
78
mlir::scf::SCFDialect,
79
mlir::smt::SMTDialect
80
// clang-format on
81
>();
82
83
verif::registerExtensions
(registry);
84
}
85
89
namespace
mlir_patch
{
90
91
static
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();
105
mlir::registerPass(
llzk::createRemoveDeadValuesWorkaroundPass
);
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
118
void
registerPasses
(mlir::DialectRegistry ®istry) {
119
llzk::registerValidationPasses
();
120
llzk::registerAnalysisPasses
();
121
llzk::registerTransformationPasses
();
122
llzk::array::registerTransformationPasses
();
123
llzk::component::registerTransformationPasses
();
124
llzk::boolean::registerTransformationPasses
();
125
llzk::global::registerTransformationPasses
();
126
llzk::include::registerTransformationPasses
();
127
llzk::polymorphic::registerTransformationPasses
();
128
llzk::pod::registerTransformationPasses
();
129
llzk::smt::registerConversionPasses();
130
llzk::registerTransformationPassPipelines
();
131
132
// Inlining extensions for `llzk-inline-structs` (or MLIR inlining in general)
133
registerInliningExtensions
(registry);
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
AnalysisPasses.h
Dialect.h
TransformationPasses.h
Dialect.h
TransformationPasses.h
Dialect.h
Dialect.h
Dialect.h
Dialect.h
Dialect.h
TransformationPasses.h
Dialect.h
InlineIncludesPass.h
LLZKTransformationPassPipelines.h
LLZKTransformationPasses.h
LLZKValidationPasses.h
Dialect.h
Dialect.h
TransformationPasses.h
Dialect.h
TransformationPasses.h
Dialect.h
SMTInfoDialect.h
SpecializedMemoryPasses.h
Provides SpecializedSROA<AllocOpTy> and SpecializedMem2Reg<AllocOpTy>: pass templates that replicate ...
Dialect.h
Dialect.h
TransformationPasses.h
Dialect.h
llzk::LLZKDialect
Common LLZK attributes.
Definition
Dialect.h.inc:13
llzk::array::ArrayDialect
LLZK array operations.
Definition
Dialect.h.inc:13
llzk::boolean::BoolDialect
LLZK boolean operations.
Definition
Dialect.h.inc:13
llzk::cast::CastDialect
LLZK type conversion operations.
Definition
Dialect.h.inc:13
llzk::component::StructDialect
LLZK component/struct operations.
Definition
Dialect.h.inc:13
llzk::constrain::ConstrainDialect
LLZK constraint emission operations.
Definition
Dialect.h.inc:13
llzk::felt::FeltDialect
LLZK felt (Field ELemenT) type and operations.
Definition
Dialect.h.inc:13
llzk::function::FunctionDialect
LLZK function operations.
Definition
Dialect.h.inc:13
llzk::global::GlobalDialect
LLZK support for global values, defined outside of structs.
Definition
Dialect.h.inc:13
llzk::include::IncludeDialect
LLZK include operations.
Definition
Dialect.h.inc:13
llzk::pod::PODDialect
Dialect for working with plain-old-data structs.
Definition
Dialect.h.inc:13
llzk::polymorphic::PolymorphicDialect
LLZK types and operations to support templated/parameterized structs.
Definition
Dialect.h.inc:13
llzk::ram::RAMDialect
LLZK support for random access memory during witness generation.
Definition
Dialect.h.inc:13
llzk::smt_info::SMTInfoDialect
SMT-LIB script metadata retained through emission.
Definition
SMTInfoDialect.h.inc:13
llzk::string::StringDialect
LLZK string type and operations.
Definition
Dialect.h.inc:13
llzk::verif::VerifDialect
LLZK verification dialect for encoding specifications for functions and structs.
Definition
Dialect.h.inc:13
DialectRegistration.h
Declares dialect and pass registration functions for core LLZK dialects.
llzk::array::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:237
llzk::boolean::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:127
llzk::component::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:277
llzk::global::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:127
llzk::include::registerTransformationPasses
void registerTransformationPasses()
Definition
InlineIncludesPass.h:127
llzk::mlir_patch
Replace mlir::registerTransformsPasses() to register a custom remove-dead-values pass because MLIR ve...
Definition
DialectRegistration.cpp:89
llzk::pod::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:127
llzk::polymorphic::registerTransformationPasses
void registerTransformationPasses()
Definition
TransformationPasses.h:756
llzk::verif::registerExtensions
void registerExtensions(mlir::DialectRegistry ®istry)
Registers dialect extensions for the verif dialect.
Definition
Dialect.cpp:107
llzk
Definition
AnalysisPassEnums.cpp:19
llzk::registerTransformationPassPipelines
void registerTransformationPassPipelines()
Definition
LLZKTransformationPassPipelines.cpp:152
llzk::createRemoveDeadValuesWorkaroundPass
std::unique_ptr< mlir::Pass > createRemoveDeadValuesWorkaroundPass()
Definition
SpecializedMemoryPasses.h:212
llzk::registerDialects
void registerDialects(mlir::DialectRegistry ®istry)
Register core LLZK dialects, the MLIR arith, scf, and smt dialects, and verification extensions in re...
Definition
DialectRegistration.cpp:58
llzk::registerValidationPasses
void registerValidationPasses()
Definition
LLZKValidationPasses.h:127
llzk::registerAnalysisPasses
void registerAnalysisPasses()
Definition
AnalysisPasses.h:1006
llzk::registerPasses
void registerPasses(mlir::DialectRegistry ®istry)
Register LLZK analysis, validation, and transformation passes and pipelines, SMT conversion passes,...
Definition
DialectRegistration.cpp:118
llzk::registerInliningExtensions
void registerInliningExtensions(DialectRegistry ®istry)
Definition
LLZKInliningExtensions.cpp:103
lib
Dialect
DialectRegistration.cpp
Generated by
1.17.0
Copyright 2025 Veridise Inc. under the Apache License v2.0. Copyright 2026 Project LLZK under the Apache License v2.0.