On Fri, May 15, 2026 at 3:02 PM Lili Cui <[email protected]> wrote:
>
> Hi,
>
> This patch increases the branch misprediction scale for generic tuning to
> better reflect the cost on modern CPUs with deeper pipelines.
>
> Bootstrapped and regression tested on x86_64-pc-linux-gnu. OK for trunk?
Any comments from AMD folks?
>
> Thanks,
> Lili.
>
>
> Increase the branch misprediction scale for generic tuning from
> COSTS_N_INSNS (2) to COSTS_N_INSNS (2) + 3.
>
> Modern CPUs have deeper pipelines, making branch mispredictions more
> expensive. Increasing this cost encourages if-conversion, avoiding
> pipeline stalls from mispredicted branches.
>
> This improves 544.nab_r (-O2) by 12.7% on GNR and 12.1% on Znver5 with
> single-copy.
>
> gcc/ChangeLog:
>
> * config/i386/x86-tune-costs.h (generic_cost): Increase branch
> mispredict scale from COSTS_N_INSNS (2) to COSTS_N_INSNS (2) + 3.
> ---
> gcc/config/i386/x86-tune-costs.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/config/i386/x86-tune-costs.h
> b/gcc/config/i386/x86-tune-costs.h
> index 7819fdf7c02..0c687a11a74 100644
> --- a/gcc/config/i386/x86-tune-costs.h
> +++ b/gcc/config/i386/x86-tune-costs.h
> @@ -4274,7 +4274,7 @@ struct processor_costs generic_cost = {
> "16", /* Func alignment. */
> 4, /* Small unroll limit. */
> 2, /* Small unroll factor. */
> - COSTS_N_INSNS (2), /* Branch mispredict scale. */
> + COSTS_N_INSNS (2) + 3, /* Branch mispredict scale. */
> };
>
> /* core_cost should produce code tuned for Core familly of CPUs. */
> --
> 2.34.1
>
--
BR,
Hongtao