Skip to content

Commit 176d653

Browse files
committed
[RISCV] Add tests for single source interleave shuffles
These are failing to match vnsrl because we only check for the dual source form.
1 parent d727eec commit 176d653

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shufflevector-vnsrl.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)