summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorMatthias Springer <springerm@google.com>2023-04-28 10:34:03 +0900
committerMatthias Springer <springerm@google.com>2023-04-28 11:46:32 +0900
commit77124386feb615343afef2740396de1baceb1336 (patch)
tree3866cb5e9c496a4df79e7aaed34ee7cc76af5b18 /utils
parentfbf42f1fe2b541ea039ea576f57040eec2ff9480 (diff)
downloadllvm-77124386feb615343afef2740396de1baceb1336.tar.gz
[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
Diffstat (limited to 'utils')
-rw-r--r--utils/bazel/llvm-project-overlay/mlir/BUILD.bazel38
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
index c941face6f43..dfa8f43ab439 100644
--- a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
@@ -5808,6 +5808,7 @@ cc_library(
includes = ["include"],
deps = [
":AffineDialect",
+ ":AffineTransforms",
":AffineUtils",
":ArithDialect",
":ArithUtils",
@@ -5824,20 +5825,57 @@ cc_library(
":TensorPassIncGen",
":TilingInterface",
":Transforms",
+ ":ValueBoundsOpInterface",
":VectorDialect",
"//llvm:Support",
],
)
+td_library(
+ name = "TensorTransformOpsTdFiles",
+ srcs = [
+ "include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.td",
+ ],
+ includes = ["include"],
+ deps = [
+ ":PDLDialect",
+ ":TransformDialectTdFiles",
+ ],
+)
+
+gentbl_cc_library(
+ name = "TensorTransformOpsIncGen",
+ strip_include_prefix = "include",
+ tbl_outs = [
+ (
+ ["-gen-op-decls"],
+ "include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.h.inc",
+ ),
+ (
+ ["-gen-op-defs"],
+ "include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.cpp.inc",
+ ),
+ ],
+ tblgen = ":mlir-tblgen",
+ td_file = "include/mlir/Dialect/Tensor/TransformOps/TensorTransformOps.td",
+ deps = [
+ ":TensorTransformOpsTdFiles",
+ ],
+)
+
cc_library(
name = "TensorTransformOps",
srcs = glob(["lib/Dialect/Tensor/TransformOps/*.cpp"]),
hdrs = glob(["include/mlir/Dialect/Tensor/TransformOps/*.h"]),
includes = ["include"],
deps = [
+ ":AffineDialect",
":IR",
":PDLDialect",
+ ":SCFDialect",
":TensorDialect",
+ ":TensorTransformOpsIncGen",
+ ":TensorTransforms",
":TransformDialect",
"//llvm:Support",
],