[mlir][SCF] Canonicalize dim(x) where x is an iter_arg
authorMatthias Springer <springerm@google.com>
Mon, 30 Aug 2021 01:12:14 +0000 (01:12 +0000)
committerMatthias Springer <springerm@google.com>
Mon, 30 Aug 2021 01:39:56 +0000 (01:39 +0000)
commitd18ffd61d4f2500dc4ae267f4705102abb2cf02f
tree7880630b8b83b65acbb012fd9c6eb7d607bf3620
parent71b170ccf36ee02e6a4c472bc1d3e89bbaf0e2b4
[mlir][SCF] Canonicalize dim(x) where x is an iter_arg

* Add `DimOfIterArgFolder`.
* Move existing cross-dialect canonicalization patterns to `LoopCanonicalization.cpp`.
* Rename `SCFAffineOpCanonicalization` pass to `SCFForLoopCanonicalization`.
* Expand documentaton of scf.for: The type of loop-carried variables may not change with iterations. (Not even the dynamic type.)

Differential Revision: https://reviews.llvm.org/D108806
14 files changed:
mlir/include/mlir/Dialect/SCF/Passes.h
mlir/include/mlir/Dialect/SCF/Passes.td
mlir/include/mlir/Dialect/SCF/SCFOps.td
mlir/include/mlir/Dialect/SCF/Transforms.h
mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp
mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
mlir/lib/Dialect/SCF/Transforms/CMakeLists.txt
mlir/lib/Dialect/SCF/Transforms/LoopCanonicalization.cpp [new file with mode: 0644]
mlir/lib/Dialect/SCF/Transforms/LoopSpecialization.cpp
mlir/lib/Dialect/SCF/Transforms/PassDetail.h
mlir/test/Dialect/SCF/for-loop-canonicalization.mlir [moved from mlir/test/Dialect/SCF/canonicalize-affine-op.mlir with 91% similarity]
mlir/test/lib/Dialect/Linalg/TestConvVectorization.cpp
mlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp
utils/bazel/llvm-project-overlay/mlir/BUILD.bazel