@@ -204,49 +204,39 @@ declare i32 @callee_args(i32 %a, i32 %b, i32 %c, i32 %dd, i32 %e, i32 %ff, i32 %
204204define i32 @caller_args (i32 %a , i32 %b , i32 %c , i32 %dd , i32 %e , i32 %ff , i32 %g , i32 %h , i32 %i , i32 %j , i32 %k , i32 %l , i32 %m , i32 %n ) nounwind {
205205; CHECK-LABEL: caller_args:
206206; CHECK: # %bb.0: # %entry
207- ; CHECK-NEXT: addi sp, sp, -32
208- ; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
209- ; CHECK-NEXT: lw t0, 32(sp)
210- ; CHECK-NEXT: lw t1, 36(sp)
211- ; CHECK-NEXT: lw t2, 40(sp)
212- ; CHECK-NEXT: lw t3, 44(sp)
213- ; CHECK-NEXT: lw t4, 48(sp)
214- ; CHECK-NEXT: lw t5, 52(sp)
215- ; CHECK-NEXT: sw t4, 16(sp)
216- ; CHECK-NEXT: sw t5, 20(sp)
207+ ; CHECK-NEXT: lw t0, 0(sp)
208+ ; CHECK-NEXT: lw t1, 20(sp)
209+ ; CHECK-NEXT: lw t2, 4(sp)
210+ ; CHECK-NEXT: lw t3, 8(sp)
211+ ; CHECK-NEXT: lw t4, 12(sp)
212+ ; CHECK-NEXT: lw t5, 16(sp)
213+ ; CHECK-NEXT: sw t2, 4(sp)
214+ ; CHECK-NEXT: sw t3, 8(sp)
215+ ; CHECK-NEXT: sw t4, 12(sp)
216+ ; CHECK-NEXT: sw t5, 16(sp)
217+ ; CHECK-NEXT: sw t1, 20(sp)
217218; CHECK-NEXT: sw t0, 0(sp)
218- ; CHECK-NEXT: sw t1, 4(sp)
219- ; CHECK-NEXT: sw t2, 8(sp)
220- ; CHECK-NEXT: sw t3, 12(sp)
221- ; CHECK-NEXT: call callee_args
222- ; CHECK-NEXT: lw ra, 28(sp) # 4-byte Folded Reload
223- ; CHECK-NEXT: addi sp, sp, 32
224- ; CHECK-NEXT: ret
219+ ; CHECK-NEXT: tail callee_args
225220;
226221; CHECK-LARGE-ZICFILP-LABEL: caller_args:
227222; CHECK-LARGE-ZICFILP: # %bb.0: # %entry
228223; CHECK-LARGE-ZICFILP-NEXT: lpad 0
229- ; CHECK-LARGE-ZICFILP-NEXT: addi sp, sp, -32
230- ; CHECK-LARGE-ZICFILP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
231- ; CHECK-LARGE-ZICFILP-NEXT: lw t0, 32(sp)
232- ; CHECK-LARGE-ZICFILP-NEXT: lw t1, 36(sp)
233- ; CHECK-LARGE-ZICFILP-NEXT: lw t3, 40(sp)
234- ; CHECK-LARGE-ZICFILP-NEXT: lw t4, 44(sp)
235- ; CHECK-LARGE-ZICFILP-NEXT: lw t2, 48(sp)
236- ; CHECK-LARGE-ZICFILP-NEXT: lw t5, 52(sp)
237- ; CHECK-LARGE-ZICFILP-NEXT: sw t2, 16(sp)
238- ; CHECK-LARGE-ZICFILP-NEXT: sw t5, 20(sp)
224+ ; CHECK-LARGE-ZICFILP-NEXT: lw t0, 0(sp)
225+ ; CHECK-LARGE-ZICFILP-NEXT: lw t1, 20(sp)
226+ ; CHECK-LARGE-ZICFILP-NEXT: lw t2, 4(sp)
227+ ; CHECK-LARGE-ZICFILP-NEXT: lw t3, 16(sp)
228+ ; CHECK-LARGE-ZICFILP-NEXT: lw t4, 12(sp)
229+ ; CHECK-LARGE-ZICFILP-NEXT: lw t5, 8(sp)
230+ ; CHECK-LARGE-ZICFILP-NEXT: sw t2, 4(sp)
239231; CHECK-LARGE-ZICFILP-NEXT: .Lpcrel_hi8:
240232; CHECK-LARGE-ZICFILP-NEXT: auipc t2, %pcrel_hi(.LCPI6_0)
241233; CHECK-LARGE-ZICFILP-NEXT: lw t2, %pcrel_lo(.Lpcrel_hi8)(t2)
242- ; CHECK-LARGE-ZICFILP-NEXT: sw t0, 0(sp)
243- ; CHECK-LARGE-ZICFILP-NEXT: sw t1, 4(sp)
244- ; CHECK-LARGE-ZICFILP-NEXT: sw t3, 8(sp)
234+ ; CHECK-LARGE-ZICFILP-NEXT: sw t5, 8(sp)
245235; CHECK-LARGE-ZICFILP-NEXT: sw t4, 12(sp)
246- ; CHECK-LARGE-ZICFILP-NEXT: jalr t2
247- ; CHECK-LARGE-ZICFILP-NEXT: lw ra, 28 (sp) # 4-byte Folded Reload
248- ; CHECK-LARGE-ZICFILP-NEXT: addi sp, sp, 32
249- ; CHECK-LARGE-ZICFILP-NEXT: ret
236+ ; CHECK-LARGE-ZICFILP-NEXT: sw t3, 16(sp)
237+ ; CHECK-LARGE-ZICFILP-NEXT: sw t1, 20 (sp)
238+ ; CHECK-LARGE-ZICFILP-NEXT: sw t0, 0(sp)
239+ ; CHECK-LARGE-ZICFILP-NEXT: jr t2
250240entry:
251241 %r = tail call i32 @callee_args (i32 %a , i32 %b , i32 %c , i32 %dd , i32 %e , i32 %ff , i32 %g , i32 %h , i32 %i , i32 %j , i32 %k , i32 %l , i32 %m , i32 %n )
252242 ret i32 %r
@@ -410,30 +400,24 @@ define i32 @caller_byval() nounwind {
410400; CHECK-LABEL: caller_byval:
411401; CHECK: # %bb.0: # %entry
412402; CHECK-NEXT: addi sp, sp, -16
413- ; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
414- ; CHECK-NEXT: lw a0, 8(sp)
415- ; CHECK-NEXT: sw a0, 4(sp)
416- ; CHECK-NEXT: addi a0, sp, 4
417- ; CHECK-NEXT: call callee_byval
418- ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
403+ ; CHECK-NEXT: lw a1, 12(sp)
404+ ; CHECK-NEXT: addi a0, sp, 8
405+ ; CHECK-NEXT: sw a1, 8(sp)
419406; CHECK-NEXT: addi sp, sp, 16
420- ; CHECK-NEXT: ret
407+ ; CHECK-NEXT: tail callee_byval
421408;
422409; CHECK-LARGE-ZICFILP-LABEL: caller_byval:
423410; CHECK-LARGE-ZICFILP: # %bb.0: # %entry
424411; CHECK-LARGE-ZICFILP-NEXT: lpad 0
425412; CHECK-LARGE-ZICFILP-NEXT: addi sp, sp, -16
426- ; CHECK-LARGE-ZICFILP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
427- ; CHECK-LARGE-ZICFILP-NEXT: lw a0, 8(sp)
428- ; CHECK-LARGE-ZICFILP-NEXT: sw a0, 4(sp)
413+ ; CHECK-LARGE-ZICFILP-NEXT: lw a1, 12(sp)
429414; CHECK-LARGE-ZICFILP-NEXT: .Lpcrel_hi12:
430415; CHECK-LARGE-ZICFILP-NEXT: auipc a0, %pcrel_hi(.LCPI10_0)
431416; CHECK-LARGE-ZICFILP-NEXT: lw t2, %pcrel_lo(.Lpcrel_hi12)(a0)
432- ; CHECK-LARGE-ZICFILP-NEXT: addi a0, sp, 4
433- ; CHECK-LARGE-ZICFILP-NEXT: jalr t2
434- ; CHECK-LARGE-ZICFILP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
417+ ; CHECK-LARGE-ZICFILP-NEXT: addi a0, sp, 8
418+ ; CHECK-LARGE-ZICFILP-NEXT: sw a1, 8(sp)
435419; CHECK-LARGE-ZICFILP-NEXT: addi sp, sp, 16
436- ; CHECK-LARGE-ZICFILP-NEXT: ret
420+ ; CHECK-LARGE-ZICFILP-NEXT: jr t2
437421entry:
438422 %a = alloca ptr
439423 %r = tail call i32 @callee_byval (ptr byval (ptr ) %a )
0 commit comments