The ROme OpTimistic Simulator  2.0.0
A General-Purpose Multithreaded Parallel/Distributed Simulation Platform
xxhash.c File Reference

Fast Hash Algorithm. More...

#include "xxhash.h"
+ Include dependency graph for xxhash.c:

Go to the source code of this file.

Data Structures

struct  _U32_S
 
struct  _U64_S
 

Macros

#define XXH_USE_UNALIGNED_ACCESS   1
 
#define XXH_FORCE_NATIVE_FORMAT   0
 
#define FORCE_INLINE   static inline
 
#define _PACKED
 
#define A32(x)   (((U32_S *)(x))->v)
 
#define A64(x)   (((U64_S *)(x))->v)
 
#define GCC_VERSION   (__GNUC__ * 100 + __GNUC_MINOR__)
 
#define XXH_rotl32(x, r)   ((x << r) | (x >> (32 - r)))
 
#define XXH_rotl64(x, r)   ((x << r) | (x >> (64 - r)))
 
#define PRIME32_1   2654435761U
 
#define PRIME32_2   2246822519U
 
#define PRIME32_3   3266489917U
 
#define PRIME32_4   668265263U
 
#define PRIME32_5   374761393U
 
#define PRIME64_1   11400714785074694791ULL
 
#define PRIME64_2   14029467366897019727ULL
 
#define PRIME64_3   1609587929392839161ULL
 
#define PRIME64_4   9650029242287828579ULL
 
#define PRIME64_5   2870177450012600261ULL
 
#define XXH_CPU_LITTLE_ENDIAN   (*(char*)(&one))
 
#define XXH_STATIC_ASSERT(c)   { enum { XXH_static_assert = 1/(!!(c)) }; }
 
#define XXH_get32bits(p)   XXH_readLE32_align(p, endian, align)
 
#define XXH_get64bits(p)   XXH_readLE64_align(p, endian, align)
 

Typedefs

typedef unsigned char BYTE
 
typedef unsigned short U16
 
typedef unsigned int U32
 
typedef signed int S32
 
typedef unsigned long long U64
 
typedef struct _U32_S U32_S
 
typedef struct _U64_S U64_S
 

Enumerations

enum  XXH_endianess { XXH_bigEndian = 0, XXH_littleEndian = 1 }
 
enum  XXH_alignment { XXH_aligned, XXH_unaligned }
 

Functions

static U32 XXH_swap32 (U32 x)
 
static U64 XXH_swap64 (U64 x)
 
static U32 XXH_readLE32_align (const void *ptr, XXH_endianess endian, XXH_alignment align)
 
static U32 XXH_readLE32 (const void *ptr, XXH_endianess endian)
 
static U64 XXH_readLE64_align (const void *ptr, XXH_endianess endian, XXH_alignment align)
 
static U64 XXH_readLE64 (const void *ptr, XXH_endianess endian)
 
static U32 XXH32_endian_align (const void *input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
 
unsigned int XXH32 (const void *input, size_t len, unsigned seed)
 
static U64 XXH64_endian_align (const void *input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
 
unsigned long long XXH64 (const void *input, size_t len, unsigned long long seed)
 

Variables

static const int one = 1
 

Detailed Description

Fast Hash Algorithm.

xxHash - Fast Hash algorithm

This functions are used to compute hashes of the payload of events when the --enable-extra-checks option is specified. This allows to check whether an event handler has modified the content of an event during processing. This is a serious bug in models which is very hard to spot. Indeed, since events are replayed in optimistic simulation, altering the content of an event will lead to undefined simulation results when an event is executed again due to a rollback, silent execution, or state reconstruction fo CCGS.

BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Author
Yann Collet

You can contact the author at :

Definition in file xxhash.c.