Skip to content

Commit a64b52e

Browse files
committed
Precommit tests
1 parent dfac905 commit a64b52e

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
2+
; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s
3+
4+
define i32 @loop_live_out(ptr %p, i64 %n) {
5+
; CHECK-LABEL: loop_live_out:
6+
; CHECK: # %bb.0: # %entry
7+
; CHECK-NEXT: mv a2, a0
8+
; CHECK-NEXT: .LBB0_1: # %loop
9+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
10+
; CHECK-NEXT: mv a4, a1
11+
; CHECK-NEXT: vsetvli a3, a1, e8, mf2, ta, ma
12+
; CHECK-NEXT: vle32.v v8, (a2)
13+
; CHECK-NEXT: sub a1, a1, a3
14+
; CHECK-NEXT: vsetvli a5, zero, e32, m2, ta, ma
15+
; CHECK-NEXT: vadd.vi v8, v8, 1
16+
; CHECK-NEXT: vsetvli zero, a4, e32, m2, ta, ma
17+
; CHECK-NEXT: vse32.v v8, (a2)
18+
; CHECK-NEXT: slli a2, a3, 2
19+
; CHECK-NEXT: add a2, a0, a2
20+
; CHECK-NEXT: bnez a1, .LBB0_1
21+
; CHECK-NEXT: # %bb.2: # %exit
22+
; CHECK-NEXT: addi a3, a3, -1
23+
; CHECK-NEXT: vsetivli zero, 1, e32, m2, ta, ma
24+
; CHECK-NEXT: vslidedown.vx v8, v8, a3
25+
; CHECK-NEXT: vmv.x.s a0, v8
26+
; CHECK-NEXT: ret
27+
entry:
28+
br label %loop
29+
30+
loop:
31+
%avl = phi i64 [%n, %entry], [%avl.next, %loop]
32+
%gep = phi ptr [%p, %entry], [%gep.next, %loop]
33+
%vl = call i32 @llvm.experimental.get.vector.length(i64 %avl, i32 4, i1 true)
34+
%x = call <vscale x 4 x i32> @llvm.vp.load(ptr %gep, <vscale x 4 x i1> splat (i1 true), i32 %vl)
35+
%y = add <vscale x 4 x i32> %x, splat (i32 1)
36+
call void @llvm.vp.store(<vscale x 4 x i32> %y, ptr %gep, <vscale x 4 x i1> splat (i1 true), i32 %vl)
37+
%vl.zext = zext i32 %vl to i64
38+
%avl.next = sub i64 %avl, %vl.zext
39+
%gep.next = getelementptr i32, ptr %p, i32 %vl
40+
%ec = icmp eq i64 %avl.next, 0
41+
br i1 %ec, label %exit, label %loop
42+
43+
exit:
44+
%lastidx = sub i64 %vl.zext, 1
45+
%lastelt = extractelement <vscale x 4 x i32> %y, i64 %lastidx
46+
ret i32 %lastelt
47+
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,3 +778,21 @@ body: |
778778
; CHECK: DBG_VALUE %0:vr
779779
DBG_VALUE %0:vr
780780
...
781+
---
782+
name: vslidedown_vx
783+
tracksRegLiveness: true
784+
body: |
785+
bb.0:
786+
liveins: $x8
787+
; CHECK-LABEL: name: vslidedown_vx
788+
; CHECK: liveins: $x8
789+
; CHECK-NEXT: {{ $}}
790+
; CHECK-NEXT: %x:gpr = COPY $x8
791+
; CHECK-NEXT: %y:gprnox0 = ADDI %x, -1
792+
; CHECK-NEXT: %v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */
793+
; CHECK-NEXT: %w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */
794+
%x:gpr = COPY $x8
795+
%y:gprnox0 = ADDI %x, -1
796+
%v:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 0 /* tu, mu */
797+
%w:vr = PseudoVSLIDEDOWN_VX_M1 $noreg, %v, %y, 1, 5 /* e32 */, 0 /* tu, mu */
798+
...

0 commit comments

Comments
 (0)