diff options
author | Matthias Springer <springerm@google.com> | 2021-10-15 10:19:14 +0900 |
---|---|---|
committer | Matthias Springer <springerm@google.com> | 2021-10-15 10:31:02 +0900 |
commit | d3cb6bf2d462958f2a6573e6390cca71d13dee6b (patch) | |
tree | 028db68444e72c62078f0503e37dd42a2301157f /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | |
parent | 3f96f7b30c91b912de1c6c7c03ab6a4c18e8aa26 (diff) | |
download | llvm-d3cb6bf2d462958f2a6573e6390cca71d13dee6b.zip llvm-d3cb6bf2d462958f2a6573e6390cca71d13dee6b.tar.gz llvm-d3cb6bf2d462958f2a6573e6390cca71d13dee6b.tar.bz2 |
[mlir][linalg][bufferize] Rewrite conflict detection
For each memory read, follow SSA use-def chains to find the op that produces the data being read (i.e., the most recent write). A memory write to an alias is a conflict if it takes places after the "most recent write" but before the read.
This CL introduces two main changes:
* There is a concise definition of a conflict. Given a piece of IR with InPlaceSpec annotations and a computes alias set, it is easy to compute whether this program has a conflict. No need to consider multiple cases such as "read of operand after in-place write" etc.
* No need to check for clobbering.
Differential Revision: https://reviews.llvm.org/D111287
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp')
0 files changed, 0 insertions, 0 deletions