_mm_cvtepu8_epi16
Microsoft Specific
Emits the Streaming SIMD Extensions 4 (SSE4) instruction pmovzxbw. This instruction performs a conversion of unsigned integers from 8-bit to 16-bit.
__m128i _mm_cvtepu8_epi16(
__m128i a
);
Parameters
- [in] a
A 128-bit parameter that contains eight unsigned 8-bit integers in the lower 64 bits.
Return value
A 128-bit parameter that contains eight 16-bit integers. These integers are zero-extended representations of the 8-bit integers that are supplied by a.
The result can be defined with the following equations:
r0 := a0
r1 := 0
r2 := a1
r3 := 0
...
r14 := a7
r15 := 0
Requirements
Intrinsic |
Architecture |
---|---|
_mm_cvtepu8_epi16 |
x86, x64 |
Header file <smmintrin.h>
Remarks
r0-r15 and a0-a15 are the sequentially ordered 8-bit components of return value r and parameter a, respectively. r0 and a0 are the least significant 8 bits.
Before you use this intrinsic, software must ensure that the processor supports the instruction.
Example
#include <stdio.h>
#include <smmintrin.h>
int main ()
{
__m128i a;
a.m128i_u8[0] = 0;
a.m128i_u8[1] = 255;
a.m128i_u8[2] = 1;
a.m128i_u8[3] = 15;
a.m128i_u8[4] = 32;
a.m128i_u8[5] = 100;
a.m128i_u8[6] = 127;
a.m128i_u8[7] = 254;
__m128i res = _mm_cvtepu8_epi16(a);
printf_s("Original lowest 8 bit integers:\n%u,\t%u\n%u,\t%u\n%u,\t%u\n%u,\t%u\n\n",
a.m128i_u8[7], a.m128i_u8[6], a.m128i_u8[5], a.m128i_u8[4],
a.m128i_u8[3], a.m128i_u8[2], a.m128i_u8[1], a.m128i_u8[0]);
printf_s("Resulting 16 bit integers:\n%i,\t%i\n%i,\t%i\n%i,\t%i\n%i,\t%i\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:
254, 127
100, 32
15, 1
255, 0
Resulting 16 bit integers:
254, 127
100, 32
15, 1
255, 0