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 ®istry) 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 Springerstd::unique_ptr<Pass> mlir::vector::createVectorBufferizePass() { 4573e880fbSMatthias Springer return std::make_unique<VectorBufferizePass>(); 4673e880fbSMatthias Springer } 47