5#define GEN_PASS_DECL_LOWERBOOLQUANTIFIERSPASS
12#ifdef GEN_PASS_DECL_LOWERBOOLQUANTIFIERSPASS
14#undef GEN_PASS_DECL_LOWERBOOLQUANTIFIERSPASS
16#ifdef GEN_PASS_DEF_LOWERBOOLQUANTIFIERSPASS
23template <
typename DerivedT>
24class LowerBoolQuantifiersPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
26 using Base = LowerBoolQuantifiersPassBase;
28 LowerBoolQuantifiersPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
29 LowerBoolQuantifiersPassBase(
const LowerBoolQuantifiersPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
30 LowerBoolQuantifiersPassBase& operator=(
const LowerBoolQuantifiersPassBase &) =
delete;
31 LowerBoolQuantifiersPassBase(LowerBoolQuantifiersPassBase &&) =
delete;
32 LowerBoolQuantifiersPassBase& operator=(LowerBoolQuantifiersPassBase &&) =
delete;
33 ~LowerBoolQuantifiersPassBase() =
default;
36 static constexpr ::llvm::StringLiteral getArgumentName() {
37 return ::llvm::StringLiteral(
"llzk-lower-bool-quantifiers");
39 ::llvm::StringRef getArgument()
const override {
return "llzk-lower-bool-quantifiers"; }
41 ::llvm::StringRef getDescription()
const override {
return "Lower bool quantifiers to SCF loops"; }
44 static constexpr ::llvm::StringLiteral getPassName() {
45 return ::llvm::StringLiteral(
"LowerBoolQuantifiersPass");
47 ::llvm::StringRef getName()
const override {
return "LowerBoolQuantifiersPass"; }
50 static bool classof(const ::mlir::Pass *pass) {
51 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
55 std::unique_ptr<::mlir::Pass> clonePass()
const override {
56 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
60 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
61 registry.insert<llzk::LLZKDialect>();
62 registry.insert<llzk::boolean::BoolDialect>();
63 registry.insert<llzk::array::ArrayDialect>();
64 registry.insert<llzk::component::StructDialect>();
65 registry.insert<llzk::constrain::ConstrainDialect>();
66 registry.insert<llzk::felt::FeltDialect>();
67 registry.insert<llzk::global::GlobalDialect>();
68 registry.insert<llzk::include::IncludeDialect>();
69 registry.insert<llzk::function::FunctionDialect>();
70 registry.insert<llzk::string::StringDialect>();
71 registry.insert<llzk::polymorphic::PolymorphicDialect>();
72 registry.insert<mlir::arith::ArithDialect>();
73 registry.insert<mlir::scf::SCFDialect>();
79 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(LowerBoolQuantifiersPassBase<DerivedT>)
85 return std::make_unique<DerivedT>();
91 return impl::createLowerBoolQuantifiersPass();
93#undef GEN_PASS_DEF_LOWERBOOLQUANTIFIERSPASS
95#ifdef GEN_PASS_REGISTRATION
102 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
109 ::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
121#undef GEN_PASS_REGISTRATION
124#ifdef GEN_PASS_CLASSES
126template <
typename DerivedT>
127class LowerBoolQuantifiersPassBase :
public ::mlir::OperationPass<::mlir::ModuleOp> {
129 using Base = LowerBoolQuantifiersPassBase;
131 LowerBoolQuantifiersPassBase() : ::mlir::OperationPass<::mlir::ModuleOp>(::mlir::TypeID::get<DerivedT>()) {}
132 LowerBoolQuantifiersPassBase(
const LowerBoolQuantifiersPassBase &other) : ::mlir::OperationPass<::mlir::ModuleOp>(other) {}
133 LowerBoolQuantifiersPassBase& operator=(
const LowerBoolQuantifiersPassBase &) =
delete;
134 LowerBoolQuantifiersPassBase(LowerBoolQuantifiersPassBase &&) =
delete;
135 LowerBoolQuantifiersPassBase& operator=(LowerBoolQuantifiersPassBase &&) =
delete;
136 ~LowerBoolQuantifiersPassBase() =
default;
139 static constexpr ::llvm::StringLiteral getArgumentName() {
140 return ::llvm::StringLiteral(
"llzk-lower-bool-quantifiers");
142 ::llvm::StringRef getArgument()
const override {
return "llzk-lower-bool-quantifiers"; }
144 ::llvm::StringRef getDescription()
const override {
return "Lower bool quantifiers to SCF loops"; }
147 static constexpr ::llvm::StringLiteral getPassName() {
148 return ::llvm::StringLiteral(
"LowerBoolQuantifiersPass");
150 ::llvm::StringRef getName()
const override {
return "LowerBoolQuantifiersPass"; }
153 static bool classof(const ::mlir::Pass *pass) {
154 return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
158 std::unique_ptr<::mlir::Pass> clonePass()
const override {
159 return std::make_unique<DerivedT>(*
static_cast<const DerivedT *
>(
this));
163 void getDependentDialects(::mlir::DialectRegistry ®istry)
const override {
164 registry.insert<llzk::LLZKDialect>();
165 registry.insert<llzk::boolean::BoolDialect>();
166 registry.insert<llzk::array::ArrayDialect>();
167 registry.insert<llzk::component::StructDialect>();
168 registry.insert<llzk::constrain::ConstrainDialect>();
169 registry.insert<llzk::felt::FeltDialect>();
170 registry.insert<llzk::global::GlobalDialect>();
171 registry.insert<llzk::include::IncludeDialect>();
172 registry.insert<llzk::function::FunctionDialect>();
173 registry.insert<llzk::string::StringDialect>();
174 registry.insert<llzk::polymorphic::PolymorphicDialect>();
175 registry.insert<mlir::arith::ArithDialect>();
176 registry.insert<mlir::scf::SCFDialect>();
182 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(LowerBoolQuantifiersPassBase<DerivedT>)
186#undef GEN_PASS_CLASSES
void registerTransformationPasses()
std::unique_ptr<::mlir::Pass > createLowerBoolQuantifiersPass()
void registerLowerBoolQuantifiersPassPass()
void registerLowerBoolQuantifiersPass()