vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1
On 4/24/2020 7:50 AM, Ruifeng Wang wrote:
> vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have
> the intrinsic.
>
> Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Gavin Hu <gavin.hu@arm.com>
This fixes build of examples/l3fwd for armv7.
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. This fixes build of examples/l3fwd for armv7. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1
vcopyq_laneq_u32 should be implemented for aarch32 which doesn't have the intrinsic. This fixes build of examples/l3fwd for armv7. Fixes: 3c4b4024c225 ("arch/arm: add vcopyq_laneq_u32 for old gcc") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> --- lib/librte_eal/arm/include/rte_vect.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/librte_eal/arm/include/rte_vect.h b/lib/librte_eal/arm/include/rte_vect.h index 9287a1117..d7c8aa61e 100644 --- a/lib/librte_eal/arm/include/rte_vect.h +++ b/lib/librte_eal/arm/include/rte_vect.h @@ -62,7 +62,11 @@ vaddvq_u16(uint16x8_t a) #endif -#if RTE_CC_IS_GNU && (GCC_VERSION < 70000) +#if defined(RTE_ARCH_ARM) || \ +(defined(RTE_ARCH_ARM64) && RTE_CC_IS_GNU && (GCC_VERSION < 70000)) +/* NEON intrinsic vcopyq_laneq_u32() is not supported in ARMv7-A(AArch32) + * On AArch64, this intrinsic is supported since GCC versioin 7. + */ static inline uint32x4_t vcopyq_laneq_u32(uint32x4_t a, const int lane_a, uint32x4_t b, const int lane_b) -- 2.17.1
The include of 'arm_neon.h' causes issues to old gcc and aarch32. Including 'rte_vect.h' instead fixes these issues. Fixes: b20971b6cca0 ("net/ixgbe: implement vector driver for ARM") Cc: stable@dpdk.org Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> --- drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c index 293b7c8bd..aa27ee177 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c +++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c @@ -5,13 +5,12 @@ #include <stdint.h> #include <rte_ethdev_driver.h> #include <rte_malloc.h> +#include <rte_vect.h> #include "ixgbe_ethdev.h" #include "ixgbe_rxtx.h" #include "ixgbe_rxtx_vec_common.h" -#include <arm_neon.h> - #pragma GCC diagnostic ignored "-Wcast-qual" static inline void -- 2.17.1