@@ -192,7 +192,7 @@ func.func @subview_const_stride(%0 : memref<64x4xf32, strided<[4, 1], offset: 0>
192
192
193
193
// CHECK-LABEL: func @subview_const_stride_and_offset(
194
194
// CHECK-SAME: %[[MEM:.*]]: memref<{{.*}}>
195
- func.func @subview_const_stride_and_offset (%0 : memref <64 x 4 x f32 , strided <[4 , 1 ], offset : 0 >>) -> memref <62 x3 xf32 , strided <[4 , 1 ], offset : 1 >> {
195
+ func.func @subview_const_stride_and_offset (%0 : memref <64 x 8 x f32 , strided <[8 , 1 ], offset : 0 >>) -> memref <62 x3 xf32 , strided <[8 , 1 ], offset : 2 >> {
196
196
// The last "insertvalue" that populates the memref descriptor from the function arguments.
197
197
// CHECK: %[[MEMREF:.*]] = builtin.unrealized_conversion_cast %[[MEM]]
198
198
@@ -201,20 +201,21 @@ func.func @subview_const_stride_and_offset(%0 : memref<64x4xf32, strided<[4, 1],
201
201
// CHECK: %[[DESC:.*]] = llvm.mlir.poison : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
202
202
// CHECK: %[[DESC0:.*]] = llvm.insertvalue %[[BASE]], %[[DESC]][0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
203
203
// CHECK: %[[DESC1:.*]] = llvm.insertvalue %[[BASE_ALIGNED]], %[[DESC0]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
204
- // CHECK: %[[C1 :.*]] = llvm.mlir.constant(1 : index) : i64
205
- // CHECK: %[[DESC2:.*]] = llvm.insertvalue %[[C1 ]], %[[DESC1]][2] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
204
+ // CHECK: %[[CST_OFF :.*]] = llvm.mlir.constant(2 : index) : i64
205
+ // CHECK: %[[DESC2:.*]] = llvm.insertvalue %[[CST_OFF ]], %[[DESC1]][2] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
206
206
// CHECK: %[[CST_SIZE0:.*]] = llvm.mlir.constant(62 : index) : i64
207
207
// CHECK: %[[DESC3:.*]] = llvm.insertvalue %[[CST_SIZE0]], %[[DESC2]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
208
- // CHECK: %[[CST_STRIDE0:.*]] = llvm.mlir.constant(4 : index) : i64
208
+ // CHECK: %[[CST_STRIDE0:.*]] = llvm.mlir.constant(8 : index) : i64
209
209
// CHECK: %[[DESC4:.*]] = llvm.insertvalue %[[CST_STRIDE0]], %[[DESC3]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
210
210
// CHECK: %[[CST_SIZE1:.*]] = llvm.mlir.constant(3 : index) : i64
211
211
// CHECK: %[[DESC5:.*]] = llvm.insertvalue %[[CST_SIZE1]], %[[DESC4]][3, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
212
- // CHECK: %[[DESC6:.*]] = llvm.insertvalue %[[C1]], %[[DESC5]][4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
212
+ // CHECK: %[[CST_STRIDE1:.*]] = llvm.mlir.constant(1 : index) : i64
213
+ // CHECK: %[[DESC6:.*]] = llvm.insertvalue %[[CST_STRIDE1]], %[[DESC5]][4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
213
214
214
- %1 = memref.subview %0 [0 , 1 ][62 , 3 ][1 , 1 ] :
215
- memref <64 x 4 x f32 , strided <[4 , 1 ], offset : 0 >>
216
- to memref <62 x3 xf32 , strided <[4 , 1 ], offset : 1 >>
217
- return %1 : memref <62 x3 xf32 , strided <[4 , 1 ], offset : 1 >>
215
+ %1 = memref.subview %0 [0 , 2 ][62 , 3 ][1 , 1 ] :
216
+ memref <64 x 8 x f32 , strided <[8 , 1 ], offset : 0 >>
217
+ to memref <62 x3 xf32 , strided <[8 , 1 ], offset : 2 >>
218
+ return %1 : memref <62 x3 xf32 , strided <[8 , 1 ], offset : 2 >>
218
219
}
219
220
220
221
// -----
@@ -237,8 +238,8 @@ func.func @subview_mixed_static_dynamic(%0 : memref<64x4xf32, strided<[4, 1], of
237
238
// CHECK: %[[TMP:.*]] = builtin.unrealized_conversion_cast %[[DESCSTRIDE0]] : i64 to index
238
239
// CHECK: %[[DESCSTRIDE0_V2:.*]] = builtin.unrealized_conversion_cast %[[TMP]] : index to i64
239
240
// CHECK: %[[OFF0:.*]] = llvm.mul %[[ARG1]], %[[STRIDE0]] overflow<nsw> : i64
240
- // CHECK: %[[C1 :.*]] = llvm.mlir.constant(1 : index) : i64
241
- // CHECK: %[[OFF2:.*]] = llvm.add %[[OFF0]], %[[C1 ]] : i64
241
+ // CHECK: %[[BASE_OFF :.*]] = llvm.mlir.constant(2 : index) : i64
242
+ // CHECK: %[[OFF2:.*]] = llvm.add %[[OFF0]], %[[BASE_OFF ]] : i64
242
243
// CHECK: %[[TMP:.*]] = builtin.unrealized_conversion_cast %[[OFF2]] : i64 to index
243
244
// CHECK: %[[OFF2:.*]] = builtin.unrealized_conversion_cast %[[TMP]] : index to i64
244
245
// CHECK: %[[DESC:.*]] = llvm.mlir.poison : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
@@ -249,9 +250,10 @@ func.func @subview_mixed_static_dynamic(%0 : memref<64x4xf32, strided<[4, 1], of
249
250
// CHECK: %[[DESC3:.*]] = llvm.insertvalue %[[CST_SIZE0]], %[[DESC2]][3, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
250
251
// CHECK: %[[DESC4:.*]] = llvm.insertvalue %[[DESCSTRIDE0_V2]], %[[DESC3]][4, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
251
252
// CHECK: %[[DESC5:.*]] = llvm.insertvalue %[[ARG2]], %[[DESC4]][3, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
252
- // CHECK: %[[DESC6:.*]] = llvm.insertvalue %[[C1]], %[[DESC5]][4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
253
+ // CHECK: %[[CST_STRIDE1:.*]] = llvm.mlir.constant(1 : index) : i64
254
+ // CHECK: %[[DESC6:.*]] = llvm.insertvalue %[[CST_STRIDE1]], %[[DESC5]][4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
253
255
254
- %1 = memref.subview %0 [%arg1 , 1 ][62 , %arg2 ][%arg0 , 1 ] :
256
+ %1 = memref.subview %0 [%arg1 , 2 ][62 , %arg2 ][%arg0 , 1 ] :
255
257
memref <64 x4 xf32 , strided <[4 , 1 ], offset : 0 >>
256
258
to memref <62 x?xf32 , strided <[?, 1 ], offset : ?>>
257
259
return %1 : memref <62 x?xf32 , strided <[?, 1 ], offset : ?>>
0 commit comments