FD.io VPP  v21.01.1
Vector Packet Processing
vector_avx512.h File Reference
+ Include dependency graph for vector_avx512.h:

Go to the source code of this file.

Macros

#define foreach_avx512_vec512i   _(i,8,64,epi8) _(i,16,32,epi16) _(i,32,16,epi32) _(i,64,8,epi64)
 
#define foreach_avx512_vec512u   _(u,8,64,epi8) _(u,16,32,epi16) _(u,32,16,epi32) _(u,64,8,epi64)
 
#define foreach_avx512_vec512f   _(f,32,8,ps) _(f,64,4,pd)
 
#define u32x16_ternary_logic(a, b, c, d)   (u32x16) _mm512_ternarylogic_epi32 ((__m512i) a, (__m512i) b, (__m512i) c, d)
 
#define u8x64_insert_u8x16(a, b, n)   (u8x64) _mm512_inserti64x2 ((__m512i) (a), (__m128i) (b), n)
 
#define u8x64_extract_u8x16(a, n)   (u8x16) _mm512_extracti64x2_epi64 ((__m512i) (a), n)
 
#define u8x64_word_shift_left(a, n)   (u8x64) _mm512_bslli_epi128((__m512i) a, n)
 
#define u8x64_word_shift_right(a, n)   (u8x64) _mm512_bsrli_epi128((__m512i) a, n)
 
#define u8x64_align_right(a, b, imm)   (u8x64) _mm512_alignr_epi8 ((__m512i) a, (__m512i) b, imm)
 

Functions

foreach_avx512_vec512i foreach_avx512_vec512u static_always_inline u32 u16x32_msb_mask (u16x32 v)
 
static_always_inline u32x16 u32x16_byte_swap (u32x16 v)
 
static_always_inline u16x32 u16x32_byte_swap (u16x32 v)
 
static_always_inline u32x8 u32x16_extract_lo (u32x16 v)
 
static_always_inline u32x8 u32x16_extract_hi (u32x16 v)
 
static_always_inline u8x32 u8x64_extract_lo (u8x64 v)
 
static_always_inline u8x32 u8x64_extract_hi (u8x64 v)
 
static_always_inline u32 u32x16_min_scalar (u32x16 v)
 
static_always_inline u32x16 u32x16_insert_lo (u32x16 r, u32x8 v)
 
static_always_inline u32x16 u32x16_insert_hi (u32x16 r, u32x8 v)
 
static_always_inline u64x8 u64x8_permute (u64x8 a, u64x8 b, u64x8 mask)
 
static_always_inline u8x64 u8x64_xor3 (u8x64 a, u8x64 b, u8x64 c)
 
static_always_inline u8x64 u8x64_reflect_u8x16 (u8x64 x)
 
static_always_inline u8x64 u8x64_shuffle (u8x64 v, u8x64 m)
 
static_always_inline u32 u32x16_sum_elts (u32x16 sum16)
 
static_always_inline u8x64 u8x64_mask_load (u8x64 a, void *p, u64 mask)
 
static_always_inline void u8x64_mask_store (u8x64 a, void *p, u64 mask)
 
static_always_inline u8x64 u8x64_splat_u8x16 (u8x16 a)
 
static_always_inline u32x16 u32x16_splat_u32x4 (u32x4 a)
 
static_always_inline u32x16 u32x16_mask_blend (u32x16 a, u32x16 b, u16 mask)
 
static_always_inline u8x64 u8x64_mask_blend (u8x64 a, u8x64 b, u64 mask)
 
static_always_inline u8 u64x8_mask_is_equal (u64x8 a, u64x8 b)
 
static_always_inline void u32x16_transpose (u32x16 m[16])
 
static_always_inline void u64x8_transpose (u64x8 m[8])
 

Macro Definition Documentation

◆ foreach_avx512_vec512f

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

Definition at line 27 of file vector_avx512.h.

◆ foreach_avx512_vec512i

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

Definition at line 23 of file vector_avx512.h.

◆ foreach_avx512_vec512u

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

Definition at line 25 of file vector_avx512.h.

◆ u32x16_ternary_logic

#define u32x16_ternary_logic (   a,
  b,
  c,
 
)    (u32x16) _mm512_ternarylogic_epi32 ((__m512i) a, (__m512i) b, (__m512i) c, d)

Definition at line 163 of file vector_avx512.h.

◆ u8x64_align_right

#define u8x64_align_right (   a,
  b,
  imm 
)    (u8x64) _mm512_alignr_epi8 ((__m512i) a, (__m512i) b, imm)

Definition at line 200 of file vector_avx512.h.

◆ u8x64_extract_u8x16

#define u8x64_extract_u8x16 (   a,
 
)    (u8x16) _mm512_extracti64x2_epi64 ((__m512i) (a), n)

