2
2
3
3
// This file contains some canonicalizations tests involving vector.transpose.
4
4
5
- // CHECK-LABEL: scalar_broadcast_transpose_to_broadcast
5
+ // CHECK-LABEL: broadcast_transpose_scalar_to_broadcast
6
6
// CHECK-SAME: %[[ARG:.*]]: i8) -> vector<2x3x4xi8> {
7
- func.func @scalar_broadcast_transpose_to_broadcast (%arg0 : i8 ) -> vector <2 x3 x4 xi8 > {
7
+ func.func @broadcast_transpose_scalar_to_broadcast (%arg0 : i8 ) -> vector <2 x3 x4 xi8 > {
8
8
// CHECK: %[[BC:.*]] = vector.broadcast %[[ARG]] : i8 to vector<2x3x4xi8>
9
9
%0 = vector.broadcast %arg0 : i8 to vector <3 x4 x2 xi8 >
10
10
%1 = vector.transpose %0 , [2 , 0 , 1 ] : vector <3 x4 x2 xi8 > to vector <2 x3 x4 xi8 >
@@ -14,23 +14,23 @@ func.func @scalar_broadcast_transpose_to_broadcast(%arg0 : i8) -> vector<2x3x4xi
14
14
15
15
// -----
16
16
17
- // CHECK-LABEL: ones_broadcast_transpose_to_broadcast
17
+ // CHECK-LABEL: broadcast_transpose_ones_to_broadcast
18
18
// CHECK-SAME: %[[ARG:.*]]: vector<1x1x1xi8>) -> vector<2x3x4xi8> {
19
19
// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<1x1x1xi8> to vector<2x3x4xi8>
20
20
// CHECK: return %[[RES]] : vector<2x3x4xi8>
21
- func.func @ones_broadcast_transpose_to_broadcast (%arg0 : vector <1 x1 x1 xi8 >) -> vector <2 x3 x4 xi8 > {
21
+ func.func @broadcast_transpose_ones_to_broadcast (%arg0 : vector <1 x1 x1 xi8 >) -> vector <2 x3 x4 xi8 > {
22
22
%0 = vector.broadcast %arg0 : vector <1 x1 x1 xi8 > to vector <3 x4 x2 xi8 >
23
23
%1 = vector.transpose %0 , [2 , 0 , 1 ] : vector <3 x4 x2 xi8 > to vector <2 x3 x4 xi8 >
24
24
return %1 : vector <2 x3 x4 xi8 >
25
25
}
26
26
27
27
// -----
28
28
29
- // CHECK-LABEL: partial_ones_broadcast_transpose_to_broadcast
29
+ // CHECK-LABEL: broadcast_transpose_partial_ones_to_broadcast
30
30
// CHECK-SAME: %[[ARG:.*]]: vector<1xi8>) -> vector<8x1xi8> {
31
31
// CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<1xi8> to vector<8x1xi8>
32
32
// CHECK: return %[[RES]] : vector<8x1xi8>
33
- func.func @partial_ones_broadcast_transpose_to_broadcast (%arg0 : vector <1 xi8 >) -> vector <8 x1 xi8 > {
33
+ func.func @broadcast_transpose_partial_ones_to_broadcast (%arg0 : vector <1 xi8 >) -> vector <8 x1 xi8 > {
34
34
%0 = vector.broadcast %arg0 : vector <1 xi8 > to vector <1 x8 xi8 >
35
35
%1 = vector.transpose %0 , [1 , 0 ] : vector <1 x8 xi8 > to vector <8 x1 xi8 >
36
36
return %1 : vector <8 x1 xi8 >
@@ -50,6 +50,18 @@ func.func @broadcast_transpose_mixed_example(%arg0 : vector<4x1x1x7xi8>) -> vect
50
50
51
51
// -----
52
52
53
+ // CHECK-LABEL: broadcast_transpose_final_group
54
+ // CHECK-SAME: %[[ARG:.*]]: vector<4x7x1x1xi8>) -> vector<4x7x2x3xi8> {
55
+ // CHECK: %[[RES:.*]] = vector.broadcast %[[ARG]] : vector<4x7x1x1xi8> to vector<4x7x2x3xi8>
56
+ // CHECK: return %[[RES]] : vector<4x7x2x3xi8>
57
+ func.func @broadcast_transpose_final_group (%arg0 : vector <4 x7 x1 x1 xi8 >) -> vector <4 x7 x2 x3 xi8 > {
58
+ %0 = vector.broadcast %arg0 : vector <4 x7 x1 x1 xi8 > to vector <4 x7 x3 x2 xi8 >
59
+ %1 = vector.transpose %0 , [0 , 1 , 3 , 2 ] : vector <4 x7 x3 x2 xi8 > to vector <4 x7 x2 x3 xi8 >
60
+ return %1 : vector <4 x7 x2 x3 xi8 >
61
+ }
62
+
63
+ // -----
64
+
53
65
// CHECK-LABEL: negative_broadcast_transpose_square
54
66
// CHECK-SAME: %[[ARG:.*]]:
55
67
// CHECK: %[[BCT:.*]] = vector.broadcast %[[ARG]]
@@ -94,7 +106,7 @@ func.func @negative_broadcast_transpose_102(%arg0 : vector<3x1x3xi8>) -> vector<
94
106
// CHECK: %[[BCT:.*]] = vector.broadcast %[[ARG]]
95
107
// CHECK: %[[TRP:.*]] = vector.transpose %[[BCT]], [0, 2, 1]
96
108
// CHECK: return %[[TRP]] : vector<3x3x3xi8>
97
- func.func @neagtive_broadcast_transpose_021 (%arg0 : vector <3 x1 x3 xi8 >) -> vector <3 x3 x3 xi8 > {
109
+ func.func @negative_broadcast_transpose_021 (%arg0 : vector <3 x1 x3 xi8 >) -> vector <3 x3 x3 xi8 > {
98
110
%0 = vector.broadcast %arg0 : vector <3 x1 x3 xi8 > to vector <3 x3 x3 xi8 >
99
111
%1 = vector.transpose %0 , [0 , 2 , 1 ] : vector <3 x3 x3 xi8 > to vector <3 x3 x3 xi8 >
100
112
return %1 : vector <3 x3 x3 xi8 >
0 commit comments