On Sat, Oct 3, 2020 at 12:19 AM Richard Henderson <
richard.hender...@linaro.org> wrote:

> 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.
>

Oops, I think I somehow mess up the commits.
This commit should only contain: + mark_vs_dirty(ctx); change.
The - gen_goto_tb(ctx, 0, ctx->pc_succ_insn); should be included and
replaced by:
+ tcg_gen_movi_tl(cpu_pc, ctx->pc_succ_insn);
+ lookup_and_goto_ptr(ctx);
in later commit: target/riscv: rvv-1.0: update check functions.


> I think you want to be sharing the code between vsetvl and vsetvli now.
> Just
> pass in a TCGv value to a common helper.
>

The only difference now between vsetvl and vsetvli is the format of zimm
and s2 fields.
But they have different formats and are queried by different functions,
i.e. s2 = tcg_const_tl(a->zimm); and gen_get_gpr(s2, a->rs2);

Is there any elegant way to retrieve the values of zimm and s2 by shared
common codes?


>
> r~
>

Thanks,
Frank Chang

Reply via email to