From: Jim MacArthur Date: Tue, 30 Jun 2026 13:16:33 +0000 (+0100) Subject: target/arm/tcg: Allow vector FP conversions with FPRCVT X-Git-Tag: v11.1.0-rc0~26^2~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bb336e518b703d104fe367e7c9e402a2fb2379f9;p=thirdparty%2Fqemu.git target/arm/tcg: Allow vector FP conversions with FPRCVT FEAT_FPRCVT allows the vector forms of FCVTXX and [US]CVTF in streaming mode which would otherwise only be available in nonstreaming mode. Reviewed-by: Alex Bennée Reviewed-by: Richard Henderson Signed-off-by: Jim MacArthur Message-id: 20260630-jmac-fprcvt-v3-2-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell --- diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 0da365e345..2821c84843 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -9915,7 +9915,14 @@ static bool do_cvtf_f(DisasContext *s, arg_fcvt *a, MemOp src_mop_int, bool is_signed) { TCGv_i64 tcg_int; - int check = fp_access_check_scalar_hsd(s, a->esz); + int check; + + /* FEAT_FPRCVT allows vector forms in streaming mode */ + if (dc_isar_feature(aa64_fprcvt, s)) { + s->is_nonstreaming = false; + } + + check = fp_access_check_scalar_hsd(s, a->esz); if (check <= 0) { return check == 0; @@ -10073,7 +10080,14 @@ static bool do_fcvt_f(DisasContext *s, arg_fcvt *a, ARMFPRounding rmode, MemOp dst_mop_int, bool is_signed) { TCGv_i64 tcg_int; - int check = fp_access_check_scalar_hsd(s, a->esz); + int check; + + /* FEAT_FPRCVT allows vector forms in streaming mode */ + if (dc_isar_feature(aa64_fprcvt, s)) { + s->is_nonstreaming = false; + } + + check = fp_access_check_scalar_hsd(s, a->esz); if (check <= 0) { return check == 0;