On 9/29/20 2:03 PM, frank.ch...@sifive.com wrote: > +++ b/target/riscv/insn_trans/trans_rvv.c.inc > @@ -41,6 +41,7 @@ static bool trans_vsetvl(DisasContext *ctx, arg_vsetvl *a) > gen_get_gpr(s2, a->rs2); > gen_helper_vsetvl(dst, cpu_env, s1, s2); > gen_set_gpr(a->rd, dst); > + mark_vs_dirty(ctx); > tcg_gen_movi_tl(cpu_pc, ctx->pc_succ_insn); > lookup_and_goto_ptr(ctx); > ctx->base.is_jmp = DISAS_NORETURN; > @@ -72,7 +73,7 @@ static bool trans_vsetvli(DisasContext *ctx, arg_vsetvli *a) > } > gen_helper_vsetvl(dst, cpu_env, s1, s2); > gen_set_gpr(a->rd, dst); > - gen_goto_tb(ctx, 0, ctx->pc_succ_insn); > + mark_vs_dirty(ctx);
Removing the gen_goto_tb can't be right all by itself. I think you want to be sharing the code between vsetvl and vsetvli now. Just pass in a TCGv value to a common helper. r~