#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include <xmmintrin.h>
#include <emmintrin.h>
#include <smmintrin.h>
#include <wmmintrin.h>
#include <assert.h>
Go to the source code of this file.
|
#define | zero_block() _mm_setzero_si128() |
|
#define | one_block() makeBlock(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL) |
|
#define | getLSB(x) (*((unsigned short *)&x)&1) |
|
#define | makeBlock(X, Y) _mm_set_epi64((__m64)(X), (__m64)(Y)) |
|
#define | INP(x, y) inp[(x)*ncols/8 + (y)/8] |
|
#define | OUT(x, y) out[(y)*nrows/8 + (x)/8] |
|
|
block | xorBlocks (block x, block y) |
|
block | andBlocks (block x, block y) |
|
void | xorBlocks_arr (block *res, const block *x, const block *y, int nblocks) |
|
void | xorBlocks_arr (block *res, const block *x, block y, int nblocks) |
|
void | xorBlocks_arr2 (block *res, const block *x, const block *y, int nblocks) |
|
bool | block_cmp (const block *x, const block *y, int nblocks) |
|
bool | isZero (const block *b) |
|
bool | isOne (const block *b) |
|
void | sse_trans (uint8_t *out, uint8_t const *inp, int nrows, int ncols) |
|
§ getLSB
#define getLSB |
( |
|
x | ) |
(*((unsigned short *)&x)&1) |
§ INP
#define INP |
( |
|
x, |
|
|
|
y |
|
) |
| inp[(x)*ncols/8 + (y)/8] |
§ makeBlock
#define makeBlock |
( |
|
X, |
|
|
|
Y |
|
) |
| _mm_set_epi64((__m64)(X), (__m64)(Y)) |
§ one_block
#define one_block |
( |
| ) |
makeBlock(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL) |
§ OUT
#define OUT |
( |
|
x, |
|
|
|
y |
|
) |
| out[(y)*nrows/8 + (x)/8] |
§ zero_block
#define zero_block |
( |
| ) |
_mm_setzero_si128() |
§ block
§ block_tpl
typedef __m128i block_tpl[2] |
§ andBlocks()
§ block_cmp()
bool block_cmp |
( |
const block * |
x, |
|
|
const block * |
y, |
|
|
int |
nblocks |
|
) |
| |
|
inline |
§ isOne()
bool isOne |
( |
const block * |
b | ) |
|
|
inline |
§ isZero()
bool isZero |
( |
const block * |
b | ) |
|
|
inline |
§ sse_trans()
void sse_trans |
( |
uint8_t * |
out, |
|
|
uint8_t const * |
inp, |
|
|
int |
nrows, |
|
|
int |
ncols |
|
) |
| |
|
inline |
§ xorBlocks()
§ xorBlocks_arr() [1/2]
void xorBlocks_arr |
( |
block * |
res, |
|
|
const block * |
x, |
|
|
const block * |
y, |
|
|
int |
nblocks |
|
) |
| |
|
inline |
§ xorBlocks_arr() [2/2]
§ xorBlocks_arr2()
void xorBlocks_arr2 |
( |
block * |
res, |
|
|
const block * |
x, |
|
|
const block * |
y, |
|
|
int |
nblocks |
|
) |
| |
|
inline |
§ fix_key
Initial value:= "\x61\x7e\x8d\xa2\xa0\x51\x1e\x96"
"\x5e\x41\xc2\x9b\x15\x3f\xc7\x7a"