@@ -222,12 +222,12 @@ define i8 @matches_has_sret() nounwind {
222
222
}
223
223
224
224
%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
228
228
; 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
231
231
; CHECK-NEXT: stp q8, q9, [sp, #32] // 32-byte Folded Spill
232
232
; CHECK-NEXT: .seh_save_any_reg_p q8, 32
233
233
; 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 {
236
236
; CHECK-NEXT: .seh_save_any_reg_p q12, 96
237
237
; CHECK-NEXT: stp q14, q15, [sp, #128] // 32-byte Folded Spill
238
238
; 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
243
245
; CHECK-NEXT: .seh_endprologue
246
+ ; CHECK-NEXT: mov x19, x0
247
+ ; CHECK-NEXT: mov x8, x0
248
+ ; CHECK-NEXT: mov x0, x1
244
249
; CHECK-NEXT: blr x9
245
250
; CHECK-NEXT: adrp x8, __os_arm64x_dispatch_ret
246
251
; CHECK-NEXT: ldr x0, [x8, :lo12:__os_arm64x_dispatch_ret]
252
+ ; CHECK-NEXT: mov x8, x19
247
253
; 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
250
258
; CHECK-NEXT: ldp q14, q15, [sp, #128] // 32-byte Folded Reload
251
259
; CHECK-NEXT: .seh_save_any_reg_p q14, 128
252
260
; 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 {
255
263
; CHECK-NEXT: .seh_save_any_reg_p q10, 64
256
264
; CHECK-NEXT: ldp q8, q9, [sp, #32] // 32-byte Folded Reload
257
265
; 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
260
268
; CHECK-NEXT: .seh_endepilogue
261
269
; CHECK-NEXT: br x0
262
270
; CHECK-NEXT: .seh_endfunclet
@@ -457,7 +465,7 @@ define %T2 @simple_struct(%T1 %0, %T2 %1, %T3, %T4) nounwind {
457
465
; CHECK-NEXT: .symidx $ientry_thunk$cdecl$i8$v
458
466
; CHECK-NEXT: .word 1
459
467
; CHECK-NEXT: .symidx "#has_aligned_sret"
460
- ; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m16$v
468
+ ; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m16$i8
461
469
; CHECK-NEXT: .word 1
462
470
; CHECK-NEXT: .symidx "#small_array"
463
471
; CHECK-NEXT: .symidx $ientry_thunk$cdecl$m2$m2F8
0 commit comments