On Fri, 5 Jun 2026 at 00:50, Richard Henderson <[email protected]> wrote: > > This includes CLS, CLZ, CNT, CNOT, NOT, FABS, FNEG. > > Signed-off-by: Richard Henderson <[email protected]> > --- > target/arm/tcg/translate-sve.c | 21 ++++++++++++++++++--- > target/arm/tcg/sve.decode | 8 ++++++++ > 2 files changed, 26 insertions(+), 3 deletions(-) > > diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c > index e090a0383d..2e138f9ac0 100644 > --- a/target/arm/tcg/translate-sve.c > +++ b/target/arm/tcg/translate-sve.c > @@ -781,30 +781,41 @@ static gen_helper_gvec_3 * const sve_cls_fns[4] = { > gen_helper_sve_cls_s, gen_helper_sve_cls_d, > }; > TRANS_FEAT(CLS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, > sve_cls_fns[a->esz], a, 0) > +TRANS_FEAT(CLS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, > sve_cls_fns[a->esz], a, 1) > > static gen_helper_gvec_3 * const sve_clz_fns[4] = { > gen_helper_sve_clz_b, gen_helper_sve_clz_h, > gen_helper_sve_clz_s, gen_helper_sve_clz_d, > }; > TRANS_FEAT(CLZ_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, > sve_clz_fns[a->esz], a, 0) > +TRANS_FEAT(CLZ_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, > sve_clz_fns[a->esz], a, 1) > > static gen_helper_gvec_3 * const sve_cnt_zpz_fns[4] = { > gen_helper_sve_cnt_zpz_b, gen_helper_sve_cnt_zpz_h, > gen_helper_sve_cnt_zpz_s, gen_helper_sve_cnt_zpz_d, > }; > -TRANS_FEAT(CNT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, > sve_cnt_zpz_fns[a->esz], a, 0) > +TRANS_FEAT(CNT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, > + sve_cnt_zpz_fns[a->esz], a, 0) > +TRANS_FEAT(CNT_zpz_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, > + sve_cnt_zpz_fns[a->esz], a, 1)
With this and the others below, if we want to wrap then we should wrap the CNT_zpz_m line in the earlier patch where we added it, not add it unwrapped and then wrap here. (If there's nothing else in the series that needs a respin, it's not worth respinning just for this.) Reviewed-by: Peter Maydell <[email protected]> thanks -- PMM
