16b30fb76SSean Silva //====----- Bufferize.cpp - Bufferization of shape ops ---------*- C++-*--===// 26b30fb76SSean Silva // 36b30fb76SSean Silva // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 46b30fb76SSean Silva // See https://llvm.org/LICENSE.txt for license information. 56b30fb76SSean Silva // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 66b30fb76SSean Silva // 76b30fb76SSean Silva //===----------------------------------------------------------------------===// 86b30fb76SSean Silva 9f89bb3c0SAlexander Belyaev #include "mlir/Dialect/Bufferization/Transforms/Bufferize.h" 106b30fb76SSean Silva #include "PassDetail.h" 1193e66327SMatthias Springer #include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h" 1257470abcSAlexander Belyaev #include "mlir/Dialect/Bufferization/IR/Bufferization.h" 1366f878ceSMatthias Springer #include "mlir/Dialect/MemRef/IR/MemRef.h" 1493e66327SMatthias Springer #include "mlir/Dialect/Shape/IR/Shape.h" 1593e66327SMatthias Springer #include "mlir/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.h" 166b30fb76SSean Silva #include "mlir/Dialect/Shape/Transforms/Passes.h" 176b30fb76SSean Silva #include "mlir/Pass/Pass.h" 186b30fb76SSean Silva 196b30fb76SSean Silva using namespace mlir; 2093e66327SMatthias Springer using namespace bufferization; 216b30fb76SSean Silva 226b30fb76SSean Silva namespace { 236b30fb76SSean Silva struct ShapeBufferizePass : public ShapeBufferizeBase<ShapeBufferizePass> { runOnOperation__anon10b1a01e0111::ShapeBufferizePass2441574554SRiver Riddle void runOnOperation() override { 2593e66327SMatthias Springer BufferizationOptions options = getPartialBufferizationOptions(); 26*1534177fSMatthias Springer options.opFilter.allowDialect<shape::ShapeDialect>(); 276b30fb76SSean Silva 2893e66327SMatthias Springer if (failed(bufferizeOp(getOperation(), options))) 296b30fb76SSean Silva signalPassFailure(); 306b30fb76SSean Silva } 3193e66327SMatthias Springer getDependentDialects__anon10b1a01e0111::ShapeBufferizePass3293e66327SMatthias Springer void getDependentDialects(DialectRegistry ®istry) const override { 3393e66327SMatthias Springer registry.insert<bufferization::BufferizationDialect, memref::MemRefDialect, 3493e66327SMatthias Springer shape::ShapeDialect>(); 3593e66327SMatthias Springer shape::registerBufferizableOpInterfaceExternalModels(registry); 3693e66327SMatthias Springer } 376b30fb76SSean Silva }; 386b30fb76SSean Silva } // namespace 396b30fb76SSean Silva createShapeBufferizePass()4058ceae95SRiver Riddlestd::unique_ptr<OperationPass<func::FuncOp>> mlir::createShapeBufferizePass() { 416b30fb76SSean Silva return std::make_unique<ShapeBufferizePass>(); 426b30fb76SSean Silva } 43