On Sun, 22 Jun 2025 at 00:52, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/tcg/translate-sme.c | 12 ++++++++++++ > target/arm/tcg/sme.decode | 6 ++++++ > 2 files changed, 18 insertions(+) > > diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c > index 37f4d341f0..8b0a33e2ae 100644 > --- a/target/arm/tcg/translate-sme.c > +++ b/target/arm/tcg/translate-sme.c > @@ -291,6 +291,18 @@ static bool do_ldst_r(DisasContext *s, arg_ldstr *a, > GenLdStR *fn) > TRANS_FEAT(LDR, aa64_sme, do_ldst_r, a, gen_sve_ldr) > TRANS_FEAT(STR, aa64_sme, do_ldst_r, a, gen_sve_str) > > +static bool do_ldst_zt0(DisasContext *s, arg_ldstzt0 *a, GenLdStR *fn) > +{ > + if (sme2_zt0_enabled_check(s)) { > + fn(s, tcg_env, offsetof(CPUARMState, za_state.zt0), > + sizeof_field(CPUARMState, za_state.zt0), a->rn, 0); > + } > + return true; > +} > + > +TRANS_FEAT(LDR_zt0, aa64_sme2, do_ldst_zt0, a, gen_sve_ldr) > +TRANS_FEAT(STR_zt0, aa64_sme2, do_ldst_zt0, a, gen_sve_str)
The alignment check the pseudocode requires happens inside gen_sve_ldr/str, right? I don't entirely understand why, though, because those functions don't seem to use MO_ALIGN. Anyway, given that these insns have the same alignment check requirement as the SVE LDR (vector) and SME LDR (array vector) this patch is fine: Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM