xref: /llvm-project/llvm/test/CodeGen/RISCV/prolog-epilogue.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1da675b92SPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2da675b92SPhilip Reames; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
3da675b92SPhilip Reames; RUN:   | FileCheck %s -check-prefixes=RV32,RV32I
4da675b92SPhilip Reames; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mattr=+zba < %s \
5da675b92SPhilip Reames; RUN:   | FileCheck %s -check-prefixes=RV32,RV32ZBA
6da675b92SPhilip Reames; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
7da675b92SPhilip Reames; RUN:   | FileCheck %s -check-prefixes=RV64,RV64I
8da675b92SPhilip Reames; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mattr=+zba < %s \
9da675b92SPhilip Reames; RUN:   | FileCheck %s -check-prefixes=RV64,RV64ZBA
10da675b92SPhilip Reames
11da675b92SPhilip Reamesdeclare void @callee(ptr)
12da675b92SPhilip Reames
13da675b92SPhilip Reamesdefine void @frame_16b() {
14da675b92SPhilip Reames; RV32-LABEL: frame_16b:
15da675b92SPhilip Reames; RV32:       # %bb.0:
16da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -16
17da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 16
18da675b92SPhilip Reames; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
19da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
20da675b92SPhilip Reames; RV32-NEXT:    li a0, 0
21da675b92SPhilip Reames; RV32-NEXT:    call callee
22da675b92SPhilip Reames; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
23*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
24da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 16
25*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
26da675b92SPhilip Reames; RV32-NEXT:    ret
27da675b92SPhilip Reames;
28da675b92SPhilip Reames; RV64-LABEL: frame_16b:
29da675b92SPhilip Reames; RV64:       # %bb.0:
30da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -16
31da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 16
32da675b92SPhilip Reames; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
33da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
34da675b92SPhilip Reames; RV64-NEXT:    li a0, 0
35da675b92SPhilip Reames; RV64-NEXT:    call callee
36da675b92SPhilip Reames; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload
37*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
38da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 16
39*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
40da675b92SPhilip Reames; RV64-NEXT:    ret
41da675b92SPhilip Reames  call void @callee(ptr null)
42da675b92SPhilip Reames  ret void
43da675b92SPhilip Reames}
44da675b92SPhilip Reames
45da675b92SPhilip Reamesdefine void @frame_1024b() {
46da675b92SPhilip Reames; RV32-LABEL: frame_1024b:
47da675b92SPhilip Reames; RV32:       # %bb.0:
48da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -1024
49da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 1024
50da675b92SPhilip Reames; RV32-NEXT:    sw ra, 1020(sp) # 4-byte Folded Spill
51da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
52da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
53da675b92SPhilip Reames; RV32-NEXT:    call callee
54da675b92SPhilip Reames; RV32-NEXT:    lw ra, 1020(sp) # 4-byte Folded Reload
55*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
56da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 1024
57*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
58da675b92SPhilip Reames; RV32-NEXT:    ret
59da675b92SPhilip Reames;
60da675b92SPhilip Reames; RV64-LABEL: frame_1024b:
61da675b92SPhilip Reames; RV64:       # %bb.0:
62da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -1024
63da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 1024
64da675b92SPhilip Reames; RV64-NEXT:    sd ra, 1016(sp) # 8-byte Folded Spill
65da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
66da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
67da675b92SPhilip Reames; RV64-NEXT:    call callee
68da675b92SPhilip Reames; RV64-NEXT:    ld ra, 1016(sp) # 8-byte Folded Reload
69*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
70da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 1024
71*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
72da675b92SPhilip Reames; RV64-NEXT:    ret
73da675b92SPhilip Reames  %a = alloca [1008 x i8]
74da675b92SPhilip Reames  call void @callee(ptr %a)
75da675b92SPhilip Reames  ret void
76da675b92SPhilip Reames}
77da675b92SPhilip Reames
78da675b92SPhilip Reamesdefine void @frame_2048b() {
79da675b92SPhilip Reames; RV32-LABEL: frame_2048b:
80da675b92SPhilip Reames; RV32:       # %bb.0:
81da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
82da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
83da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
84da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
85da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -16
86da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2048
87da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
88da675b92SPhilip Reames; RV32-NEXT:    call callee
89da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 16
90*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
91da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
92*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
93da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
94*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
95da675b92SPhilip Reames; RV32-NEXT:    ret
96da675b92SPhilip Reames;
97da675b92SPhilip Reames; RV64-LABEL: frame_2048b:
98da675b92SPhilip Reames; RV64:       # %bb.0:
99da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
100da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
101da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
102da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
103da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -16
104da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2048
105da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
106da675b92SPhilip Reames; RV64-NEXT:    call callee
107da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 16
108*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
109da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
110*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
111da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
112*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
113da675b92SPhilip Reames; RV64-NEXT:    ret
114da675b92SPhilip Reames  %a = alloca [2032 x i8]
115da675b92SPhilip Reames  call void @callee(ptr %a)
116da675b92SPhilip Reames  ret void
117da675b92SPhilip Reames}
118da675b92SPhilip Reames
119da675b92SPhilip Reamesdefine void @frame_4096b() {
120da675b92SPhilip Reames; RV32-LABEL: frame_4096b:
121da675b92SPhilip Reames; RV32:       # %bb.0:
122da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
123da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
124da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
125da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
126da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2048
127da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -16
128da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 4096
129da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
130da675b92SPhilip Reames; RV32-NEXT:    call callee
131da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
132da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 32
133*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
134da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
135*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
136da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
137*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
138da675b92SPhilip Reames; RV32-NEXT:    ret
139da675b92SPhilip Reames;
140da675b92SPhilip Reames; RV64-LABEL: frame_4096b:
141da675b92SPhilip Reames; RV64:       # %bb.0:
142da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
143da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
144da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
145da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
146da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2048
147da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -16
148da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 4096
149da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
150da675b92SPhilip Reames; RV64-NEXT:    call callee
151da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
152da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 32
153*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
154da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
155*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
156da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
157*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
158da675b92SPhilip Reames; RV64-NEXT:    ret
159da675b92SPhilip Reames  %a = alloca [4080 x i8]
160da675b92SPhilip Reames  call void @callee(ptr %a)
161da675b92SPhilip Reames  ret void
162da675b92SPhilip Reames}
163da675b92SPhilip Reames
164da675b92SPhilip Reames;; 2^12-16+2032
165da675b92SPhilip Reamesdefine void @frame_4kb() {
166da675b92SPhilip Reames; RV32-LABEL: frame_4kb:
167da675b92SPhilip Reames; RV32:       # %bb.0:
168da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
169da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
170da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
171da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
172da675b92SPhilip Reames; RV32-NEXT:    lui a0, 1
173da675b92SPhilip Reames; RV32-NEXT:    sub sp, sp, a0
174da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 6128
175da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
176da675b92SPhilip Reames; RV32-NEXT:    call callee
177da675b92SPhilip Reames; RV32-NEXT:    lui a0, 1
178da675b92SPhilip Reames; RV32-NEXT:    add sp, sp, a0
179*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
180da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
181*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
182da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
183*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
184da675b92SPhilip Reames; RV32-NEXT:    ret
185da675b92SPhilip Reames;
186da675b92SPhilip Reames; RV64-LABEL: frame_4kb:
187da675b92SPhilip Reames; RV64:       # %bb.0:
188da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
189da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
190da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
191da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
192da675b92SPhilip Reames; RV64-NEXT:    lui a0, 1
193da675b92SPhilip Reames; RV64-NEXT:    sub sp, sp, a0
194da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 6128
195da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
196da675b92SPhilip Reames; RV64-NEXT:    call callee
197da675b92SPhilip Reames; RV64-NEXT:    lui a0, 1
198da675b92SPhilip Reames; RV64-NEXT:    add sp, sp, a0
199*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
200da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
201*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
202da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
203*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
204da675b92SPhilip Reames; RV64-NEXT:    ret
205da675b92SPhilip Reames  %a = alloca [6112 x i8]
206da675b92SPhilip Reames  call void @callee(ptr %a)
207da675b92SPhilip Reames  ret void
208da675b92SPhilip Reames}
209da675b92SPhilip Reames
210f5cf98c0SPhilip Reamesdefine void @frame_4kb_offset_128() {
211eb26edbbSPhilip Reames; RV32I-LABEL: frame_4kb_offset_128:
212eb26edbbSPhilip Reames; RV32I:       # %bb.0:
213eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, -2032
214eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 2032
215eb26edbbSPhilip Reames; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
216eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_offset ra, -4
217eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 1
218eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, 128
219eb26edbbSPhilip Reames; RV32I-NEXT:    sub sp, sp, a0
220eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 6256
221eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, sp, 12
222eb26edbbSPhilip Reames; RV32I-NEXT:    call callee
223eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 1
224eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, 128
225eb26edbbSPhilip Reames; RV32I-NEXT:    add sp, sp, a0
226*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 2032
227eb26edbbSPhilip Reames; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
228*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_restore ra
229eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, 2032
230*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 0
231eb26edbbSPhilip Reames; RV32I-NEXT:    ret
232f5cf98c0SPhilip Reames;
233eb26edbbSPhilip Reames; RV32ZBA-LABEL: frame_4kb_offset_128:
234eb26edbbSPhilip Reames; RV32ZBA:       # %bb.0:
235eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, -2032
236eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
237eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
238eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_offset ra, -4
239eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, -528
240eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
241eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 6256
242eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi a0, sp, 12
243eb26edbbSPhilip Reames; RV32ZBA-NEXT:    call callee
244eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, 528
245eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
246*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
247eb26edbbSPhilip Reames; RV32ZBA-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
248*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_restore ra
249eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, 2032
250*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 0
251eb26edbbSPhilip Reames; RV32ZBA-NEXT:    ret
252eb26edbbSPhilip Reames;
253eb26edbbSPhilip Reames; RV64I-LABEL: frame_4kb_offset_128:
254eb26edbbSPhilip Reames; RV64I:       # %bb.0:
255eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, -2032
256eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 2032
257eb26edbbSPhilip Reames; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
258eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_offset ra, -8
259eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 1
260eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, 128
261eb26edbbSPhilip Reames; RV64I-NEXT:    sub sp, sp, a0
262eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 6256
263eb26edbbSPhilip Reames; RV64I-NEXT:    addi a0, sp, 8
264eb26edbbSPhilip Reames; RV64I-NEXT:    call callee
265eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 1
266eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, 128
267eb26edbbSPhilip Reames; RV64I-NEXT:    add sp, sp, a0
268*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 2032
269eb26edbbSPhilip Reames; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
270*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_restore ra
271eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, 2032
272*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 0
273eb26edbbSPhilip Reames; RV64I-NEXT:    ret
274eb26edbbSPhilip Reames;
275eb26edbbSPhilip Reames; RV64ZBA-LABEL: frame_4kb_offset_128:
276eb26edbbSPhilip Reames; RV64ZBA:       # %bb.0:
277eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, -2032
278eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
279eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
280eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_offset ra, -8
281eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, -528
282eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
283eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 6256
284eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi a0, sp, 8
285eb26edbbSPhilip Reames; RV64ZBA-NEXT:    call callee
286eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, 528
287eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
288*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
289eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
290*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_restore ra
291eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, 2032
292*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 0
293eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ret
294f5cf98c0SPhilip Reames  %a = alloca [6240 x i8]
295f5cf98c0SPhilip Reames  call void @callee(ptr %a)
296f5cf98c0SPhilip Reames  ret void
297f5cf98c0SPhilip Reames}
298f5cf98c0SPhilip Reames
299f5cf98c0SPhilip Reames
300da675b92SPhilip Reames;; 2^13-16+2032
301da675b92SPhilip Reamesdefine void @frame_8kb() {
302da675b92SPhilip Reames; RV32-LABEL: frame_8kb:
303da675b92SPhilip Reames; RV32:       # %bb.0:
304da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
305da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
306da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
307da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
308da675b92SPhilip Reames; RV32-NEXT:    lui a0, 2
309da675b92SPhilip Reames; RV32-NEXT:    sub sp, sp, a0
310da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 10224
311da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
312da675b92SPhilip Reames; RV32-NEXT:    call callee
313da675b92SPhilip Reames; RV32-NEXT:    lui a0, 2
314da675b92SPhilip Reames; RV32-NEXT:    add sp, sp, a0
315*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
316da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
317*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
318da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
319*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
320da675b92SPhilip Reames; RV32-NEXT:    ret
321da675b92SPhilip Reames;
322da675b92SPhilip Reames; RV64-LABEL: frame_8kb:
323da675b92SPhilip Reames; RV64:       # %bb.0:
324da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
325da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
326da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
327da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
328da675b92SPhilip Reames; RV64-NEXT:    lui a0, 2
329da675b92SPhilip Reames; RV64-NEXT:    sub sp, sp, a0
330da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 10224
331da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
332da675b92SPhilip Reames; RV64-NEXT:    call callee
333da675b92SPhilip Reames; RV64-NEXT:    lui a0, 2
334da675b92SPhilip Reames; RV64-NEXT:    add sp, sp, a0
335*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
336da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
337*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
338da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
339*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
340da675b92SPhilip Reames; RV64-NEXT:    ret
341da675b92SPhilip Reames  %a = alloca [10208 x i8]
342da675b92SPhilip Reames  call void @callee(ptr %a)
343da675b92SPhilip Reames  ret void
344da675b92SPhilip Reames}
345da675b92SPhilip Reames
346f5cf98c0SPhilip Reamesdefine void @frame_8kb_offset_128() {
347eb26edbbSPhilip Reames; RV32I-LABEL: frame_8kb_offset_128:
348eb26edbbSPhilip Reames; RV32I:       # %bb.0:
349eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, -2032
350eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 2032
351eb26edbbSPhilip Reames; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
352eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_offset ra, -4
353eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 2
354eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, 128
355eb26edbbSPhilip Reames; RV32I-NEXT:    sub sp, sp, a0
356eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 10352
357eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, sp, 12
358eb26edbbSPhilip Reames; RV32I-NEXT:    call callee
359eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 2
360eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, 128
361eb26edbbSPhilip Reames; RV32I-NEXT:    add sp, sp, a0
362*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 2032
363eb26edbbSPhilip Reames; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
364*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_restore ra
365eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, 2032
366*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 0
367eb26edbbSPhilip Reames; RV32I-NEXT:    ret
368f5cf98c0SPhilip Reames;
369eb26edbbSPhilip Reames; RV32ZBA-LABEL: frame_8kb_offset_128:
370eb26edbbSPhilip Reames; RV32ZBA:       # %bb.0:
371eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, -2032
372eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
373eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
374eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_offset ra, -4
375eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, -1040
376eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
377eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 10352
378eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi a0, sp, 12
379eb26edbbSPhilip Reames; RV32ZBA-NEXT:    call callee
380eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, 1040
381eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
382*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
383eb26edbbSPhilip Reames; RV32ZBA-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
384*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_restore ra
385eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, 2032
386*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 0
387eb26edbbSPhilip Reames; RV32ZBA-NEXT:    ret
388eb26edbbSPhilip Reames;
389eb26edbbSPhilip Reames; RV64I-LABEL: frame_8kb_offset_128:
390eb26edbbSPhilip Reames; RV64I:       # %bb.0:
391eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, -2032
392eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 2032
393eb26edbbSPhilip Reames; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
394eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_offset ra, -8
395eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 2
396eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, 128
397eb26edbbSPhilip Reames; RV64I-NEXT:    sub sp, sp, a0
398eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 10352
399eb26edbbSPhilip Reames; RV64I-NEXT:    addi a0, sp, 8
400eb26edbbSPhilip Reames; RV64I-NEXT:    call callee
401eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 2
402eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, 128
403eb26edbbSPhilip Reames; RV64I-NEXT:    add sp, sp, a0
404*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 2032
405eb26edbbSPhilip Reames; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
406*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_restore ra
407eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, 2032
408*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 0
409eb26edbbSPhilip Reames; RV64I-NEXT:    ret
410eb26edbbSPhilip Reames;
411eb26edbbSPhilip Reames; RV64ZBA-LABEL: frame_8kb_offset_128:
412eb26edbbSPhilip Reames; RV64ZBA:       # %bb.0:
413eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, -2032
414eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
415eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
416eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_offset ra, -8
417eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, -1040
418eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
419eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 10352
420eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi a0, sp, 8
421eb26edbbSPhilip Reames; RV64ZBA-NEXT:    call callee
422eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, 1040
423eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
424*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
425eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
426*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_restore ra
427eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, 2032
428*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 0
429eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ret
430f5cf98c0SPhilip Reames  %a = alloca [10336 x i8]
431f5cf98c0SPhilip Reames  call void @callee(ptr %a)
432f5cf98c0SPhilip Reames  ret void
433f5cf98c0SPhilip Reames}
434f5cf98c0SPhilip Reames
435f5cf98c0SPhilip Reamesdefine void @frame_16kb_minus_80() {
436eb26edbbSPhilip Reames; RV32I-LABEL: frame_16kb_minus_80:
437eb26edbbSPhilip Reames; RV32I:       # %bb.0:
438eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, -2032
439eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 2032
440eb26edbbSPhilip Reames; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
441eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_offset ra, -4
442eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 4
443eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, -80
444eb26edbbSPhilip Reames; RV32I-NEXT:    sub sp, sp, a0
445eb26edbbSPhilip Reames; RV32I-NEXT:    .cfi_def_cfa_offset 18336
446eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, sp, 12
447eb26edbbSPhilip Reames; RV32I-NEXT:    call callee
448eb26edbbSPhilip Reames; RV32I-NEXT:    lui a0, 4
449eb26edbbSPhilip Reames; RV32I-NEXT:    addi a0, a0, -80
450eb26edbbSPhilip Reames; RV32I-NEXT:    add sp, sp, a0
451*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 2032
452eb26edbbSPhilip Reames; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
453*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_restore ra
454eb26edbbSPhilip Reames; RV32I-NEXT:    addi sp, sp, 2032
455*97982a8cSdlav-sc; RV32I-NEXT:    .cfi_def_cfa_offset 0
456eb26edbbSPhilip Reames; RV32I-NEXT:    ret
457f5cf98c0SPhilip Reames;
458eb26edbbSPhilip Reames; RV32ZBA-LABEL: frame_16kb_minus_80:
459eb26edbbSPhilip Reames; RV32ZBA:       # %bb.0:
460eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, -2032
461eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
462eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
463eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_offset ra, -4
464eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, -2038
465eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
466eb26edbbSPhilip Reames; RV32ZBA-NEXT:    .cfi_def_cfa_offset 18336
467eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi a0, sp, 12
468eb26edbbSPhilip Reames; RV32ZBA-NEXT:    call callee
469eb26edbbSPhilip Reames; RV32ZBA-NEXT:    li a0, 2038
470eb26edbbSPhilip Reames; RV32ZBA-NEXT:    sh3add sp, a0, sp
471*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 2032
472eb26edbbSPhilip Reames; RV32ZBA-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
473*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_restore ra
474eb26edbbSPhilip Reames; RV32ZBA-NEXT:    addi sp, sp, 2032
475*97982a8cSdlav-sc; RV32ZBA-NEXT:    .cfi_def_cfa_offset 0
476eb26edbbSPhilip Reames; RV32ZBA-NEXT:    ret
477eb26edbbSPhilip Reames;
478eb26edbbSPhilip Reames; RV64I-LABEL: frame_16kb_minus_80:
479eb26edbbSPhilip Reames; RV64I:       # %bb.0:
480eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, -2032
481eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 2032
482eb26edbbSPhilip Reames; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
483eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_offset ra, -8
484eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 4
485eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, -80
486eb26edbbSPhilip Reames; RV64I-NEXT:    sub sp, sp, a0
487eb26edbbSPhilip Reames; RV64I-NEXT:    .cfi_def_cfa_offset 18336
488eb26edbbSPhilip Reames; RV64I-NEXT:    addi a0, sp, 8
489eb26edbbSPhilip Reames; RV64I-NEXT:    call callee
490eb26edbbSPhilip Reames; RV64I-NEXT:    lui a0, 4
491eb26edbbSPhilip Reames; RV64I-NEXT:    addiw a0, a0, -80
492eb26edbbSPhilip Reames; RV64I-NEXT:    add sp, sp, a0
493*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 2032
494eb26edbbSPhilip Reames; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
495*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_restore ra
496eb26edbbSPhilip Reames; RV64I-NEXT:    addi sp, sp, 2032
497*97982a8cSdlav-sc; RV64I-NEXT:    .cfi_def_cfa_offset 0
498eb26edbbSPhilip Reames; RV64I-NEXT:    ret
499eb26edbbSPhilip Reames;
500eb26edbbSPhilip Reames; RV64ZBA-LABEL: frame_16kb_minus_80:
501eb26edbbSPhilip Reames; RV64ZBA:       # %bb.0:
502eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, -2032
503eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
504eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
505eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_offset ra, -8
506eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, -2038
507eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
508eb26edbbSPhilip Reames; RV64ZBA-NEXT:    .cfi_def_cfa_offset 18336
509eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi a0, sp, 8
510eb26edbbSPhilip Reames; RV64ZBA-NEXT:    call callee
511eb26edbbSPhilip Reames; RV64ZBA-NEXT:    li a0, 2038
512eb26edbbSPhilip Reames; RV64ZBA-NEXT:    sh3add sp, a0, sp
513*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 2032
514eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
515*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_restore ra
516eb26edbbSPhilip Reames; RV64ZBA-NEXT:    addi sp, sp, 2032
517*97982a8cSdlav-sc; RV64ZBA-NEXT:    .cfi_def_cfa_offset 0
518eb26edbbSPhilip Reames; RV64ZBA-NEXT:    ret
519f5cf98c0SPhilip Reames  %a = alloca [18320 x i8]
520f5cf98c0SPhilip Reames  call void @callee(ptr %a)
521f5cf98c0SPhilip Reames  ret void
522f5cf98c0SPhilip Reames}
523f5cf98c0SPhilip Reames
524da675b92SPhilip Reames;; 2^14-16+2032
525da675b92SPhilip Reamesdefine void @frame_16kb() {
526da675b92SPhilip Reames; RV32-LABEL: frame_16kb:
527da675b92SPhilip Reames; RV32:       # %bb.0:
528da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
529da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
530da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
531da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
532da675b92SPhilip Reames; RV32-NEXT:    lui a0, 4
533da675b92SPhilip Reames; RV32-NEXT:    sub sp, sp, a0
534da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 18416
535da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
536da675b92SPhilip Reames; RV32-NEXT:    call callee
537da675b92SPhilip Reames; RV32-NEXT:    lui a0, 4
538da675b92SPhilip Reames; RV32-NEXT:    add sp, sp, a0
539*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
540da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
541*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
542da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
543*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
544da675b92SPhilip Reames; RV32-NEXT:    ret
545da675b92SPhilip Reames;
546da675b92SPhilip Reames; RV64-LABEL: frame_16kb:
547da675b92SPhilip Reames; RV64:       # %bb.0:
548da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
549da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
550da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
551da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
552da675b92SPhilip Reames; RV64-NEXT:    lui a0, 4
553da675b92SPhilip Reames; RV64-NEXT:    sub sp, sp, a0
554da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 18416
555da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
556da675b92SPhilip Reames; RV64-NEXT:    call callee
557da675b92SPhilip Reames; RV64-NEXT:    lui a0, 4
558da675b92SPhilip Reames; RV64-NEXT:    add sp, sp, a0
559*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
560da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
561*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
562da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
563*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
564da675b92SPhilip Reames; RV64-NEXT:    ret
565da675b92SPhilip Reames  %a = alloca [18400 x i8]
566da675b92SPhilip Reames  call void @callee(ptr %a)
567da675b92SPhilip Reames  ret void
568da675b92SPhilip Reames}
569da675b92SPhilip Reames
570da675b92SPhilip Reames;; 2^15-16+2032
571da675b92SPhilip Reamesdefine void @frame_32kb() {
572da675b92SPhilip Reames; RV32-LABEL: frame_32kb:
573da675b92SPhilip Reames; RV32:       # %bb.0:
574da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, -2032
575da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 2032
576da675b92SPhilip Reames; RV32-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill
577da675b92SPhilip Reames; RV32-NEXT:    .cfi_offset ra, -4
578da675b92SPhilip Reames; RV32-NEXT:    lui a0, 8
579da675b92SPhilip Reames; RV32-NEXT:    sub sp, sp, a0
580da675b92SPhilip Reames; RV32-NEXT:    .cfi_def_cfa_offset 34800
581da675b92SPhilip Reames; RV32-NEXT:    addi a0, sp, 12
582da675b92SPhilip Reames; RV32-NEXT:    call callee
583da675b92SPhilip Reames; RV32-NEXT:    lui a0, 8
584da675b92SPhilip Reames; RV32-NEXT:    add sp, sp, a0
585*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 2032
586da675b92SPhilip Reames; RV32-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload
587*97982a8cSdlav-sc; RV32-NEXT:    .cfi_restore ra
588da675b92SPhilip Reames; RV32-NEXT:    addi sp, sp, 2032
589*97982a8cSdlav-sc; RV32-NEXT:    .cfi_def_cfa_offset 0
590da675b92SPhilip Reames; RV32-NEXT:    ret
591da675b92SPhilip Reames;
592da675b92SPhilip Reames; RV64-LABEL: frame_32kb:
593da675b92SPhilip Reames; RV64:       # %bb.0:
594da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, -2032
595da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 2032
596da675b92SPhilip Reames; RV64-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill
597da675b92SPhilip Reames; RV64-NEXT:    .cfi_offset ra, -8
598da675b92SPhilip Reames; RV64-NEXT:    lui a0, 8
599da675b92SPhilip Reames; RV64-NEXT:    sub sp, sp, a0
600da675b92SPhilip Reames; RV64-NEXT:    .cfi_def_cfa_offset 34800
601da675b92SPhilip Reames; RV64-NEXT:    addi a0, sp, 8
602da675b92SPhilip Reames; RV64-NEXT:    call callee
603da675b92SPhilip Reames; RV64-NEXT:    lui a0, 8
604da675b92SPhilip Reames; RV64-NEXT:    add sp, sp, a0
605*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 2032
606da675b92SPhilip Reames; RV64-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload
607*97982a8cSdlav-sc; RV64-NEXT:    .cfi_restore ra
608da675b92SPhilip Reames; RV64-NEXT:    addi sp, sp, 2032
609*97982a8cSdlav-sc; RV64-NEXT:    .cfi_def_cfa_offset 0
610da675b92SPhilip Reames; RV64-NEXT:    ret
611da675b92SPhilip Reames  %a = alloca [34784 x i8]
612da675b92SPhilip Reames  call void @callee(ptr %a)
613da675b92SPhilip Reames  ret void
614da675b92SPhilip Reames}
615