misc: vpe.api messages dynamically allocated
[vpp.git] / src / vppinfra / crc32.h
index bbfc41c..fec67cd 100644 (file)
 #define clib_crc32c_uses_intrinsics
 #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)
 {
   u32 v = 0;
 
-#if __x86_64__
+#if defined(__x86_64__)
   for (; len >= 8; len -= 8, s += 8)
     v = _mm_crc32_u64 (v, *((u64 *) s));
 #else
   /* workaround weird GCC bug when using _mm_crc32_u32
      which happens with -O2 optimization */
-  volatile ("":::"memory");
+#if !defined (__i686__)
+  asm volatile ("":::"memory");
+#endif
 #endif
 
   for (; len >= 4; len -= 4, s += 4)
@@ -49,9 +54,13 @@ clib_crc32c (u8 * s, int len)
 }
 
 #elif __ARM_FEATURE_CRC32
-#define clib_crc32c_with_intrinsics
+#define clib_crc32c_uses_intrinsics
 #include <arm_acle.h>
 
+
+#define crc32_u64 __crc32cd
+#define crc32_u32 __crc32cw
+
 static_always_inline u32
 clib_crc32c (u8 * s, int len)
 {