FD.io VPP  v20.05.1-5-g09f167997
Vector Packet Processing
vector_avx2.h File Reference
+ Include dependency graph for vector_avx2.h:

Go to the source code of this file.

Macros

#define foreach_avx2_vec256i   _(i,8,32,epi8) _(i,16,16,epi16) _(i,32,8,epi32) _(i,64,4,epi64)
 
#define foreach_avx2_vec256u   _(u,8,32,epi8) _(u,16,16,epi16) _(u,32,8,epi32) _(u,64,4,epi64)
 
#define foreach_avx2_vec256f   _(f,32,8,ps) _(f,64,4,pd)
 
#define u32x8_blend(a, b, m)   (u32x8) _mm256_blend_epi32 ((__m256i) a, (__m256i) b, m)
 
#define u16x16_blend(v1, v2, mask)   (u16x16) _mm256_blend_epi16 ((__m256i) (v1), (__m256i) (v2), mask)
 
#define u32x8_permute_lanes(a, b, m)   (u32x8) _mm256_permute2x128_si256 ((__m256i) a, (__m256i) b, m)
 
#define u64x4_permute_lanes(a, b, m)   (u64x4) _mm256_permute2x128_si256 ((__m256i) a, (__m256i) b, m)
 

Functions

foreach_avx2_vec256i static foreach_avx2_vec256u u32x8 u32x8_permute (u32x8 v, u32x8 idx)
 
u16x16 u64x4 static_always_inline u32 u8x32_msb_mask (u8x32 v)
 
epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 epi8_epi64 epi8_epi64 static_always_inline u64x4 u64x4_byte_swap (u64x4 v)
 
static_always_inline u32x8 u32x8_byte_swap (u32x8 v)
 
static_always_inline u16x16 u16x16_byte_swap (u16x16 v)
 
static_always_inline u32x8 u32x8_hadd (u32x8 v1, u32x8 v2)
 
static_always_inline u16x16 u16x16_mask_last (u16x16 v, u8 n_last)
 
static_always_inline f32x8 f32x8_from_u32x8 (u32x8 v)
 
static_always_inline u32x8 u32x8_from_f32x8 (f32x8 v)
 
static_always_inline u64x4 u64x4_gather (void *p0, void *p1, void *p2, void *p3)
 
static_always_inline u32x8 u32x8_gather (void *p0, void *p1, void *p2, void *p3, void *p4, void *p5, void *p6, void *p7)
 
static_always_inline void u64x4_scatter (u64x4 r, void *p0, void *p1, void *p2, void *p3)
 
static_always_inline void u32x8_scatter (u32x8 r, void *p0, void *p1, void *p2, void *p3, void *p4, void *p5, void *p6, void *p7)
 
static_always_inline void u64x4_scatter_one (u64x4 r, int index, void *p)
 
static_always_inline void u32x8_scatter_one (u32x8 r, int index, void *p)
 
static_always_inline u8x32 u8x32_is_greater (u8x32 v1, u8x32 v2)
 
static_always_inline u8x32 u8x32_blend (u8x32 v1, u8x32 v2, u8x32 mask)
 
static_always_inline u32x8 u32x8_min (u32x8 a, u32x8 b)
 
static_always_inline u32 u32x8_min_scalar (u32x8 v)
 
static_always_inline void u32x8_transpose (u32x8 a[8])
 
static_always_inline void u64x4_transpose (u64x4 a[8])
 

Variables

 u64x4
 
epu16_epi64 u16x16
 
epu16_epi64 epu8_epi64 epu8_epi64 i64x4
 
epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 i16x16
 

Macro Definition Documentation

◆ foreach_avx2_vec256f

#define foreach_avx2_vec256f   _(f,32,8,ps) _(f,64,4,pd)

Definition at line 27 of file vector_avx2.h.

◆ foreach_avx2_vec256i

#define foreach_avx2_vec256i   _(i,8,32,epi8) _(i,16,16,epi16) _(i,32,8,epi32) _(i,64,4,epi64)

Definition at line 23 of file vector_avx2.h.

◆ foreach_avx2_vec256u

#define foreach_avx2_vec256u   _(u,8,32,epi8) _(u,16,16,epi16) _(u,32,8,epi32) _(u,64,4,epi64)

Definition at line 25 of file vector_avx2.h.

◆ u16x16_blend

#define u16x16_blend (   v1,
  v2,
  mask 
)    (u16x16) _mm256_blend_epi16 ((__m256i) (v1), (__m256i) (v2), mask)

Definition at line 214 of file vector_avx2.h.

◆ u32x8_blend

#define u32x8_blend (   a,
  b,
 
)    (u32x8) _mm256_blend_epi32 ((__m256i) a, (__m256i) b, m)

