Skip to content

Commit 04877c5

Browse files
committed
[mlir] Fix bug in pack op canonicalization for folding dynamic dims
1 parent 777ac46 commit 04877c5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

mlir/lib/Dialect/Tensor/IR/TensorOps.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4012,15 +4012,17 @@ static bool inferStaticShape(PackOp packOp, SmallVectorImpl<int64_t> &srcShape,
40124012
llvm::SmallSetVector<int64_t, 4> innerDims;
40134013
innerDims.insert(packOp.getInnerDimsPos().begin(),
40144014
packOp.getInnerDimsPos().end());
4015-
auto outerDimsPerm = packOp.getOuterDimsPerm();
4015+
SmallVector<int64_t> inverseOuterDimsPerm;
4016+
if (!packOp.getOuterDimsPerm().empty())
4017+
inverseOuterDimsPerm = invertPermutationVector(packOp.getOuterDimsPerm());
40164018
int srcRank = packOp.getSourceRank();
40174019
for (auto i : llvm::seq<int64_t>(0, srcRank)) {
40184020
if (innerDims.contains(i))
40194021
continue;
40204022
int64_t srcPos = i;
40214023
int64_t destPos = i;
4022-
if (!outerDimsPerm.empty())
4023-
destPos = outerDimsPerm[srcPos];
4024+
if (!inverseOuterDimsPerm.empty())
4025+
destPos = inverseOuterDimsPerm[srcPos];
40244026
if (ShapedType::isDynamic(srcShape[srcPos]) ==
40254027
ShapedType::isDynamic(destShape[destPos])) {
40264028
continue;

0 commit comments

Comments
 (0)