FD.io VPP  v18.07-34-g55fbdb9
Vector Packet Processing
cpu.h File Reference
+ Include dependency graph for cpu.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define foreach_march_variant(macro, x)
 
#define CLIB_CPU_OPTIMIZED
 
#define CLIB_MULTIARCH_ARCH_CHECK(arch, fn, tgt)
 
#define CLIB_MULTIARCH_SELECT_FN(fn, ...)
 
#define CLIB_MULTIARCH_FN(fn)   fn
 
#define CLIB_MARCH_SFX   CLIB_MULTIARCH_FN
 
#define foreach_x86_64_flags
 
#define foreach_aarch64_flags
 
#define CLIB_MARCH_FN_PRIORITY()   0
 

Functions

static int clib_get_cpuid (const u32 lev, u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
 
static foreach_aarch64_flags int clib_cpu_supports_aes ()
 
static int clib_cpu_march_priority_avx512 ()
 
static int clib_cpu_march_priority_avx2 ()
 

Variables

format_function_t format_cpu_uarch
 
format_function_t format_cpu_model_name
 
format_function_t format_cpu_flags
 

Macro Definition Documentation

#define CLIB_CPU_OPTIMIZED

Definition at line 39 of file cpu.h.

#define CLIB_MARCH_FN_PRIORITY ( )    0

Definition at line 189 of file cpu.h.

#define CLIB_MARCH_SFX   CLIB_MULTIARCH_FN

Definition at line 62 of file cpu.h.

#define CLIB_MULTIARCH_ARCH_CHECK (   arch,
  fn,
  tgt 
)
Value:
if (clib_cpu_supports_ ## arch()) \
return & fn ## _ ##arch;

Definition at line 43 of file cpu.h.

#define CLIB_MULTIARCH_FN (   fn)    fn

Definition at line 59 of file cpu.h.

#define CLIB_MULTIARCH_SELECT_FN (   fn,
  ... 
)
Value:
__VA_ARGS__ void * fn ## _multiarch_select(void) \
{ \
return & fn; \
}
#define CLIB_MULTIARCH_ARCH_CHECK(arch, fn, tgt)
Definition: cpu.h:43
#define foreach_march_variant(macro, x)
Definition: cpu.h:32

Definition at line 47 of file cpu.h.

#define foreach_aarch64_flags
Value:
_ (fp, 0) \
_ (asimd, 1) \
_ (evtstrm, 2) \
_ (aarch64_aes, 3) \
_ (pmull, 4) \
_ (sha1, 5) \
_ (sha2, 6) \
_ (crc32, 7) \
_ (atomics, 8) \
_ (fphp, 9) \
_ (asimdhp, 10) \
_ (cpuid, 11) \
_ (asimdrdm, 12) \
_ (jscvt, 13) \
_ (fcma, 14) \
_ (lrcpc, 15) \
_ (dcpop, 16) \
_ (sha3, 17) \
_ (sm3, 18) \
_ (sm4, 19) \
_ (asimddp, 20) \
_ (sha512, 21) \
_ (sve, 22)

Definition at line 77 of file cpu.h.

#define foreach_march_variant (   macro,
 
)

Definition at line 32 of file cpu.h.

#define foreach_x86_64_flags
Value:
_ (sse3, 1, ecx, 0) \
_ (ssse3, 1, ecx, 9) \
_ (sse41, 1, ecx, 19) \
_ (sse42, 1, ecx, 20) \
_ (avx, 1, ecx, 28) \
_ (avx2, 7, ebx, 5) \
_ (avx512f, 7, ebx, 16) \
_ (x86_aes, 1, ecx, 25) \
_ (sha, 7, ebx, 29) \
_ (invariant_tsc, 0x80000007, edx, 8)

Definition at line 64 of file cpu.h.

Function Documentation

static int clib_cpu_march_priority_avx2 ( )
inlinestatic

Definition at line 179 of file cpu.h.

static int clib_cpu_march_priority_avx512 ( )
inlinestatic

Definition at line 171 of file cpu.h.

static foreach_aarch64_flags int clib_cpu_supports_aes ( )
inlinestatic

Definition at line 159 of file cpu.h.

static int clib_get_cpuid ( const u32  lev,
u32 eax,
u32 ebx,
u32 ecx,
u32 edx 
)
inlinestatic

Definition at line 106 of file cpu.h.

Variable Documentation

format_function_t format_cpu_flags

Definition at line 195 of file cpu.h.

format_function_t format_cpu_model_name

Definition at line 194 of file cpu.h.

format_function_t format_cpu_uarch

Definition at line 193 of file cpu.h.