@@ -23,53 +23,21 @@ func.func @transpose23(%arg0: vector<2x3xf32>) -> vector<3x2xf32> {
2323
2424// CHECK-LABEL: func @transpose102_1x8x8xf32
2525func.func @transpose102_1x8x8xf32 (%arg0: vector <1 x8 x8 xf32 >) -> vector <8 x1 x8 xf32 > {
26- // CHECK: vector.extract {{.*}}[0, 0] : vector<8xf32> from vector<1x8x8xf32>
27- // CHECK-NEXT: vector.insert {{.*}} [0, 0] : vector<8xf32> into vector<8x1x8xf32>
28- // CHECK-NEXT: vector.extract {{.*}}[0, 1] : vector<8xf32> from vector<1x8x8xf32>
29- // CHECK-NEXT: vector.insert {{.*}} [1, 0] : vector<8xf32> into vector<8x1x8xf32>
30- // CHECK-NEXT: vector.extract {{.*}}[0, 2] : vector<8xf32> from vector<1x8x8xf32>
31- // CHECK-NEXT: vector.insert {{.*}} [2, 0] : vector<8xf32> into vector<8x1x8xf32>
32- // CHECK-NEXT: vector.extract {{.*}}[0, 3] : vector<8xf32> from vector<1x8x8xf32>
33- // CHECK-NEXT: vector.insert {{.*}} [3, 0] : vector<8xf32> into vector<8x1x8xf32>
34- // CHECK-NEXT: vector.extract {{.*}}[0, 4] : vector<8xf32> from vector<1x8x8xf32>
35- // CHECK-NEXT: vector.insert {{.*}} [4, 0] : vector<8xf32> into vector<8x1x8xf32>
36- // CHECK-NEXT: vector.extract {{.*}}[0, 5] : vector<8xf32> from vector<1x8x8xf32>
37- // CHECK-NEXT: vector.insert {{.*}} [5, 0] : vector<8xf32> into vector<8x1x8xf32>
38- // CHECK-NEXT: vector.extract {{.*}}[0, 6] : vector<8xf32> from vector<1x8x8xf32>
39- // CHECK-NEXT: vector.insert {{.*}} [6, 0] : vector<8xf32> into vector<8x1x8xf32>
40- // CHECK-NEXT: vector.extract {{.*}}[0, 7] : vector<8xf32> from vector<1x8x8xf32>
41- // CHECK-NEXT: vector.insert {{.*}} [7, 0] : vector<8xf32> into vector<8x1x8xf32>
26+ // CHECK: %0 = vector.shape_cast %arg0 : vector<1x8x8xf32> to vector<8x1x8xf32>
4227 %0 = vector.transpose %arg0 , [1 , 0 , 2 ] : vector <1 x8 x8 xf32 > to vector <8 x1 x8 xf32 >
4328 return %0 : vector <8 x1 x8 xf32 >
4429}
4530
4631// CHECK-LABEL: func @transpose102_8x1x8xf32
4732func.func @transpose102_8x1x8xf32 (%arg0: vector <8 x1 x8 xf32 >) -> vector <1 x8 x8 xf32 > {
48- // CHECK: vector.extract {{.*}}[0, 0] : vector<8xf32> from vector<8x1x8xf32>
49- // CHECK-NEXT: vector.insert {{.*}} [0, 0] : vector<8xf32> into vector<1x8x8xf32>
50- // CHECK-NEXT: vector.extract {{.*}}[1, 0] : vector<8xf32> from vector<8x1x8xf32>
51- // CHECK-NEXT: vector.insert {{.*}} [0, 1] : vector<8xf32> into vector<1x8x8xf32>
52- // CHECK-NEXT: vector.extract {{.*}}[2, 0] : vector<8xf32> from vector<8x1x8xf32>
53- // CHECK-NEXT: vector.insert {{.*}} [0, 2] : vector<8xf32> into vector<1x8x8xf32>
54- // CHECK-NEXT: vector.extract {{.*}}[3, 0] : vector<8xf32> from vector<8x1x8xf32>
55- // CHECK-NEXT: vector.insert {{.*}} [0, 3] : vector<8xf32> into vector<1x8x8xf32>
56- // CHECK-NEXT: vector.extract {{.*}}[4, 0] : vector<8xf32> from vector<8x1x8xf32>
57- // CHECK-NEXT: vector.insert {{.*}} [0, 4] : vector<8xf32> into vector<1x8x8xf32>
58- // CHECK-NEXT: vector.extract {{.*}}[5, 0] : vector<8xf32> from vector<8x1x8xf32>
59- // CHECK-NEXT: vector.insert {{.*}} [0, 5] : vector<8xf32> into vector<1x8x8xf32>
60- // CHECK-NEXT: vector.extract {{.*}}[6, 0] : vector<8xf32> from vector<8x1x8xf32>
61- // CHECK-NEXT: vector.insert {{.*}} [0, 6] : vector<8xf32> into vector<1x8x8xf32>
62- // CHECK-NEXT: vector.extract {{.*}}[7, 0] : vector<8xf32> from vector<8x1x8xf32>
63- // CHECK-NEXT: vector.insert {{.*}} [0, 7] : vector<8xf32> into vector<1x8x8xf32>
33+ // CHECK: %0 = vector.shape_cast %arg0 : vector<8x1x8xf32> to vector<1x8x8xf32>
6434 %0 = vector.transpose %arg0 , [1 , 0 , 2 ] : vector <8 x1 x8 xf32 > to vector <1 x8 x8 xf32 >
6535 return %0 : vector <1 x8 x8 xf32 >
6636}
6737
6838// CHECK-LABEL: func @transpose1023_1x1x8x8xf32(
6939func.func @transpose1023_1x1x8x8xf32 (%arg0: vector <1 x1 x8 x8 xf32 >) -> vector <1 x1 x8 x8 xf32 > {
70- // Note the single 2-D extract/insert pair since 2 and 3 are not transposed!
71- // CHECK: vector.extract {{.*}}[0, 0] : vector<8x8xf32> from vector<1x1x8x8xf32>
72- // CHECK-NEXT: vector.insert {{.*}} [0, 0] : vector<8x8xf32> into vector<1x1x8x8xf32>
40+ // CHECK: return %arg0 : vector<1x1x8x8xf32>
7341 %0 = vector.transpose %arg0 , [1 , 0 , 2 , 3 ] : vector <1 x1 x8 x8 xf32 > to vector <1 x1 x8 x8 xf32 >
7442 return %0 : vector <1 x1 x8 x8 xf32 >
7543}
@@ -386,13 +354,20 @@ func.func @transpose10_4x1xf32_scalable(%arg0: vector<4x[1]xf32>) -> vector<[1]x
386354 return %0 : vector <[1 ]x4 xf32 >
387355}
388356
389- // CHECK-LABEL: func @transpose_nd
390- func.func @transpose_nd (%arg0: vector <1 x2 x1 x16 xf32 >) -> vector <1 x1 x2 x16 xf32 > {
357+ // CHECK-LABEL: func @transpose_nd1
358+ func.func @transpose_nd1 (%arg0: vector <1 x2 x1 x16 xf32 >) -> vector <1 x1 x2 x16 xf32 > {
391359 // CHECK-NEXT: vector.shape_cast %arg0 : vector<1x2x1x16xf32> to vector<1x1x2x16xf32>
392360 %0 = vector.transpose %arg0 , [0 , 2 , 1 , 3 ] : vector <1 x2 x1 x16 xf32 > to vector <1 x1 x2 x16 xf32 >
393361 return %0 : vector <1 x1 x2 x16 xf32 >
394362}
395363
364+ // CHECK-LABEL: func @transpose_nd2
365+ func.func @transpose_nd2 (%arg0: vector <1 x1 x2 x16 xf32 >) -> vector <1 x2 x1 x16 xf32 > {
366+ // CHECK-NEXT: vector.shape_cast %arg0 : vector<1x1x2x16xf32> to vector<1x2x1x16xf32>
367+ %0 = vector.transpose %arg0 , [0 , 2 , 1 , 3 ] : vector <1 x1 x2 x16 xf32 > to vector <1 x2 x1 x16 xf32 >
368+ return %0 : vector <1 x2 x1 x16 xf32 >
369+ }
370+
396371module attributes {transform.with_named_sequence } {
397372 transform.named_sequence @__transform_main (%root : !transform.any_op {transform.readonly }) {
398373 %func_op = transform.structured.match ops {[" func.func" ]} in %root : (!transform.any_op ) -> !transform.op <" func.func" >
0 commit comments