https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91201
--- Comment #19 from Joel Yliluoma <bisqwit at iki dot fi> --- If the function return type is changed to "unsigned short", the AVX code with "vpextrb" will do a spurious "movzx eax, al" at the end — but if the return type is "unsigned int", it will not. The code with "(v)movd" should of course do it, if the vector element size is shorter than the return type.