Message ID | 20240221213140.365232-6-dbarboza@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | riscv: set vstart_eq_zero on mark_vs_dirty | expand |
On 2/21/24 11:31, Daniel Henrique Barboza wrote: > At this moment the global is used only in do_vsetvl(). Do a direct env > load in do_vsetvl() to read 'vl' and remove the global. > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Daniel Henrique Barboza<dbarboza@ventanamicro.com> > --- > target/riscv/insn_trans/trans_rvv.c.inc | 2 +- > target/riscv/translate.c | 3 +-- > 2 files changed, 2 insertions(+), 3 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 21/2/24 22:31, Daniel Henrique Barboza wrote: > At this moment the global is used only in do_vsetvl(). Do a direct env > load in do_vsetvl() to read 'vl' and remove the global. > > Suggested-by: Richard Henderson <richard.henderson@linaro.org> > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> > --- > target/riscv/insn_trans/trans_rvv.c.inc | 2 +- > target/riscv/translate.c | 3 +-- > 2 files changed, 2 insertions(+), 3 deletions(-) I was expecting this to be squashed in previous patch, but it is indeed clearer as a separate one. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On Thu, Feb 22, 2024 at 7:34 AM Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > At this moment the global is used only in do_vsetvl(). Do a direct env > load in do_vsetvl() to read 'vl' and remove the global. > > Suggested-by: Richard Henderson <richard.henderson@linaro.org> > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > target/riscv/insn_trans/trans_rvv.c.inc | 2 +- > target/riscv/translate.c | 3 +-- > 2 files changed, 2 insertions(+), 3 deletions(-) > > diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc > index 58299d9bb8..69f32d081e 100644 > --- a/target/riscv/insn_trans/trans_rvv.c.inc > +++ b/target/riscv/insn_trans/trans_rvv.c.inc > @@ -157,7 +157,7 @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2) > > if (rd == 0 && rs1 == 0) { > s1 = tcg_temp_new(); > - tcg_gen_mov_tl(s1, cpu_vl); > + tcg_gen_ld_tl(s1, tcg_env, offsetof(CPURISCVState, vl)); > } else if (rs1 == 0) { > /* As the mask is at least one bit, RV_VLEN_MAX is >= VLMAX */ > s1 = tcg_constant_tl(RV_VLEN_MAX); > diff --git a/target/riscv/translate.c b/target/riscv/translate.c > index f2f0593830..3040f5e0e4 100644 > --- a/target/riscv/translate.c > +++ b/target/riscv/translate.c > @@ -38,7 +38,7 @@ > #undef HELPER_H > > /* global register indices */ > -static TCGv cpu_gpr[32], cpu_gprh[32], cpu_pc, cpu_vl; > +static TCGv cpu_gpr[32], cpu_gprh[32], cpu_pc; > static TCGv_i64 cpu_fpr[32]; /* assume F and D extensions */ > static TCGv load_res; > static TCGv load_val; > @@ -1320,7 +1320,6 @@ void riscv_translate_init(void) > } > > cpu_pc = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, pc), "pc"); > - cpu_vl = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, vl), "vl"); > load_res = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_res), > "load_res"); > load_val = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_val), > -- > 2.43.2 > >
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index 58299d9bb8..69f32d081e 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -157,7 +157,7 @@ static bool do_vsetvl(DisasContext *s, int rd, int rs1, TCGv s2) if (rd == 0 && rs1 == 0) { s1 = tcg_temp_new(); - tcg_gen_mov_tl(s1, cpu_vl); + tcg_gen_ld_tl(s1, tcg_env, offsetof(CPURISCVState, vl)); } else if (rs1 == 0) { /* As the mask is at least one bit, RV_VLEN_MAX is >= VLMAX */ s1 = tcg_constant_tl(RV_VLEN_MAX); diff --git a/target/riscv/translate.c b/target/riscv/translate.c index f2f0593830..3040f5e0e4 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -38,7 +38,7 @@ #undef HELPER_H /* global register indices */ -static TCGv cpu_gpr[32], cpu_gprh[32], cpu_pc, cpu_vl; +static TCGv cpu_gpr[32], cpu_gprh[32], cpu_pc; static TCGv_i64 cpu_fpr[32]; /* assume F and D extensions */ static TCGv load_res; static TCGv load_val; @@ -1320,7 +1320,6 @@ void riscv_translate_init(void) } cpu_pc = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, pc), "pc"); - cpu_vl = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, vl), "vl"); load_res = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_res), "load_res"); load_val = tcg_global_mem_new(tcg_env, offsetof(CPURISCVState, load_val),
At this moment the global is used only in do_vsetvl(). Do a direct env load in do_vsetvl() to read 'vl' and remove the global. Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- target/riscv/insn_trans/trans_rvv.c.inc | 2 +- target/riscv/translate.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-)