@@ -455,13 +455,10 @@ func.func @unpack_on_output(%arg0: tensor<12x2x56x56x32xf32>) -> tensor<12x56x56
455455// CHECK: %[[UNPACKED_ARG0:.+]] = linalg.unpack %[[ARG0]]
456456// CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
457457// CHECK-SAME: into %[[ARG0_EMPTY_UNPACK]]
458- // CHECK: %[[ARG0_EMPTY_PACK:.+]] = tensor.empty() : tensor<12x2x56x56x32xf32>
459- // CHECK: %[[PACKED_ARG0:.+]] = linalg.pack %[[UNPACKED_ARG0]]
460- // CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
461- // CHECK-SAME: into %[[ARG0_EMPTY_PACK]]
458+ // CHECK: %[[EMPTY:.+]] = tensor.empty() : tensor<12x2x56x56x32xf32>
462459// CHECK: %[[RES:.+]] = linalg.generic
463460// CHECK-SAME: indexing_maps = [#[[$MAP]]]
464- // CHECK-SAME: outs(%[[PACKED_ARG0 ]]
461+ // CHECK-SAME: outs(%[[EMPTY ]]
465462// CHECK: %[[UNPACK:.+]] = linalg.unpack %[[RES]]
466463// CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
467464// CHECK-SAME: into %[[UNPACKED_ARG0]]
@@ -485,22 +482,11 @@ func.func @unpack_on_input(%arg0: tensor<12x2x56x56x32xf32>, %init: tensor<12x56
485482// CHECK-LABEL: func.func @unpack_on_input
486483// CHECK-SAME: %[[ARG0:[a-zA-Z0-9]+]]
487484// CHECK-SAME: %[[ARG1:[a-zA-Z0-9]+]]
488- // CHECK: %[[ARG0_UNPACK_EMPTY:.+]] = tensor.empty() : tensor<12x56x56x64xf32>
489- // CHECK: %[[UNPACKED_ARG0:.+]] = linalg.unpack %[[ARG0]]
490- // CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
491- // CHECK-SAME: into %[[ARG0_UNPACK_EMPTY]]
492- // CHECK: %[[ARG1_PACK_EMPTY:.+]] = tensor.empty() : tensor<12x2x56x56x32xf32>
493- // CHECK: %[[ARG1_PACK:.+]] = linalg.pack %[[ARG1]]
494- // CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
495- // CHECK-SAME: into %[[ARG1_PACK_EMPTY]]
496- // CHECK: %[[ARG0_PACK_EMPTY:.+]] = tensor.empty() : tensor<12x2x56x56x32xf32>
497- // CHECK: %[[ARG0_PACK:.+]] = linalg.pack %[[UNPACKED_ARG0]]
498- // CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
499- // CHECK-SAME: into %[[ARG0_PACK_EMPTY]]
485+ // CHECK: %[[EMPTY:.+]] = tensor.empty() : tensor<12x2x56x56x32xf32>
500486// CHECK: %[[RES:.+]] = linalg.generic
501487// CHECK-SAME: indexing_maps = [#[[$MAP]], #[[$MAP]]]
502- // CHECK-SAME: ins(%[[ARG0_PACK ]]
503- // CHECK-SAME: outs(%[[ARG1_PACK ]]
488+ // CHECK-SAME: ins(%[[ARG0 ]]
489+ // CHECK-SAME: outs(%[[EMPTY ]]
504490// CHECK: %[[UNPACK:.+]] = linalg.unpack %[[RES]]
505491// CHECK-SAME: outer_dims_perm = [0, 3, 1, 2] inner_dims_pos = [3] inner_tiles = [32]
506492// CHECK-SAME: into %[[ARG1]]
@@ -1407,19 +1393,21 @@ func.func @push_unpack_in_padded_domain_foldable(%arg0: tensor<8x8x4x8xf32>, %de
14071393 } -> tensor <?x64 xbf16 >
14081394 return %0 : tensor <?x64 xbf16 >
14091395}
1410-
14111396// CHECK-LABEL: func.func @push_unpack_in_padded_domain_foldable
14121397// CHECK-SAME: %[[ARG0:[a-zA-Z0-9]+]]
1398+ // CHECK-SAME: %[[ARG1:[a-zA-Z0-9]+]]
1399+ // CHECK-SAME: %[[ARG2:[a-zA-Z0-9]+]]
14131400// CHECK: %[[EMPTY:.+]] = tensor.empty
14141401// CHECK: %[[GENERIC:.+]] = linalg.generic
14151402// CHECK-SAME: ins(%[[ARG0]] : tensor<8x8x4x8xf32>)
14161403// CHECK-SAME: outs(%[[EMPTY]] : tensor<?x8x4x8xbf16>)
14171404// CHECK: %[[UNPACK:.+]] = linalg.unpack %[[GENERIC]]
1405+ // CHECK-SAME: into %[[ARG2]]
14181406// CHECK: return %[[UNPACK]] : tensor<?x64xbf16>
14191407
14201408// -----
14211409
1422- func.func @push_unpack_in_padded_domain_not_foldable (%arg0: tensor <8 x8 x4 x8 xf32 >, %arg1: tensor <?x64 xf32 >) -> tensor <?x64 xf32 > {
1410+ func.func @push_unpack_in_padded_domain_out_used (%arg0: tensor <8 x8 x4 x8 xf32 >, %arg1: tensor <?x64 xf32 >) -> tensor <?x64 xf32 > {
14231411 %unpack = linalg.unpack %arg0 inner_dims_pos = [0 , 1 ] inner_tiles = [4 , 8 ] into %arg1 : tensor <8 x8 x4 x8 xf32 > -> tensor <?x64 xf32 >
14241412 %0 = linalg.generic {index ing_maps = [affine_map <(d0 , d1 ) -> (d0 , d1 )>, affine_map <(d0 , d1 ) -> (d0 , d1 )>], iterator_types = [" parallel" , " parallel" ]} ins (%unpack : tensor <?x64 xf32 >) outs (%arg1 : tensor <?x64 xf32 >) {
14251413 ^bb0 (%in: f32 , %out: f32 ):
@@ -1428,15 +1416,13 @@ func.func @push_unpack_in_padded_domain_not_foldable(%arg0: tensor<8x8x4x8xf32>,
14281416 } -> tensor <?x64 xf32 >
14291417 return %0 : tensor <?x64 xf32 >
14301418}
1431-
1432- // CHECK-LABEL: func.func @push_unpack_in_padded_domain_not_foldable
1419+ // CHECK-LABEL: func.func @push_unpack_in_padded_domain_out_used
14331420// CHECK-SAME: %[[ARG0:[a-zA-Z0-9]+]]
14341421// CHECK-SAME: %[[ARG1:[a-zA-Z0-9]+]]
1435- // CHECK: %[[UNPACK:.+]] = linalg.unpack %[[ARG0]]
1436- // CHECK: %[[PACK:.+]] = linalg.pack %[[ARG1]]
1437- // CHECK: %[[UNPACK1:.+]] = linalg.pack %[[UNPACK]]
1422+ // CHECK: %[[EMPTY:.+]] = tensor.empty
14381423// CHECK: %[[GENERIC:.+]] = linalg.generic
1439- // CHECK-SAME: ins(%[[UNPACK1 ]] : tensor<?x8x4x8xf32 >)
1440- // CHECK-SAME: outs(%[[PACK ]] : tensor<?x8x4x8xf32>)
1424+ // CHECK-SAME: ins(%[[ARG0 ]] : tensor<8x8x4x8xf32 >)
1425+ // CHECK-SAME: outs(%[[EMPTY ]] : tensor<?x8x4x8xf32>)
14411426// CHECK: %[[UNPACK2:.+]] = linalg.unpack %[[GENERIC]]
1427+ // CHECK-SAME: into %[[ARG1]]
14421428// CHECK: return %[[UNPACK2]] : tensor<?x64xf32>
0 commit comments