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