diff options
author | Andrzej WarzyĆski <andrzej.warzynski@arm.com> | 2025-06-25 16:40:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-25 16:40:14 +0100 |
commit | c92b580d6308ded02b491d71dda9427edf6f7ed0 (patch) | |
tree | 7014ac8d91f85b431d22cafec840916714bbf2a5 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | c08502defe47d71d3e0beecee8ca040279c4dff9 (diff) | |
download | llvm-c92b580d6308ded02b491d71dda9427edf6f7ed0.zip llvm-c92b580d6308ded02b491d71dda9427edf6f7ed0.tar.gz llvm-c92b580d6308ded02b491d71dda9427edf6f7ed0.tar.bz2 |
[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.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions