@@ -181,6 +181,50 @@ define void @frame_4kb() {
181181 ret void
182182}
183183
184+ define void @frame_4kb_offset_128 () {
185+ ; RV32-LABEL: frame_4kb_offset_128:
186+ ; RV32: # %bb.0:
187+ ; RV32-NEXT: addi sp, sp, -2032
188+ ; RV32-NEXT: .cfi_def_cfa_offset 2032
189+ ; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
190+ ; RV32-NEXT: .cfi_offset ra, -4
191+ ; RV32-NEXT: lui a0, 1
192+ ; RV32-NEXT: addi a0, a0, 128
193+ ; RV32-NEXT: sub sp, sp, a0
194+ ; RV32-NEXT: .cfi_def_cfa_offset 6256
195+ ; RV32-NEXT: addi a0, sp, 12
196+ ; RV32-NEXT: call callee
197+ ; RV32-NEXT: lui a0, 1
198+ ; RV32-NEXT: addi a0, a0, 128
199+ ; RV32-NEXT: add sp, sp, a0
200+ ; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
201+ ; RV32-NEXT: addi sp, sp, 2032
202+ ; RV32-NEXT: ret
203+ ;
204+ ; RV64-LABEL: frame_4kb_offset_128:
205+ ; RV64: # %bb.0:
206+ ; RV64-NEXT: addi sp, sp, -2032
207+ ; RV64-NEXT: .cfi_def_cfa_offset 2032
208+ ; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
209+ ; RV64-NEXT: .cfi_offset ra, -8
210+ ; RV64-NEXT: lui a0, 1
211+ ; RV64-NEXT: addiw a0, a0, 128
212+ ; RV64-NEXT: sub sp, sp, a0
213+ ; RV64-NEXT: .cfi_def_cfa_offset 6256
214+ ; RV64-NEXT: addi a0, sp, 8
215+ ; RV64-NEXT: call callee
216+ ; RV64-NEXT: lui a0, 1
217+ ; RV64-NEXT: addiw a0, a0, 128
218+ ; RV64-NEXT: add sp, sp, a0
219+ ; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
220+ ; RV64-NEXT: addi sp, sp, 2032
221+ ; RV64-NEXT: ret
222+ %a = alloca [6240 x i8 ]
223+ call void @callee (ptr %a )
224+ ret void
225+ }
226+
227+
184228;; 2^13-16+2032
185229define void @frame_8kb () {
186230; RV32-LABEL: frame_8kb:
@@ -221,6 +265,92 @@ define void @frame_8kb() {
221265 ret void
222266}
223267
268+ define void @frame_8kb_offset_128 () {
269+ ; RV32-LABEL: frame_8kb_offset_128:
270+ ; RV32: # %bb.0:
271+ ; RV32-NEXT: addi sp, sp, -2032
272+ ; RV32-NEXT: .cfi_def_cfa_offset 2032
273+ ; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
274+ ; RV32-NEXT: .cfi_offset ra, -4
275+ ; RV32-NEXT: lui a0, 2
276+ ; RV32-NEXT: addi a0, a0, 128
277+ ; RV32-NEXT: sub sp, sp, a0
278+ ; RV32-NEXT: .cfi_def_cfa_offset 10352
279+ ; RV32-NEXT: addi a0, sp, 12
280+ ; RV32-NEXT: call callee
281+ ; RV32-NEXT: lui a0, 2
282+ ; RV32-NEXT: addi a0, a0, 128
283+ ; RV32-NEXT: add sp, sp, a0
284+ ; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
285+ ; RV32-NEXT: addi sp, sp, 2032
286+ ; RV32-NEXT: ret
287+ ;
288+ ; RV64-LABEL: frame_8kb_offset_128:
289+ ; RV64: # %bb.0:
290+ ; RV64-NEXT: addi sp, sp, -2032
291+ ; RV64-NEXT: .cfi_def_cfa_offset 2032
292+ ; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
293+ ; RV64-NEXT: .cfi_offset ra, -8
294+ ; RV64-NEXT: lui a0, 2
295+ ; RV64-NEXT: addiw a0, a0, 128
296+ ; RV64-NEXT: sub sp, sp, a0
297+ ; RV64-NEXT: .cfi_def_cfa_offset 10352
298+ ; RV64-NEXT: addi a0, sp, 8
299+ ; RV64-NEXT: call callee
300+ ; RV64-NEXT: lui a0, 2
301+ ; RV64-NEXT: addiw a0, a0, 128
302+ ; RV64-NEXT: add sp, sp, a0
303+ ; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
304+ ; RV64-NEXT: addi sp, sp, 2032
305+ ; RV64-NEXT: ret
306+ %a = alloca [10336 x i8 ]
307+ call void @callee (ptr %a )
308+ ret void
309+ }
310+
311+ define void @frame_16kb_minus_80 () {
312+ ; RV32-LABEL: frame_16kb_minus_80:
313+ ; RV32: # %bb.0:
314+ ; RV32-NEXT: addi sp, sp, -2032
315+ ; RV32-NEXT: .cfi_def_cfa_offset 2032
316+ ; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill
317+ ; RV32-NEXT: .cfi_offset ra, -4
318+ ; RV32-NEXT: lui a0, 4
319+ ; RV32-NEXT: addi a0, a0, -80
320+ ; RV32-NEXT: sub sp, sp, a0
321+ ; RV32-NEXT: .cfi_def_cfa_offset 18336
322+ ; RV32-NEXT: addi a0, sp, 12
323+ ; RV32-NEXT: call callee
324+ ; RV32-NEXT: lui a0, 4
325+ ; RV32-NEXT: addi a0, a0, -80
326+ ; RV32-NEXT: add sp, sp, a0
327+ ; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload
328+ ; RV32-NEXT: addi sp, sp, 2032
329+ ; RV32-NEXT: ret
330+ ;
331+ ; RV64-LABEL: frame_16kb_minus_80:
332+ ; RV64: # %bb.0:
333+ ; RV64-NEXT: addi sp, sp, -2032
334+ ; RV64-NEXT: .cfi_def_cfa_offset 2032
335+ ; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill
336+ ; RV64-NEXT: .cfi_offset ra, -8
337+ ; RV64-NEXT: lui a0, 4
338+ ; RV64-NEXT: addiw a0, a0, -80
339+ ; RV64-NEXT: sub sp, sp, a0
340+ ; RV64-NEXT: .cfi_def_cfa_offset 18336
341+ ; RV64-NEXT: addi a0, sp, 8
342+ ; RV64-NEXT: call callee
343+ ; RV64-NEXT: lui a0, 4
344+ ; RV64-NEXT: addiw a0, a0, -80
345+ ; RV64-NEXT: add sp, sp, a0
346+ ; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload
347+ ; RV64-NEXT: addi sp, sp, 2032
348+ ; RV64-NEXT: ret
349+ %a = alloca [18320 x i8 ]
350+ call void @callee (ptr %a )
351+ ret void
352+ }
353+
224354;; 2^14-16+2032
225355define void @frame_16kb () {
226356; RV32-LABEL: frame_16kb:
0 commit comments