On Tue, 26 Apr 2022 at 17:40, Richard Henderson
<[email protected]> wrote:
>
> Signed-off-by: Richard Henderson <[email protected]>
> ---
> target/arm/translate-a64.c | 24 +++++++-----------------
> 1 file changed, 7 insertions(+), 17 deletions(-)
> @@ -6052,7 +6049,7 @@ static void disas_fp_ccomp(DisasContext *s, uint32_t
> insn)
> static void disas_fp_csel(DisasContext *s, uint32_t insn)
> {
> unsigned int mos, type, rm, cond, rn, rd;
> - TCGv_i64 t_true, t_false, t_zero;
> + TCGv_i64 t_true, t_false;
> DisasCompare64 c;
> MemOp sz;
>
> @@ -6097,10 +6094,8 @@ static void disas_fp_csel(DisasContext *s, uint32_t
> insn)
> read_vec_element(s, t_false, rm, 0, sz);
>
> a64_test_cc(&c, cond);
> - t_zero = tcg_const_i64(0);
> - tcg_gen_movcond_i64(c.cond, t_true, c.value, t_zero, t_true, t_false);
> - tcg_temp_free_i64(t_zero);
> - tcg_temp_free_i64(t_false);
> + tcg_gen_movcond_i64(c.cond, t_true, c.value, tcg_constant_i64(0),
> + t_true, t_false);
> a64_free_cc(&c);
>
> /* Note that sregs & hregs write back zeros to the high bits,
This incorrectly drops the free of t_false, which isn't a
tcg_constant_*.
Otherwise
Reviewed-by: Peter Maydell <[email protected]>
thanks
-- PMM