Re: [PATCH] RISC-V: Implement reassociation width hook

Jeffrey Law <[email protected]> Mon, 3 Aug 2026 21:14:52 -0600
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>

On 8/3/2026 8:42 PM, Wang Yaduo wrote:
> > Don't the rest of the uarch tuning structure initializers need a change
> > since you added new fields to the structure?  For those use whatever the
> > current defaults are.
>
> Hi Jeff,
>
> Thanks for checking. The other uarch tunings retain the existing 
> default reassociation widths through the default member initializers. 
> Only generic-ooo
> and xt-c9501fdvt use larger scalar widths, since I expect out-of-order 
> cores
> to benefit from the additional ILP.
But don't you have to fill out the initializer, even to a reasonable 
default value?

ie, the initializers look like this:

> /* Costs to use when optimizing for rocket. */
> static const struct riscv_tune_param rocket_tune_info = {
>   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},       /* fp_add */
>   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},       /* fp_mul */
>   {COSTS_N_INSNS (20), COSTS_N_INSNS (20)},     /* fp_div */
>   {COSTS_N_INSNS (4), COSTS_N_INSNS (4)},       /* int_mul */
>   {COSTS_N_INSNS (33), COSTS_N_INSNS (65)},     /* int_div */
>   1,                                            /* issue_rate */
>   3,                                            /* branch_cost */
>   5,                                            /* memory_cost */
>   8,                                            /* fmv_cost */
>   true,                                         /* 
> slow_unaligned_access */
>   false,                                        /* 
> vector_unaligned_access */
>   false,                                        /* use_divmod_expansion */
>   false,                                        /* overlap_op_by_pieces */
>   true,                                         /* use_zero_stride_load */
>   false,                                        /* 
> speculative_sched_vsetvl */
>   RISCV_FUSE_NOTHING,                           /* fusible_ops */
>   NULL,                                         /* vector cost */
>   NULL,                                         /* function_align */
>   NULL,                                         /* jump_align */
>   NULL,                                         /* loop_align */
>   false,                                        /* prefer-agnostic.  */
> };

If you add another field to riscv_tune_param, then don't you need to fix 
all the instances where we initialize instances of that structure?

jeff