On Thu, Jul 23, 2020 at 10:15 AM Marc Glisse <marc.gli...@inria.fr> wrote: > > On Wed, 22 Jul 2020, Roger Sayle wrote: > > > Many thanks for the peer review and feedback. I completely agree that > > POPCOUNT > > and PARITY iterators simplifies things and handle the IFN_ variants. > > Is there a reason why the iterators cannot be used for this one? > > +(for popcount (BUILT_IN_POPCOUNT BUILT_IN_POPCOUNTL BUILT_IN_POPCOUNTLL > + BUILT_IN_POPCOUNTIMAX) > + parity (BUILT_IN_PARITY BUILT_IN_PARITYL BUILT_IN_PARITYLL > + BUILT_IN_PARITYIMAX) > + (simplify > + (bit_and (popcount @0) integer_onep) > + (parity @0)))
I should indeed work fine to even do (simplify (bit_and (POPCOUNT @0) integer_onep) (PARITY @0)) Likewise for the existing +/* popcount(X) == 0 is X == 0, and related (in)equalities. */ +(for popcount (POPCOUNT) (for cmp (le eq ne gt) rep (eq eq ne ne) (simplify (cmp (popcount @0) integer_zerop) (rep @0 { build_zero_cst (TREE_TYPE (@0)); })))) you can elide the (for ...) OK with those changes. Richard. > > -- > Marc Glisse