@@ -222,12 +222,12 @@ define i8 @matches_has_sret() nounwind {
222222}
223223
224224%TSRet = type { i64 , i64 }
225- define void @has_aligned_sret (ptr align 32 sret (%TSRet )) nounwind {
226- ; CHECK-LABEL: .def $ientry_thunk$cdecl$m16$v ;
227- ; CHECK: .section .wowthk$aa,"xr",discard,$ientry_thunk$cdecl$m16$v
225+ define void @has_aligned_sret (ptr align 32 sret (%TSRet ), i32 ) nounwind {
226+ ; CHECK-LABEL: .def $ientry_thunk$cdecl$m16$i8 ;
227+ ; CHECK: .section .wowthk$aa,"xr",discard,$ientry_thunk$cdecl$m16$i8
228228; CHECK: // %bb.0:
229- ; CHECK-NEXT: stp q6, q7, [sp, #-176 ]! // 32-byte Folded Spill
230- ; CHECK-NEXT: .seh_save_any_reg_px q6, 176
229+ ; CHECK-NEXT: stp q6, q7, [sp, #-192 ]! // 32-byte Folded Spill
230+ ; CHECK-NEXT: .seh_save_any_reg_px q6, 192
231231; CHECK-NEXT: stp q8, q9, [sp, #32] // 32-byte Folded Spill
232232; CHECK-NEXT: .seh_save_any_reg_p q8, 32
233233; CHECK-NEXT: stp q10, q11, [sp, #64] // 32-byte Folded Spill
@@ -236,17 +236,25 @@ define void @has_aligned_sret(ptr align 32 sret(%TSRet)) nounwind {
236236; CHECK-NEXT: .seh_save_any_reg_p q12, 96
237237; CHECK-NEXT: stp q14, q15, [sp, #128] // 32-byte Folded Spill
238238; CHECK-NEXT: .seh_save_any_reg_p q14, 128
239- ; CHECK-NEXT: stp x29, x30, [sp, #160] // 16-byte Folded Spill
240- ; CHECK-NEXT: .seh_save_fplr 160
241- ; CHECK-NEXT: add x29, sp, #160
242- ; CHECK-NEXT: .seh_add_fp 160
239+ ; CHECK-NEXT: str x19, [sp, #160] // 8-byte Folded Spill
240+ ; CHECK-NEXT: .seh_save_reg x19, 160
241+ ; CHECK-NEXT: stp x29, x30, [sp, #168] // 16-byte Folded Spill
242+ ; CHECK-NEXT: .seh_save_fplr 168
243+ ; CHECK-NEXT: add x29, sp, #168
244+ ; CHECK-NEXT: .seh_add_fp 168
243245; CHECK-NEXT: .seh_endprologue
246+ ; CHECK-NEXT: mov x19, x0
247+ ; CHECK-NEXT: mov x8, x0
248+ ; CHECK-NEXT: mov x0, x1
244249; CHECK-NEXT: blr x9
245250; CHECK-NEXT: adrp x8, __os_arm64x_dispatch_ret
246251; CHECK-NEXT: ldr x0, [x8, :lo12:__os_arm64x_dispatch_ret]
252+ ; CHECK-NEXT: mov x8, x19
247253; CHECK-NEXT: .seh_startepilogue
248- ; CHECK-NEXT: ldp x29, x30, [sp, #160] // 16-byte Folded Reload
249- ; CHECK-NEXT: .seh_save_fplr 160
254+ ; CHECK-NEXT: ldp x29, x30, [sp, #168] // 16-byte Folded Reload
255+ ; CHECK-NEXT: .seh_save_fplr 168
256+ ; CHECK-NEXT: ldr x19, [sp, #160] // 8-byte Folded Reload
257+ ; CHECK-NEXT: .seh_save_reg x19, 160
250258; CHECK-NEXT: ldp q14, q15, [sp, #128] // 32-byte Folded Reload
251259; CHECK-NEXT: .seh_save_any_reg_p q14, 128
252260; CHECK-NEXT: ldp q12, q13, [sp, #96] // 32-byte Folded Reload
@@ -255,8 +263,8 @@ define void @has_aligned_sret(ptr align 32 sret(%TSRet)) nounwind {
255263; CHECK-NEXT: .seh_save_any_reg_p q10, 64
256264; CHECK-NEXT: ldp q8, q9, [sp, #32] // 32-byte Folded Reload
257265; CHECK-NEXT: .seh_save_any_reg_p q8, 32
258- ; CHECK-NEXT: ldp q6, q7, [sp], #176 // 32-byte Folded Reload
259- ; CHECK-NEXT: .seh_save_any_reg_px q6, 176
266+ ; CHECK-NEXT: ldp q6, q7, [sp], #192 // 32-byte Folded Reload
267+ ; CHECK-NEXT: .seh_save_any_reg_px q6, 192
260268; CHECK-NEXT: .seh_endepilogue
261269; CHECK-NEXT: br x0
262270; CHECK-NEXT: .seh_endfunclet
@@ -457,7 +465,7 @@ define %T2 @simple_struct(%T1 %0, %T2 %1, %T3, %T4) nounwind {
457465; CHECK-NEXT: .symidx $ientry_thunk$cdecl$i8$v
458466; CHECK-NEXT: .word 1
459467; CHECK-NEXT: .symidx "#has_aligned_sret"
460- ; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m16$v
468+ ; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m16$i8
461469; CHECK-NEXT: .word 1
462470; CHECK-NEXT: .symidx "#small_array"
463471; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m2$m2F8
0 commit comments