https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97770
--- Comment #9 from Hongtao.liu <crazylht at gmail dot com> --- > I guess that the vectorized popcount IFN is defined to be VnDI -> VnDI > but we want to have VnSImode results. This means the instruction is > wrongly modeled in vectorized form? > Yes, because we have __builtin_popcount{l,ll} defined as {BT_FN_INT_ULONG, BT_FN_INT_ULONGLONG} but for vectorized form, gcc require mode of src and dest to be the same. popcountm2: Store into operand 0 the number of 1-bits in operand 1. m is either a scalar or vector integer mode. When it is a scalar, operand 1 has mode m but operand 0 can have whatever scalar integer mode is suitable for the target. The compiler will insert conversion instructions as necessary (typically to convert the result to the same width as int). When m is a vector, both operands must have mode m. This pattern is not allowed to FAIL.