On 7/22/20 2:16 AM, frank.ch...@sifive.com wrote: > + ((a->rd & ((LEN) - 1)) == 0) && \
QEMU_IS_ALIGNED(a->rd, LEN) > + tcg_gen_gvec_mov(8, vreg_ofs(s, a->rd + i), \ > + vreg_ofs(s, a->rs2 + i), \ > + s->vlen / 8, s->vlen / 8); \ The first argument should be MO_8 (= 0) not 8. You should have seen assertion failures with this. There should be no reason to loop on this -- one move should be enough: tcg_gen_gvec_mov(MO_8, vreg_ofs(s, a->rd), vreg_ofs(s, a->rs2), s->vlen / 8 * LEN, s->vlen / 8 * LEN); If *that* asserts, because the length is too long or something, then I'll make changes to tcg/tcg-op-gvec.c to make it work. r~