|
@@ -43,14 +43,14 @@ static void crc32_table()
|
|
|
uint32_t crc32c(const char *data, size_t length)
|
|
uint32_t crc32c(const char *data, size_t length)
|
|
|
{
|
|
{
|
|
|
uint32_t crc = ~(0U);
|
|
uint32_t crc = ~(0U);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
printf("Software computing:\n");
|
|
printf("Software computing:\n");
|
|
|
printf("------------------\n");
|
|
printf("------------------\n");
|
|
|
|
|
|
|
|
- while (length--) {
|
|
|
|
|
- crc = crc32c_poly[(crc ^ (uint32_t)(*data++)) & 0xFFL] ^ (crc >> 8);
|
|
|
|
|
- }
|
|
|
|
|
- return crc ^ 0xffffffff;
|
|
|
|
|
|
|
+ while (length--) {
|
|
|
|
|
+ crc = crc32c_poly[(crc ^ (uint32_t)(*data++)) & 0xFFL] ^ (crc >> 8);
|
|
|
|
|
+ }
|
|
|
|
|
+ return crc ^ 0xffffffff;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -62,13 +62,13 @@ uint32_t crc32c(const char *data, size_t length)
|
|
|
uint32_t crc32c_hw(const char *data, size_t length)
|
|
uint32_t crc32c_hw(const char *data, size_t length)
|
|
|
{
|
|
{
|
|
|
uint32_t crc = ~(0U);
|
|
uint32_t crc = ~(0U);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
printf("Hardware computing:\n");
|
|
printf("Hardware computing:\n");
|
|
|
printf("------------------\n");
|
|
printf("------------------\n");
|
|
|
- while (length--) {
|
|
|
|
|
|
|
+ while (length--) {
|
|
|
crc = _mm_crc32_u8(crc, (unsigned char)(*data++));
|
|
crc = _mm_crc32_u8(crc, (unsigned char)(*data++));
|
|
|
- }
|
|
|
|
|
- return crc ^ 0xffffffff;
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ return crc ^ 0xffffffff;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
/*
|