================
@@ -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
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to