@@ -424,10 +424,11 @@ func @vector_print_vector(%arg0: vector<2x2xf32>) {
424
424
// CHECK: llvm.call @print_close() : () -> ()
425
425
// CHECK: llvm.call @print_newline() : () -> ()
426
426
427
-
428
- func @strided_slice (%arg0: vector <4 xf32 >, %arg1: vector <4 x8 xf32 >, %arg2: vector <4 x8 x16 xf32 >) {
429
- // CHECK-LABEL: llvm.func @strided_slice(
427
+ func @strided_slice1 (%arg0: vector <4 xf32 >) -> vector <2 xf32 > {
430
428
%0 = vector.strided_slice %arg0 {offsets = [2 ], sizes = [2 ], strides = [1 ]} : vector <4 xf32 > to vector <2 xf32 >
429
+ return %0 : vector <2 xf32 >
430
+ }
431
+ // CHECK-LABEL: llvm.func @strided_slice1
431
432
// CHECK: llvm.mlir.constant(0.000000e+00 : f32) : !llvm.float
432
433
// CHECK: llvm.mlir.constant(dense<0.000000e+00> : vector<2xf32>) : !llvm<"<2 x float>">
433
434
// CHECK: llvm.mlir.constant(2 : index) : !llvm.i64
@@ -439,15 +440,23 @@ func @strided_slice(%arg0: vector<4xf32>, %arg1: vector<4x8xf32>, %arg2: vector<
439
440
// CHECK: llvm.mlir.constant(1 : index) : !llvm.i64
440
441
// CHECK: llvm.insertelement %{{.*}}, %{{.*}}[%{{.*}} : !llvm.i64] : !llvm<"<2 x float>">
441
442
442
- %1 = vector.strided_slice %arg1 {offsets = [2 ], sizes = [2 ], strides = [1 ]} : vector <4 x8 xf32 > to vector <2 x8 xf32 >
443
+ func @strided_slice2 (%arg0: vector <4 x8 xf32 >) -> vector <2 x8 xf32 > {
444
+ %0 = vector.strided_slice %arg0 {offsets = [2 ], sizes = [2 ], strides = [1 ]} : vector <4 x8 xf32 > to vector <2 x8 xf32 >
445
+ return %0 : vector <2 x8 xf32 >
446
+ }
447
+ // CHECK-LABEL: llvm.func @strided_slice2
443
448
// CHECK: llvm.mlir.constant(0.000000e+00 : f32) : !llvm.float
444
449
// CHECK: llvm.mlir.constant(dense<0.000000e+00> : vector<2x8xf32>) : !llvm<"[2 x <8 x float>]">
445
450
// CHECK: llvm.extractvalue %{{.*}}[2] : !llvm<"[4 x <8 x float>]">
446
451
// CHECK: llvm.insertvalue %{{.*}}, %{{.*}}[0] : !llvm<"[2 x <8 x float>]">
447
452
// CHECK: llvm.extractvalue %{{.*}}[3] : !llvm<"[4 x <8 x float>]">
448
453
// CHECK: llvm.insertvalue %{{.*}}, %{{.*}}[1] : !llvm<"[2 x <8 x float>]">
449
454
450
- %2 = vector.strided_slice %arg1 {offsets = [2 , 2 ], sizes = [2 , 2 ], strides = [1 , 1 ]} : vector <4 x8 xf32 > to vector <2 x2 xf32 >
455
+ func @strided_slice3 (%arg0: vector <4 x8 xf32 >) -> vector <2 x2 xf32 > {
456
+ %0 = vector.strided_slice %arg0 {offsets = [2 , 2 ], sizes = [2 , 2 ], strides = [1 , 1 ]} : vector <4 x8 xf32 > to vector <2 x2 xf32 >
457
+ return %0 : vector <2 x2 xf32 >
458
+ }
459
+ // CHECK-LABEL: llvm.func @strided_slice3
451
460
// CHECK: llvm.mlir.constant(0.000000e+00 : f32) : !llvm.float
452
461
// CHECK: llvm.mlir.constant(dense<0.000000e+00> : vector<2x2xf32>) : !llvm<"[2 x <2 x float>]">
453
462
//
@@ -479,17 +488,19 @@ func @strided_slice(%arg0: vector<4xf32>, %arg1: vector<4x8xf32>, %arg2: vector<
479
488
// CHECK: llvm.insertelement {{.*}}, {{.*}}[{{.*}} : !llvm.i64] : !llvm<"<2 x float>">
480
489
// CHECK: llvm.insertvalue {{.*}}, {{.*}}[1] : !llvm<"[2 x <2 x float>]">
481
490
482
- return
483
- }
484
-
485
- func @insert_strided_slice (%a: vector <2 x2 xf32 >, %b: vector <4 x4 xf32 >, %c: vector <4 x4 x4 xf32 >) {
486
- // CHECK-LABEL: @insert_strided_slice
487
-
491
+ func @insert_strided_slice1 (%b: vector <4 x4 xf32 >, %c: vector <4 x4 x4 xf32 >) -> vector <4 x4 x4 xf32 > {
488
492
%0 = vector.insert_strided_slice %b , %c {offsets = [2 , 0 , 0 ], strides = [1 , 1 ]} : vector <4 x4 xf32 > into vector <4 x4 x4 xf32 >
493
+ return %0 : vector <4 x4 x4 xf32 >
494
+ }
495
+ // CHECK-LABEL: @insert_strided_slice1
489
496
// CHECK: llvm.extractvalue {{.*}}[2] : !llvm<"[4 x [4 x <4 x float>]]">
490
497
// CHECK-NEXT: llvm.insertvalue {{.*}}, {{.*}}[2] : !llvm<"[4 x [4 x <4 x float>]]">
491
498
492
- %1 = vector.insert_strided_slice %a , %b {offsets = [2 , 2 ], strides = [1 , 1 ]} : vector <2 x2 xf32 > into vector <4 x4 xf32 >
499
+ func @insert_strided_slice2 (%a: vector <2 x2 xf32 >, %b: vector <4 x4 xf32 >) -> vector <4 x4 xf32 > {
500
+ %0 = vector.insert_strided_slice %a , %b {offsets = [2 , 2 ], strides = [1 , 1 ]} : vector <2 x2 xf32 > into vector <4 x4 xf32 >
501
+ return %0 : vector <4 x4 xf32 >
502
+ }
503
+ // CHECK-LABEL: @insert_strided_slice2
493
504
//
494
505
// Subvector vector<2xf32> @0 into vector<4xf32> @2
495
506
// CHECK: llvm.extractvalue {{.*}}[0] : !llvm<"[2 x <2 x float>]">
@@ -521,6 +532,19 @@ func @insert_strided_slice(%a: vector<2x2xf32>, %b: vector<4x4xf32>, %c: vector<
521
532
// CHECK-NEXT: llvm.insertelement {{.*}}, {{.*}}[{{.*}} : !llvm.i64] : !llvm<"<4 x float>">
522
533
// CHECK-NEXT: llvm.insertvalue {{.*}}, {{.*}}[3] : !llvm<"[4 x <4 x float>]">
523
534
524
- return
535
+ func @extract_strides (%arg0: vector <3 x3 xf32 >) -> vector <1 x1 xf32 > {
536
+ %0 = vector.extract_slices %arg0 , [2 , 2 ], [1 , 1 ]
537
+ : vector <3 x3 xf32 > into tuple <vector <2 x2 xf32 >, vector <2 x1 xf32 >, vector <1 x2 xf32 >, vector <1 x1 xf32 >>
538
+ %1 = vector.tuple_get %0 , 3 : tuple <vector <2 x2 xf32 >, vector <2 x1 xf32 >, vector <1 x2 xf32 >, vector <1 x1 xf32 >>
539
+ return %1 : vector <1 x1 xf32 >
525
540
}
526
-
541
+ // CHECK-LABEL: extract_strides(%arg0: !llvm<"[3 x <3 x float>]">)
542
+ // CHECK: %[[s0:.*]] = llvm.mlir.constant(dense<0.000000e+00> : vector<1x1xf32>) : !llvm<"[1 x <1 x float>]">
543
+ // CHECK: %[[s1:.*]] = llvm.extractvalue %arg0[2] : !llvm<"[3 x <3 x float>]">
544
+ // CHECK: %[[s3:.*]] = llvm.mlir.constant(dense<0.000000e+00> : vector<1xf32>) : !llvm<"<1 x float>">
545
+ // CHECK: %[[s4:.*]] = llvm.mlir.constant(2 : index) : !llvm.i64
546
+ // CHECK: %[[s5:.*]] = llvm.extractelement %[[s1]][%[[s4]] : !llvm.i64] : !llvm<"<3 x float>">
547
+ // CHECK: %[[s6:.*]] = llvm.mlir.constant(0 : index) : !llvm.i64
548
+ // CHECK: %[[s7:.*]] = llvm.insertelement %[[s5]], %[[s3]][%[[s6]] : !llvm.i64] : !llvm<"<1 x float>">
549
+ // CHECK: %[[s8:.*]] = llvm.insertvalue %[[s7]], %[[s0]][0] : !llvm<"[1 x <1 x float>]">
550
+ // CHECK: llvm.return %[[s8]] : !llvm<"[1 x <1 x float>]">
0 commit comments