@@ -719,6 +719,71 @@ func.func @fold_pack_constant_splat(%dest : tensor<8x16x8x32xf32>) -> tensor<8x1
719
719
720
720
// -----
721
721
722
+ func.func @fold_padding_value_pack (%arg0: tensor <1200 x500000 xf32 >) -> tensor <31250 x1200 x16 x1 xf32 > {
723
+ %cst = arith.constant 0.000000e+00 : f32
724
+ %0 = tensor.empty () : tensor <31250 x1200 x16 x1 xf32 >
725
+ %pack = tensor.pack %arg0
726
+ padding_value (%cst : f32 )
727
+ outer_dims_perm = [1 , 0 ]
728
+ inner_dims_pos = [1 , 0 ]
729
+ inner_tiles = [16 , 1 ]
730
+ into %0 : tensor <1200 x500000 xf32 > -> tensor <31250 x1200 x16 x1 xf32 >
731
+ return %pack : tensor <31250 x1200 x16 x1 xf32 >
732
+ }
733
+ // CHECK-LABEL: func @fold_padding_value_pack
734
+ // CHECK-NOT: padding_value
735
+
736
+ // -----
737
+
738
+ func.func @fold_padding_value_pack_negative1 (%arg0: tensor <1200 x499999 xf32 >) -> tensor <31250 x1200 x16 x1 xf32 > {
739
+ %cst = arith.constant 0.000000e+00 : f32
740
+ %0 = tensor.empty () : tensor <31250 x1200 x16 x1 xf32 >
741
+ %pack = tensor.pack %arg0
742
+ padding_value (%cst : f32 )
743
+ outer_dims_perm = [1 , 0 ]
744
+ inner_dims_pos = [1 , 0 ]
745
+ inner_tiles = [16 , 1 ]
746
+ into %0 : tensor <1200 x499999 xf32 > -> tensor <31250 x1200 x16 x1 xf32 >
747
+ return %pack : tensor <31250 x1200 x16 x1 xf32 >
748
+ }
749
+ // CHECK-LABEL: func @fold_padding_value_pack_negative1
750
+ // CHECK: tensor.pack
751
+ // CHECK-SAME: padding_value
752
+
753
+ // -----
754
+
755
+ func.func @fold_padding_value_pack_negative2 (%arg0: tensor <1200 x?xf32 >, %arg1: tensor <?x1200 x16 x1 xf32 >) -> tensor <?x1200 x16 x1 xf32 > {
756
+ %cst = arith.constant 0.000000e+00 : f32
757
+ %pack = tensor.pack %arg0
758
+ padding_value (%cst : f32 )
759
+ outer_dims_perm = [1 , 0 ]
760
+ inner_dims_pos = [1 , 0 ]
761
+ inner_tiles = [16 , 1 ]
762
+ into %arg1 : tensor <1200 x?xf32 > -> tensor <?x1200 x16 x1 xf32 >
763
+ return %pack : tensor <?x1200 x16 x1 xf32 >
764
+ }
765
+ // CHECK-LABEL: func @fold_padding_value_pack_negative2
766
+ // CHECK: tensor.pack
767
+ // CHECK-SAME: padding_value
768
+
769
+ // -----
770
+
771
+ func.func @fold_padding_value_pack_negative3 (%arg0: tensor <1200 x500000 xf32 >, %arg1: tensor <?x1200 x?x1 xf32 >, %tile : index ) -> tensor <?x1200 x?x1 xf32 > {
772
+ %cst = arith.constant 0.000000e+00 : f32
773
+ %pack = tensor.pack %arg0
774
+ padding_value (%cst : f32 )
775
+ outer_dims_perm = [1 , 0 ]
776
+ inner_dims_pos = [1 , 0 ]
777
+ inner_tiles = [%tile , 1 ]
778
+ into %arg1 : tensor <1200 x500000 xf32 > -> tensor <?x1200 x?x1 xf32 >
779
+ return %pack : tensor <?x1200 x?x1 xf32 >
780
+ }
781
+ // CHECK-LABEL: func @fold_padding_value_pack_negative3
782
+ // CHECK: tensor.pack
783
+ // CHECK-SAME: padding_value
784
+
785
+ // -----
786
+
722
787
// CHECK-LABEL: func @fold_unpack_constant_splat
723
788
// CHECK-NOT: tensor.unpack
724
789
// CHECK: arith.constant dense<1.000000e-01> : tensor<128x256xf32>
0 commit comments