[all-commits] [llvm/llvm-project] 2164a4: [mlir][Transforms] Add loop-invariant subset hoist...

Matthias Springer via All-commits all-commits at lists.llvm.org
Tue Oct 31 18:57:31 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 2164a449dc7a9daf610b789ba0ec7d1eca7305ef
      https://github.com/llvm/llvm-project/commit/2164a449dc7a9daf610b789ba0ec7d1eca7305ef
  Author: Matthias Springer <me at m-sp.org>
  Date:   2023-11-01 (Wed, 01 Nov 2023)

  Changed paths:
    M mlir/include/mlir/Transforms/LoopInvariantCodeMotionUtils.h
    M mlir/include/mlir/Transforms/Passes.h
    M mlir/include/mlir/Transforms/Passes.td
    M mlir/lib/Transforms/LoopInvariantCodeMotion.cpp
    M mlir/lib/Transforms/Utils/CMakeLists.txt
    M mlir/lib/Transforms/Utils/LoopInvariantCodeMotionUtils.cpp
    A mlir/test/Transforms/loop-invariant-subset-hoisting.mlir
    M utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

  Log Message:
  -----------
  [mlir][Transforms] Add loop-invariant subset hoisting (LISH) transformation (#70619)

Add a loop-invariant subset hoisting pass to `mlir/Interfaces`. This
pass hoist loop-invariant tensor subsets (subset extraction and subset
insertion ops) from loop-like ops. Extraction ops are moved before the
loop. Insertion ops are moved after the loop. The loop body operates on
newly added region iter_args (one per extraction-insertion pair).

This new pass will be improved in subsequent commits (to support more
cases/ops) and will eventually replace
`Linalg/Transforms/SubsetHoisting.cpp`. In contrast to the existing
Linalg subset hoisting, the new pass is op interface-based
(`SubsetOpInterface` and `LoopLikeOpInterface`).




More information about the All-commits mailing list