================ @@ -305,4 +305,9 @@ defm SVSUB : ZAAddSub<"sub">; let TargetGuard = "sme2" in { def SVLDR_ZT : Inst<"svldr_zt", "viQ", "", MergeNone, "aarch64_sme_ldr_zt", [IsOverloadNone, IsStreamingCompatible, IsSharedZA, IsPreservesZA], [ImmCheck<0, ImmCheck0_0>]>; def SVSTR_ZT : Inst<"svstr_zt", "vi%", "", MergeNone, "aarch64_sme_str_zt", [IsOverloadNone, IsStreamingCompatible, IsSharedZA, IsPreservesZA], [ImmCheck<0, ImmCheck0_0>]>; + +// +// Zero ZT0 +// + def SVZERO_ZT : Inst<"svzero_zt", "vi", "", MergeNone, "aarch64_sme_zero_zt", [IsOverloadNone, IsStreamingCompatible, IsSharedZA, IsPreservesZA], [ImmCheck<0, ImmCheck0_0>]>; ---------------- sdesmalen-arm wrote:
```suggestion def SVZERO_ZT : Inst<"svzero_zt", "vi", "", MergeNone, "aarch64_sme_zero_zt", [IsOverloadNone, IsStreamingCompatible, IsSharedZA], [ImmCheck<0, ImmCheck0_0>]>; ``` While this will change with [PR: Generalise the SME state management attributes](https://github.com/ARM-software/acle/pull/276), in the current version of the spec ZT is considered part of ZA, so zeroing ZT0 is not preserving ZA. See https://github.com/ARM-software/acle/blob/main/main/acle.md#__arm_preserves_za: > ZT state is also considered preserved when a function is marked with > [arm_preserves_za](https://github.com/llvm/llvm-project/pull/72274/files#arm_preserves_za). https://github.com/llvm/llvm-project/pull/72274 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits