[Mlir-commits] [mlir] [mlir] Add pack/unpack transpose foldings for linalg.generic ops, fix bugs (PR #93055)
Han-Chung Wang
llvmlistbot at llvm.org
Thu May 30 14:47:21 PDT 2024
================
@@ -391,13 +433,19 @@ struct FoldConsumerUnPackWithProducerLinalgTransposeOp
LogicalResult matchAndRewrite(UnPackOp unPackOp,
PatternRewriter &rewriter) const override {
- auto transposeOp =
- unPackOp.getSource().getDefiningOp<linalg::TransposeOp>();
+ auto linalgOp = unPackOp.getSource().getDefiningOp<linalg::LinalgOp>();
+ if (!linalgOp)
+ return failure();
- if (!transposeOp)
+ FailureOr<SmallVector<int64_t>> maybePerm =
+ getTransposeOpPermutation(linalgOp);
+ if (failed(maybePerm)) {
return failure();
+ }
- auto transposePermutation = transposeOp.getPermutation();
+ auto transposePermutation = maybePerm.value();
+ SmallVector<int64_t> inverseTransposePerm =
+ invertPermutationVector(transposePermutation);
----------------
hanhanW wrote:
Same here, I think collapsing them into a single statement is better.
https://github.com/llvm/llvm-project/pull/93055
More information about the Mlir-commits
mailing list