[llvm] [AArch64][SVE] Coalesce SVE prologue/epilogue stack adjustments (PR #163956)
    Sam Tebbs via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Tue Oct 21 02:15:09 PDT 2025
    
    
  
================
@@ -370,6 +370,21 @@ SVEFrameSizes AArch64PrologueEpilogueCommon::getSVEStackFrameSizes() const {
           {ZPRCalleeSavesSize, PPRLocalsSize + ZPRLocalsSize}};
 }
 
+SVEStackAllocations AArch64PrologueEpilogueCommon::getSVEStackAllocations(
+    SVEFrameSizes const &SVE) {
+  StackOffset AfterZPRs = SVE.ZPR.LocalsSize;
+  StackOffset BeforePPRs = SVE.ZPR.CalleeSavesSize + SVE.PPR.CalleeSavesSize;
+  StackOffset AfterPPRs = {};
+  if (SVELayout == SVEStackLayout::Split) {
+    BeforePPRs = SVE.PPR.CalleeSavesSize;
+    if (SVE.ZPR.CalleeSavesSize)
+      AfterPPRs += SVE.PPR.LocalsSize + SVE.ZPR.CalleeSavesSize;
+    else
+      AfterZPRs += SVE.PPR.LocalsSize; // Group allocation of locals.
----------------
SamTebbs33 wrote:
Isn't this the same thing as `AfterZPRs += SVE.PPR.LocalsSize + SVE.ZPR.CalleeSavesSize`? If `CalleeSavesSize` is zero (falsey) then adding it is fine.
https://github.com/llvm/llvm-project/pull/163956
    
    
More information about the llvm-commits
mailing list