New upstream version 18.11-rc1
[deb_dpdk.git] / drivers / net / enic / Makefile
index 7c6c29c..e39e476 100644 (file)
@@ -39,4 +39,32 @@ SRCS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += base/vnic_intr.c
 SRCS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += base/vnic_rq.c
 SRCS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += base/vnic_rss.c
 
+# The current implementation assumes 64-bit pointers
+CC_AVX2_SUPPORT=0
+ifeq ($(CONFIG_RTE_ARCH_X86_64),y)
+# Figure out if the compiler supports avx2. The extra check using
+# -march=core-avx2 is necessary to support users who build for the
+# 'default' machine (corei7 which has no avx2) and run the binary on
+# newer CPUs that have avx2.
+# This part is verbatim from i40e makefile.
+ifeq ($(findstring RTE_MACHINE_CPUFLAG_AVX2,$(CFLAGS)),RTE_MACHINE_CPUFLAG_AVX2)
+       CC_AVX2_SUPPORT=1
+else
+       CC_AVX2_SUPPORT=\
+       $(shell $(CC) -march=core-avx2 -dM -E - </dev/null 2>&1 | \
+       grep -q AVX2 && echo 1)
+       ifeq ($(CC_AVX2_SUPPORT), 1)
+               ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
+                       CFLAGS_enic_rxtx_vec_avx2.o += -march=core-avx2
+               else
+                       CFLAGS_enic_rxtx_vec_avx2.o += -mavx2
+               endif
+       endif
+endif
+endif
+
+ifeq ($(CC_AVX2_SUPPORT), 1)
+       SRCS-$(CONFIG_RTE_LIBRTE_ENIC_PMD) += enic_rxtx_vec_avx2.c
+endif
+
 include $(RTE_SDK)/mk/rte.lib.mk