LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
TransformationPasses.h.inc
Go to the documentation of this file.
1/* Autogenerated by mlir-tblgen; don't manually edit */
2
3#ifdef GEN_PASS_DECL
4// Generate declarations for all passes.
5#define GEN_PASS_DECL_INLINESTRUCTSPASS
6#undef GEN_PASS_DECL
7#endif // GEN_PASS_DECL
8
9//===----------------------------------------------------------------------===//
10// InlineStructsPass
11//===----------------------------------------------------------------------===//
12#ifdef GEN_PASS_DECL_INLINESTRUCTSPASS
13struct InlineStructsPassOptions {
14 uint64_t maxComplexity = 0;
15};
16std::unique_ptr<::mlir::Pass> createInlineStructsPass();
17std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options);
18#undef GEN_PASS_DECL_INLINESTRUCTSPASS
19#endif // GEN_PASS_DECL_INLINESTRUCTSPASS
20#ifdef GEN_PASS_DEF_INLINESTRUCTSPASS
21
22namespace impl {
23 std::unique_ptr<::mlir::Pass> createInlineStructsPass();
24} // namespace impl
25
26namespace impl {
27 std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options);
28} // namespace impl
29namespace impl {
30
31template <typename DerivedT>
32class InlineStructsPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
33public:
34 using Base = InlineStructsPassBase;
35
36 InlineStructsPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
37 InlineStructsPassBase(const InlineStructsPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
38 InlineStructsPassBase& operator=(const InlineStructsPassBase &) = delete;
39 InlineStructsPassBase(InlineStructsPassBase &&) = delete;
40 InlineStructsPassBase& operator=(InlineStructsPassBase &&) = delete;
41 ~InlineStructsPassBase() = default;
42
44 static constexpr ::llvm::StringLiteral getArgumentName() {
45 return ::llvm::StringLiteral("llzk-inline-structs");
46 }
47 ::llvm::StringRef getArgument() const override { return "llzk-inline-structs"; }
48
49 ::llvm::StringRef getDescription() const override { return "Inlines nested structs (i.e., subcomponents)."; }
50
52 static constexpr ::llvm::StringLiteral getPassName() {
53 return ::llvm::StringLiteral("InlineStructsPass");
54 }
55 ::llvm::StringRef getName() const override { return "InlineStructsPass"; }
56
58 static bool classof(const ::mlir::Pass *pass) {
59 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
60 }
61
63 std::unique_ptr<::mlir::Pass> clonePass() const override {
64 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
65 }
66
68 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
69 registry.insert<llzk::LLZKDialect>();
70 registry.insert<llzk::boolean::BoolDialect>();
71 registry.insert<llzk::array::ArrayDialect>();
72 registry.insert<llzk::component::StructDialect>();
73 registry.insert<llzk::constrain::ConstrainDialect>();
74 registry.insert<llzk::felt::FeltDialect>();
75 registry.insert<llzk::global::GlobalDialect>();
76 registry.insert<llzk::include::IncludeDialect>();
77 registry.insert<llzk::function::FunctionDialect>();
78 registry.insert<llzk::string::StringDialect>();
79 registry.insert<llzk::polymorphic::PolymorphicDialect>();
80 registry.insert<mlir::arith::ArithDialect>();
81 registry.insert<mlir::scf::SCFDialect>();
82 }
83
87 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(InlineStructsPassBase<DerivedT>)
88
89 InlineStructsPassBase(InlineStructsPassOptions options) : InlineStructsPassBase() {
90 maxComplexity = std::move(options.maxComplexity);
91 }
92protected:
93 ::mlir::Pass::Option<uint64_t> maxComplexity{*this, "max-merge-complexity", ::llvm::cl::desc("Maximum allowed constraint+multiplications in merged @constrain functions"), ::llvm::cl::init(0)};
94private:
95
96 friend std::unique_ptr<::mlir::Pass> createInlineStructsPass() {
97 return std::make_unique<DerivedT>();
98 }
99
100 friend std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options) {
101 return std::make_unique<DerivedT>(std::move(options));
102 }
103};
104} // namespace impl
105
106std::unique_ptr<::mlir::Pass> createInlineStructsPass() {
107 return impl::createInlineStructsPass();
108}
109
110std::unique_ptr<::mlir::Pass> createInlineStructsPass(InlineStructsPassOptions options) {
111 return impl::createInlineStructsPass(std::move(options));
112}
113#undef GEN_PASS_DEF_INLINESTRUCTSPASS
114#endif // GEN_PASS_DEF_INLINESTRUCTSPASS
115#ifdef GEN_PASS_REGISTRATION
116
117//===----------------------------------------------------------------------===//
118// InlineStructsPass Registration
119//===----------------------------------------------------------------------===//
120
121inline void registerInlineStructsPass() {
122 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
124 });
125}
126
127// Old registration code, kept for temporary backwards compatibility.
128inline void registerInlineStructsPassPass() {
129 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
131 });
132}
133
134//===----------------------------------------------------------------------===//
135// Transformation Registration
136//===----------------------------------------------------------------------===//
137
138inline void registerTransformationPasses() {
140}
141#undef GEN_PASS_REGISTRATION
142#endif // GEN_PASS_REGISTRATION
143// Deprecated. Please use the new per-pass macros.
144#ifdef GEN_PASS_CLASSES
145
146template <typename DerivedT>
147class InlineStructsPassBase : public ::mlir::OperationPass<::mlir::ModuleOp> {
148public:
149 using Base = InlineStructsPassBase;
150
151 InlineStructsPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
152 InlineStructsPassBase(const InlineStructsPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
153 InlineStructsPassBase& operator=(const InlineStructsPassBase &) = delete;
154 InlineStructsPassBase(InlineStructsPassBase &&) = delete;
155 InlineStructsPassBase& operator=(InlineStructsPassBase &&) = delete;
156 ~InlineStructsPassBase() = default;
157
159 static constexpr ::llvm::StringLiteral getArgumentName() {
160 return ::llvm::StringLiteral("llzk-inline-structs");
161 }
162 ::llvm::StringRef getArgument() const override { return "llzk-inline-structs"; }
163
164 ::llvm::StringRef getDescription() const override { return "Inlines nested structs (i.e., subcomponents)."; }
165
167 static constexpr ::llvm::StringLiteral getPassName() {
168 return ::llvm::StringLiteral("InlineStructsPass");
169 }
170 ::llvm::StringRef getName() const override { return "InlineStructsPass"; }
171
173 static bool classof(const ::mlir::Pass *pass) {
174 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
175 }
176
178 std::unique_ptr<::mlir::Pass> clonePass() const override {
179 return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
180 }
181
183 void getDependentDialects(::mlir::DialectRegistry &registry) const override {
184 registry.insert<llzk::LLZKDialect>();
185 registry.insert<llzk::boolean::BoolDialect>();
186 registry.insert<llzk::array::ArrayDialect>();
187 registry.insert<llzk::component::StructDialect>();
188 registry.insert<llzk::constrain::ConstrainDialect>();
189 registry.insert<llzk::felt::FeltDialect>();
190 registry.insert<llzk::global::GlobalDialect>();
191 registry.insert<llzk::include::IncludeDialect>();
192 registry.insert<llzk::function::FunctionDialect>();
193 registry.insert<llzk::string::StringDialect>();
194 registry.insert<llzk::polymorphic::PolymorphicDialect>();
195 registry.insert<mlir::arith::ArithDialect>();
196 registry.insert<mlir::scf::SCFDialect>();
197 }
198
202 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(InlineStructsPassBase<DerivedT>)
203
204protected:
205 ::mlir::Pass::Option<uint64_t> maxComplexity{*this, "max-merge-complexity", ::llvm::cl::desc("Maximum allowed constraint+multiplications in merged @constrain functions"), ::llvm::cl::init(0)};
206};
207#undef GEN_PASS_CLASSES
208#endif // GEN_PASS_CLASSES
void registerTransformationPasses()
std::unique_ptr<::mlir::Pass > createInlineStructsPass()