Definition at line 169 of file vector_avx512.h.

◆ u8x64_insert_u8x16

#define u8x64_insert_u8x16 (   a,
  b,
 
)    (u8x64) _mm512_inserti64x2 ((__m512i) (a), (__m128i) (b), n)

Definition at line 166 of file vector_avx512.h.

◆ u8x64_word_shift_left

#define u8x64_word_shift_left (   a,
 
)    (u8x64) _mm512_bslli_epi128((__m512i) a, n)

Definition at line 172 of file vector_avx512.h.

◆ u8x64_word_shift_right

#define u8x64_word_shift_right (   a,
 
)    (u8x64) _mm512_bsrli_epi128((__m512i) a, n)

Definition at line 173 of file vector_avx512.h.

Function Documentation

◆ u16x32_byte_swap()

static_always_inline u16x32 u16x32_byte_swap ( u16x32  v)

Definition at line 101 of file vector_avx512.h.

◆ u16x32_msb_mask()

Definition at line 83 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u32x16_byte_swap()

static_always_inline u32x16 u32x16_byte_swap ( u32x16  v)

Definition at line 89 of file vector_avx512.h.

◆ u32x16_extract_hi()

static_always_inline u32x8 u32x16_extract_hi ( u32x16  v)

Definition at line 119 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u32x16_extract_lo()

static_always_inline u32x8 u32x16_extract_lo ( u32x16  v)

Definition at line 113 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u32x16_insert_hi()

static_always_inline u32x16 u32x16_insert_hi ( u32x16  r,
u32x8  v 
)

Definition at line 150 of file vector_avx512.h.

◆ u32x16_insert_lo()

static_always_inline u32x16 u32x16_insert_lo ( u32x16  r,
u32x8  v 
)

Definition at line 144 of file vector_avx512.h.

◆ u32x16_mask_blend()

static_always_inline u32x16 u32x16_mask_blend ( u32x16  a,
u32x16  b,
u16  mask 
)

Definition at line 238 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u32x16_min_scalar()

static_always_inline u32 u32x16_min_scalar ( u32x16  v)

Definition at line 137 of file vector_avx512.h.

+ Here is the call graph for this function:

◆ u32x16_splat_u32x4()

static_always_inline u32x16 u32x16_splat_u32x4 ( u32x4  a)

Definition at line 232 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u32x16_sum_elts()

static_always_inline u32 u32x16_sum_elts ( u32x16  sum16)

Definition at line 204 of file vector_avx512.h.

+ Here is the call graph for this function:

◆ u32x16_transpose()

static_always_inline void u32x16_transpose ( u32x16  m[16])

Definition at line 256 of file vector_avx512.h.

◆ u64x8_mask_is_equal()

static_always_inline u8 u64x8_mask_is_equal ( u64x8  a,
u64x8  b 
)

Definition at line 250 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u64x8_permute()

static_always_inline u64x8 u64x8_permute ( u64x8  a,
u64x8  b,
u64x8  mask 
)

Definition at line 156 of file vector_avx512.h.

◆ u64x8_transpose()

static_always_inline void u64x8_transpose ( u64x8  m[8])

Definition at line 341 of file vector_avx512.h.

◆ u8x64_extract_hi()

static_always_inline u8x32 u8x64_extract_hi ( u8x64  v)

Definition at line 131 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_extract_lo()

static_always_inline u8x32 u8x64_extract_lo ( u8x64  v)

Definition at line 125 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_mask_blend()

static_always_inline u8x64 u8x64_mask_blend ( u8x64  a,
u8x64  b,
u64  mask 
)

Definition at line 244 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_mask_load()

static_always_inline u8x64 u8x64_mask_load ( u8x64  a,
void *  p,
u64  mask 
)

Definition at line 214 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_mask_store()

static_always_inline void u8x64_mask_store ( u8x64  a,
void *  p,
u64  mask 
)

Definition at line 220 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_reflect_u8x16()

static_always_inline u8x64 u8x64_reflect_u8x16 ( u8x64  x)

Definition at line 183 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_shuffle()

static_always_inline u8x64 u8x64_shuffle ( u8x64  v,
u8x64  m 
)

Definition at line 195 of file vector_avx512.h.

◆ u8x64_splat_u8x16()

static_always_inline u8x64 u8x64_splat_u8x16 ( u8x16  a)

Definition at line 226 of file vector_avx512.h.

+ Here is the caller graph for this function:

◆ u8x64_xor3()

static_always_inline u8x64 u8x64_xor3 ( u8x64  a,
u8x64  b,
u8x64  c 
)

Definition at line 176 of file vector_avx512.h.

+ Here is the caller graph for this function: