On 4/30/20 11:09 AM, Peter Maydell wrote: > + for (pass = 0; pass < (a->q ? 4 : 2); pass++) { > + tmp = neon_load_reg(a->vn, pass); > + tmp2 = neon_load_reg(a->vm, pass); > + fn(tmp, tmp, tmp2); > + tcg_temp_free_i32(tmp2); > + neon_store_reg(a->vd, pass, tmp); > + } > + return true; > +} > + > +#define DO_3SAME_32(INSN, func) \ > + static bool trans_##INSN##_S_3s(DisasContext *s, arg_3same *a) \ > + { \ > + static NeonGenTwoOpFn * const fns[] = { \ > + gen_helper_neon_##func##_s8, \ > + gen_helper_neon_##func##_s16, \ > + gen_helper_neon_##func##_s32, \ > + }; \ > + if (a->size > 2) { \ > + return false; \ > + } \ > + return do_3same_32(s, a, fns[a->size]); \ > + } \
Right, I just talked about the .fni4 hook vs the DO_3SAME_64 patch. r~