5#define GEN_PASS_DECL_ARRAYTOSCALARPASS
6#define GEN_PASS_DECL_STRAIGHTLINESTATICARRAYPROMOTIONPASS
13#ifdef GEN_PASS_DECL_ARRAYTOSCALARPASS
15#undef GEN_PASS_DECL_ARRAYTOSCALARPASS
17#ifdef GEN_PASS_DEF_ARRAYTOSCALARPASS
24template <
typename DerivedT>
25class ArrayToScalarPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
27 using Base = ArrayToScalarPassBase;
29 ArrayToScalarPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
30 ArrayToScalarPassBase(
const ArrayToScalarPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
31 ArrayToScalarPassBase& operator=(
const ArrayToScalarPassBase &) =
delete;
32 ArrayToScalarPassBase(ArrayToScalarPassBase &&) =
delete;
33 ArrayToScalarPassBase& operator=(ArrayToScalarPassBase &&) =
delete;
34 ~ArrayToScalarPassBase() =
default;
37 static constexpr ::llvm::StringLiteral getArgumentName() {
38 return ::llvm::StringLiteral(
"llzk-array-to-scalar");
40 ::llvm::StringRef getArgument()
const override {
return "llzk-array-to-scalar"; }
42 ::llvm::StringRef getDescription()
const override {
return R
"PD(Replace arrays with scalar values)PD"; }
45 static constexpr ::llvm::StringLiteral getPassName() {
46 return ::llvm::StringLiteral(
"ArrayToScalarPass");
48 ::llvm::StringRef getName()
const override {
return "ArrayToScalarPass"; }
51 static bool classof(const ::mlir::Pass *pass) {
52 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
56 std::unique_ptr<::mlir::Pass> clonePass()
const override {
57 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
61 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
62 registry.insert<llzk::LLZKDialect>();
63 registry.insert<llzk::boolean::BoolDialect>();
64 registry.insert<llzk::array::ArrayDialect>();
65 registry.insert<llzk::component::StructDialect>();
66 registry.insert<llzk::constrain::ConstrainDialect>();
67 registry.insert<llzk::felt::FeltDialect>();
68 registry.insert<llzk::global::GlobalDialect>();
69 registry.insert<llzk::include::IncludeDialect>();
70 registry.insert<llzk::function::FunctionDialect>();
71 registry.insert<llzk::string::StringDialect>();
72 registry.insert<llzk::polymorphic::PolymorphicDialect>();
73 registry.insert<mlir::arith::ArithDialect>();
74 registry.insert<mlir::scf::SCFDialect>();
80 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ArrayToScalarPassBase<DerivedT>)
86 return std::make_unique<DerivedT>();
92 return impl::createArrayToScalarPass();
94#undef GEN_PASS_DEF_ARRAYTOSCALARPASS
100#ifdef GEN_PASS_DECL_STRAIGHTLINESTATICARRAYPROMOTIONPASS
102#undef GEN_PASS_DECL_STRAIGHTLINESTATICARRAYPROMOTIONPASS
104#ifdef GEN_PASS_DEF_STRAIGHTLINESTATICARRAYPROMOTIONPASS
111template <
typename DerivedT>
112class StraightLineStaticArrayPromotionPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
114 using Base = StraightLineStaticArrayPromotionPassBase;
116 StraightLineStaticArrayPromotionPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
117 StraightLineStaticArrayPromotionPassBase(
const StraightLineStaticArrayPromotionPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
118 StraightLineStaticArrayPromotionPassBase& operator=(
const StraightLineStaticArrayPromotionPassBase &) =
delete;
119 StraightLineStaticArrayPromotionPassBase(StraightLineStaticArrayPromotionPassBase &&) =
delete;
120 StraightLineStaticArrayPromotionPassBase& operator=(StraightLineStaticArrayPromotionPassBase &&) =
delete;
121 ~StraightLineStaticArrayPromotionPassBase() =
default;
124 static constexpr ::llvm::StringLiteral getArgumentName() {
125 return ::llvm::StringLiteral(
"llzk-straight-line-static-array-promotion");
127 ::llvm::StringRef getArgument()
const override {
return "llzk-straight-line-static-array-promotion"; }
129 ::llvm::StringRef getDescription()
const override {
return R
"PD(Promote straight-line static array accesses to SSA values)PD"; }
132 static constexpr ::llvm::StringLiteral getPassName() {
133 return ::llvm::StringLiteral(
"StraightLineStaticArrayPromotionPass");
135 ::llvm::StringRef getName()
const override {
return "StraightLineStaticArrayPromotionPass"; }
138 static bool classof(const ::mlir::Pass *pass) {
139 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
143 std::unique_ptr<::mlir::Pass> clonePass()
const override {
144 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
148 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
149 registry.insert<llzk::LLZKDialect>();
150 registry.insert<llzk::boolean::BoolDialect>();
151 registry.insert<llzk::array::ArrayDialect>();
152 registry.insert<llzk::component::StructDialect>();
153 registry.insert<llzk::constrain::ConstrainDialect>();
154 registry.insert<llzk::felt::FeltDialect>();
155 registry.insert<llzk::global::GlobalDialect>();
156 registry.insert<llzk::include::IncludeDialect>();
157 registry.insert<llzk::function::FunctionDialect>();
158 registry.insert<llzk::string::StringDialect>();
159 registry.insert<llzk::polymorphic::PolymorphicDialect>();
160 registry.insert<mlir::arith::ArithDialect>();
161 registry.insert<mlir::scf::SCFDialect>();
167 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(StraightLineStaticArrayPromotionPassBase<DerivedT>)
173 return std::make_unique<DerivedT>();
179 return impl::createStraightLineStaticArrayPromotionPass();
181#undef GEN_PASS_DEF_STRAIGHTLINESTATICARRAYPROMOTIONPASS
183#ifdef GEN_PASS_REGISTRATION
185#define GEN_PASS_REGISTRATION_ARRAYTOSCALARPASS
186#define GEN_PASS_REGISTRATION_STRAIGHTLINESTATICARRAYPROMOTIONPASS
192#ifdef GEN_PASS_REGISTRATION_ARRAYTOSCALARPASS
195 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
202 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
207#undef GEN_PASS_REGISTRATION_ARRAYTOSCALARPASS
213#ifdef GEN_PASS_REGISTRATION_STRAIGHTLINESTATICARRAYPROMOTIONPASS
216 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
223 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
228#undef GEN_PASS_REGISTRATION_STRAIGHTLINESTATICARRAYPROMOTIONPASS
230#ifdef GEN_PASS_REGISTRATION
240#undef GEN_PASS_REGISTRATION
242#ifdef GEN_PASS_CLASSES
243#error "GEN_PASS_CLASSES is deprecated; use per-pass macros"
244#undef GEN_PASS_CLASSES
std::unique_ptr<::mlir::Pass > createArrayToScalarPass()
std::unique_ptr<::mlir::Pass > createStraightLineStaticArrayPromotionPass()
void registerArrayToScalarPass()
void registerStraightLineStaticArrayPromotionPass()
void registerArrayToScalarPassPass()
void registerStraightLineStaticArrayPromotionPassPass()
void registerTransformationPasses()