/****************************************************************************** * Copyright (c) Intel Corporation - All rights reserved. * * This file is part of the LIBXSMM library. * * * * For information on the license, see the LICENSE file. * * Further information: https://github.com/hfp/libxsmm/ * * SPDX-License-Identifier: BSD-3-Clause * ******************************************************************************/ /* Hans Pabst (Intel Corp.) ******************************************************************************/ #ifndef LIBXSMM_HASH_H #define LIBXSMM_HASH_H #include /* Map number of Bits to corresponding routine. */ #define LIBXSMM_CRC32U(N) LIBXSMM_CONCATENATE(libxsmm_crc32_u, N) /* Map number of Bytes to number of bits. */ #define LIBXSMM_CRC32(N) LIBXSMM_CONCATENATE(libxsmm_crc32_b, N) #define libxsmm_crc32_b4 libxsmm_crc32_u32 #define libxsmm_crc32_b8 libxsmm_crc32_u64 #define libxsmm_crc32_b16 libxsmm_crc32_u128 #define libxsmm_crc32_b32 libxsmm_crc32_u256 #define libxsmm_crc32_b48 libxsmm_crc32_u384 #define libxsmm_crc32_b64 libxsmm_crc32_u512 /** Function type representing the CRC32 functionality. */ LIBXSMM_EXTERN_C typedef LIBXSMM_RETARGETABLE unsigned int (*libxsmm_hash_function)( unsigned int /*seed*/, const void* /*data*/, ... /*size*/); /** Initialize hash function module; not thread-safe. */ LIBXSMM_API_INTERN void libxsmm_hash_init(int target_arch); LIBXSMM_API_INTERN void libxsmm_hash_finalize(void); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u32(unsigned int seed, const void* value, ...); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u64(unsigned int seed, const void* value, ...); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u128(unsigned int seed, const void* value, ...); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u256(unsigned int seed, const void* value, ...); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u384(unsigned int seed, const void* value, ...); LIBXSMM_API_INTERN unsigned int libxsmm_crc32_u512(unsigned int seed, const void* value, ...); /** Calculate the CRC32 for a given quantity (size) of raw data according to the seed. */ LIBXSMM_API_INTERN unsigned int libxsmm_crc32(unsigned int seed, const void* data, size_t size); #endif /*LIBXSMM_HASH_H*/