Thread (15 messages) 15 messages, 2 authors, 2016-03-31

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

From: Dumitrescu, Cristian <hidden>
Date: 2016-03-30 13:57:57

-----Original Message-----
From: Dumitrescu, Cristian
Sent: Wednesday, March 30, 2016 2:24 PM
To: 'Thomas Monjalon' <redacted>; dev@dpdk.org
Cc: Singh, Jasvinder <redacted>; Zhang, Roy Fan
[off-list ref]; Hunt, David [off-list ref]
Subject: RE: [dpdk-dev] [PATCH v2 2/4] examples/ip_pipeline: fix build for
x86_64 without SSE4.2
Importance: High


quoted
-----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")
quoted
Signed-off-by: Thomas Monjalon <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help