FD.io VPP  v19.01.3-6-g70449b9b9
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 u16x16_blend(v1, v2, mask)   (u16x16) _mm256_blend_epi16 ((__m256i) (v1), (__m256i) (v2), mask)
 

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 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)
 

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 191 of file vector_avx2.h.

Function Documentation

◆ f32x8_from_u32x8()

static_always_inline f32x8 f32x8_from_u32x8 ( u32x8  v)

Definition at line 180 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u16x16_byte_swap()

epu16_epi64 epu8_epi64 epu8_epi64 epi16_epi64 epi8_epi64 epi8_epi64 static_always_inline u16x16 u16x16_byte_swap ( u16x16  v)

Definition at line 136 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 152 of file vector_avx2.h.

◆ u32x8_from_f32x8()

static_always_inline u32x8 u32x8_from_f32x8 ( f32x8  v)

Definition at line 186 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 204 of file vector_avx2.h.

◆ u32x8_hadd()

static_always_inline u32x8 u32x8_hadd ( u32x8  v1,
u32x8  v2 
)

Definition at line 146 of file vector_avx2.h.

◆ 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 225 of file vector_avx2.h.

◆ u32x8_scatter_one()

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

Definition at line 245 of file vector_avx2.h.

+ Here is the caller graph for this function:

◆ u64x4_gather()

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

Definition at line 195 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 216 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 239 of file vector_avx2.h.

◆ 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.