@@ -38,7 +38,39 @@ func.func @vector_bitcast_4d_with_scalable_dim(%arg0: vector<1x2x[3]x4xi64>) ->
38
38
return %0 : vector <1 x2 x[3 ]x8 xi32 >
39
39
}
40
40
// CHECK-LABEL: func.func @vector_bitcast_4d_with_scalable_dim
41
- // CHECK: vector.bitcast {{.+}} : vector<1x2x[3]x4xi64> to vector<1x2x[3]x8xi32>
41
+ // CHECK-SAME: %[[IN:[a-zA-Z0-9]+]]
42
+ // CHECK: %[[INIT:.+]] = arith.constant dense<0> : vector<1x2x[3]x8xi32>
43
+ // CHECK: %[[V1:.+]] = vector.extract %[[IN]][0, 0] : vector<[3]x4xi64> from vector<1x2x[3]x4xi64>
44
+ // CHECK: %[[B1:.+]] = vector.bitcast %[[V1]] : vector<[3]x4xi64> to vector<[3]x8xi32>
45
+ // CHECK: %[[R1:.+]] = vector.insert %[[B1]], %[[INIT]] [0, 0] : vector<[3]x8xi32> into vector<1x2x[3]x8xi32>
46
+ // CHECK: %[[V2:.+]] = vector.extract %[[IN]][0, 1] : vector<[3]x4xi64> from vector<1x2x[3]x4xi64>
47
+ // CHECK: %[[B2:.+]] = vector.bitcast %[[V2]] : vector<[3]x4xi64> to vector<[3]x8xi32>
48
+ // CHECK: %[[R2:.+]] = vector.insert %[[B2]], %[[R1]] [0, 1] : vector<[3]x8xi32> into vector<1x2x[3]x8xi32>
49
+ // CHECK: return %[[R2]] : vector<1x2x[3]x8xi32>
50
+
51
+ func.func @vector_bitcast_2d_trailing_scalable_dim (%arg0: vector <2 x[2 ]xi64 >) -> vector <2 x[4 ]xi32 > {
52
+ %0 = vector.bitcast %arg0 : vector <2 x[2 ]xi64 > to vector <2 x[4 ]xi32 >
53
+ return %0 : vector <2 x[4 ]xi32 >
54
+ }
55
+ // CHECK-LABEL: func.func @vector_bitcast_2d_trailing_scalable_dim
56
+ // CHECK-SAME: %[[IN:[a-zA-Z0-9]+]]
57
+ // CHECK: %[[INIT:.+]] = arith.constant dense<0> : vector<2x[4]xi32>
58
+ // CHECK: %[[V1:.+]] = vector.extract %[[IN]][0] : vector<[2]xi64> from vector<2x[2]xi64>
59
+ // CHECK: %[[B1:.+]] = vector.bitcast %[[V1]] : vector<[2]xi64> to vector<[4]xi32>
60
+ // CHECK: %[[R1:.+]] = vector.insert %[[B1]], %[[INIT]] [0] : vector<[4]xi32> into vector<2x[4]xi32>
61
+ // CHECK: %[[V2:.+]] = vector.extract %[[IN]][1] : vector<[2]xi64> from vector<2x[2]xi64>
62
+ // CHECK: %[[B2:.+]] = vector.bitcast %[[V2]] : vector<[2]xi64> to vector<[4]xi32>
63
+ // CHECK: %[[R2:.+]] = vector.insert %[[B2]], %[[R1]] [1] : vector<[4]xi32> into vector<2x[4]xi32>
64
+ // CHECK: return %[[R2]] : vector<2x[4]xi32>
65
+
66
+ func.func @negative_vector_bitcast_2d_leading_scalable_dim (%arg0: vector <[2 ]x2 xi64 >) -> vector <[2 ]x4 xi32 >
67
+ {
68
+ %0 = vector.bitcast %arg0 : vector <[2 ]x2 xi64 > to vector <[2 ]x4 xi32 >
69
+ return %0 : vector <[2 ]x4 xi32 >
70
+ }
71
+ // CHECK-LABEL: func.func @negative_vector_bitcast_2d_leading_scalable_dim
72
+ // CHECK-NOT: vector.extract
73
+ // CHECK-NOT: vector.insert
42
74
43
75
module attributes {transform.with_named_sequence } {
44
76
transform.named_sequence @__transform_main (%module_op: !transform.any_op {transform.readonly }) {
0 commit comments