https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97770
--- Comment #18 from rguenther at suse dot de <rguenther at suse dot de> --- On Thu, 10 Jun 2021, crazylht at gmail dot com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97770 > > --- Comment #17 from Hongtao.liu <crazylht at gmail dot com> --- > (In reply to Richard Biener from comment #16) > > Changing the signature will not help given we don't want to regress other > > cases. > > Instead we have to somehow remove the pro- and demotions with the help of > > patterns. I think using .POPCOUNT should work there. > > I'm thinking of reimplementing _mm_popcnt_u64 with a backend builtin like > __builtin_ia32_popcountll which is defined as ULONGLONG_FTYPE_ULONGLONG, and > handle that in TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION. That's going to work I guess but it will pessimize general optimization which no longer know this is computing popcount (not sure if the old version exposed that fact).