From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from wes1-so1.wedos.net (wes1-so1.wedos.net [46.28.106.15]) by dpdk.org (Postfix) with ESMTP id 007F3B62 for ; Fri, 18 Mar 2016 13:00:13 +0100 (CET) Received: from pcviktorin.fit.vutbr.cz (pcviktorin.fit.vutbr.cz [147.229.13.147]) by wes1-so1.wedos.net (Postfix) with ESMTPSA id 3qRP194Mqdz8qh; Fri, 18 Mar 2016 13:00:13 +0100 (CET) Date: Fri, 18 Mar 2016 13:00:19 +0100 From: Jan Viktorin To: Thomas Monjalon Cc: Jerin Jacob , Tomasz Kulasek , dev@dpdk.org, jianbo.liu@linaro.org Message-ID: <20160318130019.4715e5d5@pcviktorin.fit.vutbr.cz> Organization: RehiveTech MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [dpdk-dev] [PATCH] arm: detect NEON by RTE_MACHINE_CPUFLAG_NEON flag only X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: 1734050.PspUeD4iGQ@xps13 List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2016 12:00:14 -0000 The RTE_MACHINE_CPUFLAG_NEON was only a result of the gcc testing. However, the target CPU may not support NEON or the user can disable to use it (as it does not always improve the performance). The RTE_MACHINE_CPUFLAG_NEON detection is now based on both, the __ARM_NEON_FP feature from gcc and CONFIG_RTE_ARCH_ARM_NEON from the .config. The memcpy implemention is driven by RTE_MACHINE_CPUFLAG_NEON, so the reason to disable neon is hidden for the actual code. Signed-off-by: Jan Viktorin --- I can also include this one: examples/l3fwd/l3fwd_em.c:253:#elif defined(__ARM_NEON) --- lib/librte_eal/common/include/arch/arm/rte_memcpy_32.h | 4 ++-- mk/machine/armv7a/rte.vars.mk | 2 +- mk/rte.cpuflags.mk | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/librte_eal/common/include/arch/arm/rte_memcpy_32.h b/lib/librte_eal/common/include/arch/arm/rte_memcpy_32.h index df47c0d..ad8bc65 100644 --- a/lib/librte_eal/common/include/arch/arm/rte_memcpy_32.h +++ b/lib/librte_eal/common/include/arch/arm/rte_memcpy_32.h @@ -42,7 +42,7 @@ extern "C" { #include "generic/rte_memcpy.h" -#ifdef __ARM_NEON_FP +#ifdef RTE_MACHINE_CPUFLAG_NEON /* ARM NEON Intrinsics are used to copy data */ #include @@ -325,7 +325,7 @@ rte_memcpy_func(void *dst, const void *src, size_t n) return memcpy(dst, src, n); } -#endif /* __ARM_NEON_FP */ +#endif /* RTE_MACHINE_CPUFLAG_NEON */ #ifdef __cplusplus } diff --git a/mk/machine/armv7a/rte.vars.mk b/mk/machine/armv7a/rte.vars.mk index 48d3979..7a167c1 100644 --- a/mk/machine/armv7a/rte.vars.mk +++ b/mk/machine/armv7a/rte.vars.mk @@ -62,6 +62,6 @@ ifdef CONFIG_RTE_ARCH_ARM_TUNE MACHINE_CFLAGS += -mtune=$(CONFIG_RTE_ARCH_ARM_TUNE) endif -ifeq ($(CONFIG_RTE_ARCH_ARM_NEON),y) +ifdef $(RTE_MACHINE_CPUFLAG_NEON) MACHINE_CFLAGS += -mfpu=neon endif diff --git a/mk/rte.cpuflags.mk b/mk/rte.cpuflags.mk index 19a3e7e..1947511 100644 --- a/mk/rte.cpuflags.mk +++ b/mk/rte.cpuflags.mk @@ -111,9 +111,11 @@ CPUFLAGS += VSX endif # ARM flags +ifeq ($(CONFIG_RTE_ARCH_ARM_NEON),y) ifneq ($(filter $(AUTO_CPUFLAGS),__ARM_NEON_FP),) CPUFLAGS += NEON endif +endif ifneq ($(filter $(AUTO_CPUFLAGS),__ARM_FEATURE_CRC32),) CPUFLAGS += CRC32 -- 2.7.0