ipsec: infra for selecting backends
[vpp.git] / src / vppinfra / crc32.h
index 340b539..5f4d94f 100644 (file)
@@ -23,6 +23,7 @@
 #include <x86intrin.h>
 
 #define crc32_u64 _mm_crc32_u64
+#define crc32_u32 _mm_crc32_u32
 
 static_always_inline u32
 clib_crc32c (u8 * s, int len)
@@ -35,7 +36,9 @@ clib_crc32c (u8 * s, int len)
 #else
   /* workaround weird GCC bug when using _mm_crc32_u32
      which happens with -O2 optimization */
+#if !defined (__i686__)
   volatile ("":::"memory");
+#endif
 #endif
 
   for (; len >= 4; len -= 4, s += 4)
@@ -56,6 +59,7 @@ clib_crc32c (u8 * s, int len)
 
 
 #define crc32_u64 __crc32cd
+#define crc32_u32 __crc32cw
 
 static_always_inline u32
 clib_crc32c (u8 * s, int len)