Skip to content

Commit 7cba800

Browse files
committed
[CodeGen] Autogen tests as prerequisite for D42600
Autogenerating tests as suggested in D42600
1 parent 6b55e91 commit 7cba800

File tree

3 files changed

+463
-55
lines changed

3 files changed

+463
-55
lines changed

llvm/test/CodeGen/AArch64/ragreedy-csr.ll

Lines changed: 244 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,10 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
12
; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -regalloc=greedy -regalloc-csr-first-time-cost=15 | FileCheck %s
23

34
; This testing case is reduced from 197.parser prune_match function.
45
; We make sure that we do not use callee-saved registers (x19 to x25).
56
; rdar://16162005
67

7-
; CHECK-LABEL: prune_match:
8-
; CHECK: entry
9-
; CHECK: {{str x30|stp x29, x30}}, [sp
10-
; CHECK-NOT: stp x25,
11-
; CHECK-NOT: stp x23, x24
12-
; CHECK-NOT: stp x21, x22
13-
; CHECK-NOT: stp x19, x20
14-
; CHECK: if.end
15-
; CHECK: return
16-
; CHECK: {{ldr x30|ldp x29, x30}}, [sp
17-
; CHECK-NOT: ldp x19, x20
18-
; CHECK-NOT: ldp x21, x22
19-
; CHECK-NOT: ldp x23, x24
20-
; CHECK-NOT: ldp x25,
21-
228
%struct.List_o_links_struct = type { i32, i32, i32, ptr }
239
%struct.Connector_struct = type { i16, i16, i8, i8, ptr, ptr }
2410
%struct._RuneLocale = type { [8 x i8], [32 x i8], ptr, ptr, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, ptr, i32, i32, ptr }
@@ -33,6 +19,249 @@
3319
@_DefaultRuneLocale = external global %struct._RuneLocale
3420
declare i32 @__maskrune(i32, i64) #7
3521
define fastcc i32 @prune_match(ptr nocapture readonly %a, ptr nocapture readonly %b) #9 {
22+
; CHECK-LABEL: prune_match:
23+
; CHECK: ; %bb.0: ; %entry
24+
; CHECK-NEXT: sub sp, sp, #64
25+
; CHECK-NEXT: .cfi_def_cfa_offset 64
26+
; CHECK-NEXT: stp x29, x30, [sp, #48] ; 16-byte Folded Spill
27+
; CHECK-NEXT: .cfi_offset w30, -8
28+
; CHECK-NEXT: .cfi_offset w29, -16
29+
; CHECK-NEXT: ldrh w8, [x0]
30+
; CHECK-NEXT: ldrh w9, [x1]
31+
; CHECK-NEXT: cmp w8, w9
32+
; CHECK-NEXT: b.ne LBB0_42
33+
; CHECK-NEXT: ; %bb.1: ; %if.end
34+
; CHECK-NEXT: Lloh0:
35+
; CHECK-NEXT: adrp x14, __DefaultRuneLocale@GOTPAGE
36+
; CHECK-NEXT: mov x9, xzr
37+
; CHECK-NEXT: ldrb w12, [x0, #4]
38+
; CHECK-NEXT: ldrb w13, [x1, #4]
39+
; CHECK-NEXT: ldr x10, [x0, #16]
40+
; CHECK-NEXT: ldr x11, [x1, #16]
41+
; CHECK-NEXT: Lloh1:
42+
; CHECK-NEXT: ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]
43+
; CHECK-NEXT: ldrsb x8, [x10, x9]
44+
; CHECK-NEXT: tbz x8, #63, LBB0_3
45+
; CHECK-NEXT: LBB0_2: ; %cond.false.i.i
46+
; CHECK-NEXT: stp x9, x0, [sp, #32] ; 16-byte Folded Spill
47+
; CHECK-NEXT: mov w0, w8
48+
; CHECK-NEXT: mov w1, #32768 ; =0x8000
49+
; CHECK-NEXT: str x10, [sp, #8] ; 8-byte Folded Spill
50+
; CHECK-NEXT: str x11, [sp, #24] ; 8-byte Folded Spill
51+
; CHECK-NEXT: str w12, [sp, #4] ; 4-byte Folded Spill
52+
; CHECK-NEXT: str w13, [sp, #20] ; 4-byte Folded Spill
53+
; CHECK-NEXT: bl ___maskrune
54+
; CHECK-NEXT: Lloh2:
55+
; CHECK-NEXT: adrp x14, __DefaultRuneLocale@GOTPAGE
56+
; CHECK-NEXT: mov w8, w0
57+
; CHECK-NEXT: Lloh3:
58+
; CHECK-NEXT: ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]
59+
; CHECK-NEXT: ldp x11, x9, [sp, #24] ; 16-byte Folded Reload
60+
; CHECK-NEXT: ldr w13, [sp, #20] ; 4-byte Folded Reload
61+
; CHECK-NEXT: ldr w12, [sp, #4] ; 4-byte Folded Reload
62+
; CHECK-NEXT: ldr x10, [sp, #8] ; 8-byte Folded Reload
63+
; CHECK-NEXT: ldr x0, [sp, #40] ; 8-byte Folded Reload
64+
; CHECK-NEXT: cbz w8, LBB0_4
65+
; CHECK-NEXT: b LBB0_6
66+
; CHECK-NEXT: LBB0_3: ; %cond.true.i.i
67+
; CHECK-NEXT: add x8, x14, x8, lsl #2
68+
; CHECK-NEXT: ldr w8, [x8, #60]
69+
; CHECK-NEXT: and w8, w8, #0x8000
70+
; CHECK-NEXT: cbnz w8, LBB0_6
71+
; CHECK-NEXT: LBB0_4: ; %lor.rhs
72+
; CHECK-NEXT: ldrsb x8, [x11, x9]
73+
; CHECK-NEXT: tbnz x8, #63, LBB0_8
74+
; CHECK-NEXT: ; %bb.5: ; %cond.true.i.i217
75+
; CHECK-NEXT: add x8, x14, x8, lsl #2
76+
; CHECK-NEXT: ldr w8, [x8, #60]
77+
; CHECK-NEXT: and w8, w8, #0x8000
78+
; CHECK-NEXT: cbz w8, LBB0_9
79+
; CHECK-NEXT: LBB0_6: ; %while.body
80+
; CHECK-NEXT: ldrb w8, [x10, x9]
81+
; CHECK-NEXT: ldrb w15, [x11, x9]
82+
; CHECK-NEXT: cmp w8, w15
83+
; CHECK-NEXT: b.ne LBB0_42
84+
; CHECK-NEXT: ; %bb.7: ; %if.end17
85+
; CHECK-NEXT: add x9, x9, #1
86+
; CHECK-NEXT: ldrsb x8, [x10, x9]
87+
; CHECK-NEXT: tbz x8, #63, LBB0_3
88+
; CHECK-NEXT: b LBB0_2
89+
; CHECK-NEXT: LBB0_8: ; %cond.false.i.i219
90+
; CHECK-NEXT: stp x9, x0, [sp, #32] ; 16-byte Folded Spill
91+
; CHECK-NEXT: mov w0, w8
92+
; CHECK-NEXT: mov w1, #32768 ; =0x8000
93+
; CHECK-NEXT: str x10, [sp, #8] ; 8-byte Folded Spill
94+
; CHECK-NEXT: str x11, [sp, #24] ; 8-byte Folded Spill
95+
; CHECK-NEXT: str w12, [sp, #4] ; 4-byte Folded Spill
96+
; CHECK-NEXT: str w13, [sp, #20] ; 4-byte Folded Spill
97+
; CHECK-NEXT: bl ___maskrune
98+
; CHECK-NEXT: Lloh4:
99+
; CHECK-NEXT: adrp x14, __DefaultRuneLocale@GOTPAGE
100+
; CHECK-NEXT: mov w8, w0
101+
; CHECK-NEXT: Lloh5:
102+
; CHECK-NEXT: ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]
103+
; CHECK-NEXT: ldp x11, x9, [sp, #24] ; 16-byte Folded Reload
104+
; CHECK-NEXT: ldr w13, [sp, #20] ; 4-byte Folded Reload
105+
; CHECK-NEXT: ldr w12, [sp, #4] ; 4-byte Folded Reload
106+
; CHECK-NEXT: ldr x10, [sp, #8] ; 8-byte Folded Reload
107+
; CHECK-NEXT: ldr x0, [sp, #40] ; 8-byte Folded Reload
108+
; CHECK-NEXT: cbnz w8, LBB0_6
109+
; CHECK-NEXT: LBB0_9: ; %while.end
110+
; CHECK-NEXT: orr w8, w13, w12
111+
; CHECK-NEXT: cbnz w8, LBB0_24
112+
; CHECK-NEXT: ; %bb.10: ; %if.then23
113+
; CHECK-NEXT: ldr x12, [x0, #16]
114+
; CHECK-NEXT: ldrb w8, [x10, x9]
115+
; CHECK-NEXT: ldrb w13, [x12]
116+
; CHECK-NEXT: cmp w13, #83
117+
; CHECK-NEXT: b.eq LBB0_19
118+
; CHECK-NEXT: LBB0_11: ; %while.cond59.preheader
119+
; CHECK-NEXT: cbz w8, LBB0_23
120+
; CHECK-NEXT: LBB0_12: ; %land.rhs.preheader
121+
; CHECK-NEXT: add x10, x10, x9
122+
; CHECK-NEXT: add x9, x11, x9
123+
; CHECK-NEXT: add x10, x10, #1
124+
; CHECK-NEXT: LBB0_13: ; %land.rhs
125+
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
126+
; CHECK-NEXT: ldrb w11, [x9], #1
127+
; CHECK-NEXT: cbz w11, LBB0_23
128+
; CHECK-NEXT: ; %bb.14: ; %while.body66
129+
; CHECK-NEXT: ; in Loop: Header=BB0_13 Depth=1
130+
; CHECK-NEXT: cmp w8, #42
131+
; CHECK-NEXT: b.eq LBB0_18
132+
; CHECK-NEXT: ; %bb.15: ; %while.body66
133+
; CHECK-NEXT: ; in Loop: Header=BB0_13 Depth=1
134+
; CHECK-NEXT: cmp w11, #42
135+
; CHECK-NEXT: b.eq LBB0_18
136+
; CHECK-NEXT: ; %bb.16: ; %lor.lhs.false74
137+
; CHECK-NEXT: ; in Loop: Header=BB0_13 Depth=1
138+
; CHECK-NEXT: mov w0, wzr
139+
; CHECK-NEXT: cmp w8, w11
140+
; CHECK-NEXT: b.ne LBB0_43
141+
; CHECK-NEXT: ; %bb.17: ; %lor.lhs.false74
142+
; CHECK-NEXT: ; in Loop: Header=BB0_13 Depth=1
143+
; CHECK-NEXT: cmp w8, #94
144+
; CHECK-NEXT: b.eq LBB0_43
145+
; CHECK-NEXT: LBB0_18: ; %if.then83
146+
; CHECK-NEXT: ; in Loop: Header=BB0_13 Depth=1
147+
; CHECK-NEXT: ldrb w8, [x10], #1
148+
; CHECK-NEXT: mov w0, #1 ; =0x1
149+
; CHECK-NEXT: cbnz w8, LBB0_13
150+
; CHECK-NEXT: b LBB0_43
151+
; CHECK-NEXT: LBB0_19: ; %land.lhs.true28
152+
; CHECK-NEXT: cbz w8, LBB0_23
153+
; CHECK-NEXT: ; %bb.20: ; %land.lhs.true28
154+
; CHECK-NEXT: cmp w8, #112
155+
; CHECK-NEXT: b.ne LBB0_12
156+
; CHECK-NEXT: ; %bb.21: ; %land.lhs.true35
157+
; CHECK-NEXT: ldrb w13, [x11, x9]
158+
; CHECK-NEXT: cmp w13, #112
159+
; CHECK-NEXT: b.ne LBB0_12
160+
; CHECK-NEXT: ; %bb.22: ; %land.lhs.true43
161+
; CHECK-NEXT: sub x12, x10, x12
162+
; CHECK-NEXT: add x12, x12, x9
163+
; CHECK-NEXT: cmp x12, #1
164+
; CHECK-NEXT: b.ne LBB0_44
165+
; CHECK-NEXT: LBB0_23:
166+
; CHECK-NEXT: mov w0, #1 ; =0x1
167+
; CHECK-NEXT: b LBB0_43
168+
; CHECK-NEXT: LBB0_24: ; %if.else88
169+
; CHECK-NEXT: cmp w12, #1
170+
; CHECK-NEXT: b.ne LBB0_33
171+
; CHECK-NEXT: ; %bb.25: ; %if.else88
172+
; CHECK-NEXT: cmp w13, #2
173+
; CHECK-NEXT: b.ne LBB0_33
174+
; CHECK-NEXT: ; %bb.26: ; %while.cond95.preheader
175+
; CHECK-NEXT: ldrb w12, [x10, x9]
176+
; CHECK-NEXT: cbz w12, LBB0_23
177+
; CHECK-NEXT: ; %bb.27: ; %land.rhs99.preheader
178+
; CHECK-NEXT: mov x8, xzr
179+
; CHECK-NEXT: mov w0, #1 ; =0x1
180+
; CHECK-NEXT: b LBB0_29
181+
; CHECK-NEXT: LBB0_28: ; %if.then117
182+
; CHECK-NEXT: ; in Loop: Header=BB0_29 Depth=1
183+
; CHECK-NEXT: add x12, x10, x8
184+
; CHECK-NEXT: add x8, x8, #1
185+
; CHECK-NEXT: add x12, x12, x9
186+
; CHECK-NEXT: ldrb w12, [x12, #1]
187+
; CHECK-NEXT: cbz w12, LBB0_43
188+
; CHECK-NEXT: LBB0_29: ; %land.rhs99
189+
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
190+
; CHECK-NEXT: add x13, x11, x8
191+
; CHECK-NEXT: ldrb w13, [x13, x9]
192+
; CHECK-NEXT: cbz w13, LBB0_23
193+
; CHECK-NEXT: ; %bb.30: ; %while.body104
194+
; CHECK-NEXT: ; in Loop: Header=BB0_29 Depth=1
195+
; CHECK-NEXT: cmp w12, w13
196+
; CHECK-NEXT: b.eq LBB0_28
197+
; CHECK-NEXT: ; %bb.31: ; %while.body104
198+
; CHECK-NEXT: ; in Loop: Header=BB0_29 Depth=1
199+
; CHECK-NEXT: cmp w12, #42
200+
; CHECK-NEXT: b.eq LBB0_28
201+
; CHECK-NEXT: ; %bb.32: ; %while.body104
202+
; CHECK-NEXT: ; in Loop: Header=BB0_29 Depth=1
203+
; CHECK-NEXT: cmp w13, #94
204+
; CHECK-NEXT: b.eq LBB0_28
205+
; CHECK-NEXT: b LBB0_42
206+
; CHECK-NEXT: LBB0_33: ; %if.else123
207+
; CHECK-NEXT: mov w0, wzr
208+
; CHECK-NEXT: cmp w13, #1
209+
; CHECK-NEXT: b.ne LBB0_43
210+
; CHECK-NEXT: ; %bb.34: ; %if.else123
211+
; CHECK-NEXT: cmp w12, #2
212+
; CHECK-NEXT: b.ne LBB0_43
213+
; CHECK-NEXT: ; %bb.35: ; %while.cond130.preheader
214+
; CHECK-NEXT: ldrb w8, [x10, x9]
215+
; CHECK-NEXT: cbz w8, LBB0_23
216+
; CHECK-NEXT: ; %bb.36: ; %land.rhs134.preheader
217+
; CHECK-NEXT: mov x12, xzr
218+
; CHECK-NEXT: mov w0, #1 ; =0x1
219+
; CHECK-NEXT: b LBB0_38
220+
; CHECK-NEXT: LBB0_37: ; %if.then152
221+
; CHECK-NEXT: ; in Loop: Header=BB0_38 Depth=1
222+
; CHECK-NEXT: add x8, x10, x12
223+
; CHECK-NEXT: add x12, x12, #1
224+
; CHECK-NEXT: add x8, x8, x9
225+
; CHECK-NEXT: ldrb w8, [x8, #1]
226+
; CHECK-NEXT: cbz w8, LBB0_43
227+
; CHECK-NEXT: LBB0_38: ; %land.rhs134
228+
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
229+
; CHECK-NEXT: add x13, x11, x12
230+
; CHECK-NEXT: ldrb w13, [x13, x9]
231+
; CHECK-NEXT: cbz w13, LBB0_23
232+
; CHECK-NEXT: ; %bb.39: ; %while.body139
233+
; CHECK-NEXT: ; in Loop: Header=BB0_38 Depth=1
234+
; CHECK-NEXT: cmp w8, w13
235+
; CHECK-NEXT: b.eq LBB0_37
236+
; CHECK-NEXT: ; %bb.40: ; %while.body139
237+
; CHECK-NEXT: ; in Loop: Header=BB0_38 Depth=1
238+
; CHECK-NEXT: cmp w13, #42
239+
; CHECK-NEXT: b.eq LBB0_37
240+
; CHECK-NEXT: ; %bb.41: ; %while.body139
241+
; CHECK-NEXT: ; in Loop: Header=BB0_38 Depth=1
242+
; CHECK-NEXT: cmp w8, #94
243+
; CHECK-NEXT: b.eq LBB0_37
244+
; CHECK-NEXT: LBB0_42:
245+
; CHECK-NEXT: mov w0, wzr
246+
; CHECK-NEXT: LBB0_43: ; %return
247+
; CHECK-NEXT: ldp x29, x30, [sp, #48] ; 16-byte Folded Reload
248+
; CHECK-NEXT: add sp, sp, #64
249+
; CHECK-NEXT: ret
250+
; CHECK-NEXT: LBB0_44: ; %lor.lhs.false47
251+
; CHECK-NEXT: cmp x12, #2
252+
; CHECK-NEXT: b.ne LBB0_11
253+
; CHECK-NEXT: ; %bb.45: ; %land.lhs.true52
254+
; CHECK-NEXT: add x12, x10, x9
255+
; CHECK-NEXT: mov w0, #1 ; =0x1
256+
; CHECK-NEXT: ldurb w12, [x12, #-1]
257+
; CHECK-NEXT: cmp w12, #73
258+
; CHECK-NEXT: b.eq LBB0_43
259+
; CHECK-NEXT: ; %bb.46: ; %land.lhs.true52
260+
; CHECK-NEXT: cbz w8, LBB0_43
261+
; CHECK-NEXT: b LBB0_12
262+
; CHECK-NEXT: .loh AdrpLdrGot Lloh0, Lloh1
263+
; CHECK-NEXT: .loh AdrpLdrGot Lloh2, Lloh3
264+
; CHECK-NEXT: .loh AdrpLdrGot Lloh4, Lloh5
36265
entry:
37266
%0 = load i16, ptr %a, align 2
38267
%1 = load i16, ptr %b, align 2

0 commit comments

Comments
 (0)