forked from OSchip/llvm-project
6dd696ae4f
Summary: The RAW fusion happens only if the produecer block dominates the consumer block. The WAW pattern also works with the precondition. I.e., if a producer can dominate the consumer, they can fairly fuse together. Since they are all tilable, we can think the pattern like this way: Input: ``` linalg_op1 view tile_loop subview_2 linalg_op2 subview_2 ``` Tile the first Linalg op as same as the second Linalg. ``` tile_loop subview_1 linalg_op1 subview_1 tile_loop subview_2 liangl_op2 subview_2 ``` Since the first Linalg op is tilable in the same way and the computation are independently, it's fair to fuse it with the second Linalg op. ``` tile_loop subview_1 linalg_op1 subview_1 linalg_op2 subview_2 ``` In short, this patch includes: - Handling both RAW and WAW pattern. - Adding a interface method to get input and output buffers. - Exposing a method to get a StringRef of a dependency type. - Fixing existing WAW tests and add one more use case: initialize the buffer before conv op. Differential Revision: https://reviews.llvm.org/D76897 |
||
---|---|---|
.. | ||
cmake/modules | ||
docs | ||
examples | ||
include | ||
lib | ||
test | ||
tools | ||
unittests | ||
utils | ||
.clang-format | ||
.clang-tidy | ||
CMakeLists.txt | ||
LICENSE.TXT | ||
README.md |
README.md
Multi-Level Intermediate Representation
See https://mlir.llvm.org/ for more information.