@samitouri / QOSamiQemu / commits / 62fbcab71c

target/arm: Remove DO_ZPZZ_AH_FP_B16 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-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed Aug 26, 2026 at 10:41 UTC 62fbcab71c39f4dda75b0994d11583ed4407dc24
1 file changed +17 -15
target/arm/tcg/translate-sve.c
+17 -15
@@ -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_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, \
4431 - gen_helper_##name##_s, gen_helper_##name##_d \
4432 - }; \
4433 - static gen_helper_gvec_4_ptr * const name##_ah_zpzz_fns[4] = { \
4434 - gen_helper_##ah_name##_b16, 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 static gen_helper_gvec_4_ptr * const sve_fadd_zpzz_fns[4] = {
4429 gen_helper_sve_fadd_b16,
4430 gen_helper_sve_fadd_h,
@@ -4465,8 +4452,23 @@ static gen_helper_gvec_4_ptr * const sve_fmul_zpzz_fns[4] = {
4452 TRANS_FEAT(FMUL_zpzz, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
4453 sve_fmul_zpzz_fns[a->esz], a)
4454
4468 -DO_ZPZZ_AH_FP_B16(FMIN_zpzz, aa64_sme_or_sve, sve_fmin, sve_ah_fmin)
4469 -DO_ZPZZ_AH_FP_B16(FMAX_zpzz, aa64_sme_or_sve, sve_fmax, sve_ah_fmax)
4455 +static gen_helper_gvec_4_ptr * const sve_fmin_fns[4][2] = {
4456 + { gen_helper_sve_fmin_b16, gen_helper_sve_ah_fmin_b16 },
4457 + { gen_helper_sve_fmin_h, gen_helper_sve_ah_fmin_h },
4458 + { gen_helper_sve_fmin_s, gen_helper_sve_ah_fmin_s },
4459 + { gen_helper_sve_fmin_d, gen_helper_sve_ah_fmin_d },
4460 +};
4461 +TRANS_FEAT(FMIN_zpzz, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
4462 + sve_fmin_fns[a->esz][s->fpcr_ah], a)
4463 +
4464 +static gen_helper_gvec_4_ptr * const sve_fmax_fns[4][2] = {
4465 + { gen_helper_sve_fmax_b16, gen_helper_sve_ah_fmax_b16 },
4466 + { gen_helper_sve_fmax_h, gen_helper_sve_ah_fmax_h },
4467 + { gen_helper_sve_fmax_s, gen_helper_sve_ah_fmax_s },
4468 + { gen_helper_sve_fmax_d, gen_helper_sve_ah_fmax_d },
4469 +};
4470 +TRANS_FEAT(FMAX_zpzz, aa64_sme_or_sve, gen_gvec_fpst_arg_zpzz,
4471 + sve_fmax_fns[a->esz][s->fpcr_ah], a)
4472
4473 static gen_helper_gvec_4_ptr * const sve_fmaxnum_fns[4] = {
4474 gen_helper_sve_fmaxnum_b16,