qemu-arm
[Top][All Lists]
Advanced

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

Re: [Qemu-arm] [PATCH 3/3] target/arm: Use vector minmax expanders for a


From: Peter Maydell
Subject: Re: [Qemu-arm] [PATCH 3/3] target/arm: Use vector minmax expanders for aarch32
Date: Tue, 8 Jan 2019 18:14:46 +0000

On Sun, 6 Jan 2019 at 22:50, Richard Henderson
<address@hidden> wrote:
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>  target/arm/translate.c | 25 +++++++++++++++++++------
>  1 file changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/target/arm/translate.c b/target/arm/translate.c
> index 33b1860148..f3f172f384 100644
> --- a/target/arm/translate.c
> +++ b/target/arm/translate.c
> @@ -6368,6 +6368,25 @@ static int disas_neon_data_insn(DisasContext *s, 
> uint32_t insn)
>              tcg_gen_gvec_cmp(u ? TCG_COND_GEU : TCG_COND_GE, size,
>                               rd_ofs, rn_ofs, rm_ofs, vec_size, vec_size);
>              return 0;
> +
> +        case NEON_3R_VMAX:
> +            if (u) {
> +                tcg_gen_gvec_umax(size, rd_ofs, rn_ofs, rm_ofs,
> +                                  vec_size, vec_size);
> +            } else {
> +                tcg_gen_gvec_smax(size, rd_ofs, rn_ofs, rm_ofs,
> +                                  vec_size, vec_size);
> +            }
> +            return 0;
> +        case NEON_3R_VMIN:
> +            if (u) {
> +                tcg_gen_gvec_umin(size, rd_ofs, rn_ofs, rm_ofs,
> +                                  vec_size, vec_size);
> +            } else {
> +                tcg_gen_gvec_smin(size, rd_ofs, rn_ofs, rm_ofs,
> +                                  vec_size, vec_size);
> +            }
> +            return 0;
>          }
>
>          if (size == 3) {
> @@ -6533,12 +6552,6 @@ static int disas_neon_data_insn(DisasContext *s, 
> uint32_t insn)
>          case NEON_3R_VQRSHL:
>              GEN_NEON_INTEGER_OP_ENV(qrshl);
>              break;
> -        case NEON_3R_VMAX:
> -            GEN_NEON_INTEGER_OP(max);
> -            break;
> -        case NEON_3R_VMIN:
> -            GEN_NEON_INTEGER_OP(min);
> -            break;
>          case NEON_3R_VABD:
>              GEN_NEON_INTEGER_OP(abd);
>              break;
> --

This leaves the helpers neon_max_[su]{8,16} unused and deletable,
I think? neon_max_[su]32 is used only via the #defines of
neon_pmax_[su]32 so could be renamed to pmax. Similarly min/pmin.

thanks
-- PMM



reply via email to

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