22
33// CHECK-LABEL: @vector_interleave_2d
44// CHECK-SAME: %[[LHS:.*]]: vector<2x3xi8>, %[[RHS:.*]]: vector<2x3xi8>)
5- func.func @vector_interleave_2d (%a: vector <2 x3 xi8 >, %b: vector <2 x3 xi8 >) -> vector <2 x6 xi8 >
6- {
5+ func.func @vector_interleave_2d (%a: vector <2 x3 xi8 >, %b: vector <2 x3 xi8 >) -> vector <2 x6 xi8 > {
76 // CHECK-DAG: %[[CST:.*]] = arith.constant dense<0>
87 // CHECK-DAG: %[[LHS_0:.*]] = vector.extract %[[LHS]][0]
98 // CHECK-DAG: %[[RHS_0:.*]] = vector.extract %[[RHS]][0]
@@ -14,14 +13,13 @@ func.func @vector_interleave_2d(%a: vector<2x3xi8>, %b: vector<2x3xi8>) -> vecto
1413 // CHECK-DAG: %[[RES_0:.*]] = vector.insert %[[ZIP_0]], %[[CST]] [0]
1514 // CHECK-DAG: %[[RES_1:.*]] = vector.insert %[[ZIP_1]], %[[RES_0]] [1]
1615 // CHECK-NEXT: return %[[RES_1]] : vector<2x6xi8>
17- %0 = vector.interleave %a , %b : vector <2 x3 xi8 >
16+ %0 = vector.interleave %a , %b : vector <2 x3 xi8 > -> vector < 2 x 6 x i8 >
1817 return %0 : vector <2 x6 xi8 >
1918}
2019
2120// CHECK-LABEL: @vector_interleave_2d_scalable
2221// CHECK-SAME: %[[LHS:.*]]: vector<2x[8]xi16>, %[[RHS:.*]]: vector<2x[8]xi16>)
23- func.func @vector_interleave_2d_scalable (%a: vector <2 x[8 ]xi16 >, %b: vector <2 x[8 ]xi16 >) -> vector <2 x[16 ]xi16 >
24- {
22+ func.func @vector_interleave_2d_scalable (%a: vector <2 x[8 ]xi16 >, %b: vector <2 x[8 ]xi16 >) -> vector <2 x[16 ]xi16 > {
2523 // CHECK-DAG: %[[CST:.*]] = arith.constant dense<0>
2624 // CHECK-DAG: %[[LHS_0:.*]] = vector.extract %[[LHS]][0]
2725 // CHECK-DAG: %[[RHS_0:.*]] = vector.extract %[[RHS]][0]
@@ -32,7 +30,7 @@ func.func @vector_interleave_2d_scalable(%a: vector<2x[8]xi16>, %b: vector<2x[8]
3230 // CHECK-DAG: %[[RES_0:.*]] = vector.insert %[[ZIP_0]], %[[CST]] [0]
3331 // CHECK-DAG: %[[RES_1:.*]] = vector.insert %[[ZIP_1]], %[[RES_0]] [1]
3432 // CHECK-NEXT: return %[[RES_1]] : vector<2x[16]xi16>
35- %0 = vector.interleave %a , %b : vector <2 x[8 ]xi16 >
33+ %0 = vector.interleave %a , %b : vector <2 x[8 ]xi16 > -> vector < 2 x[ 16 ]x i16 >
3634 return %0 : vector <2 x[16 ]xi16 >
3735}
3836
@@ -44,17 +42,17 @@ func.func @vector_interleave_4d(%a: vector<1x2x3x4xi64>, %b: vector<1x2x3x4xi64>
4442 // CHECK: %[[RHS_0:.*]] = vector.extract %[[RHS]][0, 0, 0] : vector<4xi64> from vector<1x2x3x4xi64>
4543 // CHECK: %[[ZIP_0:.*]] = vector.interleave %[[LHS_0]], %[[RHS_0]] : vector<4xi64>
4644 // CHECK: %[[RES_0:.*]] = vector.insert %[[ZIP_0]], %{{.*}} [0, 0, 0] : vector<8xi64> into vector<1x2x3x8xi64>
47- // CHECK-COUNT-5: vector.interleave %{{.*}}, %{{.*}} : vector<4xi64>
48- %0 = vector.interleave %a , %b : vector <1 x2 x3 x4 xi64 >
45+ // CHECK-COUNT-5: vector.interleave %{{.*}}, %{{.*}} : vector<4xi64> -> vector<8xi64>
46+ %0 = vector.interleave %a , %b : vector <1 x2 x3 x4 xi64 > -> vector < 1 x 2 x 3 x 8 x i64 >
4947 return %0 : vector <1 x2 x3 x8 xi64 >
5048}
5149
5250// CHECK-LABEL: @vector_interleave_nd_with_scalable_dim
53- func.func @vector_interleave_nd_with_scalable_dim (%a: vector < 1 x 3 x[ 2 ]x 2 x 3 x 4 x f16 >, %b: vector < 1 x 3 x[ 2 ]x 2 x 3 x 4 x f16 >) -> vector < 1 x 3 x[ 2 ]x 2 x 3 x 8 x f16 >
54- {
51+ func.func @vector_interleave_nd_with_scalable_dim (
52+ %a: vector < 1 x 3 x[ 2 ]x 2 x 3 x 4 x f16 >, %b: vector < 1 x 3 x[ 2 ]x 2 x 3 x 4 x f16 >) -> vector < 1 x 3 x[ 2 ]x 2 x 3 x 8 x f16 > {
5553 // The scalable dim blocks unrolling so only the first two dims are unrolled.
5654 // CHECK-COUNT-3: vector.interleave %{{.*}}, %{{.*}} : vector<[2]x2x3x4xf16>
57- %0 = vector.interleave %a , %b : vector <1 x3 x[2 ]x2 x3 x4 xf16 >
55+ %0 = vector.interleave %a , %b : vector <1 x3 x[2 ]x2 x3 x4 xf16 > -> vector < 1 x 3 x[ 2 ]x 2 x 3 x 8 x f16 >
5856 return %0 : vector <1 x3 x[2 ]x2 x3 x8 xf16 >
5957}
6058
0 commit comments