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

Reply via email to