reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
Crc32.cxx File Reference
#include "Crc32.hxx"
#include <sys/param.h>

Go to the source code of this file.

Macros

#define __LITTLE_ENDIAN   1234
 
#define __BIG_ENDIAN   4321
 
#define PREFETCH(location)   ;
 

Functions

uint32_t crc32_bitwise (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (bitwise algorithm)
 
uint32_t crc32_halfbyte (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (half-byte algoritm)
 
uint32_t crc32_1byte (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (standard algorithm)
 
uint32_t crc32_1byte_tableless (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (byte algorithm) without lookup tables
 
uint32_t crc32_1byte_tableless2 (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (byte algorithm) without lookup tables
 
uint32_t crc32_4bytes (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (Slicing-by-4 algorithm)
 
uint32_t crc32_8bytes (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (Slicing-by-8 algorithm)
 
uint32_t crc32_4x8bytes (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (Slicing-by-8 algorithm), unroll inner loop 4 times
 
uint32_t crc32_16bytes (const void *data, size_t length, uint32_t previousCrc32)
 compute CRC32 (Slicing-by-16 algorithm)
 
uint32_t crc32_16bytes_prefetch (const void *data, size_t length, uint32_t previousCrc32, size_t prefetchAhead)
 compute CRC32 (Slicing-by-16 algorithm, prefetch upcoming data blocks)
 
uint32_t crc32_fast (const void *data, size_t length, uint32_t previousCrc32)
 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))
 

Variables

const uint32_t Crc32Lookup [MaxSlice][256]
 forward declaration, table is at the end of this file
 

Macro Definition Documentation

◆ __BIG_ENDIAN

#define __BIG_ENDIAN   4321

Definition at line 41 of file Crc32.cxx.

◆ __LITTLE_ENDIAN

#define __LITTLE_ENDIAN   1234

Definition at line 38 of file Crc32.cxx.

◆ PREFETCH

#define PREFETCH (   location)    ;

Definition at line 74 of file Crc32.cxx.

Function Documentation

◆ crc32_16bytes()

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

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,
size_t  prefetchAhead 
)

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 
)

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 
)

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 
)

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 
)

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 
)

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 
)

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 
)

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 
)

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 
)

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.

Variable Documentation

◆ Crc32Lookup

const uint32_t Crc32Lookup

forward declaration, table is at the end of this file

look-up table, already declared above

Definition at line 682 of file Crc32.cxx.