17 #include <immintrin.h> 34 typedef uint32_t integer;
60 return _tzcnt_u64(value) + 1;
76 virtual size_t encode(
void *encoded,
size_t encoded_buffer_length,
const integer *source,
size_t source_integers);
89 virtual void decode(integer *decoded,
size_t integers_to_decode,
const void *source,
size_t source_length);
103 virtual long long compress(
unsigned char *destination,
long long destination_length, uint32_t *source,
long long source_integers)
105 return encode(destination, destination_length, source, source_integers);
108 virtual void decompress(uint32_t *destination,
unsigned char *source,
long long destination_integers)
static uint32_t compute_selector(const uint8_t *encodings)
Computer the selector to use for this encoding.
Definition: compress_integer_elias_gamma_simd.c:64
static forceinline uint64_t find_first_set_bit(uint64_t value)
return the position of the least significant set bit (using a single machine code instruction) ...
Definition: compress_integer_elias_gamma_simd.h:58
static void unittest(void)
Unit test this class.
Definition: compress_integer_elias_gamma_simd.c:386
virtual size_t encode(void *encoded, size_t encoded_buffer_length, const integer *source, size_t source_integers)
Encode a sequence of integers returning the number of bytes used for the encoding, or 0 if the encoded sequence doesn't fit in the buffer.
Definition: compress_integer_elias_gamma_simd.c:90
Pack 32-bit integers into 512-bit SIMD words using prn and carryover.
Definition: compress_integer_elias_gamma_simd.h:31
operating system and compiler independant definition of forceinline
Definition: compress.h:14
Definition: compress_integer_elias_delta_simd.c:23
virtual void decode(integer *decoded, size_t integers_to_decode, const void *source, size_t source_length)
Decode a sequence of integers encoded with this codex.
Definition: compress_integer_elias_gamma_simd.cpp:249