173e880fbSMatthias Springer //===- Bufferize.cpp - Bufferization for `vector` dialect ops -------------===//
273e880fbSMatthias Springer //
373e880fbSMatthias Springer // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
473e880fbSMatthias Springer // See https://llvm.org/LICENSE.txt for license information.
573e880fbSMatthias Springer // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
673e880fbSMatthias Springer //
773e880fbSMatthias Springer //===----------------------------------------------------------------------===//
873e880fbSMatthias Springer //
973e880fbSMatthias Springer // This file implements bufferization of `vector` dialect ops
1073e880fbSMatthias Springer //
1173e880fbSMatthias Springer //===----------------------------------------------------------------------===//
1273e880fbSMatthias Springer 
1373e880fbSMatthias Springer #include "mlir/Dialect/Bufferization/Transforms/Bufferize.h"
1473e880fbSMatthias Springer #include "PassDetail.h"
1573e880fbSMatthias Springer #include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
1673e880fbSMatthias Springer #include "mlir/Dialect/Bufferization/IR/Bufferization.h"
1773e880fbSMatthias Springer #include "mlir/Dialect/MemRef/IR/MemRef.h"
1873e880fbSMatthias Springer #include "mlir/Dialect/Tensor/IR/Tensor.h"
1973e880fbSMatthias Springer #include "mlir/Dialect/Vector/IR/VectorOps.h"
2073e880fbSMatthias Springer #include "mlir/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.h"
2173e880fbSMatthias Springer #include "mlir/Dialect/Vector/Transforms/Passes.h"
2273e880fbSMatthias Springer 
2373e880fbSMatthias Springer using namespace mlir;
2473e880fbSMatthias Springer using namespace bufferization;
2573e880fbSMatthias Springer 
2673e880fbSMatthias Springer namespace {
2773e880fbSMatthias Springer struct VectorBufferizePass : public VectorBufferizeBase<VectorBufferizePass> {
runOnOperation__anoncd547e000111::VectorBufferizePass2873e880fbSMatthias Springer   void runOnOperation() override {
2973e880fbSMatthias Springer     BufferizationOptions options = getPartialBufferizationOptions();
30*1534177fSMatthias Springer     options.opFilter.allowDialect<vector::VectorDialect>();
3173e880fbSMatthias Springer 
3273e880fbSMatthias Springer     if (failed(bufferizeOp(getOperation(), options)))
3373e880fbSMatthias Springer       signalPassFailure();
3473e880fbSMatthias Springer   }
3573e880fbSMatthias Springer 
getDependentDialects__anoncd547e000111::VectorBufferizePass3673e880fbSMatthias Springer   void getDependentDialects(DialectRegistry &registry) const override {
3773e880fbSMatthias Springer     registry.insert<bufferization::BufferizationDialect, memref::MemRefDialect,
3873e880fbSMatthias Springer                     tensor::TensorDialect, vector::VectorDialect>();
3973e880fbSMatthias Springer     vector::registerBufferizableOpInterfaceExternalModels(registry);
4073e880fbSMatthias Springer   }
4173e880fbSMatthias Springer };
4273e880fbSMatthias Springer } // namespace
4373e880fbSMatthias Springer 
createVectorBufferizePass()4473e880fbSMatthias Springer std::unique_ptr<Pass> mlir::vector::createVectorBufferizePass() {
4573e880fbSMatthias Springer   return std::make_unique<VectorBufferizePass>();
4673e880fbSMatthias Springer }
47