[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2
Dumitrescu, Cristian
cristian.dumitrescu at intel.com
Wed Mar 30 15:24:01 CEST 2016
> -----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 <thomas.monjalon at 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
More information about the dev
mailing list