On 9/11/19 2:25 AM, liuzhiwei wrote: > +/* vfmv.f.s rd, vs2 # rd = vs2[0] (rs1=0) */ > +void VECTOR_HELPER(vfmv_f_s)(CPURISCVState *env, uint32_t rs1, uint32_t rs2, > + uint32_t rd) ... > +/* vmv.s.x vd, rs1 # vd[0] = rs1 */ > +void VECTOR_HELPER(vmv_s_x)(CPURISCVState *env, uint32_t rs1, uint32_t rs2, > + uint32_t rd) ... > +/* vfmv.s.f vd, rs1 # vd[0] = rs1 (vs2 = 0) */ > +void VECTOR_HELPER(vfmv_s_f)(CPURISCVState *env, uint32_t rs1, > + uint32_t rs2, uint32_t rd)
I'll note that, with the vector parameters known to the translator, as I have advocated, these operations are trivially expanded inline as one or two tcg operations. r~