From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Sowka Subject: [PATCH] sched: fix build on Atom without SSE4 support Date: Sat, 5 Dec 2015 17:27:56 -0500 Message-ID: <1449354476-8275-1-git-send-email-msowka@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: Mike Sowka To: dev@dpdk.org Return-path: Received: from mail-io0-f172.google.com (mail-io0-f172.google.com [209.85.223.172]) by dpdk.org (Postfix) with ESMTP id EE44191F8 for ; Sat, 5 Dec 2015 23:28:05 +0100 (CET) Received: by iofh3 with SMTP id h3so149513343iof.3 for ; Sat, 05 Dec 2015 14:28:05 -0800 (PST) List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Thanks for the pointers Thomas. Here is a signed-off patch re-submission with some explanation, to the best of my experience. Irrelevant of the target, the preprocessor #ifdef SSE2 for the grinder_pipe_exists function is inadequate since the __mm_testz_si128 function requires SSE4.1, PTEST instruction described in https://en.wikipedia.org/wiki/SSE4#SSE4.1 (I do no have better spec reference). I have bumped the preprocessor #ifdef to require SSE4. The Atom N2600 does not have SSE4, http://ark.intel.com/products/58916, and so I had trouble building rte_sched with optimized version of grinder_pipe_exists, with following: error: inlining failed in call to always_inline _mm_testz_si128=E2=80=99: target specific option mismatch GCC 4.9 correctly identifies my target as not having SSE4, and with provided patch builds the non-optimized version of grinder_pipe_exists. Signed-off-by: Mike Sowka --- lib/librte_sched/rte_sched.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c index 21ebf25..6f92aa6 100644 --- a/lib/librte_sched/rte_sched.c +++ b/lib/librte_sched/rte_sched.c @@ -55,8 +55,8 @@ #ifdef RTE_SCHED_VECTOR #include =20 -#if defined(__SSE2__) -#define SCHED_VECTOR_SSE2 +#if defined(__SSE4__) +#define SCHED_VECTOR_SSE4 #endif =20 #endif @@ -1672,7 +1672,7 @@ grinder_schedule(struct rte_sched_port *port, uint3= 2_t pos) return 1; } =20 -#ifdef SCHED_VECTOR_SSE2 +#ifdef SCHED_VECTOR_SSE4 =20 static inline int grinder_pipe_exists(struct rte_sched_port *port, uint32_t base_pipe) --=20 2.1.0