[dpdk-dev,17/17] libte_acl: fix compilation issues with RTE_LIBRTE_ACL_STANDALONE=y.

Message ID 1418580659-12595-18-git-send-email-konstantin.ananyev@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Ananyev, Konstantin Dec. 14, 2014, 6:10 p.m. UTC
  Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
---
 lib/librte_acl/rte_acl_osdep_alone.h | 47 ++++++++++++++++++++++++++++++++++--
 1 file changed, 45 insertions(+), 2 deletions(-)
  

Comments

Neil Horman Dec. 16, 2014, 1:51 p.m. UTC | #1
On Sun, Dec 14, 2014 at 06:10:59PM +0000, Konstantin Ananyev wrote:
> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@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
> 
> 
I think you should merge these changes with patch 10 where the problem was
introduced, so that you avoid a FTBFS issue
Neil
  

Patch

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