bitshuffle_core.c File Reference

#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 Documentation

#define CHECK_MULT_EIGHT (  )     if (n % 8) return -80;
#define MAX ( X,
 )     ((X) > (Y) ? (X) : (Y))
#define TRANS_BIT_8X8 ( x,
 ) 
Value:
{                                               \
        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,
 ) 
Value:
{                                            \
        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   ) 
Value:
{                        \
        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];                            \
            }                                                               \
        }                                                                   \
    }

Function Documentation

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_bitshuffle_block ( ioc_chain C_ptr,
const size_t  size,
const size_t  elem_size 
)
int64_t bshuf_bitunshuffle ( const void *  in,
void *  out,
const size_t  size,
const size_t  elem_size,
size_t  block_size 
)
int64_t bshuf_bitunshuffle_block ( ioc_chain C_ptr,
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_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  ) 
uint32_t bshuf_read_uint32_BE ( const void *  buf  ) 
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 
)
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 
)
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_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 
)
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 
)
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 
)
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 
)
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 
)
int64_t bshuf_untrans_bit_elem ( 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 
)

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 
)
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 
)
void bshuf_write_uint64_BE ( void *  buf,
uint64_t  num 
)

Referenced by bshuf_h5_filter().


Generated on 28 May 2018 for CAFE by  doxygen 1.6.1