https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122014
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Try doing: ``` unsigned int popcount_8_bp(uint8_t *x) { return (unsigned int)__builtin_popcountg(*x); } unsigned int popcount_16_bp(uint16_t *x) { return (unsigned int)__builtin_popcountg(*x); } ``` You will see does a decent job.