5#define GEN_PASS_DECL_ARRAYTOSCALARPASS
12#ifdef GEN_PASS_DECL_ARRAYTOSCALARPASS
13#undef GEN_PASS_DECL_ARRAYTOSCALARPASS
15#ifdef GEN_PASS_DEF_ARRAYTOSCALARPASS
18template <
typename DerivedT>
19class ArrayToScalarPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
21 using Base = ArrayToScalarPassBase;
23 ArrayToScalarPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
24 ArrayToScalarPassBase(
const ArrayToScalarPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
27 static constexpr ::llvm::StringLiteral getArgumentName() {
28 return ::llvm::StringLiteral(
"llzk-array-to-scalar");
30 ::llvm::StringRef getArgument()
const override {
return "llzk-array-to-scalar"; }
32 ::llvm::StringRef getDescription()
const override {
return "Replace arrays with scalar values"; }
35 static constexpr ::llvm::StringLiteral getPassName() {
36 return ::llvm::StringLiteral(
"ArrayToScalarPass");
38 ::llvm::StringRef getName()
const override {
return "ArrayToScalarPass"; }
41 static bool classof(const ::mlir::Pass *pass) {
42 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
46 std::unique_ptr<::mlir::Pass> clonePass()
const override {
47 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
51 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
52 registry.insert<llzk::LLZKDialect>();
53 registry.insert<llzk::boolean::BoolDialect>();
54 registry.insert<llzk::array::ArrayDialect>();
55 registry.insert<llzk::component::StructDialect>();
56 registry.insert<llzk::constrain::ConstrainDialect>();
57 registry.insert<llzk::felt::FeltDialect>();
58 registry.insert<llzk::global::GlobalDialect>();
59 registry.insert<llzk::include::IncludeDialect>();
60 registry.insert<llzk::function::FunctionDialect>();
61 registry.insert<llzk::string::StringDialect>();
62 registry.insert<llzk::polymorphic::PolymorphicDialect>();
63 registry.insert<llzk::undef::UndefDialect>();
64 registry.insert<mlir::arith::ArithDialect>();
65 registry.insert<mlir::scf::SCFDialect>();
71 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ArrayToScalarPassBase<DerivedT>)
77#undef GEN_PASS_DEF_ARRAYTOSCALARPASS
79#ifdef GEN_PASS_REGISTRATION
86 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
93 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
105#undef GEN_PASS_REGISTRATION
108#ifdef GEN_PASS_CLASSES
110template <
typename DerivedT>
111class ArrayToScalarPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
113 using Base = ArrayToScalarPassBase;
115 ArrayToScalarPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
116 ArrayToScalarPassBase(
const ArrayToScalarPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
119 static constexpr ::llvm::StringLiteral getArgumentName() {
120 return ::llvm::StringLiteral(
"llzk-array-to-scalar");
122 ::llvm::StringRef getArgument()
const override {
return "llzk-array-to-scalar"; }
124 ::llvm::StringRef getDescription()
const override {
return "Replace arrays with scalar values"; }
127 static constexpr ::llvm::StringLiteral getPassName() {
128 return ::llvm::StringLiteral(
"ArrayToScalarPass");
130 ::llvm::StringRef getName()
const override {
return "ArrayToScalarPass"; }
133 static bool classof(const ::mlir::Pass *pass) {
134 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
138 std::unique_ptr<::mlir::Pass> clonePass()
const override {
139 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
143 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
144 registry.insert<llzk::LLZKDialect>();
145 registry.insert<llzk::boolean::BoolDialect>();
146 registry.insert<llzk::array::ArrayDialect>();
147 registry.insert<llzk::component::StructDialect>();
148 registry.insert<llzk::constrain::ConstrainDialect>();
149 registry.insert<llzk::felt::FeltDialect>();
150 registry.insert<llzk::global::GlobalDialect>();
151 registry.insert<llzk::include::IncludeDialect>();
152 registry.insert<llzk::function::FunctionDialect>();
153 registry.insert<llzk::string::StringDialect>();
154 registry.insert<llzk::polymorphic::PolymorphicDialect>();
155 registry.insert<llzk::undef::UndefDialect>();
156 registry.insert<mlir::arith::ArithDialect>();
157 registry.insert<mlir::scf::SCFDialect>();
163 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(ArrayToScalarPassBase<DerivedT>)
167#undef GEN_PASS_CLASSES
void registerArrayToScalarPass()
std::unique_ptr< mlir::Pass > createArrayToScalarPass()
void registerArrayToScalarPassPass()
void registerTransformationPasses()