Skip to content

Commit 9aba342

Browse files
committed
Precommit tests
1 parent d6679d5 commit 9aba342

File tree

2 files changed

+123
-1
lines changed

2 files changed

+123
-1
lines changed

llvm/test/CodeGen/RISCV/rvv/vl-opt.ll

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,56 @@ define void @fadd_fcmp_select_copy(<vscale x 4 x float> %v, <vscale x 4 x i1> %c
198198
call void @llvm.riscv.vsm(<vscale x 4 x i1> %select, ptr %p, iXLen %vl)
199199
ret void
200200
}
201+
202+
define void @recurrence(<vscale x 4 x i32> %v, ptr %p, iXLen %n, iXLen %vl) {
203+
; CHECK-LABEL: recurrence:
204+
; CHECK: # %bb.0: # %entry
205+
; CHECK-NEXT: vsetvli a3, zero, e32, m2, ta, ma
206+
; CHECK-NEXT: vmv.v.i v10, 0
207+
; CHECK-NEXT: .LBB13_1: # %loop
208+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
209+
; CHECK-NEXT: addi a1, a1, -1
210+
; CHECK-NEXT: vadd.vv v10, v10, v8
211+
; CHECK-NEXT: bnez a1, .LBB13_1
212+
; CHECK-NEXT: # %bb.2: # %exit
213+
; CHECK-NEXT: vsetvli zero, a2, e32, m2, ta, ma
214+
; CHECK-NEXT: vse32.v v10, (a0)
215+
; CHECK-NEXT: ret
216+
entry:
217+
br label %loop
218+
loop:
219+
%iv = phi iXLen [ 0, %entry ], [ %iv.next, %loop ]
220+
%phi = phi <vscale x 4 x i32> [ zeroinitializer, %entry ], [ %x, %loop ]
221+
%x = add <vscale x 4 x i32> %phi, %v
222+
%iv.next = add iXLen %iv, 1
223+
%done = icmp eq iXLen %iv.next, %n
224+
br i1 %done, label %exit, label %loop
225+
exit:
226+
call void @llvm.riscv.vse(<vscale x 4 x i32> %x, ptr %p, iXLen %vl)
227+
ret void
228+
}
229+
230+
define <vscale x 4 x i32> @phi(<vscale x 4 x i32> %v, i1 %cond, iXLen %vl) {
231+
; CHECK-LABEL: phi:
232+
; CHECK: # %bb.0: # %entry
233+
; CHECK-NEXT: andi a0, a0, 1
234+
; CHECK-NEXT: vsetivli zero, 2, e32, m2, ta, ma
235+
; CHECK-NEXT: vadd.vi v8, v8, 1
236+
; CHECK-NEXT: beqz a0, .LBB14_2
237+
; CHECK-NEXT: # %bb.1: # %foo
238+
; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, ma
239+
; CHECK-NEXT: vadd.vi v8, v8, 1
240+
; CHECK-NEXT: ret
241+
; CHECK-NEXT: .LBB14_2: # %bar
242+
; CHECK-NEXT: vadd.vi v8, v8, 2
243+
; CHECK-NEXT: ret
244+
entry:
245+
%a = call <vscale x 4 x i32> @llvm.riscv.vadd(<vscale x 4 x i32> poison, <vscale x 4 x i32> %v, iXLen 1, iXLen -1)
246+
br i1 %cond, label %foo, label %bar
247+
foo:
248+
%b = call <vscale x 4 x i32> @llvm.riscv.vadd(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen 1, iXLen 1)
249+
ret <vscale x 4 x i32> %b
250+
bar:
251+
%c = call <vscale x 4 x i32> @llvm.riscv.vadd(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen 2, iXLen 2)
252+
ret <vscale x 4 x i32> %c
253+
}

llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,4 +603,73 @@ body: |
603603
$x10 = COPY %9
604604
PseudoRET implicit $x10
605605
...
606-
606+
---
607+
name: recurrence
608+
tracksRegLiveness: true
609+
body: |
610+
; CHECK-LABEL: name: recurrence
611+
; CHECK: bb.0:
612+
; CHECK-NEXT: successors: %bb.1(0x80000000)
613+
; CHECK-NEXT: liveins: $x8
614+
; CHECK-NEXT: {{ $}}
615+
; CHECK-NEXT: %avl:gprnox0 = COPY $x8
616+
; CHECK-NEXT: %start:vr = PseudoVMV_V_I_M1 $noreg, 0, -1, 3 /* e8 */, 3 /* ta, ma */
617+
; CHECK-NEXT: PseudoBR %bb.1
618+
; CHECK-NEXT: {{ $}}
619+
; CHECK-NEXT: bb.1:
620+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
621+
; CHECK-NEXT: {{ $}}
622+
; CHECK-NEXT: %phi:vr = PHI %start, %bb.0, %inc, %bb.1
623+
; CHECK-NEXT: %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, -1, 3 /* e8 */, 3 /* ta, ma */
624+
; CHECK-NEXT: BNE $noreg, $noreg, %bb.1
625+
; CHECK-NEXT: {{ $}}
626+
; CHECK-NEXT: bb.2:
627+
; CHECK-NEXT: PseudoVSE8_V_M1 %inc, $noreg, %avl, 3 /* e8 */
628+
bb.0:
629+
liveins: $x8
630+
%avl:gprnox0 = COPY $x8
631+
%start:vr = PseudoVMV_V_I_M1 $noreg, 0, -1, 3 /* e8 */, 3, /* ta, ma */
632+
PseudoBR %bb.1
633+
bb.1:
634+
%phi:vr = PHI %start, %bb.0, %inc, %bb.1
635+
%inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, -1, 3 /* e8 */, 3 /* ta, ma */
636+
BNE $noreg, $noreg, %bb.1
637+
bb.2:
638+
PseudoVSE8_V_M1 %inc, $noreg, %avl, 3 /* e8 */
639+
...
640+
---
641+
name: recurrence_cant_reduce
642+
tracksRegLiveness: true
643+
body: |
644+
; CHECK-LABEL: name: recurrence_cant_reduce
645+
; CHECK: bb.0:
646+
; CHECK-NEXT: successors: %bb.1(0x80000000)
647+
; CHECK-NEXT: liveins: $x8, $x9
648+
; CHECK-NEXT: {{ $}}
649+
; CHECK-NEXT: %avl1:gprnox0 = COPY $x8
650+
; CHECK-NEXT: %avl2:gprnox0 = COPY $x8
651+
; CHECK-NEXT: %start:vr = PseudoVMV_V_I_M1 $noreg, 0, %avl1, 3 /* e8 */, 3 /* ta, ma */
652+
; CHECK-NEXT: PseudoBR %bb.1
653+
; CHECK-NEXT: {{ $}}
654+
; CHECK-NEXT: bb.1:
655+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
656+
; CHECK-NEXT: {{ $}}
657+
; CHECK-NEXT: %phi:vr = PHI %start, %bb.0, %inc, %bb.1
658+
; CHECK-NEXT: %inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, %avl1, 3 /* e8 */, 3 /* ta, ma */
659+
; CHECK-NEXT: BNE $noreg, $noreg, %bb.1
660+
; CHECK-NEXT: {{ $}}
661+
; CHECK-NEXT: bb.2:
662+
; CHECK-NEXT: PseudoVSE8_V_M1 %inc, $noreg, %avl2, 3 /* e8 */
663+
bb.0:
664+
liveins: $x8, $x9
665+
%avl1:gprnox0 = COPY $x8
666+
%avl2:gprnox0 = COPY $x8
667+
%start:vr = PseudoVMV_V_I_M1 $noreg, 0, -1, 3 /* e8 */, 3, /* ta, ma */
668+
PseudoBR %bb.1
669+
bb.1:
670+
%phi:vr = PHI %start, %bb.0, %inc, %bb.1
671+
%inc:vr = PseudoVADD_VI_M1 $noreg, %phi, 1, %avl1, 3 /* e8 */, 3 /* ta, ma */
672+
BNE $noreg, $noreg, %bb.1
673+
bb.2:
674+
PseudoVSE8_V_M1 %inc, $noreg, %avl2, 3 /* e8 */
675+
...

0 commit comments

Comments
 (0)