https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100257
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> --- > const __m128i in = _mm_setr_epi16(val_0, val_1, val_2, 0, 0, 0, 0, 0); in ix86_expand_vector_init, we can generate asm like vmovd val_0, %xmm0 pinsrw $1, val_1, %xmm0 pinsrw $2, val_2, %xmm0 and let rtl's optimization "merge" val_0 and val_1 since they come from contiguous memory)