_mm_cvtepi8_epi16
Microsoft Specific
Emits the Streaming SIMD Extensions 4 (SSE4) instruction pmovsxbw. This instruction performs a conversion of signed integers from 8-bit to 16-bit.
__m128i _mm_cvtepi8_epi16( __m128i a );
#include <stdio.h>
#include <smmintrin.h>
int main ()
{
__m128i a;
a.m128i_i8[0] = 1;
a.m128i_i8[1] = -1;
a.m128i_i8[2] = -100;
a.m128i_i8[3] = 100;
a.m128i_i8[4] = -128;
a.m128i_i8[5] = 127;
a.m128i_i8[6] = 0;
a.m128i_i8[7] = 12;
__m128i res = _mm_cvtepi8_epi16(a);
printf_s("Original lowest 8 bit integers:\n%4i, %4i\n%4i, %4i\n%4i, %4i\n%4i, %4i\n\n",
a.m128i_i8[7], a.m128i_i8[6], a.m128i_i8[5], a.m128i_i8[4],
a.m128i_i8[3], a.m128i_i8[2], a.m128i_i8[1], a.m128i_i8[0]);
printf_s("Resulting 16 bit integers:\n%4i, %4i\n%4i, %4i\n%4i, %4i\n%4i, %4i\n",
res.m128i_i16[7], res.m128i_i16[6], res.m128i_i16[5], res.m128i_i16[4],
res.m128i_i16[3], res.m128i_i16[2], res.m128i_i16[1], res.m128i_i16[0]);
return 0;
}
Original lowest 8 bit integers: 12, 0 127, -128 100, -100 -1, 1 Resulting 16 bit integers: 12, 0 127, -128 100, -100 -1, 1