On Sun, 22 Jun 2025 at 00:54, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > ---
> +static bool do_mova_tile_n(DisasContext *s, arg_mova_t *a, int n, bool > to_vec) > +{ > + static gen_helper_gvec_2 * const cz_fns[] = { > + gen_helper_sme2_mova_cz_b, gen_helper_sme2_mova_cz_h, > + gen_helper_sme2_mova_cz_s, gen_helper_sme2_mova_cz_d, > + }; > + static gen_helper_gvec_2 * const zc_fns[] = { > + gen_helper_sme2_mova_zc_b, gen_helper_sme2_mova_zc_h, > + gen_helper_sme2_mova_zc_s, gen_helper_sme2_mova_zc_d, > + }; > + TCGv_ptr t_za; > + int svl; > + > + if (!sme_smza_enabled_check(s)) { > + return true; > + } > + > + svl = streaming_vec_reg_size(s); > + if (svl == 16 && n == 4 && a->esz == MO_64) { "svl < 32" would be a closer match to the pseudocode. Exceedingly nitpicky nit: the pseudocode seems to require that if the SVL is < 256 bits because the implementation doesn't support any larger SVL then this UNDEF should take precedence over the SVE/ZA-enabled check, but if the SVL is < 256 bits because software has set it that way then that UNDEF check happens after the SVE/ZA-enabled check. (The former happens in the decode-pseudocode, the latter in the operation-pseudocode.) > + unallocated_encoding(s); > + return true; > + } Otherwise Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM