[Mlir-commits] [mlir] [MLIR] Fix canonicalization of extract_slice(unpack) (PR #181840)
Mikhail Romanov
llvmlistbot at llvm.org
Thu Feb 19 12:14:12 PST 2026
================
@@ -2061,6 +2061,50 @@ func.func @no_fold_extract_slice_into_unpack_non_zero_offset(
// -----
+func.func @no_fold_extract_slice_into_unpack_slice_over_non_tiled_dim(
+ %src : tensor<30x2x16xf32>, %dest : tensor<30x32xf32>
+) -> tensor<28x28xf32> {
+ %unpack = linalg.unpack %src
+ inner_dims_pos = [1]
+ inner_tiles = [16]
+ into %dest : tensor<30x2x16xf32> -> tensor<30x32xf32>
+ %extracted_slice = tensor.extract_slice %unpack
+ [0, 0] [28, 28] [1, 1] : tensor<30x32xf32> to tensor<28x28xf32>
+ return %extracted_slice : tensor<28x28xf32>
+}
+
+// CHECK-LABEL: func @no_fold_extract_slice_into_unpack_slice_over_non_tiled_dim
+// CHECK-SAME: %[[SRC:.+]]: tensor<30x2x16xf32>
+// CHECK-SAME: %[[DEST:.+]]: tensor<30x32xf32>
+// CHECK: %[[UNPACK:.+]] = linalg.unpack %[[SRC]]
+// CHECK-SAME: into %[[DEST]]
+// CHECK: %[[SLICE:.+]] = tensor.extract_slice %[[UNPACK]]
+// CHECK: return %[[SLICE]]
+
+// -----
+
+func.func @no_fold_extract_slice_into_unpack_slice_over_dynamic_dim(
+ %src : tensor<?x2x16xf32>, %dest : tensor<?x32xf32>, %size : index
+) -> tensor<?x28xf32> {
+ %unpack = linalg.unpack %src
+ inner_dims_pos = [1]
+ inner_tiles = [16]
+ into %dest : tensor<?x2x16xf32> -> tensor<?x32xf32>
+ %extracted_slice = tensor.extract_slice %unpack
+ [0, 0] [%size, 28] [1, 1] : tensor<?x32xf32> to tensor<?x28xf32>
+ return %extracted_slice : tensor<?x28xf32>
+}
----------------
Mmi257ia wrote:
Thanks, added
https://github.com/llvm/llvm-project/pull/181840
More information about the Mlir-commits
mailing list