qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 55/67] target/arm: Convert FCVT* (vector, integer) scalar to


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~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]