https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102812
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- Please note that the code above should compile via ix86_expand_vector_set, similar to: --cut here-- typedef short v8hi __attribute__((__vector_size__(16))); v8hi foo (short a) { return (v8hi) {a, 0, 0, 0, 0, 0, 0, 0 }; } --cut here-- that results in: vpxor %xmm0, %xmm0, %xmm0 vpinsrw $0, %edi, %xmm0, %xmm0 ret