17 #include <immintrin.h> 34 static const uint32_t mask_set[33][16];
59 return _tzcnt_u64(value) + 1;
75 virtual size_t encode(
void *encoded,
size_t encoded_buffer_length,
const integer *source,
size_t source_integers);
88 virtual void decode(integer *decoded,
size_t integers_to_decode,
const void *source,
size_t source_length);
101 virtual void decode_with_writer(
size_t integers_to_decode,
const void *source_as_void,
size_t source_length);
107 virtual long long compress(
unsigned char *destination,
long long destination_length, uint32_t *source,
long long source_integers)
109 return encode(destination, destination_length, source, source_integers);
112 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_vb.cpp:24
Variable byte compression for integer sequences.
Definition: compress_integer_variable_byte.h:39
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_vb.h:57
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_vb.cpp:319
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_vb.cpp:50
Variable byte compression for integer sequences.
Pack 32-bit integers into 512-bit SIMD words using elias gamma with vbyte for short lists...
Definition: compress_integer_elias_gamma_simd_vb.h:31
virtual long long compress(unsigned char *destination, long long destination_length, uint32_t *source, long long source_integers)
Decode a sequence of integers encoded with this codex, calling add_rsv for each SIMD register...
Definition: compress_integer_elias_gamma_simd_vb.h:107