_mm_max_epu16
Visual Studio 2008
Microsoft Specific
Emits the Streaming SIMD Extensions 4 (SSE4) instruction pmaxuw. This instruction chooses the larger value of the two parameters.
__m128i _mm_max_epu16( __m128i a, __m128i b );
#include <stdio.h>
#include <smmintrin.h>
int main ()
{
__m128i a, b;
a.m128i_u16[0] = 65535;
a.m128i_u16[1] = 128;
a.m128i_u16[2] = 128;
a.m128i_u16[3] = 128;
a.m128i_u16[4] = 17;
a.m128i_u16[5] = 39000;
a.m128i_u16[6] = 40000;
a.m128i_u16[7] = 0;
b.m128i_u16[0] = 65534;
b.m128i_u16[1] = 0;
b.m128i_u16[2] = 128;
b.m128i_u16[3] = 129;
b.m128i_u16[4] = 5740;
b.m128i_u16[5] = 1;
b.m128i_u16[6] = 45000;
b.m128i_u16[7] = 0;
__m128i res = _mm_max_epu16(a, b);
printf_s(" a\t b\t res\n%5d\t%5d\t%5d\n%5d\t%5d\t%5d\n",
a.m128i_u16[0], b.m128i_u16[0], res.m128i_u16[0],
a.m128i_u16[1], b.m128i_u16[1], res.m128i_u16[1]);
printf_s("%5d\t%5d\t%5d\n%5d\t%5d\t%5d\n%5d\t%5d\t%5d\n%5d\t%5d\t%5d\n",
a.m128i_u16[2], b.m128i_u16[2], res.m128i_u16[2],
a.m128i_u16[3], b.m128i_u16[3], res.m128i_u16[3],
a.m128i_u16[4], b.m128i_u16[4], res.m128i_u16[4],
a.m128i_u16[5], b.m128i_u16[5], res.m128i_u16[5]);
printf_s("%5d\t%5d\t%5d\n%5d\t%5d\t%5d\n",
a.m128i_u16[6], b.m128i_u16[6], res.m128i_u16[6],
a.m128i_u16[7], b.m128i_u16[7], res.m128i_u16[7]);
return 0;
}