[all-commits] [llvm/llvm-project] 771243: [mlir][tensor] Add transform to make tensor.pad lo...
Matthias Springer via All-commits
all-commits at lists.llvm.org
Thu Apr 27 19:47:18 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 77124386feb615343afef2740396de1baceb1336
https://github.com/llvm/llvm-project/commit/77124386feb615343afef2740396de1baceb1336
Author: Matthias Springer <springerm at google.com>
Date: 2023-04-28 (Fri, 28 Apr 2023)
Changed paths:
M mlir/include/mlir/Dialect/Affine/Transforms/Transforms.h
M mlir/include/mlir/Dialect/Tensor/CMakeLists.txt
A mlir/include/mlir/Dialect/Tensor/TransformOps/CMakeLists.txt
M mlir/include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h
A mlir/include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.td
M mlir/include/mlir/Dialect/Tensor/Transforms/Transforms.h
M mlir/include/mlir/InitAllDialects.h
M mlir/include/mlir/Interfaces/ValueBoundsOpInterface.h
M mlir/lib/Dialect/Affine/Transforms/ReifyValueBounds.cpp
M mlir/lib/Dialect/Tensor/TransformOps/CMakeLists.txt
M mlir/lib/Dialect/Tensor/TransformOps/TensorTransformOps.cpp
M mlir/lib/Dialect/Tensor/Transforms/CMakeLists.txt
A mlir/lib/Dialect/Tensor/Transforms/IndependenceTransforms.cpp
M mlir/lib/Interfaces/ValueBoundsOpInterface.cpp
A mlir/test/Dialect/Tensor/transform-op-make-loop-independent.mlir
M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
Log Message:
-----------
[mlir][tensor] Add transform to make tensor.pad loop-independent
Add a transform to make `tensor.pad` and `tensor.empty` ops independent of SCF loop IVs. Such ops can then be hoisted.
E.g.:
```
scf.for %iv = %lb to %ub step %step {
%high = affine.apply affine_map<(d0)[s0] -> (s0 - d0)> (%i)[%ub]
%p = tensor.pad %t low[5] high[%high] ...
...
}
```
Is transformed to:
```
%high_new = affine.apply affine_map<()[s0, s1] -> (-s0 + s1)> ()[%lb, %ub]
%p_hoistable = tensor.pad %t low[5] high[%high_new]
%dim = tensor.dim %t, %c0
%size = affine.apply affine_map<(d0)[s0, s1] -> (-d0 + s0 + s1 + 5)>(%iv)[%ub, %dim]
%slice = tensor.extract_slice %p_hoistable [0] [%size] [1]
```
Differential Revision: https://reviews.llvm.org/D143910
More information about the All-commits
mailing list