@@ -1142,6 +1142,29 @@ func.func @extract_strided_slice3(%arg0: vector<4x8xf32>) -> vector<2x2xf32> {
1142
1142
1143
1143
// -----
1144
1144
1145
+ func.func @extract_strided_slice_scalable (%arg0 : vector <1 x4 x[4 ]xi32 >) -> vector <1 x1 x[4 ]xi32 > {
1146
+ %0 = vector.extract_strided_slice %arg0 {offsets = [0 , 3 , 0 ], sizes = [1 , 1 , 4 ], strides = [1 , 1 , 1 ]} : vector <1 x4 x[4 ]xi32 > to vector <1 x1 x[4 ]xi32 >
1147
+ return %0 : vector <1 x1 x[4 ]xi32 >
1148
+ }
1149
+
1150
+ // CHECK-LABEL: func.func @extract_strided_slice_scalable(
1151
+ // CHECK-SAME: %[[VAL_0:.*]]: vector<1x4x[4]xi32>) -> vector<1x1x[4]xi32> {
1152
+ // CHECK: %[[VAL_1:.*]] = builtin.unrealized_conversion_cast %[[VAL_0]] : vector<1x4x[4]xi32> to !llvm.array<1 x array<4 x vector<[4]xi32>>>
1153
+ // CHECK: %[[VAL_2:.*]] = arith.constant 0 : i32
1154
+ // CHECK: %[[VAL_3:.*]] = arith.constant dense<0> : vector<1x1x[4]xi32>
1155
+ // CHECK: %[[VAL_4:.*]] = builtin.unrealized_conversion_cast %[[VAL_3]] : vector<1x1x[4]xi32> to !llvm.array<1 x array<1 x vector<[4]xi32>>>
1156
+ // CHECK: %[[VAL_5:.*]] = llvm.extractvalue %[[VAL_1]][0] : !llvm.array<1 x array<4 x vector<[4]xi32>>>
1157
+ // CHECK: %[[VAL_6:.*]] = arith.constant 0 : i32
1158
+ // CHECK: %[[VAL_7:.*]] = arith.constant dense<0> : vector<1x[4]xi32>
1159
+ // CHECK: %[[VAL_8:.*]] = builtin.unrealized_conversion_cast %[[VAL_7]] : vector<1x[4]xi32> to !llvm.array<1 x vector<[4]xi32>>
1160
+ // CHECK: %[[VAL_9:.*]] = llvm.extractvalue %[[VAL_1]][0, 3] : !llvm.array<1 x array<4 x vector<[4]xi32>>>
1161
+ // CHECK: %[[VAL_10:.*]] = llvm.insertvalue %[[VAL_9]], %[[VAL_8]][0] : !llvm.array<1 x vector<[4]xi32>>
1162
+ // CHECK: %[[VAL_11:.*]] = llvm.insertvalue %[[VAL_10]], %[[VAL_4]][0] : !llvm.array<1 x array<1 x vector<[4]xi32>>>
1163
+ // CHECK: %[[VAL_12:.*]] = builtin.unrealized_conversion_cast %[[VAL_11]] : !llvm.array<1 x array<1 x vector<[4]xi32>>> to vector<1x1x[4]xi32>
1164
+ // CHECK: return %[[VAL_12]] : vector<1x1x[4]xi32>
1165
+
1166
+ // -----
1167
+
1145
1168
func.func @insert_strided_slice1 (%b: vector <4 x4 xf32 >, %c: vector <4 x4 x4 xf32 >) -> vector <4 x4 x4 xf32 > {
1146
1169
%0 = vector.insert_strided_slice %b , %c {offsets = [2 , 0 , 0 ], strides = [1 , 1 ]} : vector <4 x4 xf32 > into vector <4 x4 x4 xf32 >
1147
1170
return %0 : vector <4 x4 x4 xf32 >
@@ -1207,6 +1230,26 @@ func.func @insert_strided_slice3(%arg0: vector<2x4xf32>, %arg1: vector<16x4x8xf3
1207
1230
1208
1231
// -----
1209
1232
1233
+ func.func @insert_strided_slice_scalable (%arg0 : vector <1 x1 x[4 ]xi32 >, %arg1: vector <1 x4 x[4 ]xi32 >) -> vector <1 x4 x[4 ]xi32 > {
1234
+ %0 = vector.insert_strided_slice %arg0 , %arg1 {offsets = [0 , 3 , 0 ], strides = [1 , 1 , 1 ]} : vector <1 x1 x[4 ]xi32 > into vector <1 x4 x[4 ]xi32 >
1235
+ return %0 : vector <1 x4 x[4 ]xi32 >
1236
+ }
1237
+ // CHECK-LABEL: func.func @insert_strided_slice_scalable(
1238
+ // CHECK-SAME: %[[VAL_0:.*]]: vector<1x1x[4]xi32>,
1239
+ // CHECK-SAME: %[[VAL_1:.*]]: vector<1x4x[4]xi32>) -> vector<1x4x[4]xi32> {
1240
+ // CHECK: %[[VAL_2:.*]] = builtin.unrealized_conversion_cast %[[VAL_0]] : vector<1x1x[4]xi32> to !llvm.array<1 x array<1 x vector<[4]xi32>>>
1241
+ // CHECK: %[[VAL_3:.*]] = builtin.unrealized_conversion_cast %[[VAL_1]] : vector<1x4x[4]xi32> to !llvm.array<1 x array<4 x vector<[4]xi32>>>
1242
+ // CHECK: %[[VAL_4:.*]] = llvm.extractvalue %[[VAL_2]][0] : !llvm.array<1 x array<1 x vector<[4]xi32>>>
1243
+ // CHECK: %[[VAL_5:.*]] = llvm.extractvalue %[[VAL_3]][0] : !llvm.array<1 x array<4 x vector<[4]xi32>>>
1244
+ // CHECK: %[[VAL_6:.*]] = llvm.extractvalue %[[VAL_2]][0, 0] : !llvm.array<1 x array<1 x vector<[4]xi32>>>
1245
+ // CHECK: %[[VAL_7:.*]] = llvm.extractvalue %[[VAL_3]][0, 3] : !llvm.array<1 x array<4 x vector<[4]xi32>>>
1246
+ // CHECK: %[[VAL_8:.*]] = llvm.insertvalue %[[VAL_6]], %[[VAL_5]][3] : !llvm.array<4 x vector<[4]xi32>>
1247
+ // CHECK: %[[VAL_9:.*]] = llvm.insertvalue %[[VAL_8]], %[[VAL_3]][0] : !llvm.array<1 x array<4 x vector<[4]xi32>>>
1248
+ // CHECK: %[[VAL_10:.*]] = builtin.unrealized_conversion_cast %[[VAL_9]] : !llvm.array<1 x array<4 x vector<[4]xi32>>> to vector<1x4x[4]xi32>
1249
+ // CHECK: return %[[VAL_10]] : vector<1x4x[4]xi32>
1250
+
1251
+ // -----
1252
+
1210
1253
func.func @vector_fma (%a: vector <8 xf32 >, %b: vector <2 x4 xf32 >, %c: vector <1 x1 x1 xf32 >, %d: vector <f32 >) -> (vector <8 xf32 >, vector <2 x4 xf32 >, vector <1 x1 x1 xf32 >, vector <f32 >) {
1211
1254
// CHECK-LABEL: @vector_fma
1212
1255
// CHECK-SAME: %[[A:.*]]: vector<8xf32>
0 commit comments