[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / branch-relaxation-rv64.ll
blob23a862ec580ec278fe6ad3c21ab1d4f13a853fcb
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs -filetype=obj < %s \
3 ; RUN:   -o /dev/null 2>&1
4 ; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs \
5 ; RUN:   -filetype=obj < %s -o /dev/null 2>&1
6 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
7 ; RUN:   | FileCheck %s
8 ; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs < %s \
9 ; RUN:   | FileCheck %s
11 define void @relax_bcc(i1 %a) nounwind {
12 ; CHECK-LABEL: relax_bcc:
13 ; CHECK:       # %bb.0:
14 ; CHECK-NEXT:    andi a0, a0, 1
15 ; CHECK-NEXT:    bnez a0, .LBB0_1
16 ; CHECK-NEXT:    j .LBB0_2
17 ; CHECK-NEXT:  .LBB0_1: # %iftrue
18 ; CHECK-NEXT:    #APP
19 ; CHECK-NEXT:    .zero 4096
20 ; CHECK-NEXT:    #NO_APP
21 ; CHECK-NEXT:  .LBB0_2: # %tail
22 ; CHECK-NEXT:    ret
23   br i1 %a, label %iftrue, label %tail
25 iftrue:
26   call void asm sideeffect ".space 4096", ""()
27   br label %tail
29 tail:
30   ret void
33 define i32 @relax_jal(i1 %a) nounwind {
34 ; CHECK-LABEL: relax_jal:
35 ; CHECK:       # %bb.0:
36 ; CHECK-NEXT:    addi sp, sp, -16
37 ; CHECK-NEXT:    andi a0, a0, 1
38 ; CHECK-NEXT:    bnez a0, .LBB1_1
39 ; CHECK-NEXT:  # %bb.4:
40 ; CHECK-NEXT:    jump .LBB1_2, a0
41 ; CHECK-NEXT:  .LBB1_1: # %iftrue
42 ; CHECK-NEXT:    #APP
43 ; CHECK-NEXT:    #NO_APP
44 ; CHECK-NEXT:    #APP
45 ; CHECK-NEXT:    .zero 1048576
46 ; CHECK-NEXT:    #NO_APP
47 ; CHECK-NEXT:    j .LBB1_3
48 ; CHECK-NEXT:  .LBB1_2: # %jmp
49 ; CHECK-NEXT:    #APP
50 ; CHECK-NEXT:    #NO_APP
51 ; CHECK-NEXT:  .LBB1_3: # %tail
52 ; CHECK-NEXT:    li a0, 1
53 ; CHECK-NEXT:    addi sp, sp, 16
54 ; CHECK-NEXT:    ret
55   br i1 %a, label %iftrue, label %jmp
57 jmp:
58   call void asm sideeffect "", ""()
59   br label %tail
61 iftrue:
62   call void asm sideeffect "", ""()
63   br label %space
65 space:
66   call void asm sideeffect ".space 1048576", ""()
67   br label %tail
69 tail:
70   ret i32 1
74 define void @relax_jal_spill_64() {
76 ; CHECK-LABEL: relax_jal_spill_64:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    addi sp, sp, -112
79 ; CHECK-NEXT:    .cfi_def_cfa_offset 112
80 ; CHECK-NEXT:    sd ra, 104(sp) # 8-byte Folded Spill
81 ; CHECK-NEXT:    sd s0, 96(sp) # 8-byte Folded Spill
82 ; CHECK-NEXT:    sd s1, 88(sp) # 8-byte Folded Spill
83 ; CHECK-NEXT:    sd s2, 80(sp) # 8-byte Folded Spill
84 ; CHECK-NEXT:    sd s3, 72(sp) # 8-byte Folded Spill
85 ; CHECK-NEXT:    sd s4, 64(sp) # 8-byte Folded Spill
86 ; CHECK-NEXT:    sd s5, 56(sp) # 8-byte Folded Spill
87 ; CHECK-NEXT:    sd s6, 48(sp) # 8-byte Folded Spill
88 ; CHECK-NEXT:    sd s7, 40(sp) # 8-byte Folded Spill
89 ; CHECK-NEXT:    sd s8, 32(sp) # 8-byte Folded Spill
90 ; CHECK-NEXT:    sd s9, 24(sp) # 8-byte Folded Spill
91 ; CHECK-NEXT:    sd s10, 16(sp) # 8-byte Folded Spill
92 ; CHECK-NEXT:    sd s11, 8(sp) # 8-byte Folded Spill
93 ; CHECK-NEXT:    .cfi_offset ra, -8
94 ; CHECK-NEXT:    .cfi_offset s0, -16
95 ; CHECK-NEXT:    .cfi_offset s1, -24
96 ; CHECK-NEXT:    .cfi_offset s2, -32
97 ; CHECK-NEXT:    .cfi_offset s3, -40
98 ; CHECK-NEXT:    .cfi_offset s4, -48
99 ; CHECK-NEXT:    .cfi_offset s5, -56
100 ; CHECK-NEXT:    .cfi_offset s6, -64
101 ; CHECK-NEXT:    .cfi_offset s7, -72
102 ; CHECK-NEXT:    .cfi_offset s8, -80
103 ; CHECK-NEXT:    .cfi_offset s9, -88
104 ; CHECK-NEXT:    .cfi_offset s10, -96
105 ; CHECK-NEXT:    .cfi_offset s11, -104
106 ; CHECK-NEXT:    #APP
107 ; CHECK-NEXT:    li ra, 1
108 ; CHECK-NEXT:    #NO_APP
109 ; CHECK-NEXT:    #APP
110 ; CHECK-NEXT:    li t0, 5
111 ; CHECK-NEXT:    #NO_APP
112 ; CHECK-NEXT:    #APP
113 ; CHECK-NEXT:    li t1, 6
114 ; CHECK-NEXT:    #NO_APP
115 ; CHECK-NEXT:    #APP
116 ; CHECK-NEXT:    li t2, 7
117 ; CHECK-NEXT:    #NO_APP
118 ; CHECK-NEXT:    #APP
119 ; CHECK-NEXT:    li s0, 8
120 ; CHECK-NEXT:    #NO_APP
121 ; CHECK-NEXT:    #APP
122 ; CHECK-NEXT:    li s1, 9
123 ; CHECK-NEXT:    #NO_APP
124 ; CHECK-NEXT:    #APP
125 ; CHECK-NEXT:    li a0, 10
126 ; CHECK-NEXT:    #NO_APP
127 ; CHECK-NEXT:    #APP
128 ; CHECK-NEXT:    li a1, 11
129 ; CHECK-NEXT:    #NO_APP
130 ; CHECK-NEXT:    #APP
131 ; CHECK-NEXT:    li a2, 12
132 ; CHECK-NEXT:    #NO_APP
133 ; CHECK-NEXT:    #APP
134 ; CHECK-NEXT:    li a3, 13
135 ; CHECK-NEXT:    #NO_APP
136 ; CHECK-NEXT:    #APP
137 ; CHECK-NEXT:    li a4, 14
138 ; CHECK-NEXT:    #NO_APP
139 ; CHECK-NEXT:    #APP
140 ; CHECK-NEXT:    li a5, 15
141 ; CHECK-NEXT:    #NO_APP
142 ; CHECK-NEXT:    #APP
143 ; CHECK-NEXT:    li a6, 16
144 ; CHECK-NEXT:    #NO_APP
145 ; CHECK-NEXT:    #APP
146 ; CHECK-NEXT:    li a7, 17
147 ; CHECK-NEXT:    #NO_APP
148 ; CHECK-NEXT:    #APP
149 ; CHECK-NEXT:    li s2, 18
150 ; CHECK-NEXT:    #NO_APP
151 ; CHECK-NEXT:    #APP
152 ; CHECK-NEXT:    li s3, 19
153 ; CHECK-NEXT:    #NO_APP
154 ; CHECK-NEXT:    #APP
155 ; CHECK-NEXT:    li s4, 20
156 ; CHECK-NEXT:    #NO_APP
157 ; CHECK-NEXT:    #APP
158 ; CHECK-NEXT:    li s5, 21
159 ; CHECK-NEXT:    #NO_APP
160 ; CHECK-NEXT:    #APP
161 ; CHECK-NEXT:    li s6, 22
162 ; CHECK-NEXT:    #NO_APP
163 ; CHECK-NEXT:    #APP
164 ; CHECK-NEXT:    li s7, 23
165 ; CHECK-NEXT:    #NO_APP
166 ; CHECK-NEXT:    #APP
167 ; CHECK-NEXT:    li s8, 24
168 ; CHECK-NEXT:    #NO_APP
169 ; CHECK-NEXT:    #APP
170 ; CHECK-NEXT:    li s9, 25
171 ; CHECK-NEXT:    #NO_APP
172 ; CHECK-NEXT:    #APP
173 ; CHECK-NEXT:    li s10, 26
174 ; CHECK-NEXT:    #NO_APP
175 ; CHECK-NEXT:    #APP
176 ; CHECK-NEXT:    li s11, 27
177 ; CHECK-NEXT:    #NO_APP
178 ; CHECK-NEXT:    #APP
179 ; CHECK-NEXT:    li t3, 28
180 ; CHECK-NEXT:    #NO_APP
181 ; CHECK-NEXT:    #APP
182 ; CHECK-NEXT:    li t4, 29
183 ; CHECK-NEXT:    #NO_APP
184 ; CHECK-NEXT:    #APP
185 ; CHECK-NEXT:    li t5, 30
186 ; CHECK-NEXT:    #NO_APP
187 ; CHECK-NEXT:    #APP
188 ; CHECK-NEXT:    li t6, 31
189 ; CHECK-NEXT:    #NO_APP
190 ; CHECK-NEXT:    beq t5, t6, .LBB2_1
191 ; CHECK-NEXT:  # %bb.3:
192 ; CHECK-NEXT:    sd s11, 0(sp)
193 ; CHECK-NEXT:    jump .LBB2_4, s11
194 ; CHECK-NEXT:  .LBB2_1: # %branch_1
195 ; CHECK-NEXT:    #APP
196 ; CHECK-NEXT:    .zero 1048576
197 ; CHECK-NEXT:    #NO_APP
198 ; CHECK-NEXT:    j .LBB2_2
199 ; CHECK-NEXT:  .LBB2_4: # %branch_2
200 ; CHECK-NEXT:    ld s11, 0(sp)
201 ; CHECK-NEXT:  .LBB2_2: # %branch_2
202 ; CHECK-NEXT:    #APP
203 ; CHECK-NEXT:    # reg use ra
204 ; CHECK-NEXT:    #NO_APP
205 ; CHECK-NEXT:    #APP
206 ; CHECK-NEXT:    # reg use t0
207 ; CHECK-NEXT:    #NO_APP
208 ; CHECK-NEXT:    #APP
209 ; CHECK-NEXT:    # reg use t1
210 ; CHECK-NEXT:    #NO_APP
211 ; CHECK-NEXT:    #APP
212 ; CHECK-NEXT:    # reg use t2
213 ; CHECK-NEXT:    #NO_APP
214 ; CHECK-NEXT:    #APP
215 ; CHECK-NEXT:    # reg use s0
216 ; CHECK-NEXT:    #NO_APP
217 ; CHECK-NEXT:    #APP
218 ; CHECK-NEXT:    # reg use s1
219 ; CHECK-NEXT:    #NO_APP
220 ; CHECK-NEXT:    #APP
221 ; CHECK-NEXT:    # reg use a0
222 ; CHECK-NEXT:    #NO_APP
223 ; CHECK-NEXT:    #APP
224 ; CHECK-NEXT:    # reg use a1
225 ; CHECK-NEXT:    #NO_APP
226 ; CHECK-NEXT:    #APP
227 ; CHECK-NEXT:    # reg use a2
228 ; CHECK-NEXT:    #NO_APP
229 ; CHECK-NEXT:    #APP
230 ; CHECK-NEXT:    # reg use a3
231 ; CHECK-NEXT:    #NO_APP
232 ; CHECK-NEXT:    #APP
233 ; CHECK-NEXT:    # reg use a4
234 ; CHECK-NEXT:    #NO_APP
235 ; CHECK-NEXT:    #APP
236 ; CHECK-NEXT:    # reg use a5
237 ; CHECK-NEXT:    #NO_APP
238 ; CHECK-NEXT:    #APP
239 ; CHECK-NEXT:    # reg use a6
240 ; CHECK-NEXT:    #NO_APP
241 ; CHECK-NEXT:    #APP
242 ; CHECK-NEXT:    # reg use a7
243 ; CHECK-NEXT:    #NO_APP
244 ; CHECK-NEXT:    #APP
245 ; CHECK-NEXT:    # reg use s2
246 ; CHECK-NEXT:    #NO_APP
247 ; CHECK-NEXT:    #APP
248 ; CHECK-NEXT:    # reg use s3
249 ; CHECK-NEXT:    #NO_APP
250 ; CHECK-NEXT:    #APP
251 ; CHECK-NEXT:    # reg use s4
252 ; CHECK-NEXT:    #NO_APP
253 ; CHECK-NEXT:    #APP
254 ; CHECK-NEXT:    # reg use s5
255 ; CHECK-NEXT:    #NO_APP
256 ; CHECK-NEXT:    #APP
257 ; CHECK-NEXT:    # reg use s6
258 ; CHECK-NEXT:    #NO_APP
259 ; CHECK-NEXT:    #APP
260 ; CHECK-NEXT:    # reg use s7
261 ; CHECK-NEXT:    #NO_APP
262 ; CHECK-NEXT:    #APP
263 ; CHECK-NEXT:    # reg use s8
264 ; CHECK-NEXT:    #NO_APP
265 ; CHECK-NEXT:    #APP
266 ; CHECK-NEXT:    # reg use s9
267 ; CHECK-NEXT:    #NO_APP
268 ; CHECK-NEXT:    #APP
269 ; CHECK-NEXT:    # reg use s10
270 ; CHECK-NEXT:    #NO_APP
271 ; CHECK-NEXT:    #APP
272 ; CHECK-NEXT:    # reg use s11
273 ; CHECK-NEXT:    #NO_APP
274 ; CHECK-NEXT:    #APP
275 ; CHECK-NEXT:    # reg use t3
276 ; CHECK-NEXT:    #NO_APP
277 ; CHECK-NEXT:    #APP
278 ; CHECK-NEXT:    # reg use t4
279 ; CHECK-NEXT:    #NO_APP
280 ; CHECK-NEXT:    #APP
281 ; CHECK-NEXT:    # reg use t5
282 ; CHECK-NEXT:    #NO_APP
283 ; CHECK-NEXT:    #APP
284 ; CHECK-NEXT:    # reg use t6
285 ; CHECK-NEXT:    #NO_APP
286 ; CHECK-NEXT:    ld ra, 104(sp) # 8-byte Folded Reload
287 ; CHECK-NEXT:    ld s0, 96(sp) # 8-byte Folded Reload
288 ; CHECK-NEXT:    ld s1, 88(sp) # 8-byte Folded Reload
289 ; CHECK-NEXT:    ld s2, 80(sp) # 8-byte Folded Reload
290 ; CHECK-NEXT:    ld s3, 72(sp) # 8-byte Folded Reload
291 ; CHECK-NEXT:    ld s4, 64(sp) # 8-byte Folded Reload
292 ; CHECK-NEXT:    ld s5, 56(sp) # 8-byte Folded Reload
293 ; CHECK-NEXT:    ld s6, 48(sp) # 8-byte Folded Reload
294 ; CHECK-NEXT:    ld s7, 40(sp) # 8-byte Folded Reload
295 ; CHECK-NEXT:    ld s8, 32(sp) # 8-byte Folded Reload
296 ; CHECK-NEXT:    ld s9, 24(sp) # 8-byte Folded Reload
297 ; CHECK-NEXT:    ld s10, 16(sp) # 8-byte Folded Reload
298 ; CHECK-NEXT:    ld s11, 8(sp) # 8-byte Folded Reload
299 ; CHECK-NEXT:    .cfi_restore ra
300 ; CHECK-NEXT:    .cfi_restore s0
301 ; CHECK-NEXT:    .cfi_restore s1
302 ; CHECK-NEXT:    .cfi_restore s2
303 ; CHECK-NEXT:    .cfi_restore s3
304 ; CHECK-NEXT:    .cfi_restore s4
305 ; CHECK-NEXT:    .cfi_restore s5
306 ; CHECK-NEXT:    .cfi_restore s6
307 ; CHECK-NEXT:    .cfi_restore s7
308 ; CHECK-NEXT:    .cfi_restore s8
309 ; CHECK-NEXT:    .cfi_restore s9
310 ; CHECK-NEXT:    .cfi_restore s10
311 ; CHECK-NEXT:    .cfi_restore s11
312 ; CHECK-NEXT:    addi sp, sp, 112
313 ; CHECK-NEXT:    .cfi_def_cfa_offset 0
314 ; CHECK-NEXT:    ret
315   %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"()
316   %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"()
317   %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"()
318   %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"()
319   %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"()
320   %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"()
321   %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"()
322   %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"()
323   %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"()
324   %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"()
325   %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"()
326   %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"()
327   %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"()
328   %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"()
329   %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"()
330   %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"()
331   %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"()
332   %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"()
333   %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"()
334   %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"()
335   %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"()
336   %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"()
337   %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"()
338   %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"()
339   %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"()
340   %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"()
341   %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"()
342   %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"()
344   %cmp = icmp eq i64 %t5, %t6
345   br i1 %cmp, label %branch_1, label %branch_2
347 branch_1:
348   call void asm sideeffect ".space 1048576", ""()
349   br label %branch_2
351 branch_2:
352   call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra)
353   call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0)
354   call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1)
355   call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2)
356   call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0)
357   call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1)
358   call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0)
359   call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1)
360   call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2)
361   call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3)
362   call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4)
363   call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5)
364   call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6)
365   call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7)
366   call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2)
367   call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3)
368   call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4)
369   call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5)
370   call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6)
371   call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7)
372   call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8)
373   call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9)
374   call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10)
375   call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11)
376   call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3)
377   call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4)
378   call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5)
379   call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6)
381   ret void
384 define void @relax_jal_spill_64_adjust_spill_slot() {
386   ; If the stack is large and the offset of BranchRelaxationScratchFrameIndex
387   ; is out the range of 12-bit signed integer, check whether the spill slot is
388   ; adjusted to close to the stack base register.
389 ; CHECK-LABEL: relax_jal_spill_64_adjust_spill_slot:
390 ; CHECK:       # %bb.0:
391 ; CHECK-NEXT:    addi sp, sp, -2032
392 ; CHECK-NEXT:    .cfi_def_cfa_offset 2032
393 ; CHECK-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
394 ; CHECK-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill
395 ; CHECK-NEXT:    sd s1, 2008(sp) # 8-byte Folded Spill
396 ; CHECK-NEXT:    sd s2, 2000(sp) # 8-byte Folded Spill
397 ; CHECK-NEXT:    sd s3, 1992(sp) # 8-byte Folded Spill
398 ; CHECK-NEXT:    sd s4, 1984(sp) # 8-byte Folded Spill
399 ; CHECK-NEXT:    sd s5, 1976(sp) # 8-byte Folded Spill
400 ; CHECK-NEXT:    sd s6, 1968(sp) # 8-byte Folded Spill
401 ; CHECK-NEXT:    sd s7, 1960(sp) # 8-byte Folded Spill
402 ; CHECK-NEXT:    sd s8, 1952(sp) # 8-byte Folded Spill
403 ; CHECK-NEXT:    sd s9, 1944(sp) # 8-byte Folded Spill
404 ; CHECK-NEXT:    sd s10, 1936(sp) # 8-byte Folded Spill
405 ; CHECK-NEXT:    sd s11, 1928(sp) # 8-byte Folded Spill
406 ; CHECK-NEXT:    .cfi_offset ra, -8
407 ; CHECK-NEXT:    .cfi_offset s0, -16
408 ; CHECK-NEXT:    .cfi_offset s1, -24
409 ; CHECK-NEXT:    .cfi_offset s2, -32
410 ; CHECK-NEXT:    .cfi_offset s3, -40
411 ; CHECK-NEXT:    .cfi_offset s4, -48
412 ; CHECK-NEXT:    .cfi_offset s5, -56
413 ; CHECK-NEXT:    .cfi_offset s6, -64
414 ; CHECK-NEXT:    .cfi_offset s7, -72
415 ; CHECK-NEXT:    .cfi_offset s8, -80
416 ; CHECK-NEXT:    .cfi_offset s9, -88
417 ; CHECK-NEXT:    .cfi_offset s10, -96
418 ; CHECK-NEXT:    .cfi_offset s11, -104
419 ; CHECK-NEXT:    addi s0, sp, 2032
420 ; CHECK-NEXT:    .cfi_def_cfa s0, 0
421 ; CHECK-NEXT:    lui a0, 2
422 ; CHECK-NEXT:    addiw a0, a0, -2032
423 ; CHECK-NEXT:    sub sp, sp, a0
424 ; CHECK-NEXT:    srli a0, sp, 12
425 ; CHECK-NEXT:    slli sp, a0, 12
426 ; CHECK-NEXT:    #APP
427 ; CHECK-NEXT:    li ra, 1
428 ; CHECK-NEXT:    #NO_APP
429 ; CHECK-NEXT:    #APP
430 ; CHECK-NEXT:    li t0, 5
431 ; CHECK-NEXT:    #NO_APP
432 ; CHECK-NEXT:    #APP
433 ; CHECK-NEXT:    li t1, 6
434 ; CHECK-NEXT:    #NO_APP
435 ; CHECK-NEXT:    #APP
436 ; CHECK-NEXT:    li t2, 7
437 ; CHECK-NEXT:    #NO_APP
438 ; CHECK-NEXT:    #APP
439 ; CHECK-NEXT:    li s0, 8
440 ; CHECK-NEXT:    #NO_APP
441 ; CHECK-NEXT:    #APP
442 ; CHECK-NEXT:    li s1, 9
443 ; CHECK-NEXT:    #NO_APP
444 ; CHECK-NEXT:    #APP
445 ; CHECK-NEXT:    li a0, 10
446 ; CHECK-NEXT:    #NO_APP
447 ; CHECK-NEXT:    #APP
448 ; CHECK-NEXT:    li a1, 11
449 ; CHECK-NEXT:    #NO_APP
450 ; CHECK-NEXT:    #APP
451 ; CHECK-NEXT:    li a2, 12
452 ; CHECK-NEXT:    #NO_APP
453 ; CHECK-NEXT:    #APP
454 ; CHECK-NEXT:    li a3, 13
455 ; CHECK-NEXT:    #NO_APP
456 ; CHECK-NEXT:    #APP
457 ; CHECK-NEXT:    li a4, 14
458 ; CHECK-NEXT:    #NO_APP
459 ; CHECK-NEXT:    #APP
460 ; CHECK-NEXT:    li a5, 15
461 ; CHECK-NEXT:    #NO_APP
462 ; CHECK-NEXT:    #APP
463 ; CHECK-NEXT:    li a6, 16
464 ; CHECK-NEXT:    #NO_APP
465 ; CHECK-NEXT:    #APP
466 ; CHECK-NEXT:    li a7, 17
467 ; CHECK-NEXT:    #NO_APP
468 ; CHECK-NEXT:    #APP
469 ; CHECK-NEXT:    li s2, 18
470 ; CHECK-NEXT:    #NO_APP
471 ; CHECK-NEXT:    #APP
472 ; CHECK-NEXT:    li s3, 19
473 ; CHECK-NEXT:    #NO_APP
474 ; CHECK-NEXT:    #APP
475 ; CHECK-NEXT:    li s4, 20
476 ; CHECK-NEXT:    #NO_APP
477 ; CHECK-NEXT:    #APP
478 ; CHECK-NEXT:    li s5, 21
479 ; CHECK-NEXT:    #NO_APP
480 ; CHECK-NEXT:    #APP
481 ; CHECK-NEXT:    li s6, 22
482 ; CHECK-NEXT:    #NO_APP
483 ; CHECK-NEXT:    #APP
484 ; CHECK-NEXT:    li s7, 23
485 ; CHECK-NEXT:    #NO_APP
486 ; CHECK-NEXT:    #APP
487 ; CHECK-NEXT:    li s8, 24
488 ; CHECK-NEXT:    #NO_APP
489 ; CHECK-NEXT:    #APP
490 ; CHECK-NEXT:    li s9, 25
491 ; CHECK-NEXT:    #NO_APP
492 ; CHECK-NEXT:    #APP
493 ; CHECK-NEXT:    li s10, 26
494 ; CHECK-NEXT:    #NO_APP
495 ; CHECK-NEXT:    #APP
496 ; CHECK-NEXT:    li s11, 27
497 ; CHECK-NEXT:    #NO_APP
498 ; CHECK-NEXT:    #APP
499 ; CHECK-NEXT:    li t3, 28
500 ; CHECK-NEXT:    #NO_APP
501 ; CHECK-NEXT:    #APP
502 ; CHECK-NEXT:    li t4, 29
503 ; CHECK-NEXT:    #NO_APP
504 ; CHECK-NEXT:    #APP
505 ; CHECK-NEXT:    li t5, 30
506 ; CHECK-NEXT:    #NO_APP
507 ; CHECK-NEXT:    #APP
508 ; CHECK-NEXT:    li t6, 31
509 ; CHECK-NEXT:    #NO_APP
510 ; CHECK-NEXT:    beq t5, t6, .LBB3_1
511 ; CHECK-NEXT:  # %bb.3:
512 ; CHECK-NEXT:    sd s11, 0(sp)
513 ; CHECK-NEXT:    jump .LBB3_4, s11
514 ; CHECK-NEXT:  .LBB3_1: # %branch_1
515 ; CHECK-NEXT:    #APP
516 ; CHECK-NEXT:    .zero 1048576
517 ; CHECK-NEXT:    #NO_APP
518 ; CHECK-NEXT:    j .LBB3_2
519 ; CHECK-NEXT:  .LBB3_4: # %branch_2
520 ; CHECK-NEXT:    ld s11, 0(sp)
521 ; CHECK-NEXT:  .LBB3_2: # %branch_2
522 ; CHECK-NEXT:    #APP
523 ; CHECK-NEXT:    # reg use ra
524 ; CHECK-NEXT:    #NO_APP
525 ; CHECK-NEXT:    #APP
526 ; CHECK-NEXT:    # reg use t0
527 ; CHECK-NEXT:    #NO_APP
528 ; CHECK-NEXT:    #APP
529 ; CHECK-NEXT:    # reg use t1
530 ; CHECK-NEXT:    #NO_APP
531 ; CHECK-NEXT:    #APP
532 ; CHECK-NEXT:    # reg use t2
533 ; CHECK-NEXT:    #NO_APP
534 ; CHECK-NEXT:    #APP
535 ; CHECK-NEXT:    # reg use s0
536 ; CHECK-NEXT:    #NO_APP
537 ; CHECK-NEXT:    #APP
538 ; CHECK-NEXT:    # reg use s1
539 ; CHECK-NEXT:    #NO_APP
540 ; CHECK-NEXT:    #APP
541 ; CHECK-NEXT:    # reg use a0
542 ; CHECK-NEXT:    #NO_APP
543 ; CHECK-NEXT:    #APP
544 ; CHECK-NEXT:    # reg use a1
545 ; CHECK-NEXT:    #NO_APP
546 ; CHECK-NEXT:    #APP
547 ; CHECK-NEXT:    # reg use a2
548 ; CHECK-NEXT:    #NO_APP
549 ; CHECK-NEXT:    #APP
550 ; CHECK-NEXT:    # reg use a3
551 ; CHECK-NEXT:    #NO_APP
552 ; CHECK-NEXT:    #APP
553 ; CHECK-NEXT:    # reg use a4
554 ; CHECK-NEXT:    #NO_APP
555 ; CHECK-NEXT:    #APP
556 ; CHECK-NEXT:    # reg use a5
557 ; CHECK-NEXT:    #NO_APP
558 ; CHECK-NEXT:    #APP
559 ; CHECK-NEXT:    # reg use a6
560 ; CHECK-NEXT:    #NO_APP
561 ; CHECK-NEXT:    #APP
562 ; CHECK-NEXT:    # reg use a7
563 ; CHECK-NEXT:    #NO_APP
564 ; CHECK-NEXT:    #APP
565 ; CHECK-NEXT:    # reg use s2
566 ; CHECK-NEXT:    #NO_APP
567 ; CHECK-NEXT:    #APP
568 ; CHECK-NEXT:    # reg use s3
569 ; CHECK-NEXT:    #NO_APP
570 ; CHECK-NEXT:    #APP
571 ; CHECK-NEXT:    # reg use s4
572 ; CHECK-NEXT:    #NO_APP
573 ; CHECK-NEXT:    #APP
574 ; CHECK-NEXT:    # reg use s5
575 ; CHECK-NEXT:    #NO_APP
576 ; CHECK-NEXT:    #APP
577 ; CHECK-NEXT:    # reg use s6
578 ; CHECK-NEXT:    #NO_APP
579 ; CHECK-NEXT:    #APP
580 ; CHECK-NEXT:    # reg use s7
581 ; CHECK-NEXT:    #NO_APP
582 ; CHECK-NEXT:    #APP
583 ; CHECK-NEXT:    # reg use s8
584 ; CHECK-NEXT:    #NO_APP
585 ; CHECK-NEXT:    #APP
586 ; CHECK-NEXT:    # reg use s9
587 ; CHECK-NEXT:    #NO_APP
588 ; CHECK-NEXT:    #APP
589 ; CHECK-NEXT:    # reg use s10
590 ; CHECK-NEXT:    #NO_APP
591 ; CHECK-NEXT:    #APP
592 ; CHECK-NEXT:    # reg use s11
593 ; CHECK-NEXT:    #NO_APP
594 ; CHECK-NEXT:    #APP
595 ; CHECK-NEXT:    # reg use t3
596 ; CHECK-NEXT:    #NO_APP
597 ; CHECK-NEXT:    #APP
598 ; CHECK-NEXT:    # reg use t4
599 ; CHECK-NEXT:    #NO_APP
600 ; CHECK-NEXT:    #APP
601 ; CHECK-NEXT:    # reg use t5
602 ; CHECK-NEXT:    #NO_APP
603 ; CHECK-NEXT:    #APP
604 ; CHECK-NEXT:    # reg use t6
605 ; CHECK-NEXT:    #NO_APP
606 ; CHECK-NEXT:    addi sp, s0, -2032
607 ; CHECK-NEXT:    .cfi_def_cfa sp, 2032
608 ; CHECK-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
609 ; CHECK-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload
610 ; CHECK-NEXT:    ld s1, 2008(sp) # 8-byte Folded Reload
611 ; CHECK-NEXT:    ld s2, 2000(sp) # 8-byte Folded Reload
612 ; CHECK-NEXT:    ld s3, 1992(sp) # 8-byte Folded Reload
613 ; CHECK-NEXT:    ld s4, 1984(sp) # 8-byte Folded Reload
614 ; CHECK-NEXT:    ld s5, 1976(sp) # 8-byte Folded Reload
615 ; CHECK-NEXT:    ld s6, 1968(sp) # 8-byte Folded Reload
616 ; CHECK-NEXT:    ld s7, 1960(sp) # 8-byte Folded Reload
617 ; CHECK-NEXT:    ld s8, 1952(sp) # 8-byte Folded Reload
618 ; CHECK-NEXT:    ld s9, 1944(sp) # 8-byte Folded Reload
619 ; CHECK-NEXT:    ld s10, 1936(sp) # 8-byte Folded Reload
620 ; CHECK-NEXT:    ld s11, 1928(sp) # 8-byte Folded Reload
621 ; CHECK-NEXT:    .cfi_restore ra
622 ; CHECK-NEXT:    .cfi_restore s0
623 ; CHECK-NEXT:    .cfi_restore s1
624 ; CHECK-NEXT:    .cfi_restore s2
625 ; CHECK-NEXT:    .cfi_restore s3
626 ; CHECK-NEXT:    .cfi_restore s4
627 ; CHECK-NEXT:    .cfi_restore s5
628 ; CHECK-NEXT:    .cfi_restore s6
629 ; CHECK-NEXT:    .cfi_restore s7
630 ; CHECK-NEXT:    .cfi_restore s8
631 ; CHECK-NEXT:    .cfi_restore s9
632 ; CHECK-NEXT:    .cfi_restore s10
633 ; CHECK-NEXT:    .cfi_restore s11
634 ; CHECK-NEXT:    addi sp, sp, 2032
635 ; CHECK-NEXT:    .cfi_def_cfa_offset 0
636 ; CHECK-NEXT:    ret
637   %stack_obj = alloca i64, align 4096
639   %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"()
640   %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"()
641   %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"()
642   %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"()
643   %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"()
644   %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"()
645   %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"()
646   %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"()
647   %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"()
648   %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"()
649   %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"()
650   %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"()
651   %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"()
652   %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"()
653   %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"()
654   %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"()
655   %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"()
656   %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"()
657   %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"()
658   %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"()
659   %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"()
660   %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"()
661   %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"()
662   %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"()
663   %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"()
664   %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"()
665   %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"()
666   %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"()
668   %cmp = icmp eq i64 %t5, %t6
669   br i1 %cmp, label %branch_1, label %branch_2
671 branch_1:
672   call void asm sideeffect ".space 1048576", ""()
673   br label %branch_2
675 branch_2:
676   call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra)
677   call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0)
678   call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1)
679   call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2)
680   call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0)
681   call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1)
682   call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0)
683   call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1)
684   call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2)
685   call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3)
686   call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4)
687   call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5)
688   call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6)
689   call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7)
690   call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2)
691   call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3)
692   call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4)
693   call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5)
694   call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6)
695   call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7)
696   call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8)
697   call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9)
698   call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10)
699   call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11)
700   call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3)
701   call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4)
702   call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5)
703   call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6)
705   ret void
708 define void @relax_jal_spill_64_restore_block_correspondence() {
710 ; CHECK-LABEL: relax_jal_spill_64_restore_block_correspondence:
711 ; CHECK:       # %bb.0: # %entry
712 ; CHECK-NEXT:    addi sp, sp, -112
713 ; CHECK-NEXT:    .cfi_def_cfa_offset 112
714 ; CHECK-NEXT:    sd ra, 104(sp) # 8-byte Folded Spill
715 ; CHECK-NEXT:    sd s0, 96(sp) # 8-byte Folded Spill
716 ; CHECK-NEXT:    sd s1, 88(sp) # 8-byte Folded Spill
717 ; CHECK-NEXT:    sd s2, 80(sp) # 8-byte Folded Spill
718 ; CHECK-NEXT:    sd s3, 72(sp) # 8-byte Folded Spill
719 ; CHECK-NEXT:    sd s4, 64(sp) # 8-byte Folded Spill
720 ; CHECK-NEXT:    sd s5, 56(sp) # 8-byte Folded Spill
721 ; CHECK-NEXT:    sd s6, 48(sp) # 8-byte Folded Spill
722 ; CHECK-NEXT:    sd s7, 40(sp) # 8-byte Folded Spill
723 ; CHECK-NEXT:    sd s8, 32(sp) # 8-byte Folded Spill
724 ; CHECK-NEXT:    sd s9, 24(sp) # 8-byte Folded Spill
725 ; CHECK-NEXT:    sd s10, 16(sp) # 8-byte Folded Spill
726 ; CHECK-NEXT:    sd s11, 8(sp) # 8-byte Folded Spill
727 ; CHECK-NEXT:    .cfi_offset ra, -8
728 ; CHECK-NEXT:    .cfi_offset s0, -16
729 ; CHECK-NEXT:    .cfi_offset s1, -24
730 ; CHECK-NEXT:    .cfi_offset s2, -32
731 ; CHECK-NEXT:    .cfi_offset s3, -40
732 ; CHECK-NEXT:    .cfi_offset s4, -48
733 ; CHECK-NEXT:    .cfi_offset s5, -56
734 ; CHECK-NEXT:    .cfi_offset s6, -64
735 ; CHECK-NEXT:    .cfi_offset s7, -72
736 ; CHECK-NEXT:    .cfi_offset s8, -80
737 ; CHECK-NEXT:    .cfi_offset s9, -88
738 ; CHECK-NEXT:    .cfi_offset s10, -96
739 ; CHECK-NEXT:    .cfi_offset s11, -104
740 ; CHECK-NEXT:    .cfi_remember_state
741 ; CHECK-NEXT:    #APP
742 ; CHECK-NEXT:    li ra, 1
743 ; CHECK-NEXT:    #NO_APP
744 ; CHECK-NEXT:    #APP
745 ; CHECK-NEXT:    li t0, 5
746 ; CHECK-NEXT:    #NO_APP
747 ; CHECK-NEXT:    #APP
748 ; CHECK-NEXT:    li t1, 6
749 ; CHECK-NEXT:    #NO_APP
750 ; CHECK-NEXT:    #APP
751 ; CHECK-NEXT:    li t2, 7
752 ; CHECK-NEXT:    #NO_APP
753 ; CHECK-NEXT:    #APP
754 ; CHECK-NEXT:    li s0, 8
755 ; CHECK-NEXT:    #NO_APP
756 ; CHECK-NEXT:    #APP
757 ; CHECK-NEXT:    li s1, 9
758 ; CHECK-NEXT:    #NO_APP
759 ; CHECK-NEXT:    #APP
760 ; CHECK-NEXT:    li a0, 10
761 ; CHECK-NEXT:    #NO_APP
762 ; CHECK-NEXT:    #APP
763 ; CHECK-NEXT:    li a1, 11
764 ; CHECK-NEXT:    #NO_APP
765 ; CHECK-NEXT:    #APP
766 ; CHECK-NEXT:    li a2, 12
767 ; CHECK-NEXT:    #NO_APP
768 ; CHECK-NEXT:    #APP
769 ; CHECK-NEXT:    li a3, 13
770 ; CHECK-NEXT:    #NO_APP
771 ; CHECK-NEXT:    #APP
772 ; CHECK-NEXT:    li a4, 14
773 ; CHECK-NEXT:    #NO_APP
774 ; CHECK-NEXT:    #APP
775 ; CHECK-NEXT:    li a5, 15
776 ; CHECK-NEXT:    #NO_APP
777 ; CHECK-NEXT:    #APP
778 ; CHECK-NEXT:    li a6, 16
779 ; CHECK-NEXT:    #NO_APP
780 ; CHECK-NEXT:    #APP
781 ; CHECK-NEXT:    li a7, 17
782 ; CHECK-NEXT:    #NO_APP
783 ; CHECK-NEXT:    #APP
784 ; CHECK-NEXT:    li s2, 18
785 ; CHECK-NEXT:    #NO_APP
786 ; CHECK-NEXT:    #APP
787 ; CHECK-NEXT:    li s3, 19
788 ; CHECK-NEXT:    #NO_APP
789 ; CHECK-NEXT:    #APP
790 ; CHECK-NEXT:    li s4, 20
791 ; CHECK-NEXT:    #NO_APP
792 ; CHECK-NEXT:    #APP
793 ; CHECK-NEXT:    li s5, 21
794 ; CHECK-NEXT:    #NO_APP
795 ; CHECK-NEXT:    #APP
796 ; CHECK-NEXT:    li s6, 22
797 ; CHECK-NEXT:    #NO_APP
798 ; CHECK-NEXT:    #APP
799 ; CHECK-NEXT:    li s7, 23
800 ; CHECK-NEXT:    #NO_APP
801 ; CHECK-NEXT:    #APP
802 ; CHECK-NEXT:    li s8, 24
803 ; CHECK-NEXT:    #NO_APP
804 ; CHECK-NEXT:    #APP
805 ; CHECK-NEXT:    li s9, 25
806 ; CHECK-NEXT:    #NO_APP
807 ; CHECK-NEXT:    #APP
808 ; CHECK-NEXT:    li s10, 26
809 ; CHECK-NEXT:    #NO_APP
810 ; CHECK-NEXT:    #APP
811 ; CHECK-NEXT:    li s11, 27
812 ; CHECK-NEXT:    #NO_APP
813 ; CHECK-NEXT:    #APP
814 ; CHECK-NEXT:    li t3, 28
815 ; CHECK-NEXT:    #NO_APP
816 ; CHECK-NEXT:    #APP
817 ; CHECK-NEXT:    li t4, 29
818 ; CHECK-NEXT:    #NO_APP
819 ; CHECK-NEXT:    #APP
820 ; CHECK-NEXT:    li t5, 30
821 ; CHECK-NEXT:    #NO_APP
822 ; CHECK-NEXT:    #APP
823 ; CHECK-NEXT:    li t6, 31
824 ; CHECK-NEXT:    #NO_APP
825 ; CHECK-NEXT:    bne t5, t6, .LBB4_2
826 ; CHECK-NEXT:    j .LBB4_1
827 ; CHECK-NEXT:  .LBB4_8: # %dest_1
828 ; CHECK-NEXT:    ld s11, 0(sp)
829 ; CHECK-NEXT:  .LBB4_1: # %dest_1
830 ; CHECK-NEXT:    #APP
831 ; CHECK-NEXT:    # dest 1
832 ; CHECK-NEXT:    #NO_APP
833 ; CHECK-NEXT:    j .LBB4_3
834 ; CHECK-NEXT:  .LBB4_2: # %cond_2
835 ; CHECK-NEXT:    bne t3, t4, .LBB4_5
836 ; CHECK-NEXT:  .LBB4_3: # %dest_2
837 ; CHECK-NEXT:    #APP
838 ; CHECK-NEXT:    # dest 2
839 ; CHECK-NEXT:    #NO_APP
840 ; CHECK-NEXT:  .LBB4_4: # %dest_3
841 ; CHECK-NEXT:    #APP
842 ; CHECK-NEXT:    # dest 3
843 ; CHECK-NEXT:    #NO_APP
844 ; CHECK-NEXT:    #APP
845 ; CHECK-NEXT:    # reg use ra
846 ; CHECK-NEXT:    #NO_APP
847 ; CHECK-NEXT:    #APP
848 ; CHECK-NEXT:    # reg use t0
849 ; CHECK-NEXT:    #NO_APP
850 ; CHECK-NEXT:    #APP
851 ; CHECK-NEXT:    # reg use t1
852 ; CHECK-NEXT:    #NO_APP
853 ; CHECK-NEXT:    #APP
854 ; CHECK-NEXT:    # reg use t2
855 ; CHECK-NEXT:    #NO_APP
856 ; CHECK-NEXT:    #APP
857 ; CHECK-NEXT:    # reg use s0
858 ; CHECK-NEXT:    #NO_APP
859 ; CHECK-NEXT:    #APP
860 ; CHECK-NEXT:    # reg use s1
861 ; CHECK-NEXT:    #NO_APP
862 ; CHECK-NEXT:    #APP
863 ; CHECK-NEXT:    # reg use a0
864 ; CHECK-NEXT:    #NO_APP
865 ; CHECK-NEXT:    #APP
866 ; CHECK-NEXT:    # reg use a1
867 ; CHECK-NEXT:    #NO_APP
868 ; CHECK-NEXT:    #APP
869 ; CHECK-NEXT:    # reg use a2
870 ; CHECK-NEXT:    #NO_APP
871 ; CHECK-NEXT:    #APP
872 ; CHECK-NEXT:    # reg use a3
873 ; CHECK-NEXT:    #NO_APP
874 ; CHECK-NEXT:    #APP
875 ; CHECK-NEXT:    # reg use a4
876 ; CHECK-NEXT:    #NO_APP
877 ; CHECK-NEXT:    #APP
878 ; CHECK-NEXT:    # reg use a5
879 ; CHECK-NEXT:    #NO_APP
880 ; CHECK-NEXT:    #APP
881 ; CHECK-NEXT:    # reg use a6
882 ; CHECK-NEXT:    #NO_APP
883 ; CHECK-NEXT:    #APP
884 ; CHECK-NEXT:    # reg use a7
885 ; CHECK-NEXT:    #NO_APP
886 ; CHECK-NEXT:    #APP
887 ; CHECK-NEXT:    # reg use s2
888 ; CHECK-NEXT:    #NO_APP
889 ; CHECK-NEXT:    #APP
890 ; CHECK-NEXT:    # reg use s3
891 ; CHECK-NEXT:    #NO_APP
892 ; CHECK-NEXT:    #APP
893 ; CHECK-NEXT:    # reg use s4
894 ; CHECK-NEXT:    #NO_APP
895 ; CHECK-NEXT:    #APP
896 ; CHECK-NEXT:    # reg use s5
897 ; CHECK-NEXT:    #NO_APP
898 ; CHECK-NEXT:    #APP
899 ; CHECK-NEXT:    # reg use s6
900 ; CHECK-NEXT:    #NO_APP
901 ; CHECK-NEXT:    #APP
902 ; CHECK-NEXT:    # reg use s7
903 ; CHECK-NEXT:    #NO_APP
904 ; CHECK-NEXT:    #APP
905 ; CHECK-NEXT:    # reg use s8
906 ; CHECK-NEXT:    #NO_APP
907 ; CHECK-NEXT:    #APP
908 ; CHECK-NEXT:    # reg use s9
909 ; CHECK-NEXT:    #NO_APP
910 ; CHECK-NEXT:    #APP
911 ; CHECK-NEXT:    # reg use s10
912 ; CHECK-NEXT:    #NO_APP
913 ; CHECK-NEXT:    #APP
914 ; CHECK-NEXT:    # reg use s11
915 ; CHECK-NEXT:    #NO_APP
916 ; CHECK-NEXT:    #APP
917 ; CHECK-NEXT:    # reg use t3
918 ; CHECK-NEXT:    #NO_APP
919 ; CHECK-NEXT:    #APP
920 ; CHECK-NEXT:    # reg use t4
921 ; CHECK-NEXT:    #NO_APP
922 ; CHECK-NEXT:    #APP
923 ; CHECK-NEXT:    # reg use t5
924 ; CHECK-NEXT:    #NO_APP
925 ; CHECK-NEXT:    #APP
926 ; CHECK-NEXT:    # reg use t6
927 ; CHECK-NEXT:    #NO_APP
928 ; CHECK-NEXT:    ld ra, 104(sp) # 8-byte Folded Reload
929 ; CHECK-NEXT:    ld s0, 96(sp) # 8-byte Folded Reload
930 ; CHECK-NEXT:    ld s1, 88(sp) # 8-byte Folded Reload
931 ; CHECK-NEXT:    ld s2, 80(sp) # 8-byte Folded Reload
932 ; CHECK-NEXT:    ld s3, 72(sp) # 8-byte Folded Reload
933 ; CHECK-NEXT:    ld s4, 64(sp) # 8-byte Folded Reload
934 ; CHECK-NEXT:    ld s5, 56(sp) # 8-byte Folded Reload
935 ; CHECK-NEXT:    ld s6, 48(sp) # 8-byte Folded Reload
936 ; CHECK-NEXT:    ld s7, 40(sp) # 8-byte Folded Reload
937 ; CHECK-NEXT:    ld s8, 32(sp) # 8-byte Folded Reload
938 ; CHECK-NEXT:    ld s9, 24(sp) # 8-byte Folded Reload
939 ; CHECK-NEXT:    ld s10, 16(sp) # 8-byte Folded Reload
940 ; CHECK-NEXT:    ld s11, 8(sp) # 8-byte Folded Reload
941 ; CHECK-NEXT:    .cfi_restore ra
942 ; CHECK-NEXT:    .cfi_restore s0
943 ; CHECK-NEXT:    .cfi_restore s1
944 ; CHECK-NEXT:    .cfi_restore s2
945 ; CHECK-NEXT:    .cfi_restore s3
946 ; CHECK-NEXT:    .cfi_restore s4
947 ; CHECK-NEXT:    .cfi_restore s5
948 ; CHECK-NEXT:    .cfi_restore s6
949 ; CHECK-NEXT:    .cfi_restore s7
950 ; CHECK-NEXT:    .cfi_restore s8
951 ; CHECK-NEXT:    .cfi_restore s9
952 ; CHECK-NEXT:    .cfi_restore s10
953 ; CHECK-NEXT:    .cfi_restore s11
954 ; CHECK-NEXT:    addi sp, sp, 112
955 ; CHECK-NEXT:    .cfi_def_cfa_offset 0
956 ; CHECK-NEXT:    ret
957 ; CHECK-NEXT:  .LBB4_5: # %cond_3
958 ; CHECK-NEXT:    .cfi_restore_state
959 ; CHECK-NEXT:    beq t1, t2, .LBB4_4
960 ; CHECK-NEXT:  # %bb.6: # %space
961 ; CHECK-NEXT:    #APP
962 ; CHECK-NEXT:    .zero 1048576
963 ; CHECK-NEXT:    #NO_APP
964 ; CHECK-NEXT:  # %bb.7: # %space
965 ; CHECK-NEXT:    sd s11, 0(sp)
966 ; CHECK-NEXT:    jump .LBB4_8, s11
967 entry:
968   %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"()
969   %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"()
970   %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"()
971   %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"()
972   %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"()
973   %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"()
974   %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"()
975   %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"()
976   %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"()
977   %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"()
978   %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"()
979   %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"()
980   %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"()
981   %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"()
982   %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"()
983   %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"()
984   %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"()
985   %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"()
986   %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"()
987   %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"()
988   %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"()
989   %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"()
990   %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"()
991   %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"()
992   %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"()
993   %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"()
994   %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"()
995   %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"()
997   br label %cond_1
999 cond_1:
1000   %cmp1 = icmp eq i64 %t5, %t6
1001   br i1 %cmp1, label %dest_1, label %cond_2
1003 cond_2:
1004   %cmp2 = icmp eq i64 %t3, %t4
1005   br i1 %cmp2, label %dest_2, label %cond_3
1007 cond_3:
1008   %cmp3 = icmp eq i64 %t1, %t2
1009   br i1 %cmp3, label %dest_3, label %space
1011 space:
1012   call void asm sideeffect ".space 1048576", ""()
1013   br label %dest_1
1015 dest_1:
1016   call void asm sideeffect "# dest 1", ""()
1017   br label %dest_2
1019 dest_2:
1020   call void asm sideeffect "# dest 2", ""()
1021   br label %dest_3
1023 dest_3:
1024   call void asm sideeffect "# dest 3", ""()
1025   br label %tail
1027 tail:
1028   call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra)
1029   call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0)
1030   call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1)
1031   call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2)
1032   call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0)
1033   call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1)
1034   call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0)
1035   call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1)
1036   call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2)
1037   call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3)
1038   call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4)
1039   call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5)
1040   call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6)
1041   call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7)
1042   call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2)
1043   call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3)
1044   call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4)
1045   call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5)
1046   call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6)
1047   call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7)
1048   call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8)
1049   call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9)
1050   call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10)
1051   call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11)
1052   call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3)
1053   call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4)
1054   call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5)
1055   call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6)
1057   ret void