5#define GEN_PASS_DECL_EMPTYPARAMLISTREMOVALPASS
6#define GEN_PASS_DECL_FLATTENINGPASS
13#ifdef GEN_PASS_DECL_EMPTYPARAMLISTREMOVALPASS
14#undef GEN_PASS_DECL_EMPTYPARAMLISTREMOVALPASS
16#ifdef GEN_PASS_DEF_EMPTYPARAMLISTREMOVALPASS
19template <
typename DerivedT>
20class EmptyParamListRemovalPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
22 using Base = EmptyParamListRemovalPassBase;
24 EmptyParamListRemovalPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
25 EmptyParamListRemovalPassBase(
const EmptyParamListRemovalPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
28 static constexpr ::llvm::StringLiteral getArgumentName() {
29 return ::llvm::StringLiteral(
"llzk-drop-empty-params");
31 ::llvm::StringRef getArgument()
const override {
return "llzk-drop-empty-params"; }
33 ::llvm::StringRef getDescription()
const override {
return "Remove empty struct parameter lists"; }
36 static constexpr ::llvm::StringLiteral getPassName() {
37 return ::llvm::StringLiteral(
"EmptyParamListRemovalPass");
39 ::llvm::StringRef getName()
const override {
return "EmptyParamListRemovalPass"; }
42 static bool classof(const ::mlir::Pass *pass) {
43 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
47 std::unique_ptr<::mlir::Pass> clonePass()
const override {
48 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
52 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
53 registry.insert<llzk::LLZKDialect>();
54 registry.insert<llzk::boolean::BoolDialect>();
55 registry.insert<llzk::array::ArrayDialect>();
56 registry.insert<llzk::component::StructDialect>();
57 registry.insert<llzk::constrain::ConstrainDialect>();
58 registry.insert<llzk::felt::FeltDialect>();
59 registry.insert<llzk::global::GlobalDialect>();
60 registry.insert<llzk::include::IncludeDialect>();
61 registry.insert<llzk::function::FunctionDialect>();
62 registry.insert<llzk::string::StringDialect>();
63 registry.insert<llzk::polymorphic::PolymorphicDialect>();
64 registry.insert<llzk::undef::UndefDialect>();
65 registry.insert<mlir::arith::ArithDialect>();
66 registry.insert<mlir::scf::SCFDialect>();
72 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(EmptyParamListRemovalPassBase<DerivedT>)
78#undef GEN_PASS_DEF_EMPTYPARAMLISTREMOVALPASS
84#ifdef GEN_PASS_DECL_FLATTENINGPASS
85#undef GEN_PASS_DECL_FLATTENINGPASS
87#ifdef GEN_PASS_DEF_FLATTENINGPASS
90template <
typename DerivedT>
91class FlatteningPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
93 using Base = FlatteningPassBase;
95 FlatteningPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
96 FlatteningPassBase(
const FlatteningPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
99 static constexpr ::llvm::StringLiteral getArgumentName() {
100 return ::llvm::StringLiteral(
"llzk-flatten");
102 ::llvm::StringRef getArgument()
const override {
return "llzk-flatten"; }
104 ::llvm::StringRef getDescription()
const override {
return "Flatten structs and unroll loops"; }
107 static constexpr ::llvm::StringLiteral getPassName() {
108 return ::llvm::StringLiteral(
"FlatteningPass");
110 ::llvm::StringRef getName()
const override {
return "FlatteningPass"; }
113 static bool classof(const ::mlir::Pass *pass) {
114 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
118 std::unique_ptr<::mlir::Pass> clonePass()
const override {
119 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
123 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
124 registry.insert<llzk::LLZKDialect>();
125 registry.insert<llzk::boolean::BoolDialect>();
126 registry.insert<llzk::array::ArrayDialect>();
127 registry.insert<llzk::component::StructDialect>();
128 registry.insert<llzk::constrain::ConstrainDialect>();
129 registry.insert<llzk::felt::FeltDialect>();
130 registry.insert<llzk::global::GlobalDialect>();
131 registry.insert<llzk::include::IncludeDialect>();
132 registry.insert<llzk::function::FunctionDialect>();
133 registry.insert<llzk::string::StringDialect>();
134 registry.insert<llzk::polymorphic::PolymorphicDialect>();
135 registry.insert<llzk::undef::UndefDialect>();
136 registry.insert<mlir::arith::ArithDialect>();
137 registry.insert<mlir::scf::SCFDialect>();
143 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(FlatteningPassBase<DerivedT>)
149#undef GEN_PASS_DEF_FLATTENINGPASS
151#ifdef GEN_PASS_REGISTRATION
158 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
165 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
175 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
182 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
195#undef GEN_PASS_REGISTRATION
198#ifdef GEN_PASS_CLASSES
200template <
typename DerivedT>
201class EmptyParamListRemovalPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
203 using Base = EmptyParamListRemovalPassBase;
205 EmptyParamListRemovalPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
206 EmptyParamListRemovalPassBase(
const EmptyParamListRemovalPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
209 static constexpr ::llvm::StringLiteral getArgumentName() {
210 return ::llvm::StringLiteral(
"llzk-drop-empty-params");
212 ::llvm::StringRef getArgument()
const override {
return "llzk-drop-empty-params"; }
214 ::llvm::StringRef getDescription()
const override {
return "Remove empty struct parameter lists"; }
217 static constexpr ::llvm::StringLiteral getPassName() {
218 return ::llvm::StringLiteral(
"EmptyParamListRemovalPass");
220 ::llvm::StringRef getName()
const override {
return "EmptyParamListRemovalPass"; }
223 static bool classof(const ::mlir::Pass *pass) {
224 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
228 std::unique_ptr<::mlir::Pass> clonePass()
const override {
229 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
233 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
234 registry.insert<llzk::LLZKDialect>();
235 registry.insert<llzk::boolean::BoolDialect>();
236 registry.insert<llzk::array::ArrayDialect>();
237 registry.insert<llzk::component::StructDialect>();
238 registry.insert<llzk::constrain::ConstrainDialect>();
239 registry.insert<llzk::felt::FeltDialect>();
240 registry.insert<llzk::global::GlobalDialect>();
241 registry.insert<llzk::include::IncludeDialect>();
242 registry.insert<llzk::function::FunctionDialect>();
243 registry.insert<llzk::string::StringDialect>();
244 registry.insert<llzk::polymorphic::PolymorphicDialect>();
245 registry.insert<llzk::undef::UndefDialect>();
246 registry.insert<mlir::arith::ArithDialect>();
247 registry.insert<mlir::scf::SCFDialect>();
253 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(EmptyParamListRemovalPassBase<DerivedT>)
258template <
typename DerivedT>
259class FlatteningPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
261 using Base = FlatteningPassBase;
263 FlatteningPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
264 FlatteningPassBase(
const FlatteningPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
267 static constexpr ::llvm::StringLiteral getArgumentName() {
268 return ::llvm::StringLiteral(
"llzk-flatten");
270 ::llvm::StringRef getArgument()
const override {
return "llzk-flatten"; }
272 ::llvm::StringRef getDescription()
const override {
return "Flatten structs and unroll loops"; }
275 static constexpr ::llvm::StringLiteral getPassName() {
276 return ::llvm::StringLiteral(
"FlatteningPass");
278 ::llvm::StringRef getName()
const override {
return "FlatteningPass"; }
281 static bool classof(const ::mlir::Pass *pass) {
282 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
286 std::unique_ptr<::mlir::Pass> clonePass()
const override {
287 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
291 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
292 registry.insert<llzk::LLZKDialect>();
293 registry.insert<llzk::boolean::BoolDialect>();
294 registry.insert<llzk::array::ArrayDialect>();
295 registry.insert<llzk::component::StructDialect>();
296 registry.insert<llzk::constrain::ConstrainDialect>();
297 registry.insert<llzk::felt::FeltDialect>();
298 registry.insert<llzk::global::GlobalDialect>();
299 registry.insert<llzk::include::IncludeDialect>();
300 registry.insert<llzk::function::FunctionDialect>();
301 registry.insert<llzk::string::StringDialect>();
302 registry.insert<llzk::polymorphic::PolymorphicDialect>();
303 registry.insert<llzk::undef::UndefDialect>();
304 registry.insert<mlir::arith::ArithDialect>();
305 registry.insert<mlir::scf::SCFDialect>();
311 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(FlatteningPassBase<DerivedT>)
315#undef GEN_PASS_CLASSES
void registerTransformationPasses()
void registerFlatteningPass()
void registerEmptyParamListRemovalPassPass()
std::unique_ptr< mlir::Pass > createFlatteningPass()
void registerFlatteningPassPass()
std::unique_ptr< mlir::Pass > createEmptyParamListRemoval()
void registerEmptyParamListRemovalPass()