Message ID | 1455605170-16137-3-git-send-email-thomas.monjalon@6wind.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 3545CC138; Tue, 16 Feb 2016 07:47:52 +0100 (CET) Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by dpdk.org (Postfix) with ESMTP id EA267BE80 for <dev@dpdk.org>; Tue, 16 Feb 2016 07:47:48 +0100 (CET) Received: by mail-wm0-f42.google.com with SMTP id g62so90166248wme.1 for <dev@dpdk.org>; Mon, 15 Feb 2016 22:47:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=TXF8WkW/XhkfTleF8AGl8hOew+olGIBp0vD/s4JLYpI=; b=Pj+jQ1iMTWHpilC+0SBtDoe0w4J42Ix80Runv9aq8UiuzSHDpZmtgAP2U6hJjo5wgf U8rWf0HOGzLflkOhjPZ7q7CFNVB++xGEh8sywK8VyilxvwjquaSCJh2PvNrWr80uvPMN c/Vj0N7irSqWNNu/9EmAtxvozrfBdBD0NyLkCdboI6zb5ccayOP0T5mgtbohVQF8LkHt qGfRHBBTyQExf9WtUSUs8jF7cAGe2Axu7MeAi3kkhXoo3F0efnqq2Wk5cr9C0OwokV4c hNsb+DN8cnKVWNBkvpMQwDm5ANOYsR5ei7FO7Pc61HT0aPH1IDWJExVljy8hzqTVHrGU WL8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=TXF8WkW/XhkfTleF8AGl8hOew+olGIBp0vD/s4JLYpI=; b=HFj9vYmgXzXqsxGJP0Oms86BlYX9Yg4npdsgLH/sEl6w4onoisWjW/IBRT5b/YJFYO DqaBBDxQLf0tbaeKrf9W9/HIggNQro+spsr6eRLYwqNIDA6a2BiQNkum809dHgXHUKzc 0oDMmBAAasd1DZZJwAME+wkWfV9fGZ2P/n0xQRXqYvIe+//jvlOtw/YpGgPo49Dwr5SE oTsRKgNkEvTTy7w92HxbzA7ZzzQPjF08cOlc2ssb9qEZu8uOh6KJ6j7n8952wffMTQmC p277sZk7KzGRcuUIMV8vOWqRlssci0khlZQx/KPQZSKCKSAbIrpUDEYW47Qv40gBfg2J 6wNQ== X-Gm-Message-State: AG10YOQoxHWsDfNFaks5Oy1DEPezXTl49KnJBr1SYCcwJPcPOsGHn1qLCRnx0lYwuBsZAIcr X-Received: by 10.28.22.74 with SMTP id 71mr4419555wmw.47.1455605268852; Mon, 15 Feb 2016 22:47:48 -0800 (PST) Received: from XPS13.localdomain (165.20.90.92.rev.sfr.net. [92.90.20.165]) by smtp.gmail.com with ESMTPSA id c136sm18885928wmd.3.2016.02.15.22.47.47 for <dev@dpdk.org> (version=TLSv1/SSLv3 cipher=OTHER); Mon, 15 Feb 2016 22:47:48 -0800 (PST) From: Thomas Monjalon <thomas.monjalon@6wind.com> To: dev@dpdk.org Date: Tue, 16 Feb 2016 07:46:08 +0100 Message-Id: <1455605170-16137-3-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1455605170-16137-1-git-send-email-thomas.monjalon@6wind.com> References: <1455605170-16137-1-git-send-email-thomas.monjalon@6wind.com> Subject: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Thomas Monjalon
Feb. 16, 2016, 6:46 a.m. UTC
The compiler cannot use _mm_crc32_u64:
examples/ip_pipeline/pipeline/hash_func.h:165:9:
error: implicit declaration of function '_mm_crc32_u64' is invalid in C99
Fixes: 947024a26df7 ("examples/ip_pipeline: rework passthrough pipeline")
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
examples/ip_pipeline/pipeline/hash_func.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
> -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon > Sent: Tuesday, February 16, 2016 6:46 AM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for > x86_64 without SSE4.2 > > The compiler cannot use _mm_crc32_u64: > > examples/ip_pipeline/pipeline/hash_func.h:165:9: > error: implicit declaration of function '_mm_crc32_u64' is invalid in C99 > > Fixes: 947024a26df7 ("examples/ip_pipeline: rework passthrough pipeline") > > Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> > --- > examples/ip_pipeline/pipeline/hash_func.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/examples/ip_pipeline/pipeline/hash_func.h > b/examples/ip_pipeline/pipeline/hash_func.h > index 7846300..1953ad4 100644 > --- a/examples/ip_pipeline/pipeline/hash_func.h > +++ b/examples/ip_pipeline/pipeline/hash_func.h > @@ -152,7 +152,7 @@ hash_xor_key64(void *key, __rte_unused uint32_t > key_size, uint64_t seed) > return (xor0 >> 32) ^ xor0; > } > > -#if defined(__x86_64__) > +#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > > #include <x86intrin.h> > > -- > 2.7.0 Hi Thomas, This is not the correct fix, as RTE_CPUFLAG_SSE4_2 is a flag that can only be tested at run-time (as result of calling function rte_cpu_get_flag_enabled()), not at build-time. The reason it appears to fix the build issue you are mentioning is the fact that this change results in disabling the __x86_64__ code branch. We need to revert this patch and look for a better option. What is the compiler that generates the build issue you are mentioning? We could not reproduce it with gcc 5 (gcc 5.3.1). Thanks, Cristian
> -----Original Message----- > From: Dumitrescu, Cristian > Sent: Wednesday, March 30, 2016 2:24 PM > To: 'Thomas Monjalon' <thomas.monjalon@6wind.com>; dev@dpdk.org > Cc: Singh, Jasvinder <jasvinder.singh@intel.com>; Zhang, Roy Fan > <roy.fan.zhang@intel.com>; Hunt, David <david.hunt@intel.com> > Subject: RE: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for > x86_64 without SSE4.2 > Importance: High > > > > > -----Original Message----- > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon > > Sent: Tuesday, February 16, 2016 6:46 AM > > To: dev@dpdk.org > > Subject: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for > > x86_64 without SSE4.2 > > > > The compiler cannot use _mm_crc32_u64: > > > > examples/ip_pipeline/pipeline/hash_func.h:165:9: > > error: implicit declaration of function '_mm_crc32_u64' is invalid in C99 > > > > Fixes: 947024a26df7 ("examples/ip_pipeline: rework passthrough > pipeline") > > > > Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> > > --- > > examples/ip_pipeline/pipeline/hash_func.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/examples/ip_pipeline/pipeline/hash_func.h > > b/examples/ip_pipeline/pipeline/hash_func.h > > index 7846300..1953ad4 100644 > > --- a/examples/ip_pipeline/pipeline/hash_func.h > > +++ b/examples/ip_pipeline/pipeline/hash_func.h > > @@ -152,7 +152,7 @@ hash_xor_key64(void *key, __rte_unused uint32_t > > key_size, uint64_t seed) > > return (xor0 >> 32) ^ xor0; > > } > > > > -#if defined(__x86_64__) > > +#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > > > > #include <x86intrin.h> > > > > -- > > 2.7.0 > > Hi Thomas, > > This is not the correct fix, as RTE_CPUFLAG_SSE4_2 is a flag that can only be > tested at run-time (as result of calling function rte_cpu_get_flag_enabled()), > not at build-time. > > The reason it appears to fix the build issue you are mentioning is the fact that > this change results in disabling the __x86_64__ code branch. > > We need to revert this patch and look for a better option. > > What is the compiler that generates the build issue you are mentioning? We > could not reproduce it with gcc 5 (gcc 5.3.1). > > Thanks, > Cristian I think the correct fix is: #if defined(__x86_64__) && (defined(RTE_MACHINE_CPUFLAG_SSE4_2) || defined(RTE_MACHINE_CPUFLAG_CRC32)) We'll test it and send a patch asap. Thanks, Cristian
2016-03-30 13:24, Dumitrescu, Cristian: > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Thomas Monjalon > > The compiler cannot use _mm_crc32_u64: > > > > examples/ip_pipeline/pipeline/hash_func.h:165:9: > > error: implicit declaration of function '_mm_crc32_u64' is invalid in C99 > > > > Fixes: 947024a26df7 ("examples/ip_pipeline: rework passthrough pipeline") > > > > Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> [...] > > -#if defined(__x86_64__) > > +#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > > Hi Thomas, > > This is not the correct fix, as RTE_CPUFLAG_SSE4_2 is a flag that can > only be tested at run-time (as result of calling function > rte_cpu_get_flag_enabled()), not at build-time. Yes you're right. It is an error, the word MACHINE is missing. The flag should be RTE_MACHINE_CPUFLAG_SSE4_2. > The reason it appears to fix the build issue you are mentioning is the fact > that this change results in disabling the __x86_64__ code branch. > > We need to revert this patch and look for a better option. > > What is the compiler that generates the build issue you are mentioning? > We could not reproduce it with gcc 5 (gcc 5.3.1). It fails with gcc-5.2.0 and clang-3.6.2 for machine "default".
2016-03-30 13:57, Dumitrescu, Cristian: > I think the correct fix is: > #if defined(__x86_64__) && (defined(RTE_MACHINE_CPUFLAG_SSE4_2) || defined(RTE_MACHINE_CPUFLAG_CRC32)) > > We'll test it and send a patch asap. I had prepared this patch. Please be inspired: examples/ip_pipeline: fix SSE4.2 optimization branch The branch was disabled because of a typo in the SSE4.2 flag. Change also the x86_64 flag to use a DPDK one. Fixes: 28377375c6c0 ("examples/ip_pipeline: fix build for x86_64 without SSE4.2") -#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) +#if defined(RTE_ARCH_X86_64) && defined(RTE_MACHINE_CPUFLAG_SSE4_2)
> -----Original Message----- > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > Sent: Wednesday, March 30, 2016 3:07 PM > To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com> > Cc: dev@dpdk.org; Singh, Jasvinder <jasvinder.singh@intel.com>; Zhang, > Roy Fan <roy.fan.zhang@intel.com>; Hunt, David <david.hunt@intel.com> > Subject: Re: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for > x86_64 without SSE4.2 > > 2016-03-30 13:57, Dumitrescu, Cristian: > > I think the correct fix is: > > #if defined(__x86_64__) && (defined(RTE_MACHINE_CPUFLAG_SSE4_2) > || defined(RTE_MACHINE_CPUFLAG_CRC32)) > > > > We'll test it and send a patch asap. > > I had prepared this patch. Please be inspired: > > examples/ip_pipeline: fix SSE4.2 optimization branch > > The branch was disabled because of a typo in the SSE4.2 flag. > Change also the x86_64 flag to use a DPDK one. > > Fixes: 28377375c6c0 ("examples/ip_pipeline: fix build for x86_64 without > SSE4.2") > > -#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > +#if defined(RTE_ARCH_X86_64) && > defined(RTE_MACHINE_CPUFLAG_SSE4_2) Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2016-03-30 14:15, Dumitrescu, Cristian: > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > > 2016-03-30 13:57, Dumitrescu, Cristian: > > > I think the correct fix is: > > > #if defined(__x86_64__) && (defined(RTE_MACHINE_CPUFLAG_SSE4_2) > > || defined(RTE_MACHINE_CPUFLAG_CRC32)) > > > > > > We'll test it and send a patch asap. > > > > I had prepared this patch. Please be inspired: > > > > examples/ip_pipeline: fix SSE4.2 optimization branch > > > > The branch was disabled because of a typo in the SSE4.2 flag. > > Change also the x86_64 flag to use a DPDK one. > > > > Fixes: 28377375c6c0 ("examples/ip_pipeline: fix build for x86_64 without > > SSE4.2") > > > > -#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > > +#if defined(RTE_ARCH_X86_64) && > > defined(RTE_MACHINE_CPUFLAG_SSE4_2) > > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> I thought you wanted to send a patch with another CPUFLAG (CRC32)?
> -----Original Message----- > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > Sent: Wednesday, March 30, 2016 4:50 PM > To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com> > Cc: dev@dpdk.org; Singh, Jasvinder <jasvinder.singh@intel.com>; Zhang, > Roy Fan <roy.fan.zhang@intel.com>; Hunt, David <david.hunt@intel.com> > Subject: Re: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for > x86_64 without SSE4.2 > > 2016-03-30 14:15, Dumitrescu, Cristian: > > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] > > > 2016-03-30 13:57, Dumitrescu, Cristian: > > > > I think the correct fix is: > > > > #if defined(__x86_64__) && > (defined(RTE_MACHINE_CPUFLAG_SSE4_2) > > > || defined(RTE_MACHINE_CPUFLAG_CRC32)) > > > > > > > > We'll test it and send a patch asap. > > > > > > I had prepared this patch. Please be inspired: > > > > > > examples/ip_pipeline: fix SSE4.2 optimization branch > > > > > > The branch was disabled because of a typo in the SSE4.2 flag. > > > Change also the x86_64 flag to use a DPDK one. > > > > > > Fixes: 28377375c6c0 ("examples/ip_pipeline: fix build for x86_64 > without > > > SSE4.2") > > > > > > -#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) > > > +#if defined(RTE_ARCH_X86_64) && > > > defined(RTE_MACHINE_CPUFLAG_SSE4_2) > > > > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> > > I thought you wanted to send a patch with another CPUFLAG (CRC32)? The extra flag is good, but not absolutely required, as SSE4.2 implies support for CRC32 instruction. The CRC32 flag might be useful when a CPU architecture other than Intel supports the CRC32 instruction, but I am not sure whether such CPU architecture exists. Anyway, the SSE4.2 || CRC32 pattern is already present in several DPDK files, so I was looking to observe it as well. I thought you considered the CRC32 flag to be redundant and decided to remove it on purpose. I am OK if you want to go ahead with your patch right now, otherwise we can send a patch tomorrow? Thanks, Cristian
diff --git a/examples/ip_pipeline/pipeline/hash_func.h b/examples/ip_pipeline/pipeline/hash_func.h index 7846300..1953ad4 100644 --- a/examples/ip_pipeline/pipeline/hash_func.h +++ b/examples/ip_pipeline/pipeline/hash_func.h @@ -152,7 +152,7 @@ hash_xor_key64(void *key, __rte_unused uint32_t key_size, uint64_t seed) return (xor0 >> 32) ^ xor0; } -#if defined(__x86_64__) +#if defined(__x86_64__) && defined(RTE_CPUFLAG_SSE4_2) #include <x86intrin.h>