From 927b0714d758356f03c0b3402fe87dc934154d95 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Tue, 20 Feb 2018 08:33:50 +0100 Subject: [PATCH] vppinfra: CLIB_HAVE_VEC128 mandates SSE4.2 Change-Id: I6511110d0472203498a4f8741781eeeeb4f90844 Signed-off-by: Damjan Marion --- src/vnet/classify/vnet_classify.h | 2 +- src/vnet/ethernet/ethernet.h | 2 ++ src/vppinfra.am | 2 +- src/vppinfra/vector.h | 12 +++--------- src/vppinfra/{vector_sse2.h => vector_sse42.h} | 0 5 files changed, 7 insertions(+), 11 deletions(-) rename src/vppinfra/{vector_sse2.h => vector_sse42.h} (100%) diff --git a/src/vnet/classify/vnet_classify.h b/src/vnet/classify/vnet_classify.h index 79e7f1a844e..6cbbf10aa2e 100644 --- a/src/vnet/classify/vnet_classify.h +++ b/src/vnet/classify/vnet_classify.h @@ -41,7 +41,7 @@ extern vlib_node_registration_t ip6_classify_node; #define CLASSIFY_TRACE 0 -#if !defined( __aarch64__) && !defined(__arm__) +#ifdef CLIB_HAVE_VEC128 #define CLASSIFY_USE_SSE //Allow usage of SSE operations #endif diff --git a/src/vnet/ethernet/ethernet.h b/src/vnet/ethernet/ethernet.h index 389bc1b3bf4..fb7e2c5ba81 100644 --- a/src/vnet/ethernet/ethernet.h +++ b/src/vnet/ethernet/ethernet.h @@ -67,6 +67,7 @@ ethernet_mac_address_is_zero (u8 * mac) return ((*((u32 *) mac) == 0) && (*((u16 *) (mac + 4)) == 0)); } +#ifdef CLIB_HAVE_VEC128 static const u16x8 tagged_ethertypes = { (u16) ETHERNET_TYPE_VLAN, (u16) ETHERNET_TYPE_DOT1AD, @@ -78,6 +79,7 @@ static const u16x8 tagged_ethertypes = { (u16) ETHERNET_TYPE_VLAN_9200, (u16) ETHERNET_TYPE_VLAN_9200 }; +#endif static_always_inline int ethernet_frame_is_tagged (u16 type) diff --git a/src/vppinfra.am b/src/vppinfra.am index 2bb16b2bd9c..6b7c77ec3f8 100644 --- a/src/vppinfra.am +++ b/src/vppinfra.am @@ -270,7 +270,7 @@ nobase_include_HEADERS = \ vppinfra/vector_funcs.h \ vppinfra/vector_iwmmxt.h \ vppinfra/vector_neon.h \ - vppinfra/vector_sse2.h \ + vppinfra/vector_sse42.h \ vppinfra/valgrind.h \ vppinfra/xxhash.h \ vppinfra/xy.h \ diff --git a/src/vppinfra/vector.h b/src/vppinfra/vector.h index e786275f5d4..13d7ba27031 100644 --- a/src/vppinfra/vector.h +++ b/src/vppinfra/vector.h @@ -50,7 +50,7 @@ #define CLIB_HAVE_VEC128 #endif -#if defined (__SSE2__) && __GNUC__ >= 4 +#if defined (__SSE4_2__) && __GNUC__ >= 4 #define CLIB_HAVE_VEC128 #endif @@ -73,7 +73,6 @@ #define _vector_size(n) __attribute__ ((vector_size (n))) -#ifdef CLIB_HAVE_VEC64 /* Signed 64 bit. */ typedef char i8x8 _vector_size (8); typedef short i16x4 _vector_size (8); @@ -86,9 +85,7 @@ typedef unsigned int u32x2 _vector_size (8); /* Floating point 64 bit. */ typedef float f32x2 _vector_size (8); -#endif /* CLIB_HAVE_VEC64 */ -#ifdef CLIB_HAVE_VEC128 /* Signed 128 bit. */ typedef i8 i8x16 _vector_size (16); typedef i16 i16x8 _vector_size (16); @@ -118,9 +115,7 @@ typedef u64 u64x4 _vector_size (32); typedef f32 f32x8 _vector_size (32); typedef f64 f64x4 _vector_size (32); -#endif /* CLIB_HAVE_VEC128 */ -#ifdef CLIB_HAVE_VEC512 /* Signed 512 bit. */ typedef i8 i8x64 _vector_size (64); typedef i16 i16x32 _vector_size (64); @@ -135,7 +130,6 @@ typedef u64 u64x8 _vector_size (64); typedef f32 f32x16 _vector_size (64); typedef f64 f64x8 _vector_size (64); -#endif /* CLIB_HAVE_VEC512 */ /* Vector word sized types. */ #ifndef CLIB_VECTOR_WORD_BITS @@ -258,8 +252,8 @@ _(i64, 2); #endif -#if defined (__SSE2__) && __GNUC__ >= 4 -#include +#if defined (__SSE4_2__) && __GNUC__ >= 4 +#include #endif #if defined (__ALTIVEC__) diff --git a/src/vppinfra/vector_sse2.h b/src/vppinfra/vector_sse42.h similarity index 100% rename from src/vppinfra/vector_sse2.h rename to src/vppinfra/vector_sse42.h -- 2.16.6