Definition at line 211 of file vector_avx2.h.

◆ u32x8_permute_lanes

#define u32x8_permute_lanes (   a,
  b,
 
)    (u32x8) _mm256_permute2x128_si256 ((__m256i) a, (__m256i) b, m)

Definition at line 286 of file vector_avx2.h.

◆ u64x4_permute_lanes

#define u64x4_permute_lanes (   a,
  b,
 
)    (u64x4) _mm256_permute2x128_si256 ((__m256i) a, (__m256i) b, m)

Definition at line 288 of file vector_avx2.h.

Function Documentation

◆ f32x8_from_u32x8()

static_always_inline f32x8 f32x8_from_u32x8 ( u32x8  v)

Definition at line 200 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u16x16_byte_swap()

static_always_inline u16x16 u16x16_byte_swap ( u16x16  v)

Definition at line 156 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u16x16_mask_last()

static_always_inline u16x16 u16x16_mask_last ( u16x16  v,
u8  n_last 
)

Definition at line 172 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_byte_swap()

static_always_inline u32x8 u32x8_byte_swap ( u32x8  v)

Definition at line 146 of file vector_avx2.h.

◆ u32x8_from_f32x8()

static_always_inline u32x8 u32x8_from_f32x8 ( f32x8  v)

Definition at line 206 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_gather()

static_always_inline u32x8 u32x8_gather ( void *  p0,
void *  p1,
void *  p2,
void *  p3,
void *  p4,
void *  p5,
void *  p6,
void *  p7 
)

Definition at line 227 of file vector_avx2.h.

◆ u32x8_hadd()

static_always_inline u32x8 u32x8_hadd ( u32x8  v1,
u32x8  v2 
)

Definition at line 166 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_min()

static_always_inline u32x8 u32x8_min ( u32x8  a,
u32x8  b 
)

Definition at line 292 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_min_scalar()

static_always_inline u32 u32x8_min_scalar ( u32x8  v)

Definition at line 298 of file vector_avx2.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ u32x8_permute()

foreach_avx2_vec256i static foreach_avx2_vec256u u32x8 u32x8_permute ( u32x8  v,
u32x8  idx 
)
inlinestatic

Definition at line 73 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_scatter()

static_always_inline void u32x8_scatter ( u32x8  r,
void *  p0,
void *  p1,
void *  p2,
void *  p3,
void *  p4,
void *  p5,
void *  p6,
void *  p7 
)

Definition at line 248 of file vector_avx2.h.

◆ u32x8_scatter_one()

static_always_inline void u32x8_scatter_one ( u32x8  r,
int  index,
void *  p 
)

Definition at line 268 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u32x8_transpose()

static_always_inline void u32x8_transpose ( u32x8  a[8])

Definition at line 305 of file vector_avx2.h.

◆ u64x4_byte_swap()

epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 epi8_epi64 epi8_epi64 static_always_inline u64x4 u64x4_byte_swap ( u64x4  v)

Definition at line 136 of file vector_avx2.h.

◆ u64x4_gather()

static_always_inline u64x4 u64x4_gather ( void *  p0,
void *  p1,
void *  p2,
void *  p3 
)

Definition at line 218 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u64x4_scatter()

static_always_inline void u64x4_scatter ( u64x4  r,
void *  p0,
void *  p1,
void *  p2,
void *  p3 
)

Definition at line 239 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u64x4_scatter_one()

static_always_inline void u64x4_scatter_one ( u64x4  r,
int  index,
void *  p 
)

Definition at line 262 of file vector_avx2.h.

◆ u64x4_transpose()

static_always_inline void u64x4_transpose ( u64x4  a[8])

Definition at line 340 of file vector_avx2.h.

◆ u8x32_blend()

static_always_inline u8x32 u8x32_blend ( u8x32  v1,
u8x32  v2,
u8x32  mask 
)

Definition at line 280 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u8x32_is_greater()

static_always_inline u8x32 u8x32_is_greater ( u8x32  v1,
u8x32  v2 
)

Definition at line 274 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u8x32_msb_mask()

u16x16 u64x4 static_always_inline u32 u8x32_msb_mask ( u8x32  v)

Definition at line 108 of file vector_avx2.h.

+ Here is the caller graph for this function:

Variable Documentation

◆ i16x16

epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 i16x16

Definition at line 129 of file vector_avx2.h.

◆ i64x4

epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 epi8_epi64 i64x4

Definition at line 127 of file vector_avx2.h.

◆ u16x16

epu16_epi64 u16x16

Definition at line 123 of file vector_avx2.h.

◆ u64x4

epu16_epi64 epu8_epi64 u64x4

Definition at line 121 of file vector_avx2.h.