ixgbe: require only sse3 intrinsics
authorNeil Horman <nhorman@tuxdriver.com>
Fri, 1 Aug 2014 16:48:57 +0000 (12:48 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 12 Aug 2014 23:47:03 +0000 (01:47 +0200)
ixgbe was failing to build in the default configuration because it required
sse4.2 intrinsics, and the default config doesn't support more than sse3.
Modify the pmd so that only sse3 intrinsics are pulled in and used.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Konstantin Ananyev <konstantin.ananyev@intel.com>
CC: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c

index 09e19a3..fe39ca2 100644 (file)
@@ -38,7 +38,7 @@
 #include "ixgbe_ethdev.h"
 #include "ixgbe_rxtx.h"
 
-#include <nmmintrin.h>
+#include <tmmintrin.h>
 
 #ifndef __INTEL_COMPILER
 #pragma GCC diagnostic ignored "-Wcast-qual"
@@ -338,7 +338,7 @@ ixgbe_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
                                pkt_mb1);
 
                /* C.4 calc avaialbe number of desc */
-               var = _mm_popcnt_u64(_mm_cvtsi128_si64(staterr));
+               var = __builtin_popcountll(_mm_cvtsi128_si64(staterr));
                nb_pkts_recd += var;
                if (likely(var != RTE_IXGBE_DESCS_PER_LOOP))
                        break;