On Sun, Aug 30, 2020 at 4:33 AM Richard Henderson < richard.hender...@linaro.org> wrote:
> On 8/17/20 1:49 AM, frank.ch...@sifive.com wrote: > > +DEF_HELPER_6(vfslide1up_vf_h, void, ptr, ptr, i64, ptr, env, i32) > > +DEF_HELPER_6(vfslide1up_vf_w, void, ptr, ptr, i64, ptr, env, i32) > > +DEF_HELPER_6(vfslide1up_vf_d, void, ptr, ptr, i64, ptr, env, i32) > > +DEF_HELPER_6(vfslide1down_vf_h, void, ptr, ptr, i64, ptr, env, i32) > > +DEF_HELPER_6(vfslide1down_vf_w, void, ptr, ptr, i64, ptr, env, i32) > > +DEF_HELPER_6(vfslide1down_vf_d, void, ptr, ptr, i64, ptr, env, i32) > > You shouldn't need any new helpers. > > The fp scalar argument can be passed to the existing helpers. > I'm happy to reuse vslide1up_vx helper functions. However, opfvf_trans() takes helper prototype of: *typedef void gen_helper_opfvf(TCGv_ptr, TCGv_ptr, TCGv_i64, TCGv_ptr, TCGv_env, TCGv_i32);* but vslide1up_vx helper function's prototype is: *typedef void gen_helper_opivx(TCGv_ptr, TCGv_ptr, TCGv, TCGv_ptr, TCGv_env, TCGv_i32);* The third argument has different types, not sure if it's worth it to sync them all to TCGv_i64. But I'm afraid it would require more effort than keeping them in different helper functions. Frank Chang > > The manual doesn't explicitly say, but I assume the fp scalar needs to be > nan-boxed (for sew > flen), or checked (for sew < flen), just like the > scalar > move instructions. > > > r~