summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2018-02-20 08:33:50 +0100
committerDamjan Marion <damarion@cisco.com>2018-02-20 08:53:19 +0100
commit927b0714d758356f03c0b3402fe87dc934154d95 (patch)
treee8402143d7b375c8d5985bc33df97c451ebe3bf3
parentcfcf2f476a7be442844523e99f1867c9386c043e (diff)
vppinfra: CLIB_HAVE_VEC128 mandates SSE4.2
Change-Id: I6511110d0472203498a4f8741781eeeeb4f90844 Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r--src/vnet/classify/vnet_classify.h2
-rw-r--r--src/vnet/ethernet/ethernet.h2
-rw-r--r--src/vppinfra.am2
-rw-r--r--src/vppinfra/vector.h12
-rw-r--r--src/vppinfra/vector_sse42.h (renamed from src/vppinfra/vector_sse2.h)0
5 files changed, 7 insertions, 11 deletions
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 <vppinfra/vector_sse2.h>
+#if defined (__SSE4_2__) && __GNUC__ >= 4
+#include <vppinfra/vector_sse42.h>
#endif
#if defined (__ALTIVEC__)
diff --git a/src/vppinfra/vector_sse2.h b/src/vppinfra/vector_sse42.h
index ce1bb81c93f..ce1bb81c93f 100644
--- a/src/vppinfra/vector_sse2.h
+++ b/src/vppinfra/vector_sse42.h