#ifdef GEN_PASS_DECL
#define GEN_PASS_DECL_LEGALIZEVECTORSTORAGE
#undef GEN_PASS_DECL
#endif
#ifdef GEN_PASS_DECL_LEGALIZEVECTORSTORAGE
#undef GEN_PASS_DECL_LEGALIZEVECTORSTORAGE
#endif
#ifdef GEN_PASS_DEF_LEGALIZEVECTORSTORAGE
namespace impl {
template <typename DerivedT>
class LegalizeVectorStorageBase : public ::mlir::OperationPass<mlir::func::FuncOp> {
public:
using Base = LegalizeVectorStorageBase;
LegalizeVectorStorageBase() : ::mlir::OperationPass<mlir::func::FuncOp>(::mlir::TypeID::get<DerivedT>()) {}
LegalizeVectorStorageBase(const LegalizeVectorStorageBase &other) : ::mlir::OperationPass<mlir::func::FuncOp>(other) {}
LegalizeVectorStorageBase& operator=(const LegalizeVectorStorageBase &) = delete;
LegalizeVectorStorageBase(LegalizeVectorStorageBase &&) = delete;
LegalizeVectorStorageBase& operator=(LegalizeVectorStorageBase &&) = delete;
~LegalizeVectorStorageBase() = default;
static constexpr ::llvm::StringLiteral getArgumentName() {
return ::llvm::StringLiteral("arm-sve-legalize-vector-storage");
}
::llvm::StringRef getArgument() const override { return "arm-sve-legalize-vector-storage"; }
::llvm::StringRef getDescription() const override { return "Ensures stores of SVE vector types will be legal"; }
static constexpr ::llvm::StringLiteral getPassName() {
return ::llvm::StringLiteral("LegalizeVectorStorage");
}
::llvm::StringRef getName() const override { return "LegalizeVectorStorage"; }
static bool classof(const ::mlir::Pass *pass) {
return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
}
std::unique_ptr<::mlir::Pass> clonePass() const override {
return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
}
void getDependentDialects(::mlir::DialectRegistry ®istry) const override {
registry.insert<func::FuncDialect>();
registry.insert<memref::MemRefDialect>();
registry.insert<vector::VectorDialect>();
registry.insert<arm_sve::ArmSVEDialect>();
}
MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(LegalizeVectorStorageBase<DerivedT>)
protected:
private:
};
}
#undef GEN_PASS_DEF_LEGALIZEVECTORSTORAGE
#endif
#ifdef GEN_PASS_REGISTRATION
inline void registerLegalizeVectorStorage() {
::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
return mlir::arm_sve::createLegalizeVectorStoragePass();
});
}
inline void registerLegalizeVectorStoragePass() {
::mlir::registerPass([]() -> std::unique_ptr<::mlir::Pass> {
return mlir::arm_sve::createLegalizeVectorStoragePass();
});
}
inline void registerArmSVEPasses() {
registerLegalizeVectorStorage();
}
#undef GEN_PASS_REGISTRATION
#endif
#ifdef GEN_PASS_CLASSES
template <typename DerivedT>
class LegalizeVectorStorageBase : public ::mlir::OperationPass<mlir::func::FuncOp> {
public:
using Base = LegalizeVectorStorageBase;
LegalizeVectorStorageBase() : ::mlir::OperationPass<mlir::func::FuncOp>(::mlir::TypeID::get<DerivedT>()) {}
LegalizeVectorStorageBase(const LegalizeVectorStorageBase &other) : ::mlir::OperationPass<mlir::func::FuncOp>(other) {}
LegalizeVectorStorageBase& operator=(const LegalizeVectorStorageBase &) = delete;
LegalizeVectorStorageBase(LegalizeVectorStorageBase &&) = delete;
LegalizeVectorStorageBase& operator=(LegalizeVectorStorageBase &&) = delete;
~LegalizeVectorStorageBase() = default;
static constexpr ::llvm::StringLiteral getArgumentName() {
return ::llvm::StringLiteral("arm-sve-legalize-vector-storage");
}
::llvm::StringRef getArgument() const override { return "arm-sve-legalize-vector-storage"; }
::llvm::StringRef getDescription() const override { return "Ensures stores of SVE vector types will be legal"; }
static constexpr ::llvm::StringLiteral getPassName() {
return ::llvm::StringLiteral("LegalizeVectorStorage");
}
::llvm::StringRef getName() const override { return "LegalizeVectorStorage"; }
static bool classof(const ::mlir::Pass *pass) {
return pass->getTypeID() == ::mlir::TypeID::get<DerivedT>();
}
std::unique_ptr<::mlir::Pass> clonePass() const override {
return std::make_unique<DerivedT>(*static_cast<const DerivedT *>(this));
}
void getDependentDialects(::mlir::DialectRegistry ®istry) const override {
registry.insert<func::FuncDialect>();
registry.insert<memref::MemRefDialect>();
registry.insert<vector::VectorDialect>();
registry.insert<arm_sve::ArmSVEDialect>();
}
MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(LegalizeVectorStorageBase<DerivedT>)
protected:
};
#undef GEN_PASS_CLASSES
#endif