On Mon, 20 Nov 2023, Jakub Jelinek wrote:

> On Mon, Nov 20, 2023 at 07:54:54AM +0000, Richard Biener wrote:
> > On Fri, 17 Nov 2023, Jakub Jelinek wrote:
> > > Per the earlier discussions on this PR, the following patch folds
> > > popcount (x) == 1 (and != 1) into (x ^ (x - 1)) > x - 1 (or <=)
> > > if the corresponding popcount optab isn't implemented (I think any
> > > double-word popcount or call will be necessarily slower than the
> > > above cheap 3 op check and even for -Os larger or same size).
> > > 
> > > I've noticed e.g. C++ aligned new starts with std::has_single_bit
> > > which does popcount (x) == 1.
> > > 
> > > As a follow-up, I'm considering changing in this routine the popcount
> > > call to IFN_POPCOUNT with 2 arguments and during expansion test costs.
> > > 
> > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> > 
> > Classically this would have been an RTL expansion alternative, given
> > we want to do less of those the next place would have been the ISEL
> > pass.  Any particular reason you chose widening-mul for this (guess
> > that pass just has a bad name and it's the effective "optimize" ISEL pass
> > we have).
> 
> I think the ssa-math-opts pass does far more of this staff than the isel
> pass which only deals with vector stuff right now and you've even mentioned
> that pass for that in the PR90693 thread.
> That said, I can move it into the isel pass as well if you prefer that.

I think it's fine as you posted (and Jeff approved), I'm just wondering
if we should rename that pass somehow ;)  Note ISEL is more for
required pre-expansion stuff and widen-mul is for expansion related but
optimization parts.

Richard.

Reply via email to