[clang] [llvm] [AArch64] Enable the new SME ABI lowering (`-aarch64-new-sme-abi`) by default (PR #172642)

Sander de Smalen via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 17 05:42:59 PST 2025


================
@@ -213,19 +213,18 @@ 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:       // %bb.0: // %entry
 ; CHECK-COMMON-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
-; CHECK-COMMON-NEXT:    rdsvl x8, #1
 ; CHECK-COMMON-NEXT:    mrs x8, TPIDR2_EL0
-; CHECK-COMMON-NEXT:    cbz x8, .LBB6_2
-; CHECK-COMMON-NEXT:    b .LBB6_1
-; CHECK-COMMON-NEXT:  .LBB6_1: // %save.za
+; CHECK-COMMON-NEXT:    cbnz x8, .LBB6_1
+; CHECK-COMMON-NEXT:    b .LBB6_2
+; CHECK-COMMON-NEXT:  .LBB6_1: // %entry
 ; CHECK-COMMON-NEXT:    bl __arm_tpidr2_save
 ; CHECK-COMMON-NEXT:    msr TPIDR2_EL0, xzr
+; CHECK-COMMON-NEXT:    zero {za}
----------------
sdesmalen-arm wrote:

Is this correct? `smstart za` does not zero ZA. So if PSTATE.ZA=0 on entry, then as per definition of `__arm_new("za")` it should explicitly zero ZA (it might still have state from a previous use of ZA)

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


More information about the llvm-commits mailing list