@@ -74,23 +74,23 @@ func.func @i8_1d_to_2d_last_dim_scalable(%arg0: vector<[32]xi8>) -> vector<4x[8]
7474
7575// CHECK-LABEL: f32_permute_leading_non_scalable_dims
7676// CHECK-SAME: %[[arg0:.*]]: vector<2x3x[4]xf32>
77- func.func @f32_permute_leading_non_scalable_dims (%arg0: vector <2 x3 x[4 ]xf32 >) -> vector <3 x 2 x [4 ]xf32 > {
78- // CHECK-NEXT: %[[ub:.*]] = ub.poison : vector<3x2x [4]xf32>
77+ func.func @f32_permute_leading_non_scalable_dims (%arg0: vector <2 x3 x[4 ]xf32 >) -> vector <1 x 6 x [4 ]xf32 > {
78+ // CHECK-NEXT: %[[ub:.*]] = ub.poison : vector<1x6x [4]xf32>
7979 // CHECK-NEXT: %[[subvec0:.*]] = vector.extract %[[arg0]][0, 0] : vector<[4]xf32> from vector<2x3x[4]xf32>
80- // CHECK-NEXT: %[[res0:.*]] = vector.insert %[[subvec0]], %[[ub]] [0, 0] : vector<[4]xf32> into vector<3x2x [4]xf32>
80+ // CHECK-NEXT: %[[res0:.*]] = vector.insert %[[subvec0]], %[[ub]] [0, 0] : vector<[4]xf32> into vector<1x6x [4]xf32>
8181 // CHECK-NEXT: %[[subvec1:.*]] = vector.extract %[[arg0]][0, 1] : vector<[4]xf32> from vector<2x3x[4]xf32>
82- // CHECK-NEXT: %[[res1:.*]] = vector.insert %[[subvec1]], %[[res0]] [0, 1] : vector<[4]xf32> into vector<3x2x [4]xf32>
82+ // CHECK-NEXT: %[[res1:.*]] = vector.insert %[[subvec1]], %[[res0]] [0, 1] : vector<[4]xf32> into vector<1x6x [4]xf32>
8383 // CHECK-NEXT: %[[subvec2:.*]] = vector.extract %[[arg0]][0, 2] : vector<[4]xf32> from vector<2x3x[4]xf32>
84- // CHECK-NEXT: %[[res2:.*]] = vector.insert %[[subvec2]], %[[res1]] [1, 0 ] : vector<[4]xf32> into vector<3x2x [4]xf32>
84+ // CHECK-NEXT: %[[res2:.*]] = vector.insert %[[subvec2]], %[[res1]] [0, 2 ] : vector<[4]xf32> into vector<1x6x [4]xf32>
8585 // CHECK-NEXT: %[[subvec3:.*]] = vector.extract %[[arg0]][1, 0] : vector<[4]xf32> from vector<2x3x[4]xf32>
86- // CHECK-NEXT: %[[res3:.*]] = vector.insert %[[subvec3]], %[[res2]] [1, 1 ] : vector<[4]xf32> into vector<3x2x [4]xf32>
86+ // CHECK-NEXT: %[[res3:.*]] = vector.insert %[[subvec3]], %[[res2]] [0, 3 ] : vector<[4]xf32> into vector<1x6x [4]xf32>
8787 // CHECK-NEXT: %[[subvec4:.*]] = vector.extract %[[arg0]][1, 1] : vector<[4]xf32> from vector<2x3x[4]xf32>
88- // CHECK-NEXT: %[[res4:.*]] = vector.insert %[[subvec4]], %[[res3]] [2, 0 ] : vector<[4]xf32> into vector<3x2x [4]xf32>
88+ // CHECK-NEXT: %[[res4:.*]] = vector.insert %[[subvec4]], %[[res3]] [0, 4 ] : vector<[4]xf32> into vector<1x6x [4]xf32>
8989 // CHECK-NEXT: %[[subvec5:.*]] = vector.extract %[[arg0]][1, 2] : vector<[4]xf32> from vector<2x3x[4]xf32>
90- // CHECK-NEXT: %[[res5:.*]] = vector.insert %[[subvec5]], %[[res4]] [2, 1 ] : vector<[4]xf32> into vector<3x2x [4]xf32>
91- %res = vector.shape_cast %arg0: vector <2 x3 x[4 ]xf32 > to vector <3 x 2 x [4 ]xf32 >
92- // CHECK-NEXT: return %[[res5]] : vector<3x2x [4]xf32>
93- return %res : vector <3 x 2 x [4 ]xf32 >
90+ // CHECK-NEXT: %[[res5:.*]] = vector.insert %[[subvec5]], %[[res4]] [0, 5 ] : vector<[4]xf32> into vector<1x6x [4]xf32>
91+ %res = vector.shape_cast %arg0: vector <2 x3 x[4 ]xf32 > to vector <1 x 6 x [4 ]xf32 >
92+ // CHECK-NEXT: return %[[res5]] : vector<1x6x [4]xf32>
93+ return %res : vector <1 x 6 x [4 ]xf32 >
9494}
9595
9696// -----
@@ -117,48 +117,48 @@ func.func @f64_flatten_leading_non_scalable_dims(%arg0: vector<2x2x[2]xf64>) ->
117117
118118// CHECK-LABEL: f32_reduce_trailing_scalable_dim
119119// CHECK-SAME: %[[arg0:.*]]: vector<3x[4]xf32>
120- func.func @f32_reduce_trailing_scalable_dim (%arg0: vector <3 x[4 ]xf32 >) -> vector <6 x [2 ]xf32 >
120+ func.func @f32_reduce_trailing_scalable_dim (%arg0: vector <3 x[4 ]xf32 >) -> vector <3 x 2 x [2 ]xf32 >
121121{
122- // CHECK-NEXT: %[[ub:.*]] = ub.poison : vector<6x [2]xf32>
122+ // CHECK-NEXT: %[[ub:.*]] = ub.poison : vector<3x2x [2]xf32>
123123 // CHECK-NEXT: %[[srcvec0:.*]] = vector.extract %[[arg0]][0] : vector<[4]xf32> from vector<3x[4]xf32>
124124 // CHECK-NEXT: %[[subvec0:.*]] = vector.scalable.extract %[[srcvec0]][0] : vector<[2]xf32> from vector<[4]xf32>
125- // CHECK-NEXT: %[[res0:.*]] = vector.insert %[[subvec0]], %[[ub]] [0] : vector<[2]xf32> into vector<6x [2]xf32>
125+ // CHECK-NEXT: %[[res0:.*]] = vector.insert %[[subvec0]], %[[ub]] [0, 0 ] : vector<[2]xf32> into vector<3x2x [2]xf32>
126126 // CHECK-NEXT: %[[subvec1:.*]] = vector.scalable.extract %[[srcvec0]][2] : vector<[2]xf32> from vector<[4]xf32>
127- // CHECK-NEXT: %[[res1:.*]] = vector.insert %[[subvec1]], %[[res0]] [1] : vector<[2]xf32> into vector<6x [2]xf32>
127+ // CHECK-NEXT: %[[res1:.*]] = vector.insert %[[subvec1]], %[[res0]] [0, 1] : vector<[2]xf32> into vector<3x2x [2]xf32>
128128 // CHECK-NEXT: %[[srcvec1:.*]] = vector.extract %[[arg0]][1] : vector<[4]xf32> from vector<3x[4]xf32>
129129 // CHECK-NEXT: %[[subvec2:.*]] = vector.scalable.extract %[[srcvec1]][0] : vector<[2]xf32> from vector<[4]xf32>
130- // CHECK-NEXT: %[[res2:.*]] = vector.insert %[[subvec2]], %[[res1]] [2 ] : vector<[2]xf32> into vector<6x [2]xf32>
130+ // CHECK-NEXT: %[[res2:.*]] = vector.insert %[[subvec2]], %[[res1]] [1, 0 ] : vector<[2]xf32> into vector<3x2x [2]xf32>
131131 // CHECK-NEXT: %[[subvec3:.*]] = vector.scalable.extract %[[srcvec1]][2] : vector<[2]xf32> from vector<[4]xf32>
132- // CHECK-NEXT: %[[res3:.*]] = vector.insert %[[subvec3]], %[[res2]] [3 ] : vector<[2]xf32> into vector<6x [2]xf32>
132+ // CHECK-NEXT: %[[res3:.*]] = vector.insert %[[subvec3]], %[[res2]] [1, 1 ] : vector<[2]xf32> into vector<3x2x [2]xf32>
133133 // CHECK-NEXT: %[[srcvec2:.*]] = vector.extract %[[arg0]][2] : vector<[4]xf32> from vector<3x[4]xf32>
134134 // CHECK-NEXT: %[[subvec4:.*]] = vector.scalable.extract %[[srcvec2]][0] : vector<[2]xf32> from vector<[4]xf32>
135- // CHECK-NEXT: %[[res4:.*]] = vector.insert %[[subvec4]], %[[res3]] [4 ] : vector<[2]xf32> into vector<6x [2]xf32>
135+ // CHECK-NEXT: %[[res4:.*]] = vector.insert %[[subvec4]], %[[res3]] [2, 0 ] : vector<[2]xf32> into vector<3x2x [2]xf32>
136136 // CHECK-NEXT: %[[subvec5:.*]] = vector.scalable.extract %[[srcvec2]][2] : vector<[2]xf32> from vector<[4]xf32>
137- // CHECK-NEXT: %[[res5:.*]] = vector.insert %[[subvec5]], %[[res4]] [5 ] : vector<[2]xf32> into vector<6x [2]xf32>
138- %res = vector.shape_cast %arg0: vector <3 x[4 ]xf32 > to vector <6 x [2 ]xf32 >
139- // CHECK-NEXT: return %[[res5]] : vector<6x [2]xf32>
140- return %res: vector <6 x [2 ]xf32 >
137+ // CHECK-NEXT: %[[res5:.*]] = vector.insert %[[subvec5]], %[[res4]] [2, 1 ] : vector<[2]xf32> into vector<3x2x [2]xf32>
138+ %res = vector.shape_cast %arg0: vector <3 x[4 ]xf32 > to vector <3 x 2 x [2 ]xf32 >
139+ // CHECK-NEXT: return %[[res5]] : vector<3x2x [2]xf32>
140+ return %res: vector <3 x 2 x [2 ]xf32 >
141141}
142142
143143// -----
144144
145145// CHECK-LABEL: f32_increase_trailing_scalable_dim
146- // CHECK-SAME: %[[arg0:.*]]: vector<4x [2]xf32>
147- func.func @f32_increase_trailing_scalable_dim (%arg0: vector <4 x [2 ]xf32 >) -> vector <2 x[4 ]xf32 >
146+ // CHECK-SAME: %[[arg0:.*]]: vector<2x2x [2]xf32>
147+ func.func @f32_increase_trailing_scalable_dim (%arg0: vector <2 x 2 x [2 ]xf32 >) -> vector <2 x[4 ]xf32 >
148148{
149149 // CHECK-DAG: %[[ub0:.*]] = ub.poison : vector<2x[4]xf32>
150150 // CHECK-DAG: %[[ub1:.*]] = ub.poison : vector<[4]xf32>
151- // CHECK-NEXT: %[[subvec0:.*]] = vector.extract %[[arg0]][0] : vector<[2]xf32> from vector<4x [2]xf32>
151+ // CHECK-NEXT: %[[subvec0:.*]] = vector.extract %[[arg0]][0, 0 ] : vector<[2]xf32> from vector<2x2x [2]xf32>
152152 // CHECK-NEXT: %[[resvec1:.*]] = vector.scalable.insert %[[subvec0]], %[[ub1]][0] : vector<[2]xf32> into vector<[4]xf32>
153- // CHECK-NEXT: %[[subvec1:.*]] = vector.extract %[[arg0]][1] : vector<[2]xf32> from vector<4x [2]xf32>
153+ // CHECK-NEXT: %[[subvec1:.*]] = vector.extract %[[arg0]][0, 1] : vector<[2]xf32> from vector<2x2x [2]xf32>
154154 // CHECK-NEXT: %[[resvec2:.*]] = vector.scalable.insert %[[subvec1]], %[[resvec1]][2] : vector<[2]xf32> into vector<[4]xf32>
155155 // CHECK-NEXT: %[[res0:.*]] = vector.insert %[[resvec2]], %[[ub0]] [0] : vector<[4]xf32> into vector<2x[4]xf32>
156- // CHECK-NEXT: %[[subvec3:.*]] = vector.extract %[[arg0]][2 ] : vector<[2]xf32> from vector<4x [2]xf32>
156+ // CHECK-NEXT: %[[subvec3:.*]] = vector.extract %[[arg0]][1, 0 ] : vector<[2]xf32> from vector<2x2x [2]xf32>
157157 // CHECK-NEXT: %[[resvec4:.*]] = vector.scalable.insert %[[subvec3]], %[[ub1]][0] : vector<[2]xf32> into vector<[4]xf32>
158- // CHECK-NEXT: %[[subvec4:.*]] = vector.extract %[[arg0]][3 ] : vector<[2]xf32> from vector<4x [2]xf32>
158+ // CHECK-NEXT: %[[subvec4:.*]] = vector.extract %[[arg0]][1, 1 ] : vector<[2]xf32> from vector<2x2x [2]xf32>
159159 // CHECK-NEXT: %[[resvec5:.*]] = vector.scalable.insert %[[subvec4]], %[[resvec4]][2] : vector<[2]xf32> into vector<[4]xf32>
160160 // CHECK-NEXT: %[[res1:.*]] = vector.insert %[[resvec5]], %[[res0]] [1] : vector<[4]xf32> into vector<2x[4]xf32>
161- %res = vector.shape_cast %arg0: vector <4 x [2 ]xf32 > to vector <2 x[4 ]xf32 >
161+ %res = vector.shape_cast %arg0: vector <2 x 2 x [2 ]xf32 > to vector <2 x[4 ]xf32 >
162162 // CHECK-NEXT: return %[[res1]] : vector<2x[4]xf32>
163163 return %res: vector <2 x[4 ]xf32 >
164164}
0 commit comments