@@ -438,3 +438,37 @@ entry:
438438 store <8 x i8 > %shuffle.i5 , ptr %out , align 1
439439 ret void
440440}
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