|
From: | Richard Henderson |
Subject: | Re: [PATCH 55/67] target/arm: Convert FCVT* (vector, integer) scalar to decodetree |
Date: | Fri, 6 Dec 2024 12:12:19 -0600 |
User-agent: | Mozilla Thunderbird |
On 12/6/24 10:23, Peter Maydell wrote:
On Sun, 1 Dec 2024 at 15:21, Richard Henderson <richard.henderson@linaro.org> wrote:Arm silliness with naming, the scalar insns described as part of the vector instructions, as separate from the "regular" scalar insns which output to general registers. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/arm/tcg/translate-a64.c | 135 ++++++++++++++------------------- target/arm/tcg/a64.decode | 30 ++++++++ 2 files changed, 87 insertions(+), 78 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 98a42feb7d..ad245f2c26 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -8678,6 +8678,16 @@ static void do_fcvt_scalar(DisasContext *s, MemOp out, MemOp esz, tcg_shift, tcg_fpstatus); tcg_gen_extu_i32_i64(tcg_out, tcg_single); break; + case MO_16 | MO_SIGN: + gen_helper_vfp_toshh(tcg_single, tcg_single, + tcg_shift, tcg_fpstatus); + tcg_gen_extu_i32_i64(tcg_out, tcg_single); + break; + case MO_16: + gen_helper_vfp_touhh(tcg_single, tcg_single, + tcg_shift, tcg_fpstatus); + tcg_gen_extu_i32_i64(tcg_out, tcg_single); + break;This hunk adds calls to the toshh and touhh helpers, but as far as I can see it doesn't remove any calls to those helpers that were in the old decode functions or any calls to the handle_simd_shift_fpint_conv() function which was the only one that did call them. Should this be in a different patch?
Removing those happens in patch 61, with FCVTZ* (vector, fixed-point). Here we're only converting the scalar path.
(Conversely, we remove calls to gen_helper_advsimd_f16tosinth and gen_helper_advsimd_f16touinth but don't have those here.)
With the conversion I'm sharing more code. So we (eventially) remove advsimd_f16to*inth entirely and use only vfp_to*hh. They both call the same float16_to_*int16_scalbn function in the end.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |