#include "bitshuffle_core.h"#include "bitshuffle_internals.h"#include <stdio.h>#include <string.h>Defines | |
| #define | CHECK_MULT_EIGHT(n) if (n % 8) return -80; |
| #define | MAX(X, Y) ((X) > (Y) ? (X) : (Y)) |
| #define | TRANS_BIT_8X8(x, t) |
| #define | TRANS_BIT_8X8_BE(x, t) |
| #define | TRANS_ELEM_TYPE(in, out, lda, ldb, type_t) |
Functions | |
| int | bshuf_using_SSE2 (void) |
| int | bshuf_using_AVX2 (void) |
| int64_t | bshuf_copy (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_elem_remainder (const void *in, void *out, const size_t size, const size_t elem_size, const size_t start) |
| int64_t | bshuf_trans_byte_elem_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_byte_remainder (const void *in, void *out, const size_t size, const size_t elem_size, const size_t start_byte) |
| int64_t | bshuf_trans_bit_byte_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_elem (const void *in, void *out, const size_t lda, const size_t ldb, const size_t elem_size) |
| int64_t | bshuf_trans_bitrow_eight (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_elem_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_bitrow_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_shuffle_bit_eightelem_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_untrans_bit_elem_scal (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_untrans_bit_elem_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_elem_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_bitrow_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_byte_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_elem_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_elem_SSE_64 (const void *in, void *out, const size_t size) |
| int64_t | bshuf_trans_byte_elem_SSE_32 (const void *in, void *out, const size_t size) |
| int64_t | bshuf_trans_byte_elem_SSE_16 (const void *in, void *out, const size_t size) |
| int64_t | bshuf_shuffle_bit_eightelem_SSE (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_byte_AVX (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_elem_AVX (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_byte_bitrow_AVX (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_shuffle_bit_eightelem_AVX (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_untrans_bit_elem_AVX (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_trans_bit_elem (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_untrans_bit_elem (const void *in, void *out, const size_t size, const size_t elem_size) |
| int64_t | bshuf_blocked_wrap_fun (bshufBlockFunDef fun, const void *in, void *out, const size_t size, const size_t elem_size, size_t block_size) |
| int64_t | bshuf_bitshuffle_block (ioc_chain *C_ptr, const size_t size, const size_t elem_size) |
| int64_t | bshuf_bitunshuffle_block (ioc_chain *C_ptr, const size_t size, const size_t elem_size) |
| void | bshuf_write_uint64_BE (void *buf, uint64_t num) |
| uint64_t | bshuf_read_uint64_BE (void *buf) |
| void | bshuf_write_uint32_BE (void *buf, uint32_t num) |
| uint32_t | bshuf_read_uint32_BE (const void *buf) |
| size_t | bshuf_default_block_size (const size_t elem_size) |
| int64_t | bshuf_bitshuffle (const void *in, void *out, const size_t size, const size_t elem_size, size_t block_size) |
| int64_t | bshuf_bitunshuffle (const void *in, void *out, const size_t size, const size_t elem_size, size_t block_size) |
| #define CHECK_MULT_EIGHT | ( | n | ) | if (n % 8) return -80; |
| #define MAX | ( | X, | |||
| Y | ) | ((X) > (Y) ? (X) : (Y)) |
Referenced by bshuf_default_block_size().
| #define TRANS_BIT_8X8 | ( | x, | |||
| t | ) |
{ \
t = (x ^ (x >> 7)) & 0x00AA00AA00AA00AALL; \
x = x ^ t ^ (t << 7); \
t = (x ^ (x >> 14)) & 0x0000CCCC0000CCCCLL; \
x = x ^ t ^ (t << 14); \
t = (x ^ (x >> 28)) & 0x00000000F0F0F0F0LL; \
x = x ^ t ^ (t << 28); \
}
Referenced by bshuf_shuffle_bit_eightelem_scal(), and bshuf_trans_bit_byte_remainder().
| #define TRANS_BIT_8X8_BE | ( | x, | |||
| t | ) |
{ \
t = (x ^ (x >> 9)) & 0x0055005500550055LL; \
x = x ^ t ^ (t << 9); \
t = (x ^ (x >> 18)) & 0x0000333300003333LL; \
x = x ^ t ^ (t << 18); \
t = (x ^ (x >> 36)) & 0x000000000F0F0F0FLL; \
x = x ^ t ^ (t << 36); \
}
Referenced by bshuf_shuffle_bit_eightelem_scal(), and bshuf_trans_bit_byte_remainder().
| #define TRANS_ELEM_TYPE | ( | in, | |||
| out, | |||||
| lda, | |||||
| ldb, | |||||
| type_t | ) |
{ \
size_t ii, jj, kk; \
const type_t* in_type = (const type_t*) in; \
type_t* out_type = (type_t*) out; \
for(ii = 0; ii + 7 < lda; ii += 8) { \
for(jj = 0; jj < ldb; jj++) { \
for(kk = 0; kk < 8; kk++) { \
out_type[jj*lda + ii + kk] = \
in_type[ii*ldb + kk * ldb + jj]; \
} \
} \
} \
for(ii = lda - lda % 8; ii < lda; ii ++) { \
for(jj = 0; jj < ldb; jj++) { \
out_type[jj*lda + ii] = in_type[ii*ldb + jj]; \
} \
} \
}
| int64_t bshuf_bitshuffle | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size, | |||
| size_t | block_size | |||
| ) |
References bshuf_bitshuffle_block(), and bshuf_blocked_wrap_fun().
Referenced by bshuf_h5_filter().
References bshuf_trans_bit_elem(), ioc_get_in(), ioc_get_out(), ioc_set_next_in(), and ioc_set_next_out().
Referenced by bshuf_bitshuffle().
| int64_t bshuf_bitunshuffle | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size, | |||
| size_t | block_size | |||
| ) |
References bshuf_bitunshuffle_block(), and bshuf_blocked_wrap_fun().
Referenced by bshuf_h5_filter().
References bshuf_untrans_bit_elem(), ioc_get_in(), ioc_get_out(), ioc_set_next_in(), and ioc_set_next_out().
Referenced by bshuf_bitunshuffle().
| int64_t bshuf_blocked_wrap_fun | ( | bshufBlockFunDef | fun, | |
| const void * | in, | |||
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size, | |||
| size_t | block_size | |||
| ) |
References BSHUF_BLOCKED_MULT, bshuf_default_block_size(), ioc_destroy(), ioc_get_in(), ioc_get_out(), ioc_init(), ioc_set_next_in(), and ioc_set_next_out().
Referenced by bshuf_bitshuffle(), bshuf_bitunshuffle(), bshuf_compress_lz4(), and bshuf_decompress_lz4().
| int64_t bshuf_copy | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| size_t bshuf_default_block_size | ( | const size_t | elem_size | ) |
References BSHUF_BLOCKED_MULT, BSHUF_MIN_RECOMMEND_BLOCK, BSHUF_TARGET_BLOCK_SIZE_B, and MAX.
Referenced by bshuf_blocked_wrap_fun(), bshuf_compress_lz4_bound(), and bshuf_h5_filter().
| uint32_t bshuf_read_uint32_BE | ( | const void * | buf | ) |
Referenced by bshuf_decompress_lz4_block(), and bshuf_h5_filter().
| uint64_t bshuf_read_uint64_BE | ( | void * | buf | ) |
Referenced by bshuf_h5_filter().
| int64_t bshuf_shuffle_bit_eightelem_AVX | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_shuffle_bit_eightelem_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References CHECK_MULT_EIGHT, TRANS_BIT_8X8, and TRANS_BIT_8X8_BE.
Referenced by bshuf_untrans_bit_elem_scal().
| int64_t bshuf_shuffle_bit_eightelem_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_bit_byte_AVX | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_bit_byte_remainder | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size, | |||
| const size_t | start_byte | |||
| ) |
References CHECK_MULT_EIGHT, TRANS_BIT_8X8, and TRANS_BIT_8X8_BE.
Referenced by bshuf_trans_bit_byte_scal().
| int64_t bshuf_trans_bit_byte_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_trans_bit_byte_remainder().
Referenced by bshuf_trans_bit_elem_scal().
| int64_t bshuf_trans_bit_byte_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_bit_elem | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_trans_bit_elem_AVX(), bshuf_trans_bit_elem_scal(), and bshuf_trans_bit_elem_SSE().
Referenced by bshuf_bitshuffle_block(), and bshuf_compress_lz4_block().
| int64_t bshuf_trans_bit_elem_AVX | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
Referenced by bshuf_trans_bit_elem().
| int64_t bshuf_trans_bit_elem_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_trans_bit_byte_scal(), bshuf_trans_bitrow_eight(), bshuf_trans_byte_elem_scal(), CHECK_ERR_FREE, and CHECK_MULT_EIGHT.
Referenced by bshuf_trans_bit_elem().
| int64_t bshuf_trans_bit_elem_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
Referenced by bshuf_trans_bit_elem().
| int64_t bshuf_trans_bitrow_eight | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_trans_elem(), and CHECK_MULT_EIGHT.
Referenced by bshuf_trans_bit_elem_scal().
| int64_t bshuf_trans_byte_bitrow_AVX | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_byte_bitrow_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References CHECK_MULT_EIGHT.
Referenced by bshuf_untrans_bit_elem_scal().
| int64_t bshuf_trans_byte_bitrow_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_byte_elem_remainder | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size, | |||
| const size_t | start | |||
| ) |
References CHECK_MULT_EIGHT.
Referenced by bshuf_trans_byte_elem_scal().
| int64_t bshuf_trans_byte_elem_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_trans_byte_elem_remainder().
Referenced by bshuf_trans_bit_elem_scal().
| int64_t bshuf_trans_byte_elem_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
| int64_t bshuf_trans_byte_elem_SSE_16 | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size | |||
| ) |
| int64_t bshuf_trans_byte_elem_SSE_32 | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size | |||
| ) |
| int64_t bshuf_trans_byte_elem_SSE_64 | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size | |||
| ) |
| int64_t bshuf_trans_elem | ( | const void * | in, | |
| void * | out, | |||
| const size_t | lda, | |||
| const size_t | ldb, | |||
| const size_t | elem_size | |||
| ) |
Referenced by bshuf_trans_bitrow_eight().
| int64_t bshuf_untrans_bit_elem | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_untrans_bit_elem_AVX(), bshuf_untrans_bit_elem_scal(), and bshuf_untrans_bit_elem_SSE().
Referenced by bshuf_bitunshuffle_block(), and bshuf_decompress_lz4_block().
| int64_t bshuf_untrans_bit_elem_AVX | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
Referenced by bshuf_untrans_bit_elem().
| int64_t bshuf_untrans_bit_elem_scal | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
References bshuf_shuffle_bit_eightelem_scal(), bshuf_trans_byte_bitrow_scal(), CHECK_ERR_FREE, and CHECK_MULT_EIGHT.
Referenced by bshuf_untrans_bit_elem().
| int64_t bshuf_untrans_bit_elem_SSE | ( | const void * | in, | |
| void * | out, | |||
| const size_t | size, | |||
| const size_t | elem_size | |||
| ) |
Referenced by bshuf_untrans_bit_elem().
| int bshuf_using_AVX2 | ( | void | ) |
| int bshuf_using_SSE2 | ( | void | ) |
| void bshuf_write_uint32_BE | ( | void * | buf, | |
| uint32_t | num | |||
| ) |
Referenced by bshuf_compress_lz4_block(), and bshuf_h5_filter().
| void bshuf_write_uint64_BE | ( | void * | buf, | |
| uint64_t | num | |||
| ) |
Referenced by bshuf_h5_filter().
1.6.1