@samitouri / QOSamiQemu / commits / bb336e518b

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 <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Jim MacArthur <jim.macarthur@linaro.org> Message-id: 20260630-jmac-fprcvt-v3-2-f4840d5e0a7f@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Jim MacArthur committed Jun 30, 2026 at 14:16 UTC bb336e518b703d104fe367e7c9e402a2fb2379f9
1 file changed +16 -2
target/arm/tcg/translate-a64.c
+16 -2
@@ -9915,7 +9915,14 @@ static bool do_cvtf_f(DisasContext *s, arg_fcvt *a, MemOp src_mop_int,
9915 bool is_signed)
9916 {
9917 TCGv_i64 tcg_int;
9918 - int check = fp_access_check_scalar_hsd(s, a->esz);
9918 + int check;
9919 +
9920 + /* FEAT_FPRCVT allows vector forms in streaming mode */
9921 + if (dc_isar_feature(aa64_fprcvt, s)) {
9922 + s->is_nonstreaming = false;
9923 + }
9924 +
9925 + check = fp_access_check_scalar_hsd(s, a->esz);
9926
9927 if (check <= 0) {
9928 return check == 0;
@@ -10073,7 +10080,14 @@ static bool do_fcvt_f(DisasContext *s, arg_fcvt *a,
10080 ARMFPRounding rmode, MemOp dst_mop_int, bool is_signed)
10081 {
10082 TCGv_i64 tcg_int;
10076 - int check = fp_access_check_scalar_hsd(s, a->esz);
10083 + int check;
10084 +
10085 + /* FEAT_FPRCVT allows vector forms in streaming mode */
10086 + if (dc_isar_feature(aa64_fprcvt, s)) {
10087 + s->is_nonstreaming = false;
10088 + }
10089 +
10090 + check = fp_access_check_scalar_hsd(s, a->esz);
10091
10092 if (check <= 0) {
10093 return check == 0;