On Sun, 6 Jan 2019 at 22:50, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > 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