_mm_cvtepu16_epi64
Microsoft Specific
Emits the Streaming SIMD Extensions 4 (SSE4) instruction pmovzxwq. This instruction performs a conversion of unsigned integers from 16-bit to 64-bit.
__m128i _mm_cvtepu16_epi64( __m128i a );
The result is defined as follows:
r0 := a0 r1 := 0 r2 := 0 r3 := 0 r4 := a1 r5 := 0 r6 := 0 r7 := 0
r0-r7 and a0-a7 are the sequentially ordered 16-bit components of return value r and parameter a, respectively. r0 and a0 are the least significant 16 bits.
Before using this intrinsic, software must ensure that the processor supports the instruction.
#include <stdio.h>
#include <smmintrin.h>
int main ()
{
__m128i a;
a.m128i_u16[0] = 0;
a.m128i_u16[1] = 65535;
__m128i res = _mm_cvtepu16_epi64(a);
printf_s("Original lowest 16 bit integers:\n%u,\t%u\n\n",
a.m128i_u16[1], a.m128i_u16[0]);
printf_s("Resulting 64 bit integers:\n%I64i,\t%I64i\n",
res.m128i_i64[1], res.m128i_i64[0]);
return 0;
}
Original lowest 16 bit integers: 65535, 0 Resulting 64 bit integers: 65535, 0