From: Jim MacArthur <[email protected]> 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 <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Signed-off-by: Jim MacArthur <[email protected]> Message-id: [email protected] Signed-off-by: Peter Maydell <[email protected]> --- target/arm/tcg/translate-a64.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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; -- 2.43.0
