[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/6] target/cris: Use hswap_i32() in SWAPW opcode
From: |
Peter Maydell |
Subject: |
Re: [PATCH 2/6] target/cris: Use hswap_i32() in SWAPW opcode |
Date: |
Tue, 22 Aug 2023 12:44:46 +0100 |
On Tue, 22 Aug 2023 at 12:01, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> Commit 46be8425ff ("tcg: Implement tcg_gen_{h,w}swap_{i32,i64}")
> introduced the generic hswap_i32(). Use it instead of open-coding
> it as t_gen_swapw().
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> target/cris/translate.c | 14 +-------------
> target/cris/translate_v10.c.inc | 2 +-
> 2 files changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/target/cris/translate.c b/target/cris/translate.c
> index 42103b5558..925ed2c6f6 100644
> --- a/target/cris/translate.c
> +++ b/target/cris/translate.c
> @@ -399,18 +399,6 @@ static inline void t_gen_swapb(TCGv d, TCGv s)
> tcg_gen_or_tl(d, d, t);
> }
>
> -/* Swap the halfwords of the s operand. */
> -static inline void t_gen_swapw(TCGv d, TCGv s)
> -{
> - TCGv t;
> - /* d and s refer the same object. */
> - t = tcg_temp_new();
> - tcg_gen_mov_tl(t, s);
> - tcg_gen_shli_tl(d, t, 16);
> - tcg_gen_shri_tl(t, t, 16);
> - tcg_gen_or_tl(d, d, t);
> -}
> -
> /*
> * Reverse the bits within each byte.
> *
> @@ -1675,7 +1663,7 @@ static int dec_swap_r(CPUCRISState *env, DisasContext
> *dc)
> tcg_gen_not_tl(t0, t0);
> }
> if (dc->op2 & 4) {
> - t_gen_swapw(t0, t0);
> + tcg_gen_hswap_i32(t0, t0);
> }
> if (dc->op2 & 2) {
> t_gen_swapb(t0, t0);
> diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc
> index b7b0517982..0ff15769ec 100644
> --- a/target/cris/translate_v10.c.inc
> +++ b/target/cris/translate_v10.c.inc
> @@ -506,7 +506,7 @@ static void dec10_reg_swap(DisasContext *dc)
> if (dc->dst & 8)
> tcg_gen_not_tl(t0, t0);
> if (dc->dst & 4)
> - t_gen_swapw(t0, t0);
> + tcg_gen_hswap_i32(t0, t0);
Both these are operating on TCGv, not TCGv_i32, so I think this
should be tcg_gen_hswap_tl(). (Compare the tcg_gen_not_tl()
calls.)
> if (dc->dst & 2)
> t_gen_swapb(t0, t0);
> if (dc->dst & 1)
thanks
-- PMM
[PATCH 5/6] target/mips: Use hswap_i64() in DSHD opcode, Philippe Mathieu-Daudé, 2023/08/22
[PATCH 3/6] target/microblaze: Use hswap_i32() in SWAPH opcode, Philippe Mathieu-Daudé, 2023/08/22
[PATCH 6/6] target/loongarch: Use hswap_i64() in REVH.D opcode, Philippe Mathieu-Daudé, 2023/08/22
[PATCH 1/6] target/arm: Use hswap_i32() in VREV/SMLAD opcodes, Philippe Mathieu-Daudé, 2023/08/22