Re: [RFC] RISC-V: Raise noce if-conversion cost limit

Jeffrey Law <[email protected]>
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>

On 8/6/2026 11:53 PM, wangjue wrote:
> From: juewang <[email protected]>
>
> The branch-cost based noce limit is too small for unpredictable branches on C950 and blocks profitable Zicond sequences.  Add a per-tune factor, defaulting to one, and use five for C950.
>
> This improves 505.mcf_r by nearly 5% on C950.
>
> gcc/ChangeLog:
>
> 	* config/riscv/riscv.cc (riscv_tune_param): Add
> 	noce_ifcvt_unpredictable_cost_factor.
> 	(xt_c9501_tune_info): Set it to 5.
> 	(riscv_max_noce_ifcvt_seq_cost): Scale the branch-cost based limit.
So you can't just raise BRANCH_COST to fix this?  That's the traditional 
big hammer solution.

It might also help if you passed along a testcase.  I've found many of 
the failure to if-convert problems are due to inefficiencies in the 
sequences we generate; we can often get if-conversion to fire by 
generating better generic sequences and fixing costing goofs elsewhere.  
These tend to be more narrow fixes, but help all kinds of cases for 
RISC-V as well as other targets.

In fact, I think I fixed one of these for mcf not terribly long ago.  
  There's a reasonable chance I've looked a the underlying test already 
and have state on the problem.  If you're at all concerned about posting 
spec2017 sources in a public forum, you can pass the case directly along 
to me or even just mentioning the function may be enough.

jeff
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.