[all-commits] [llvm/llvm-project] c92b58: [mlir][ArmSME] Remove `ConvertIllegalShapeCastOpsT...

Andrzej Warzyński via All-commits all-commits at lists.llvm.org
Wed Jun 25 08:40:36 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c92b580d6308ded02b491d71dda9427edf6f7ed0
      https://github.com/llvm/llvm-project/commit/c92b580d6308ded02b491d71dda9427edf6f7ed0
  Author: Andrzej Warzyński <andrzej.warzynski at arm.com>
  Date:   2025-06-25 (Wed, 25 Jun 2025)

  Changed paths:
    M mlir/lib/Dialect/ArmSME/Transforms/VectorLegalization.cpp
    M mlir/lib/Dialect/Vector/IR/VectorOps.cpp
    M mlir/test/Dialect/ArmSME/vector-legalization.mlir
    M mlir/test/Dialect/Vector/canonicalize/vector-transpose.mlir

  Log Message:
  -----------
  [mlir][ArmSME] Remove `ConvertIllegalShapeCastOpsToTransposes` (#139706)

As a follow-up to PR #135841 (see discussion for background), this patch
removes the `ConvertIllegalShapeCastOpsToTransposes` pattern from the SME
legalization pass. This change unblocks folding for ShapeCastOp involving
scalable vectors.

Originally, the `ConvertIllegalShapeCastOpsToTransposes` pattern was introduced
to rewrite certain `vector.shape_cast` ops that could not be lowered otherwise.
Based on local end-to-end testing, this workaround is no longer required, and
the pattern can now be safely removed.

This patch also removes a special case from `ShapeCastOp::fold`, simplifying
the fold logic.

As a side effect of removing `ConvertIllegalShapeCastOpsToTransposes`, we lose
the mechanism that enabled lowering of certain ops like:

```mlir
%res = vector.transfer_read %mem[%a, %b] (...) :
       memref<?x?xf32>, vector<[4]x1xf32>
```
Previously, such cases were handled by:
* Rewriting a nearby `vector.shape_cast` to a `vector.transpose` (via
  `ConvertIllegalShapeCastOpsToTransposes`)
* Then lowering the result with `LiftIllegalVectorTransposeToMemory`.

This patch introduces a new dedicated pattern,
`LowerColumnTransferReadToLoops`, that directly handles illegal
`vector.transfer_read` ops involving leading scalable dimensions.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list