Skip to content

Commit e6fb783

Browse files
committed
Fixups
1 parent 913162b commit e6fb783

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3934,6 +3934,11 @@ void AArch64FrameLowering::determineCalleeSaves(MachineFunction &MF,
39343934
CSStackSize += SpillSize;
39353935
}
39363936

3937+
// Save number of saved regs, so we can easily update CSStackSize later to
3938+
// account for any additional 64-bit GPR saves. Note: After this point
3939+
// only 64-bit GPRs can be added to SavedRegs.
3940+
unsigned NumSavedRegs = SavedRegs.count();
3941+
39373942
// Increase the callee-saved stack size if the function has streaming mode
39383943
// changes, as we will need to spill the value of the VG register.
39393944
// For locally streaming functions, we spill both the streaming and
@@ -3952,9 +3957,6 @@ void AArch64FrameLowering::determineCalleeSaves(MachineFunction &MF,
39523957
if (AFI->hasStackHazardSlotIndex())
39533958
CSStackSize += getStackHazardSize(MF);
39543959

3955-
// Save number of saved regs, so we can easily update CSStackSize later.
3956-
unsigned NumSavedRegs = SavedRegs.count();
3957-
39583960
// If we must call __arm_get_current_vg in the prologue preserve the LR.
39593961
if (requiresSaveVG(MF) && !Subtarget.hasSVE())
39603962
SavedRegs.set(AArch64::LR);

llvm/test/CodeGen/AArch64/sme-must-save-lr-for-vg.ll

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ define void @foo() "aarch64_pstate_sm_body" {
1111
; CHECK-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill
1212
; CHECK-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill
1313
; CHECK-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill
14-
; CHECK-NEXT: stp x29, x30, [sp, #64] // 16-byte Folded Spill
14+
; CHECK-NEXT: str x30, [sp, #64] // 8-byte Folded Spill
1515
; CHECK-NEXT: rdsvl x9, #1
1616
; CHECK-NEXT: lsr x9, x9, #3
17-
; CHECK-NEXT: str x9, [sp, #80] // 8-byte Folded Spill
17+
; CHECK-NEXT: str x9, [sp, #72] // 8-byte Folded Spill
1818
; CHECK-NEXT: bl __arm_get_current_vg
19-
; CHECK-NEXT: str x0, [sp, #88] // 8-byte Folded Spill
20-
; CHECK-NEXT: .cfi_offset vg, -8
21-
; CHECK-NEXT: .cfi_offset w30, -24
22-
; CHECK-NEXT: .cfi_offset w29, -32
19+
; CHECK-NEXT: str x0, [sp, #80] // 8-byte Folded Spill
20+
; CHECK-NEXT: .cfi_offset vg, -16
21+
; CHECK-NEXT: .cfi_offset w30, -32
2322
; CHECK-NEXT: .cfi_offset b8, -40
2423
; CHECK-NEXT: .cfi_offset b9, -48
2524
; CHECK-NEXT: .cfi_offset b10, -56
@@ -30,14 +29,13 @@ define void @foo() "aarch64_pstate_sm_body" {
3029
; CHECK-NEXT: .cfi_offset b15, -96
3130
; CHECK-NEXT: smstart sm
3231
; CHECK-NEXT: smstop sm
33-
; CHECK-NEXT: ldp x29, x30, [sp, #64] // 16-byte Folded Reload
32+
; CHECK-NEXT: ldr x30, [sp, #64] // 8-byte Folded Reload
3433
; CHECK-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload
3534
; CHECK-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload
3635
; CHECK-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
3736
; CHECK-NEXT: ldp d15, d14, [sp], #96 // 16-byte Folded Reload
3837
; CHECK-NEXT: .cfi_def_cfa_offset 0
3938
; CHECK-NEXT: .cfi_restore w30
40-
; CHECK-NEXT: .cfi_restore w29
4139
; CHECK-NEXT: .cfi_restore b8
4240
; CHECK-NEXT: .cfi_restore b9
4341
; CHECK-NEXT: .cfi_restore b10

0 commit comments

Comments
 (0)