[all-commits] [llvm/llvm-project] 67c351: [mlir][LLVM] Make `SplitIntegerStores` capable of ...

Markus Böck via All-commits all-commits at lists.llvm.org
Thu Jul 6 06:55:03 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 67c351f648e09256827b1e826e2bf80083279049
      https://github.com/llvm/llvm-project/commit/67c351f648e09256827b1e826e2bf80083279049
  Author: Markus Böck <markus.bock+llvm at nextsilicon.com>
  Date:   2023-07-06 (Thu, 06 Jul 2023)

  Changed paths:
    M mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
    M mlir/include/mlir/Dialect/LLVMIR/Transforms/TypeConsistency.h
    M mlir/lib/Dialect/LLVMIR/Transforms/TypeConsistency.cpp
    M mlir/test/Dialect/LLVMIR/type-consistency.mlir

  Log Message:
  -----------
  [mlir][LLVM] Make `SplitIntegerStores` capable of splitting vectors as well

The original plan was to turn this into its own pattern, but one of the difficulties was deeming when splitting the vector is required.
`SplitIntegerStores` essentially already did that by checking for field overlap.
Therefore, it was renamed to `SplitStores` and extended to splitting stores with values of vector and integer type.

The vector splitting is done in a simple manner by simply using `extractelement` to get each vector element. Subsequent pattern applications are responsible for further cleaning up the output and making it type-consistent.

Worst case, if the code cannot be transformed into a type-consistent form (due to e.g. the code explicitly doing partial writes to elements or similar), we might needlessly do a vector split.

Differential Revision: https://reviews.llvm.org/D154583




More information about the All-commits mailing list