Skip to content

Commit 4511b8c

Browse files
precommit test case
1 parent f4d599c commit 4511b8c

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed

llvm/test/CodeGen/RISCV/branch_zero.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,4 @@ exit1:
8383
if.then:
8484
br label %for.body
8585
}
86+
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
3+
; RUN: | FileCheck %s
4+
5+
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
6+
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0
7+
8+
declare fastcc i1 @S_reginclass()
9+
10+
define fastcc i32 @S_regrepeat(ptr %startposp, i32 %max, i8 %0, i1 %cmp343) nounwind {
11+
; CHECK-LABEL: S_regrepeat:
12+
; CHECK: # %bb.0: # %entry
13+
; CHECK-NEXT: addi sp, sp, -32
14+
; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
15+
; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
16+
; CHECK-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
17+
; CHECK-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
18+
; CHECK-NEXT: andi a2, a2, 255
19+
; CHECK-NEXT: addi a4, a2, -19
20+
; CHECK-NEXT: li a5, 2
21+
; CHECK-NEXT: mv a0, a1
22+
; CHECK-NEXT: bltu a4, a5, .LBB0_4
23+
; CHECK-NEXT: # %bb.1: # %entry
24+
; CHECK-NEXT: li a1, 1
25+
; CHECK-NEXT: bltu a1, a2, .LBB0_8
26+
; CHECK-NEXT: # %bb.2: # %do_exactf
27+
; CHECK-NEXT: andi a3, a3, 1
28+
; CHECK-NEXT: beqz a3, .LBB0_10
29+
; CHECK-NEXT: # %bb.3: # %land.rhs251
30+
; CHECK-NEXT: lw zero, 0(zero)
31+
; CHECK-NEXT: li s0, 1
32+
; CHECK-NEXT: bnez s0, .LBB0_9
33+
; CHECK-NEXT: j .LBB0_8
34+
; CHECK-NEXT: .LBB0_4: # %sw.bb336
35+
; CHECK-NEXT: mv s1, a0
36+
; CHECK-NEXT: li s0, 0
37+
; CHECK-NEXT: andi s2, a3, 1
38+
; CHECK-NEXT: .LBB0_5: # %land.rhs345
39+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
40+
; CHECK-NEXT: call S_reginclass
41+
; CHECK-NEXT: andi a0, a0, 1
42+
; CHECK-NEXT: beqz a0, .LBB0_7
43+
; CHECK-NEXT: # %bb.6: # %while.body350
44+
; CHECK-NEXT: # in Loop: Header=BB0_5 Depth=1
45+
; CHECK-NEXT: addiw s0, s0, 1
46+
; CHECK-NEXT: bnez s2, .LBB0_5
47+
; CHECK-NEXT: j .LBB0_8
48+
; CHECK-NEXT: .LBB0_7:
49+
; CHECK-NEXT: mv a0, s1
50+
; CHECK-NEXT: bnez s0, .LBB0_9
51+
; CHECK-NEXT: .LBB0_8: # %if.else1492
52+
; CHECK-NEXT: li a0, 0
53+
; CHECK-NEXT: .LBB0_9: # %if.end1497
54+
; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
55+
; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
56+
; CHECK-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
57+
; CHECK-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
58+
; CHECK-NEXT: addi sp, sp, 32
59+
; CHECK-NEXT: ret
60+
; CHECK-NEXT: .LBB0_10:
61+
; CHECK-NEXT: bnez zero, .LBB0_9
62+
; CHECK-NEXT: j .LBB0_8
63+
entry:
64+
switch i8 %0, label %if.else1492 [
65+
i8 19, label %sw.bb336
66+
i8 20, label %sw.bb336
67+
i8 1, label %do_exactf
68+
i8 0, label %do_exactf
69+
]
70+
71+
do_exactf: ; preds = %entry, %entry
72+
br i1 %cmp343, label %land.rhs251, label %if.end334
73+
74+
land.rhs251: ; preds = %do_exactf
75+
%bcmp414 = load volatile i32, ptr null, align 4
76+
br label %if.end334
77+
78+
if.end334: ; preds = %land.rhs251, %do_exactf
79+
%hardcount.7 = phi i32 [ 0, %do_exactf ], [ 1, %land.rhs251 ]
80+
call void @llvm.lifetime.end.p0(i64 0, ptr null)
81+
br label %sw.epilog1489
82+
83+
sw.bb336: ; preds = %entry, %entry
84+
br label %land.rhs345
85+
86+
land.rhs345: ; preds = %while.body350, %sw.bb336
87+
%hardcount.8634 = phi i32 [ %inc356, %while.body350 ], [ 0, %sw.bb336 ]
88+
%call347 = call fastcc i1 @S_reginclass()
89+
br i1 %call347, label %while.body350, label %sw.epilog1489
90+
91+
while.body350: ; preds = %land.rhs345
92+
%inc356 = add i32 %hardcount.8634, 1
93+
br i1 %cmp343, label %land.rhs345, label %if.end1497
94+
95+
sw.epilog1489: ; preds = %land.rhs345, %if.end334
96+
%hardcount.20 = phi i32 [ %hardcount.7, %if.end334 ], [ %hardcount.8634, %land.rhs345 ]
97+
%tobool1490.not = icmp eq i32 %hardcount.20, 0
98+
br i1 %tobool1490.not, label %if.else1492, label %if.end1497
99+
100+
if.else1492: ; preds = %sw.epilog1489, %entry
101+
br label %if.end1497
102+
103+
if.end1497: ; preds = %if.else1492, %sw.epilog1489, %while.body350
104+
%c.0 = phi i32 [ 0, %if.else1492 ], [ %max, %sw.epilog1489 ], [ 0, %while.body350 ]
105+
ret i32 %c.0
106+
}
107+
108+
attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }

0 commit comments

Comments
 (0)