blob: d22550e23f04db92f398230aa4922e353ded6e70 [file] [log] [blame]
#include "crc32c.h"
#include "software.h"
#include "../main/main.h"
#include <rawrtcdc/config.h>
#include <re.h>
#if RAWRTCDC_ENABLE_SSE42_CRC32C
# include "sse42.h"
#endif
#define DEBUG_MODULE "crc32c"
//#define RAWRTC_DEBUG_MODULE_LEVEL 7 // Note: Uncomment this to debug this module only
#include <rawrtcc/debug.h>
/*
* Initialise CRC32-C.
*/
void rawrtc_crc32c_init(void) {
#if RAWRTCDC_ENABLE_SSE42_CRC32C
if (rawrtc_crc32c_sse42_supported()) {
rawrtc_crc32c_init_sse42();
rawrtcdc_global.crc32c_handler = rawrtc_crc32c_sse42;
DEBUG_PRINTF("Initialised CRC32-C (sse42)\n");
return;
}
#endif
rawrtcdc_global.crc32c_handler = rawrtc_crc32c_software;
DEBUG_PRINTF("Initialised CRC32-C (software)\n");
}
/*
* Compute CRC-32C using whatever method has been established.
*/
uint32_t rawrtc_crc32c(void const* buffer, size_t length) {
return rawrtcdc_global.crc32c_handler(buffer, length);
}