Вы можете просто сделать сдвиг влево (PSLLD
) с последующим арифметическим сдвигом вправо (PSRAD
), например, используя встроенные функции:
v = _mm_srai_pi32(_mm_slli_pi32(v, 16), 16);
(Предполагается, что у вас уже есть 16-битные значения в младших половинах каждого 32-битного слова.)