@@ -350,6 +350,38 @@ func.func @read_read_add_write_vec_1d(%arg0: memref<8xi32>, %arg1: memref<8xi32>
350350}
351351
352352
353+ // CHECK-LABEL: func @read_read_add_write_mixed_vecs
354+ // CHECK-SAME: (%[[ARG0:.*]]: memref<8xi32>, %[[ARG1:.*]]: memref<8xi32>)
355+ func.func @read_read_add_write_mixed_vecs (%arg0: memref <8 xi32 >, %arg1: memref <8 xi32 >) {
356+ // CHECK: %[[C0:.*]] = arith.constant 0 : index
357+ // CHECK: %[[A:.*]] = vector.load %[[ARG0]][%[[C0]]] : memref<8xi32>, vector<4xi32>
358+ // CHECK: %[[B:.*]] = vector.load %[[ARG1]][%[[C0]]] : memref<8xi32>, vector<4xi32>
359+ // CHECK: %[[RES:.*]] = arith.addi %[[A]], %[[B]] : vector<4xi32>
360+ // CHECK: vector.store %[[RES]], %[[ARG0]][%[[C0]]] : memref<8xi32>, vector<4xi32>
361+ %c0 = arith.constant 0 : index
362+ %c2 = arith.constant 2 : index
363+ %c3 = arith.constant 3 : index
364+
365+ %0 = vector.load %arg0 [%c0 ] : memref <8 xi32 >, vector <2 xi32 >
366+ %2 = memref.load %arg0 [%c2 ] : memref <8 xi32 >
367+ %3 = vector.load %arg0 [%c3 ] : memref <8 xi32 >, vector <1 xi32 >
368+
369+ %4 = vector.load %arg1 [%c0 ] : memref <8 xi32 >, vector <2 xi32 >
370+ %6 = memref.load %arg1 [%c2 ] : memref <8 xi32 >
371+ %7 = vector.load %arg1 [%c3 ] : memref <8 xi32 >, vector <1 xi32 >
372+
373+ %8 = arith.addi %0 , %4 : vector <2 xi32 >
374+ %10 = arith.addi %2 , %6 : i32
375+ %11 = arith.addi %3 , %7 : vector <1 xi32 >
376+
377+ vector.store %8 , %arg0 [%c0 ] : memref <8 xi32 >, vector <2 xi32 >
378+ memref.store %10 , %arg0 [%c2 ] : memref <8 xi32 >
379+ vector.store %11 , %arg0 [%c3 ] : memref <8 xi32 >, vector <1 xi32 >
380+
381+ return
382+ }
383+
384+
353385// CHECK-LABEL: func @read_read_add_write_seven
354386// CHECK-SAME: (%[[ARG0:.*]]: memref<8xindex>, %[[ARG1:.*]]: memref<8xindex>)
355387func.func @read_read_add_write_seven (%arg0: memref <8 xindex >, %arg1: memref <8 xindex >) {
0 commit comments