forked from OSchip/llvm-project
![]() Cross function boundary bufferization support is added. This is enabled by cross-function boundary alias analysis, for which the bufferization process is extended: it can now modify the BufferizationAliasInfo as new ops are introduced. A number of simplifying assumptions are made: 1. by default we bufferize to the most dynamic strided memref type, further memref::CastOp canonicalizations are expected to clean up the IR. 2. in the current implementation, the stride information is always erased at function boundaries. A subsequent pass will be required to analyze the meet of all call ops to a function and decide whether more static buffer types can be used. This will potentially clone functions when it is deemed profitable to do so (e.g. when the stride-1 dimension may vary). 3. external function always bufferize to the most dynamic strided memref version. This may require special annotations for specifying that particular operands of top-level functions have contiguous buffer layout. An alternative to point 3. would be to support tensor layout annotations, which is currently not supported in MLIR. Differential revision: https://reviews.llvm.org/D104873 |
||
---|---|---|
.. | ||
Analysis | ||
Bindings | ||
CAPI | ||
Conversion | ||
Dialect | ||
ExecutionEngine | ||
IR | ||
Interfaces | ||
Parser | ||
Pass | ||
Reducer | ||
Rewrite | ||
Support | ||
TableGen | ||
Target | ||
Tools | ||
Transforms | ||
Translation | ||
CMakeLists.txt |