[clang] [llvm] [AArch64][SME] Save VG for unwind info when changing streaming-mode (PR #83301)

Kerry McLaughlin via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 13 08:53:35 PDT 2024


================
@@ -214,7 +232,8 @@ declare double @za_shared_callee(double) "aarch64_inout_za"
 define double  @za_new_caller_to_za_shared_callee(double %x) nounwind noinline optnone "aarch64_new_za"{
 ; CHECK-COMMON-LABEL: za_new_caller_to_za_shared_callee:
 ; CHECK-COMMON:       // %bb.0: // %prelude
-; CHECK-COMMON-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
+; CHECK-COMMON-NEXT:    stp x29, x30, [sp, #-32]! // 16-byte Folded Spill
+; CHECK-COMMON-NEXT:    str x19, [sp, #16] // 8-byte Folded Spill
----------------
kmclaughlin-arm wrote:

I've taken a closer look at this and I think the changes in `@za_new_caller_to_za_shared_callee` are correct. Because it's an `aarch64_new_za` function, it has to set up a lazy-save buffer on entry and a variable sized object is allocated on the stack for this. The function is not streaming, so x19 will only be spilled if the function has SVE.

The buffer is not used however, and https://github.com/llvm/llvm-project/pull/81648 was created to remove the lazy-save from tests like this where it is not required.

https://github.com/llvm/llvm-project/pull/83301


More information about the cfe-commits mailing list