@@ -181,6 +181,50 @@ define void @frame_4kb() {
181
181
ret void
182
182
}
183
183
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
+
184
228
;; 2^13-16+2032
185
229
define void @frame_8kb () {
186
230
; RV32-LABEL: frame_8kb:
@@ -221,6 +265,92 @@ define void @frame_8kb() {
221
265
ret void
222
266
}
223
267
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
+
224
354
;; 2^14-16+2032
225
355
define void @frame_16kb () {
226
356
; RV32-LABEL: frame_16kb:
0 commit comments