[torch] Fix unsqueezed output shape in canonicalization of AtenUnflattenIntOp #3730
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes iree-org/iree#18562.
During canonicalization pass on
AtenUnflattenIntOp
, if the second dim was statically equal to one, we would create anAtenAddIntOp
to add one to the dimension obtained fromop.getDim()
. This, when passed intoTorch::unsqueezeTensor()
, would make it get interpreted as non-constant, which would lead to MLIR failing an assertion whenUnsqueezeOp
would later get lowered intoExpandShapeOp
, as the output of theUnsqueezeOp
would consist of only dynamic dims.This patch fixes this behavior, by extracting the integer value from the dim if it was constant, and then emitting a
ConstantIntOp
from (dim+1). This creates an output with static shape.