Signed-off-by: Konstantin Ananyev <konstantin.ananyev at intel.com> --- lib/librte_acl/rte_acl_osdep_alone.h | 47 ++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-)
diff --git a/lib/librte_acl/rte_acl_osdep_alone.h b/lib/librte_acl/rte_acl_osdep_alone.h index a84b6f9..58c4f6a 100644 --- a/lib/librte_acl/rte_acl_osdep_alone.h +++ b/lib/librte_acl/rte_acl_osdep_alone.h @@ -57,6 +57,10 @@ #include <smmintrin.h> #endif +#if defined(__AVX__) +#include <immintrin.h> +#endif + #else #include <x86intrin.h> @@ -128,8 +132,8 @@ typedef __m128i xmm_t; #define XMM_SIZE (sizeof(xmm_t)) #define XMM_MASK (XMM_SIZE - 1) -typedef union rte_mmsse { - xmm_t m; +typedef union rte_xmm { + xmm_t x; uint8_t u8[XMM_SIZE / sizeof(uint8_t)]; uint16_t u16[XMM_SIZE / sizeof(uint16_t)]; uint32_t u32[XMM_SIZE / sizeof(uint32_t)]; @@ -137,6 +141,33 @@ typedef union rte_mmsse { double pd[XMM_SIZE / sizeof(double)]; } rte_xmm_t; +#ifdef __AVX__ + +typedef __m256i ymm_t; + +#define YMM_SIZE (sizeof(ymm_t)) +#define YMM_MASK (YMM_SIZE - 1) + +typedef union rte_ymm { + ymm_t y; + xmm_t x[YMM_SIZE / sizeof(xmm_t)]; + uint8_t u8[YMM_SIZE / sizeof(uint8_t)]; + uint16_t u16[YMM_SIZE / sizeof(uint16_t)]; + uint32_t u32[YMM_SIZE / sizeof(uint32_t)]; + uint64_t u64[YMM_SIZE / sizeof(uint64_t)]; + double pd[YMM_SIZE / sizeof(double)]; +} rte_ymm_t; + +#endif /* __AVX__ */ + +#ifdef RTE_ARCH_I686 +#define _mm_cvtsi128_si64(a) ({ \ + rte_xmm_t m; \ + m.x = (a); \ + (m.u64[0]); \ +}) +#endif + /* * rte_cycles related. */ @@ -214,6 +245,13 @@ rte_rdtsc(void) /* * rte_tailq related. */ + +struct rte_tailq_entry { + TAILQ_ENTRY(rte_tailq_entry) next; /**< Pointer entries for a tailq list + */ + void *data; /**< Pointer to the data referenced by this tailq entry */ +}; + static inline void * rte_dummy_tailq(void) { @@ -248,6 +286,7 @@ rte_zmalloc_socket(__rte_unused const char *type, size_t size, unsigned align, void *ptr; int rc; + align = (align != 0) ? align : RTE_CACHE_LINE_SIZE; rc = posix_memalign(&ptr, align, size); if (rc != 0) { rte_errno = rc; @@ -258,6 +297,8 @@ rte_zmalloc_socket(__rte_unused const char *type, size_t size, unsigned align, return ptr; } +#define rte_zmalloc(type, sz, align) rte_zmalloc_socket(type, sz, align, 0) + /* * rte_debug related */ @@ -271,6 +312,8 @@ rte_zmalloc_socket(__rte_unused const char *type, size_t size, unsigned align, exit(err); \ } while (0) +#define rte_cpu_get_flag_enabled(x) (0) + #ifdef __cplusplus } #endif -- 1.8.5.3