@samitouri / QOSamiQemu / commits / cc80ed3524

target/arm: Remove DO_ZPZZ_AH_FP from translate-sme.c

Expand the macro at each use site. Merge the two arrays and index by fpcr_ah. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260826174213.614571-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed Aug 26, 2026 at 10:41 UTC cc80ed352482478443a421b8228a13c7e88b9ef5
1 file changed +25 -16
target/arm/tcg/translate-sve.c
+25 -16
@@ -4425,19 +4425,6 @@ TRANS_FEAT_NONSTREAMING(FTSMUL, aa64_sve, gen_gvec_fpst_arg_zzz,
4425 *** SVE Floating Point Arithmetic - Predicated Group
4426 */
4427
4428 -#define DO_ZPZZ_AH_FP(NAME, FEAT, name, ah_name) \
4429 - static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] = { \
4430 - NULL, gen_helper_##name##_h, \
4431 - gen_helper_##name##_s, gen_helper_##name##_d \
4432 - }; \
4433 - static gen_helper_gvec_4_ptr * const name##_ah_zpzz_fns[4] = { \
4434 - NULL, gen_helper_##ah_name##_h, \
4435 - gen_helper_##ah_name##_s, gen_helper_##ah_name##_d \
4436 - }; \
4437 - TRANS_FEAT(NAME, FEAT, gen_gvec_fpst_arg_zpzz, \
4438 - s->fpcr_ah ? name##_ah_zpzz_fns[a->esz] : \
4439 - name##_zpzz_fns[a->esz], a)
4440 -
4428 #define DO_ZPZZ_AH_FP_B16(NAME, FEAT, name, ah_name) \
4429 static gen_helper_gvec_4_ptr * const name##_zpzz_fns[4] = { \
4430 gen_helper_##name##_b16, gen_helper_##name##_h, \
@@ -4499,7 +4486,14 @@ static gen_helper_gvec_4_ptr * const sve_fminnum_fns[4] = {
4486 TRANS_FEAT(FMINNM_zpzz, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
4487 sve_fminnum_fns[a->esz], a)
4488
4502 -DO_ZPZZ_AH_FP(FABD, aa64_sme_or_sve, sve_fabd, sve_ah_fabd)
4489 +static gen_helper_gvec_4_ptr * const sve_fabd_zpzz_fns[4][2] = {
4490 + { NULL, NULL },
4491 + { gen_helper_sve_fabd_h, gen_helper_sve_ah_fabd_h },
4492 + { gen_helper_sve_fabd_s, gen_helper_sve_ah_fabd_s },
4493 + { gen_helper_sve_fabd_d, gen_helper_sve_ah_fabd_d },
4494 +};
4495 +TRANS_FEAT(FABD, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
4496 + sve_fabd_zpzz_fns[a->esz][s->fpcr_ah], a)
4497
4498 static gen_helper_gvec_4_ptr * const sve_fscalbn_zpzz_fns[4] = {
4499 NULL,
@@ -8144,8 +8138,23 @@ static gen_helper_gvec_4_ptr * const sve_fminnmp_zpzz_fns[4] = {
8138 TRANS_FEAT(FMINNMP, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpzz,
8139 sve_fminnmp_zpzz_fns[a->esz], a)
8140
8147 -DO_ZPZZ_AH_FP(FMAXP, aa64_sme_or_sve2, sve2_fmaxp_zpzz, sve2_ah_fmaxp_zpzz)
8148 -DO_ZPZZ_AH_FP(FMINP, aa64_sme_or_sve2, sve2_fminp_zpzz, sve2_ah_fminp_zpzz)
8141 +static gen_helper_gvec_4_ptr * const sve_fmaxp_zpzz_fns[4][2] = {
8142 + { NULL, NULL },
8143 + { gen_helper_sve2_fmaxp_zpzz_h, gen_helper_sve2_ah_fmaxp_zpzz_h },
8144 + { gen_helper_sve2_fmaxp_zpzz_s, gen_helper_sve2_ah_fmaxp_zpzz_s },
8145 + { gen_helper_sve2_fmaxp_zpzz_d, gen_helper_sve2_ah_fmaxp_zpzz_d },
8146 +};
8147 +TRANS_FEAT(FMAXP, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
8148 + sve_fmaxp_zpzz_fns[a->esz][s->fpcr_ah], a)
8149 +
8150 +static gen_helper_gvec_4_ptr * const sve_fminp_zpzz_fns[4][2] = {
8151 + { NULL, NULL },
8152 + { gen_helper_sve2_fminp_zpzz_h, gen_helper_sve2_ah_fminp_zpzz_h },
8153 + { gen_helper_sve2_fminp_zpzz_s, gen_helper_sve2_ah_fminp_zpzz_s },
8154 + { gen_helper_sve2_fminp_zpzz_d, gen_helper_sve2_ah_fminp_zpzz_d },
8155 +};
8156 +TRANS_FEAT(FMINP, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
8157 + sve_fminp_zpzz_fns[a->esz][s->fpcr_ah], a)
8158
8159 static bool do_fmmla(DisasContext *s, arg_rrrr_esz *a,
8160 gen_helper_gvec_4_ptr *fn)