On 12/6/24 10:23, Peter Maydell wrote:
On Sun, 1 Dec 2024 at 15:21, Richard Henderson
<richard.hender...@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.hender...@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~