@@ -438,3 +438,37 @@ entry:
438
438
store <8 x i8 > %shuffle.i5 , ptr %out , align 1
439
439
ret void
440
440
}
441
+
442
+ define void @vnsrl_0_i8_single_src (ptr %in , ptr %out ) {
443
+ ; CHECK-LABEL: vnsrl_0_i8_single_src:
444
+ ; CHECK: # %bb.0: # %entry
445
+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
446
+ ; CHECK-NEXT: vle8.v v8, (a0)
447
+ ; CHECK-NEXT: vid.v v9
448
+ ; CHECK-NEXT: vadd.vv v9, v9, v9
449
+ ; CHECK-NEXT: vrgather.vv v10, v8, v9
450
+ ; CHECK-NEXT: vse8.v v10, (a1)
451
+ ; CHECK-NEXT: ret
452
+ entry:
453
+ %0 = load <8 x i8 >, ptr %in , align 1
454
+ %shuffle.i5 = shufflevector <8 x i8 > %0 , <8 x i8 > poison, <8 x i32 > <i32 0 , i32 2 , i32 4 , i32 6 , i32 8 , i32 10 , i32 12 , i32 14 >
455
+ store <8 x i8 > %shuffle.i5 , ptr %out , align 1
456
+ ret void
457
+ }
458
+
459
+ define void @vnsrl_0_i8_single_src2 (ptr %in , ptr %out ) {
460
+ ; CHECK-LABEL: vnsrl_0_i8_single_src2:
461
+ ; CHECK: # %bb.0: # %entry
462
+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf4, ta, ma
463
+ ; CHECK-NEXT: vle8.v v8, (a0)
464
+ ; CHECK-NEXT: vid.v v9
465
+ ; CHECK-NEXT: vadd.vv v9, v9, v9
466
+ ; CHECK-NEXT: vrgather.vv v10, v8, v9
467
+ ; CHECK-NEXT: vse8.v v10, (a1)
468
+ ; CHECK-NEXT: ret
469
+ entry:
470
+ %0 = load <8 x i8 >, ptr %in , align 1
471
+ %shuffle.i5 = shufflevector <8 x i8 > %0 , <8 x i8 > poison, <8 x i32 > <i32 0 , i32 2 , i32 4 , i32 6 , i32 undef , i32 undef , i32 undef , i32 undef >
472
+ store <8 x i8 > %shuffle.i5 , ptr %out , align 1
473
+ ret void
474
+ }
0 commit comments