@@ -65,14 +65,18 @@ define i32 @f(<vscale x 2 x i64> %x) {
6565; CHECK-NEXT: .seh_save_zreg z22, 16
6666; CHECK-NEXT: str z23, [sp, #17, mul vl] // 16-byte Folded Spill
6767; CHECK-NEXT: .seh_save_zreg z23, 17
68- ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
69- ; CHECK-NEXT: .seh_save_fplr_x 16
68+ ; CHECK-NEXT: str x28, [sp, #-16]! // 8-byte Folded Spill
69+ ; CHECK-NEXT: .seh_save_reg_x x28, 16
70+ ; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill
71+ ; CHECK-NEXT: .seh_save_reg x30, 8
7072; CHECK-NEXT: .seh_endprologue
7173; CHECK-NEXT: bl g
7274; CHECK-NEXT: mov w0, #3 // =0x3
7375; CHECK-NEXT: .seh_startepilogue
74- ; CHECK-NEXT: ldp x29, x30, [sp] // 16-byte Folded Reload
75- ; CHECK-NEXT: .seh_save_fplr 0
76+ ; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload
77+ ; CHECK-NEXT: .seh_save_reg x30, 8
78+ ; CHECK-NEXT: ldr x28, [sp] // 8-byte Folded Reload
79+ ; CHECK-NEXT: .seh_save_reg x28, 0
7680; CHECK-NEXT: add sp, sp, #16
7781; CHECK-NEXT: .seh_stackalloc 16
7882; CHECK-NEXT: ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload
@@ -365,8 +369,10 @@ define void @f3(i64 %n, <vscale x 2 x i64> %x) {
365369; CHECK-NEXT: .seh_save_zreg z22, 16
366370; CHECK-NEXT: str z23, [sp, #17, mul vl] // 16-byte Folded Spill
367371; CHECK-NEXT: .seh_save_zreg z23, 17
368- ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
369- ; CHECK-NEXT: .seh_save_fplr_x 16
372+ ; CHECK-NEXT: str x28, [sp, #-16]! // 8-byte Folded Spill
373+ ; CHECK-NEXT: .seh_save_reg_x x28, 16
374+ ; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill
375+ ; CHECK-NEXT: .seh_save_reg x30, 8
370376; CHECK-NEXT: sub sp, sp, #16
371377; CHECK-NEXT: .seh_stackalloc 16
372378; CHECK-NEXT: .seh_endprologue
@@ -376,8 +382,10 @@ define void @f3(i64 %n, <vscale x 2 x i64> %x) {
376382; CHECK-NEXT: .seh_startepilogue
377383; CHECK-NEXT: add sp, sp, #16
378384; CHECK-NEXT: .seh_stackalloc 16
379- ; CHECK-NEXT: ldp x29, x30, [sp] // 16-byte Folded Reload
380- ; CHECK-NEXT: .seh_save_fplr 0
385+ ; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload
386+ ; CHECK-NEXT: .seh_save_reg x30, 8
387+ ; CHECK-NEXT: ldr x28, [sp] // 8-byte Folded Reload
388+ ; CHECK-NEXT: .seh_save_reg x28, 0
381389; CHECK-NEXT: add sp, sp, #16
382390; CHECK-NEXT: .seh_stackalloc 16
383391; CHECK-NEXT: ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload
@@ -511,8 +519,10 @@ define void @f4(i64 %n, <vscale x 2 x i64> %x) {
511519; CHECK-NEXT: .seh_save_zreg z22, 16
512520; CHECK-NEXT: str z23, [sp, #17, mul vl] // 16-byte Folded Spill
513521; CHECK-NEXT: .seh_save_zreg z23, 17
514- ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
515- ; CHECK-NEXT: .seh_save_fplr_x 16
522+ ; CHECK-NEXT: str x28, [sp, #-16]! // 8-byte Folded Spill
523+ ; CHECK-NEXT: .seh_save_reg_x x28, 16
524+ ; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill
525+ ; CHECK-NEXT: .seh_save_reg x30, 8
516526; CHECK-NEXT: sub sp, sp, #16
517527; CHECK-NEXT: .seh_stackalloc 16
518528; CHECK-NEXT: addvl sp, sp, #-1
@@ -526,8 +536,10 @@ define void @f4(i64 %n, <vscale x 2 x i64> %x) {
526536; CHECK-NEXT: .seh_allocz 1
527537; CHECK-NEXT: add sp, sp, #16
528538; CHECK-NEXT: .seh_stackalloc 16
529- ; CHECK-NEXT: ldp x29, x30, [sp] // 16-byte Folded Reload
530- ; CHECK-NEXT: .seh_save_fplr 0
539+ ; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload
540+ ; CHECK-NEXT: .seh_save_reg x30, 8
541+ ; CHECK-NEXT: ldr x28, [sp] // 8-byte Folded Reload
542+ ; CHECK-NEXT: .seh_save_reg x28, 0
531543; CHECK-NEXT: add sp, sp, #16
532544; CHECK-NEXT: .seh_stackalloc 16
533545; CHECK-NEXT: ldr z8, [sp, #2, mul vl] // 16-byte Folded Reload
@@ -1093,8 +1105,10 @@ define void @f7(i64 %n) {
10931105; CHECK-LABEL: f7:
10941106; CHECK: .seh_proc f7
10951107; CHECK-NEXT: // %bb.0:
1096- ; CHECK-NEXT: stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
1097- ; CHECK-NEXT: .seh_save_fplr_x 16
1108+ ; CHECK-NEXT: str x28, [sp, #-16]! // 8-byte Folded Spill
1109+ ; CHECK-NEXT: .seh_save_reg_x x28, 16
1110+ ; CHECK-NEXT: str x30, [sp, #8] // 8-byte Folded Spill
1111+ ; CHECK-NEXT: .seh_save_reg x30, 8
10981112; CHECK-NEXT: addvl sp, sp, #-1
10991113; CHECK-NEXT: .seh_allocz 1
11001114; CHECK-NEXT: .seh_endprologue
@@ -1103,8 +1117,10 @@ define void @f7(i64 %n) {
11031117; CHECK-NEXT: .seh_startepilogue
11041118; CHECK-NEXT: addvl sp, sp, #1
11051119; CHECK-NEXT: .seh_allocz 1
1106- ; CHECK-NEXT: ldp x29, x30, [sp], #16 // 16-byte Folded Reload
1107- ; CHECK-NEXT: .seh_save_fplr_x 16
1120+ ; CHECK-NEXT: ldr x30, [sp, #8] // 8-byte Folded Reload
1121+ ; CHECK-NEXT: .seh_save_reg x30, 8
1122+ ; CHECK-NEXT: ldr x28, [sp], #16 // 8-byte Folded Reload
1123+ ; CHECK-NEXT: .seh_save_reg_x x28, 16
11081124; CHECK-NEXT: .seh_endepilogue
11091125; CHECK-NEXT: ret
11101126; CHECK-NEXT: .seh_endfunclet
0 commit comments