emp-toolkit
block.h File Reference
#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.

Macros

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

Typedefs

typedef __m128i block
 
typedef __m128i block_tpl[2]
 

Functions

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)
 

Variables

const char fix_key []
 

Macro Definition Documentation

§ getLSB

#define getLSB (   x)    (*((unsigned short *)&x)&1)

§ INP

#define INP (   x,
 
)    inp[(x)*ncols/8 + (y)/8]

§ makeBlock

#define makeBlock (   X,
 
)    _mm_set_epi64((__m64)(X), (__m64)(Y))

§ one_block

#define one_block ( )    makeBlock(0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL)

§ OUT

#define OUT (   x,
 
)    out[(y)*nrows/8 + (x)/8]

§ zero_block

#define zero_block ( )    _mm_setzero_si128()

Typedef Documentation

§ block

typedef __m128i block

§ block_tpl

typedef __m128i block_tpl[2]

Function Documentation

§ andBlocks()

block andBlocks ( block  x,
block  y 
)
inline

§ 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()

block xorBlocks ( block  x,
block  y 
)
inline

§ xorBlocks_arr() [1/2]

void xorBlocks_arr ( block res,
const block x,
const block y,
int  nblocks 
)
inline

§ xorBlocks_arr() [2/2]

void xorBlocks_arr ( block res,
const block x,
block  y,
int  nblocks 
)
inline

§ xorBlocks_arr2()

void xorBlocks_arr2 ( block res,
const block x,
const block y,
int  nblocks 
)
inline

Variable Documentation

§ fix_key

const char fix_key[]
Initial value:
= "\x61\x7e\x8d\xa2\xa0\x51\x1e\x96"
"\x5e\x41\xc2\x9b\x15\x3f\xc7\x7a"