[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