On 17 February 2018 at 18:22, Richard Henderson <richard.hender...@linaro.org> wrote: > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/helper-sve.h | 145 +++++++++++++++++++++++++++++++++ > target/arm/sve_helper.c | 196 > ++++++++++++++++++++++++++++++++++++++++++++- > target/arm/translate-sve.c | 65 +++++++++++++++ > target/arm/sve.decode | 42 ++++++++++ > 4 files changed, 447 insertions(+), 1 deletion(-) >
> @@ -105,7 +121,7 @@ LOGICAL_PPPP(sve_orn_pppp, DO_ORN) > LOGICAL_PPPP(sve_nor_pppp, DO_NOR) > LOGICAL_PPPP(sve_nand_pppp, DO_NAND) > > -#undef DO_ADD > +#undef DO_AND Should this be in a previous patch? > #undef DO_BIC > #undef DO_EOR > #undef DO_ORR > diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c > index a9b6ae046d..116002792a 100644 > --- a/target/arm/translate-sve.c > +++ b/target/arm/translate-sve.c > @@ -211,6 +211,71 @@ static void trans_BIC_zzz(DisasContext *s, arg_BIC_zzz > *a, uint32_t insn) > do_vector3_z(s, tcg_gen_gvec_andc, 0, a->rd, a->rn, a->rm); > } > > +/* > + *** SVE Integer Arithmetic - Binary Predicated Group > + */ > + > +static void do_zpzz_ool(DisasContext *s, arg_rprr_esz *a, gen_helper_gvec_4 > *fn) > +{ > + unsigned vsz = vec_full_reg_size(s); > + if (fn == NULL) { > + unallocated_encoding(s); > + return; > + } I think you do not want to be catching unallocated encodings this late in the decode process. We have to identify all the unallocated encodings before we do the "are SVE and FP instructions supposed to trap" tests, because those don't apply to unallocated encodings. > + tcg_gen_gvec_4_ool(vec_full_reg_offset(s, a->rd), > + vec_full_reg_offset(s, a->rn), > + vec_full_reg_offset(s, a->rm), > + pred_full_reg_offset(s, a->pg), > + vsz, vsz, 0, fn); > +} Rest of patch looks OK. thanks -- PMM