diff options
author | Damjan Marion <damarion@cisco.com> | 2018-05-28 21:26:47 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2018-05-29 17:00:26 +0000 |
commit | 812b32dd8f637118bf65de2cdff0e95b421a963b (patch) | |
tree | 184d57889b841958875d57c6503d8bfb96cdaec7 /src/vppinfra/cpu.h | |
parent | 04e0bb2ff0f39dab45da01ecdbc7914035a36897 (diff) |
Add VLIB_NODE_FN() macro to simplify multiversioning of node functions
Change-Id: Ibab5e27277f618ceb2d543b9d6a1a5f191e7d1db
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vppinfra/cpu.h')
-rw-r--r-- | src/vppinfra/cpu.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h index f670f3e964b..110815c9f87 100644 --- a/src/vppinfra/cpu.h +++ b/src/vppinfra/cpu.h @@ -51,14 +51,16 @@ return & fn; \ } -#ifdef CLIB_MULTIARCH_VARIANT +#ifdef CLIB_MARCH_VARIANT #define __CLIB_MULTIARCH_FN(a,b) a##_##b #define _CLIB_MULTIARCH_FN(a,b) __CLIB_MULTIARCH_FN(a,b) -#define CLIB_MULTIARCH_FN(fn) _CLIB_MULTIARCH_FN(fn,CLIB_MULTIARCH_VARIANT) +#define CLIB_MULTIARCH_FN(fn) _CLIB_MULTIARCH_FN(fn,CLIB_MARCH_VARIANT) #else #define CLIB_MULTIARCH_FN(fn) fn #endif +#define CLIB_MARCH_SFX CLIB_MULTIARCH_FN + #define foreach_x86_64_flags \ _ (sse3, 1, ecx, 0) \ _ (ssse3, 1, ecx, 9) \ @@ -165,6 +167,27 @@ clib_cpu_supports_aes () #endif } +static inline int +clib_cpu_march_priority_avx512 () +{ + if (clib_cpu_supports_avx512f ()) + return 20; + return -1; +} + +static inline int +clib_cpu_march_priority_avx2 () +{ + if (clib_cpu_supports_avx2 ()) + return 10; + return -1; +} + +#ifdef CLIB_MARCH_VARIANT +#define CLIB_MARCH_FN_PRIORITY() CLIB_MARCH_SFX(clib_cpu_march_priority)() +#else +#define CLIB_MARCH_FN_PRIORITY() 0 +#endif #endif /* included_clib_cpu_h */ format_function_t format_cpu_uarch; |