6
6
// +----------------------------------------
7
7
8
8
// CHECK-LABEL: @broadcast_to_shape_cast
9
- // CHECK-SAME: %[[ARG0:.*]]: vector<4xi8>
10
- // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
11
- // CHECK-NEXT: return %[[SCAST]] : vector<1x1x4xi8>
9
+ // CHECK-SAME: %[[ARG0:.*]]: vector<4xi8>
10
+ // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
11
+ // CHECK-NEXT: return %[[SCAST]] : vector<1x1x4xi8>
12
12
func.func @broadcast_to_shape_cast (%arg0 : vector <4 xi8 >) -> vector <1 x1 x4 xi8 > {
13
13
%0 = vector.broadcast %arg0 : vector <4 xi8 > to vector <1 x1 x4 xi8 >
14
14
return %0 : vector <1 x1 x4 xi8 >
@@ -49,9 +49,9 @@ func.func @negative_broadcast_scalar_to_shape_cast(%arg0 : i8) -> vector<1xi8> {
49
49
// 2 -> 1
50
50
// Because 0 < 1, this permutation is order preserving and effectively a shape_cast.
51
51
// CHECK-LABEL: @transpose_to_shape_cast
52
- // CHECK-SAME: %[[ARG0:.*]]: vector<2x1x2xf32>
53
- // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
54
- // CHECK-NEXT: return %[[SCAST]] : vector<2x2x1xf32>
52
+ // CHECK-SAME: %[[ARG0:.*]]: vector<2x1x2xf32>
53
+ // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
54
+ // CHECK-NEXT: return %[[SCAST]] : vector<2x2x1xf32>
55
55
func.func @transpose_to_shape_cast (%arg0 : vector <2 x1 x2 xf32 >) -> vector <2 x2 x1 xf32 > {
56
56
%0 = vector.transpose %arg0 , [0 , 2 , 1 ] : vector <2 x1 x2 xf32 > to vector <2 x2 x1 xf32 >
57
57
return %0 : vector <2 x2 x1 xf32 >
@@ -64,10 +64,10 @@ func.func @transpose_to_shape_cast(%arg0 : vector<2x1x2xf32>) -> vector<2x2x1xf3
64
64
// 2 -> 4
65
65
// Because 0 < 4, this permutation is order preserving and effectively a shape_cast.
66
66
// CHECK-LABEL: @shape_cast_of_transpose
67
- // CHECK-SAME: %[[ARG:.*]]: vector<1x4x4x1x1xi8>)
68
- // CHECK: %[[SHAPE_CAST:.*]] = vector.shape_cast %[[ARG]] :
69
- // CHECK-SAME: vector<1x4x4x1x1xi8> to vector<4x1x1x1x4xi8>
70
- // CHECK: return %[[SHAPE_CAST]]
67
+ // CHECK-SAME: %[[ARG:.*]]: vector<1x4x4x1x1xi8>)
68
+ // CHECK: %[[SHAPE_CAST:.*]] = vector.shape_cast %[[ARG]] :
69
+ // CHECK-SAME: vector<1x4x4x1x1xi8> to vector<4x1x1x1x4xi8>
70
+ // CHECK: return %[[SHAPE_CAST]]
71
71
func.func @shape_cast_of_transpose (%arg : vector <1 x4 x4 x1 x1 xi8 >) -> vector <4 x1 x1 x1 x4 xi8 > {
72
72
%0 = vector.transpose %arg , [1 , 0 , 3 , 4 , 2 ] : vector <1 x4 x4 x1 x1 xi8 > to vector <4 x1 x1 x1 x4 xi8 >
73
73
return %0 : vector <4 x1 x1 x1 x4 xi8 >
@@ -101,8 +101,8 @@ func.func @negative_transpose_to_shape_cast(%arg : vector<1x4x4x1xi8>) -> vector
101
101
// -----
102
102
103
103
// CHECK-LABEL: @shape_cast_of_transpose_scalable
104
- // CHECK-NEXT: vector.shape_cast
105
- // CHECK-NEXT: return
104
+ // CHECK-NEXT: vector.shape_cast
105
+ // CHECK-NEXT: return
106
106
func.func @shape_cast_of_transpose_scalable (%arg : vector <[4 ]x1 xi8 >) -> vector <[4 ]xi8 > {
107
107
%0 = vector.transpose %arg , [1 , 0 ] : vector <[4 ]x1 xi8 > to vector <1 x[4 ]xi8 >
108
108
%1 = vector.shape_cast %0 : vector <1 x[4 ]xi8 > to vector <[4 ]xi8 >
@@ -125,9 +125,9 @@ func.func @transpose_of_shape_cast_scalable(%arg : vector<[4]xi8>) -> vector<[4]
125
125
// A test where a transpose cannot be transformed to a shape_cast because it is not order
126
126
// preserving
127
127
// CHECK-LABEL: @negative_transpose_to_shape_cast
128
- // CHECK-SAME: %[[ARG0:.*]]: vector<2x1x2xf32>
129
- // CHECK-NEXT: %[[TRANSPOSE:.*]] = vector.transpose %[[ARG0]], [2, 0, 1]
130
- // CHECK-NEXT: return %[[TRANSPOSE]] : vector<2x2x1xf32>
128
+ // CHECK-SAME: %[[ARG0:.*]]: vector<2x1x2xf32>
129
+ // CHECK-NEXT: %[[TRANSPOSE:.*]] = vector.transpose %[[ARG0]], [2, 0, 1]
130
+ // CHECK-NEXT: return %[[TRANSPOSE]] : vector<2x2x1xf32>
131
131
func.func @negative_transpose_to_shape_cast (%arg0 : vector <2 x1 x2 xf32 >) -> vector <2 x2 x1 xf32 > {
132
132
%0 = vector.transpose %arg0 , [2 , 0 , 1 ] : vector <2 x1 x2 xf32 > to vector <2 x2 x1 xf32 >
133
133
return %0 : vector <2 x2 x1 xf32 >
@@ -140,9 +140,9 @@ func.func @negative_transpose_to_shape_cast(%arg0 : vector<2x1x2xf32>) -> vector
140
140
// +----------------------------------------
141
141
142
142
// CHECK-LABEL: @extract_to_shape_cast
143
- // CHECK-SAME: %[[ARG0:.*]]: vector<1x4xf32>
144
- // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
145
- // CHECK-NEXT: return %[[SCAST]] : vector<4xf32>
143
+ // CHECK-SAME: %[[ARG0:.*]]: vector<1x4xf32>
144
+ // CHECK-NEXT: %[[SCAST:.*]] = vector.shape_cast %[[ARG0]]
145
+ // CHECK-NEXT: return %[[SCAST]] : vector<4xf32>
146
146
func.func @extract_to_shape_cast (%arg0 : vector <1 x4 xf32 >) -> vector <4 xf32 > {
147
147
%0 = vector.extract %arg0 [0 ] : vector <4 xf32 > from vector <1 x4 xf32 >
148
148
return %0 : vector <4 xf32 >
0 commit comments