On Sun, 22 Jun 2025 at 00:58, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/tcg/translate-sme.c | 65 ++++++++++++++++++++++++++++++++++ > target/arm/tcg/sme.decode | 36 +++++++++++++++++++ > 2 files changed, 101 insertions(+) > > diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c > index 0e05153924..617621d663 100644 > --- a/target/arm/tcg/translate-sme.c > +++ b/target/arm/tcg/translate-sme.c > @@ -550,6 +550,37 @@ TRANS_FEAT(SRSHL_n1, aa64_sme2, do_z2z_n1, a, > gen_gvec_srshl) > TRANS_FEAT(URSHL_n1, aa64_sme2, do_z2z_n1, a, gen_gvec_urshl) > TRANS_FEAT(SQDMULH_n1, aa64_sme2, do_z2z_n1, a, gen_gvec_sve2_sqdmulh) > > +static bool do_z2z_nn(DisasContext *s, arg_z2z_en *a, GVecGen3Fn *fn) > +{ > + int esz, dn, dm, vsz, n; > + > + if (!sme_sm_enabled_check(s)) { > + return true; > + } > + > + esz = a->esz; > + n = a->n; > + dn = a->zdn; > + dm = a->zm; > + vsz = streaming_vec_reg_size(s); > + > + for (int i = 0; i < n; i++) { > + int dofs = vec_full_reg_offset(s, dn + i); > + int mofs = vec_full_reg_offset(s, dm + i); > + > + fn(esz, dofs, dofs, mofs, vsz, vsz); > + } > + return true; > +}
Don't we need to handle Dn and Dm overlapping here, the way we did in the previous patch ? -- PMM