On Tue, May 12, 2026 at 1:31 PM Daniel Henrique Barboza <[email protected]> wrote: > > The non-standard extensions, in this particular function the vendor > extensions, are all riscv,isa names that starts with 'x'. > > In theory this is a bit slower than using riscv_cpu_vendor_exts > (isa_edata_arr is longer) but riscv_cpu_update_misa_x() is executed only > once during finalize(), i.e. not a hot path. We're accepting a tiny > performance hit as as a tradeoff for the code simplication we'll have > later by removing all riscv_cpu_* arrays. > > Signed-off-by: Daniel Henrique Barboza <[email protected]>
Acked-by: Alistair Francis <[email protected]> Alistair > --- > target/riscv/tcg/tcg-cpu.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c > index 8dea22bae5..b7d59f40f2 100644 > --- a/target/riscv/tcg/tcg-cpu.c > +++ b/target/riscv/tcg/tcg-cpu.c > @@ -1155,10 +1155,11 @@ static void riscv_cpu_update_misa_c(RISCVCPU *cpu) > static void riscv_cpu_update_misa_x(RISCVCPU *cpu) > { > CPURISCVState *env = &cpu->env; > - const RISCVCPUMultiExtConfig *arr = riscv_cpu_vendor_exts; > + const RISCVIsaExtData *edata; > > - for (int i = 0; arr[i].name != NULL; i++) { > - if (isa_ext_is_enabled(cpu, arr[i].offset)) { > + for (edata = isa_edata_arr; edata && edata->name; edata++) { > + if (edata->name[0] == 'x' > + && isa_ext_is_enabled(cpu, edata->ext_enable_offset)) { > riscv_cpu_set_misa_ext(env, env->misa_ext | RVX); > break; > } > -- > 2.43.0 > >
