Skip to content

Commit 4283566

Browse files
committed
[test][MachineSink][RISCV] Pre-commit test for #97618
1 parent 804b264 commit 4283566

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=riscv64 < %s | FileCheck %s
3+
4+
define i1 @sink_li(ptr %text, ptr %text.addr.0) nounwind {
5+
; CHECK-LABEL: sink_li:
6+
; CHECK: # %bb.0: # %entry
7+
; CHECK-NEXT: addi sp, sp, -32
8+
; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
9+
; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
10+
; CHECK-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
11+
; CHECK-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
12+
; CHECK-NEXT: mv s1, a1
13+
; CHECK-NEXT: mv s0, a0
14+
; CHECK-NEXT: call toupper
15+
; CHECK-NEXT: li a1, 0
16+
; CHECK-NEXT: beqz s0, .LBB0_25
17+
; CHECK-NEXT: # %bb.1: # %while.body.preheader
18+
; CHECK-NEXT: li a2, 1
19+
; CHECK-NEXT: li a3, 9
20+
; CHECK-NEXT: li a4, 32
21+
; CHECK-NEXT: .LBB0_2: # %while.body
22+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
23+
; CHECK-NEXT: bnez a2, .LBB0_4
24+
; CHECK-NEXT: # %bb.3: # %while.body
25+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
26+
; CHECK-NEXT: bne a2, a3, .LBB0_16
27+
; CHECK-NEXT: .LBB0_4: # %while.body.1
28+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
29+
; CHECK-NEXT: bnez a2, .LBB0_6
30+
; CHECK-NEXT: # %bb.5: # %while.body.1
31+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
32+
; CHECK-NEXT: bne a2, a3, .LBB0_17
33+
; CHECK-NEXT: .LBB0_6: # %while.body.3
34+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
35+
; CHECK-NEXT: bnez a2, .LBB0_8
36+
; CHECK-NEXT: # %bb.7: # %while.body.3
37+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
38+
; CHECK-NEXT: bne a2, a4, .LBB0_19
39+
; CHECK-NEXT: .LBB0_8: # %while.body.4
40+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
41+
; CHECK-NEXT: bnez a2, .LBB0_10
42+
; CHECK-NEXT: # %bb.9: # %while.body.4
43+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
44+
; CHECK-NEXT: bne a2, a4, .LBB0_21
45+
; CHECK-NEXT: .LBB0_10: # %while.body.5
46+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
47+
; CHECK-NEXT: bnez a2, .LBB0_12
48+
; CHECK-NEXT: # %bb.11: # %while.body.5
49+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
50+
; CHECK-NEXT: bne a2, a3, .LBB0_23
51+
; CHECK-NEXT: .LBB0_12: # %while.body.6
52+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
53+
; CHECK-NEXT: bnez a2, .LBB0_2
54+
; CHECK-NEXT: # %bb.13: # %while.body.6
55+
; CHECK-NEXT: # in Loop: Header=BB0_2 Depth=1
56+
; CHECK-NEXT: beq a2, a3, .LBB0_2
57+
; CHECK-NEXT: # %bb.14: # %while.body.6
58+
; CHECK-NEXT: li a1, 0
59+
; CHECK-NEXT: beqz a2, .LBB0_25
60+
; CHECK-NEXT: # %bb.15: # %strdup.exit.split.loop.exit126
61+
; CHECK-NEXT: addi s0, s1, 7
62+
; CHECK-NEXT: j .LBB0_24
63+
; CHECK-NEXT: .LBB0_16: # %while.body
64+
; CHECK-NEXT: bnez a2, .LBB0_18
65+
; CHECK-NEXT: j .LBB0_25
66+
; CHECK-NEXT: .LBB0_17: # %while.body.1
67+
; CHECK-NEXT: li a1, 0
68+
; CHECK-NEXT: beqz a2, .LBB0_25
69+
; CHECK-NEXT: .LBB0_18: # %strdup.exit.loopexit
70+
; CHECK-NEXT: li s0, 0
71+
; CHECK-NEXT: j .LBB0_24
72+
; CHECK-NEXT: .LBB0_19: # %while.body.3
73+
; CHECK-NEXT: li a1, 0
74+
; CHECK-NEXT: beqz a2, .LBB0_25
75+
; CHECK-NEXT: # %bb.20: # %strdup.exit.split.loop.exit120
76+
; CHECK-NEXT: addi s0, s1, 4
77+
; CHECK-NEXT: j .LBB0_24
78+
; CHECK-NEXT: .LBB0_21: # %while.body.4
79+
; CHECK-NEXT: li a1, 0
80+
; CHECK-NEXT: beqz a2, .LBB0_25
81+
; CHECK-NEXT: # %bb.22: # %strdup.exit.split.loop.exit122
82+
; CHECK-NEXT: addi s0, s1, 5
83+
; CHECK-NEXT: j .LBB0_24
84+
; CHECK-NEXT: .LBB0_23: # %while.body.5
85+
; CHECK-NEXT: li a1, 0
86+
; CHECK-NEXT: beqz a2, .LBB0_25
87+
; CHECK-NEXT: .LBB0_24: # %strdup.exit
88+
; CHECK-NEXT: li s1, 0
89+
; CHECK-NEXT: mv s2, a0
90+
; CHECK-NEXT: li a0, 0
91+
; CHECK-NEXT: mv a1, s0
92+
; CHECK-NEXT: jalr s1
93+
; CHECK-NEXT: li a0, 0
94+
; CHECK-NEXT: mv a1, s2
95+
; CHECK-NEXT: li a2, 0
96+
; CHECK-NEXT: jalr s1
97+
; CHECK-NEXT: li a1, 1
98+
; CHECK-NEXT: .LBB0_25: # %return
99+
; CHECK-NEXT: mv a0, a1
100+
; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
101+
; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
102+
; CHECK-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
103+
; CHECK-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
104+
; CHECK-NEXT: addi sp, sp, 32
105+
; CHECK-NEXT: ret
106+
entry:
107+
%call = call i32 @toupper()
108+
%tobool.not = icmp eq ptr %text, null
109+
br i1 %tobool.not, label %return, label %while.body
110+
111+
while.body: ; preds = %while.body.6, %while.body.6, %entry
112+
switch i8 1, label %strdup.exit.split.loop.exit114 [
113+
i8 1, label %while.body.1
114+
i8 9, label %while.body.1
115+
i8 0, label %return
116+
]
117+
118+
while.body.1: ; preds = %while.body, %while.body
119+
switch i8 1, label %strdup.exit [
120+
i8 1, label %while.body.3
121+
i8 9, label %while.body.3
122+
i8 0, label %return
123+
]
124+
125+
while.body.3: ; preds = %while.body.1, %while.body.1
126+
switch i8 1, label %strdup.exit.split.loop.exit120 [
127+
i8 32, label %while.body.4
128+
i8 1, label %while.body.4
129+
i8 0, label %return
130+
]
131+
132+
while.body.4: ; preds = %while.body.3, %while.body.3
133+
switch i8 1, label %strdup.exit.split.loop.exit122 [
134+
i8 32, label %while.body.5
135+
i8 1, label %while.body.5
136+
i8 0, label %return
137+
]
138+
139+
while.body.5: ; preds = %while.body.4, %while.body.4
140+
switch i8 1, label %strdup.exit.split.loop.exit124 [
141+
i8 1, label %while.body.6
142+
i8 9, label %while.body.6
143+
i8 0, label %return
144+
]
145+
146+
while.body.6: ; preds = %while.body.5, %while.body.5
147+
switch i8 1, label %strdup.exit.split.loop.exit126 [
148+
i8 1, label %while.body
149+
i8 9, label %while.body
150+
i8 0, label %return
151+
]
152+
153+
strdup.exit.split.loop.exit114: ; preds = %while.body
154+
br label %strdup.exit
155+
156+
strdup.exit.split.loop.exit120: ; preds = %while.body.3
157+
%incdec.ptr.3.le = getelementptr i8, ptr %text.addr.0, i64 4
158+
br label %strdup.exit
159+
160+
strdup.exit.split.loop.exit122: ; preds = %while.body.4
161+
%incdec.ptr.4.le = getelementptr i8, ptr %text.addr.0, i64 5
162+
br label %strdup.exit
163+
164+
strdup.exit.split.loop.exit124: ; preds = %while.body.5
165+
br label %strdup.exit
166+
167+
strdup.exit.split.loop.exit126: ; preds = %while.body.6
168+
%incdec.ptr.6.le = getelementptr i8, ptr %text.addr.0, i64 7
169+
br label %strdup.exit
170+
171+
strdup.exit: ; preds = %strdup.exit.split.loop.exit126, %strdup.exit.split.loop.exit124, %strdup.exit.split.loop.exit122, %strdup.exit.split.loop.exit120, %strdup.exit.split.loop.exit114, %while.body.1
172+
%text.addr.0.lcssa = phi ptr [ null, %strdup.exit.split.loop.exit114 ], [ %incdec.ptr.3.le, %strdup.exit.split.loop.exit120 ], [ %incdec.ptr.4.le, %strdup.exit.split.loop.exit122 ], [ %text, %strdup.exit.split.loop.exit124 ], [ %incdec.ptr.6.le, %strdup.exit.split.loop.exit126 ], [ null, %while.body.1 ]
173+
%call5.i = tail call ptr null(ptr null, ptr %text.addr.0.lcssa)
174+
%memchr64 = tail call ptr null(ptr null, i32 %call, i64 0)
175+
br label %return
176+
177+
return: ; preds = %strdup.exit, %while.body.6, %while.body.5, %while.body.4, %while.body.3, %while.body.1, %while.body, %entry
178+
%retval.1 = phi i1 [ false, %entry ], [ true, %strdup.exit ], [ false, %while.body ], [ false, %while.body.1 ], [ false, %while.body.3 ], [ false, %while.body.4 ], [ false, %while.body.5 ], [ false, %while.body.6 ]
179+
ret i1 %retval.1
180+
}
181+
182+
declare i32 @toupper()

0 commit comments

Comments
 (0)