reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
Crc32.hxx File Reference
#include <stdint.h>
#include <cstddef>

Go to the source code of this file.

Macros

#define CRC32_USE_LOOKUP_TABLE_BYTE
 
#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_4
 
#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_8
 
#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_16
 

Functions

uint32_t crc32_fast (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 using the fastest algorithm for large datasets on modern CPUs
 
uint32_t crc32_combine (uint32_t crcA, uint32_t crcB, size_t lengthB)
 merge two CRC32 such that result = crc32(dataB, lengthB, crc32(dataA, lengthA))
 
uint32_t crc32_bitwise (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (bitwise algorithm)
 
uint32_t crc32_halfbyte (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (half-byte algoritm)
 
uint32_t crc32_1byte (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (standard algorithm)
 
uint32_t crc32_1byte_tableless (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (byte algorithm) without lookup tables
 
uint32_t crc32_1byte_tableless2 (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (byte algorithm) without lookup tables
 
uint32_t crc32_4bytes (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (Slicing-by-4 algorithm)
 
uint32_t crc32_8bytes (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (Slicing-by-8 algorithm)
 
uint32_t crc32_4x8bytes (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (Slicing-by-8 algorithm), unroll inner loop 4 times
 
uint32_t crc32_16bytes (const void *data, size_t length, uint32_t previousCrc32=0)
 compute CRC32 (Slicing-by-16 algorithm)
 
uint32_t crc32_16bytes_prefetch (const void *data, size_t length, uint32_t previousCrc32=0, size_t prefetchAhead=256)
 compute CRC32 (Slicing-by-16 algorithm, prefetch upcoming data blocks)
 

Macro Definition Documentation

◆ CRC32_USE_LOOKUP_TABLE_BYTE

#define CRC32_USE_LOOKUP_TABLE_BYTE

Definition at line 26 of file Crc32.hxx.

◆ CRC32_USE_LOOKUP_TABLE_SLICING_BY_16

#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_16

Definition at line 29 of file Crc32.hxx.

◆ CRC32_USE_LOOKUP_TABLE_SLICING_BY_4

#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_4

Definition at line 27 of file Crc32.hxx.

◆ CRC32_USE_LOOKUP_TABLE_SLICING_BY_8

#define CRC32_USE_LOOKUP_TABLE_SLICING_BY_8

Definition at line 28 of file Crc32.hxx.

Function Documentation

◆ crc32_16bytes()

uint32_t crc32_16bytes ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (Slicing-by-16 algorithm)

Definition at line 410 of file Crc32.cxx.

◆ crc32_16bytes_prefetch()

uint32_t crc32_16bytes_prefetch ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0,
size_t  prefetchAhead = 256 
)

compute CRC32 (Slicing-by-16 algorithm, prefetch upcoming data blocks)

Definition at line 481 of file Crc32.cxx.

◆ crc32_1byte()

uint32_t crc32_1byte ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (standard algorithm)

Definition at line 178 of file Crc32.cxx.

◆ crc32_1byte_tableless()

uint32_t crc32_1byte_tableless ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (byte algorithm) without lookup tables

Definition at line 192 of file Crc32.cxx.

◆ crc32_1byte_tableless2()

uint32_t crc32_1byte_tableless2 ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (byte algorithm) without lookup tables

Definition at line 246 of file Crc32.cxx.

◆ crc32_4bytes()

uint32_t crc32_4bytes ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (Slicing-by-4 algorithm)

Definition at line 273 of file Crc32.cxx.

◆ crc32_4x8bytes()

uint32_t crc32_4x8bytes ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (Slicing-by-8 algorithm), unroll inner loop 4 times

Definition at line 355 of file Crc32.cxx.

◆ crc32_8bytes()

uint32_t crc32_8bytes ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (Slicing-by-8 algorithm)

Definition at line 310 of file Crc32.cxx.

◆ crc32_bitwise()

uint32_t crc32_bitwise ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (bitwise algorithm)

Definition at line 126 of file Crc32.cxx.

◆ crc32_combine()

uint32_t crc32_combine ( uint32_t  crcA,
uint32_t  crcB,
size_t  lengthB 
)

merge two CRC32 such that result = crc32(dataB, lengthB, crc32(dataA, lengthA))

CRC32 => 32 bits

Definition at line 575 of file Crc32.cxx.

◆ crc32_fast()

uint32_t crc32_fast ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 using the fastest algorithm for large datasets on modern CPUs

Definition at line 558 of file Crc32.cxx.

◆ crc32_halfbyte()

uint32_t crc32_halfbyte ( const void *  data,
size_t  length,
uint32_t  previousCrc32 = 0 
)

compute CRC32 (half-byte algoritm)

look-up table for half-byte, same as crc32Lookup[0][16*i]

Definition at line 153 of file Crc32.cxx.