[dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for x86_64 without SSE4.2

Thomas Monjalon thomas.monjalon at 6wind.com
Wed Mar 30 15:58:13 CEST 2016


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 <thomas.monjalon at 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".


More information about the dev mailing list