Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
Emits the Streaming SIMD Extensions 4 (SSE4) instruction pextrb. This instruction extracts an 8-bit unsigned integer from a 128-bit parameter.
int _mm_extract_epi8(
__m128i a,
const int ndx
);
Parameters
[in] a
A 128-bit parameter that contains sixteen 8-bit integers. These integers can be signed or unsigned.[in] ndx
A constant index that specifies the location of the value to extract.
Result value
The return value can be expressed by the following equation:
r := (ndx == 0) ? a0 :
((ndx == 1) ? a1 :
...
((ndx == 14) ? a14 : a15))
Requirements
Intrinsic |
Architecture |
---|---|
_mm_extract_epi8 |
x86, x64 |
Header file <smmintrin.h>
Remarks
a0 - a15 are the individual 8-bit integers in parameter a, with a0 occupying the lowest 8 bits.
Only the least significant four bits of ndx are used.
The result is the unsigned equivalent of the appropriate 8-bits in parameter a.
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;
const int ndx1 = 4;
const int ndx2 = 13;
a.m128i_i8[0] = 1;
a.m128i_i8[1] = 2;
a.m128i_i8[2] = 4;
a.m128i_i8[3] = 8;
a.m128i_i8[4] = 16;
a.m128i_i8[5] = 32;
a.m128i_i8[6] = 64;
a.m128i_i8[7] = 127;
a.m128i_i8[8] = -1;
a.m128i_i8[9] = -2;
a.m128i_i8[10] = -4;
a.m128i_i8[11] = -8;
a.m128i_i8[12] = -16;
a.m128i_i8[13] = -32;
a.m128i_i8[14] = -64;
a.m128i_i8[15] = -128;
int res = _mm_extract_epi8(a, ndx1);
printf_s("Result res should equal %d: %d\n", a.m128i_u8[ndx1], res);
res = _mm_extract_epi8(a, ndx2);
printf_s("Result res should equal %d: %d\n", a.m128i_u8[ndx2], res);
return 0;
}
Result res should equal 16: 16 Result res should equal 224: 224