[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 at 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 I thought you wanted to send a patch with another CPUFLAG (CRC32)?
[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
> -Original Message- > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com] > Sent: Wednesday, March 30, 2016 4:50 PM > To: Dumitrescu, Cristian > Cc: dev at dpdk.org; Singh, Jasvinder ; Zhang, > Roy Fan ; Hunt, David > 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 at 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 > > 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
[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)
[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
2016-03-30 13:24, Dumitrescu, Cristian: > From: dev [mailto:dev-bounces at 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 [...] > > -#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".
[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
> -Original Message- > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com] > Sent: Wednesday, March 30, 2016 3:07 PM > To: Dumitrescu, Cristian > Cc: dev at dpdk.org; Singh, Jasvinder ; Zhang, > Roy Fan ; Hunt, David > 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
[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
> -Original Message- > From: Dumitrescu, Cristian > Sent: Wednesday, March 30, 2016 2:24 PM > To: 'Thomas Monjalon' ; dev at dpdk.org > Cc: Singh, Jasvinder ; Zhang, Roy Fan > ; Hunt, David > 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 at dpdk.org] On Behalf Of Thomas Monjalon > > Sent: Tuesday, February 16, 2016 6:46 AM > > To: dev at 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 > > --- > > 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 > > > > -- > > 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
[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
> -Original Message- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Thomas Monjalon > Sent: Tuesday, February 16, 2016 6:46 AM > To: dev at 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 > --- > 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 > > -- > 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
[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 --- 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 -- 2.7.0