MLIR
17.0.0git
|
#include "mlir/Dialect/Bufferization/Transforms/OneShotModuleBufferize.h"
#include "mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h"
#include "mlir/Dialect/Bufferization/IR/Bufferization.h"
#include "mlir/Dialect/Bufferization/Transforms/Bufferize.h"
#include "mlir/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.h"
#include "mlir/Dialect/Bufferization/Transforms/OneShotAnalysis.h"
#include "mlir/Dialect/Bufferization/Transforms/Transforms.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/IR/Operation.h"
Go to the source code of this file.
Typedefs | |
using | FuncCallerMap = DenseMap< func::FuncOp, DenseSet< Operation * > > |
A mapping of FuncOps to their callers. More... | |
Functions | |
static FuncAnalysisState & | getOrCreateFuncAnalysisState (OneShotAnalysisState &state) |
Get or create FuncAnalysisState. More... | |
static func::ReturnOp | getAssumedUniqueReturnOp (func::FuncOp funcOp) |
Return the unique ReturnOp that terminates funcOp . More... | |
static void | removeBufferizationAttributes (BlockArgument bbArg) |
Remove bufferization attributes on FuncOp arguments. More... | |
static func::FuncOp | getCalledFunction (func::CallOp callOp) |
Return the func::FuncOp called by callOp . More... | |
static void | equivalenceAnalysis (func::FuncOp funcOp, OneShotAnalysisState &state, FuncAnalysisState &funcState) |
Gather equivalence info of CallOps. More... | |
static LogicalResult | getFuncOpsOrderedByCalls (ModuleOp moduleOp, SmallVectorImpl< func::FuncOp > &orderedFuncOps, FuncCallerMap &callerMap) |
Store all functions of the moduleOp in orderedFuncOps , sorted by callee-caller order (i.e. More... | |
static void | foldMemRefCasts (func::FuncOp funcOp) |
Fold return values that are memref casts and update function return types. More... | |
using FuncCallerMap = DenseMap<func::FuncOp, DenseSet<Operation *> > |
A mapping of FuncOps to their callers.
Definition at line 77 of file OneShotModuleBufferize.cpp.
|
static |
Gather equivalence info of CallOps.
Note: This only adds new equivalence info if the called function was already analyzed.
Definition at line 252 of file OneShotModuleBufferize.cpp.
References mlir::WalkResult::advance(), mlir::bufferization::func_ext::FuncAnalysisState::equivalentFuncArgs, mlir::bufferization::func_ext::getCalledFunction(), mlir::bufferization::OneShotAnalysisState::isInPlace(), mlir::WalkResult::skip(), and mlir::bufferization::OneShotAnalysisState::unionEquivalenceClasses().
Referenced by mlir::bufferization::analyzeModuleOp().
|
static |
Fold return values that are memref casts and update function return types.
During FuncOp bufferization, the exact type of the returned memrefs (if any) is not known yet. Therefore, the bufferization uses memref types with the most generic layout map as function return types. After bufferizing the entire function body, a more concise memref type can potentially be used for the return type of the function.
Definition at line 336 of file OneShotModuleBufferize.cpp.
References mlir::get(), and getAssumedUniqueReturnOp().
Referenced by mlir::bufferization::bufferizeModuleOp().
|
static |
Return the unique ReturnOp that terminates funcOp
.
Return nullptr if there is no such unique ReturnOp.
Definition at line 90 of file OneShotModuleBufferize.cpp.
Referenced by foldMemRefCasts().
|
static |
Return the func::FuncOp called by callOp
.
Definition at line 240 of file OneShotModuleBufferize.cpp.
References mlir::SymbolTable::lookupNearestSymbolFrom().
|
static |
Store all functions of the moduleOp
in orderedFuncOps
, sorted by callee-caller order (i.e.
callees without callers first). Store the map of FuncOp to all its callers in callerMap
. Return failure()
if a cycle of calls is detected or if we are unable to retrieve the called FuncOp from any func::CallOp.
Definition at line 283 of file OneShotModuleBufferize.cpp.
References mlir::WalkResult::advance().
Referenced by mlir::bufferization::analyzeModuleOp(), and mlir::bufferization::bufferizeModuleOp().
|
static |
Get or create FuncAnalysisState.
Definition at line 81 of file OneShotModuleBufferize.cpp.
References mlir::bufferization::OneShotAnalysisState::addExtension(), and mlir::bufferization::OneShotAnalysisState::getExtension().
Referenced by mlir::bufferization::analyzeModuleOp().
|
static |
Remove bufferization attributes on FuncOp arguments.
Definition at line 231 of file OneShotModuleBufferize.cpp.
References mlir::BlockArgument::getArgNumber(), mlir::BlockArgument::getOwner(), and mlir::Block::getParentOp().