SASC
DVBSoftCAM

parallel_128_sse.h File Reference

#include <xmmintrin.h>
#include "fftable.h"

Go to the source code of this file.

Classes

union  __u128
union  __u64

Defines

#define MEMALIGN_VAL   16
#define GROUP_PARALLELISM   128
#define FF0()   ff0.v
#define FF1()   ff1.v
#define FFAND(a, b)   _mm_and_ps((a),(b))
#define FFOR(a, b)   _mm_or_ps((a),(b))
#define FFXOR(a, b)   _mm_xor_ps((a),(b))
#define FFNOT(a)   _mm_xor_ps((a),FF1())
#define MALLOC(X)   _mm_malloc(X,16)
#define FREE(X)   _mm_free(X)
#define BYTES_PER_BATCH   8
#define B_FFN_ALL_29()   ff29.v
#define B_FFN_ALL_02()   ff02.v
#define B_FFN_ALL_04()   ff04.v
#define B_FFN_ALL_10()   ff10.v
#define B_FFN_ALL_40()   ff40.v
#define B_FFN_ALL_80()   ff80.v
#define B_FFAND(a, b)   _mm_and_si64((a),(b))
#define B_FFOR(a, b)   _mm_or_si64((a),(b))
#define B_FFXOR(a, b)   _mm_xor_si64((a),(b))
#define B_FFSH8L(a, n)   _mm_slli_si64((a),(n))
#define B_FFSH8R(a, n)   _mm_srli_si64((a),(n))
#define M_EMPTY()   _mm_empty()
#define XOR_8_BY(d, s1, s2)   do { *(__m64*)d = _mm_xor_si64(*(__m64*)(s1), *(__m64*)(s2)); } while(0)
#define XOREQ_8_BY(d, s)   XOR_8_BY(d, d, s)
#define COPY_8_BY(d, s)   do { *(__m64 *)(d) = *(__m64 *)(s); } while(0)
#define BEST_SPAN   16

Typedefs

typedef __m128 group
typedef __m64 batch

Functions

static void XOR_BEST_BY (unsigned char *d, unsigned char *s1, unsigned char *s2)

Variables

static union __u128 ff0 = {{0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}}
static union __u128 ff1 = {{0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU}}
static union __u64 ff29 = {{0x29292929U, 0x29292929U}}
static union __u64 ff02 = {{0x02020202U, 0x02020202U}}
static union __u64 ff04 = {{0x04040404U, 0x04040404U}}
static union __u64 ff10 = {{0x10101010U, 0x10101010U}}
static union __u64 ff40 = {{0x40404040U, 0x40404040U}}
static union __u64 ff80 = {{0x80808080U, 0x80808080U}}

Define Documentation

#define B_FFAND (   a,
  b 
)    _mm_and_si64((a),(b))

Definition at line 65 of file parallel_128_sse.h.

#define B_FFN_ALL_02 ( )    ff02.v

Definition at line 60 of file parallel_128_sse.h.

#define B_FFN_ALL_04 ( )    ff04.v

Definition at line 61 of file parallel_128_sse.h.

#define B_FFN_ALL_10 ( )    ff10.v

Definition at line 62 of file parallel_128_sse.h.

#define B_FFN_ALL_29 ( )    ff29.v

Definition at line 59 of file parallel_128_sse.h.

#define B_FFN_ALL_40 ( )    ff40.v

Definition at line 63 of file parallel_128_sse.h.

#define B_FFN_ALL_80 ( )    ff80.v

Definition at line 64 of file parallel_128_sse.h.

#define B_FFOR (   a,
  b 
)    _mm_or_si64((a),(b))

Definition at line 66 of file parallel_128_sse.h.

#define B_FFSH8L (   a,
  n 
)    _mm_slli_si64((a),(n))

Definition at line 68 of file parallel_128_sse.h.

#define B_FFSH8R (   a,
  n 
)    _mm_srli_si64((a),(n))

Definition at line 69 of file parallel_128_sse.h.

#define B_FFXOR (   a,
  b 
)    _mm_xor_si64((a),(b))

Definition at line 67 of file parallel_128_sse.h.

#define BEST_SPAN   16

Definition at line 84 of file parallel_128_sse.h.

#define BYTES_PER_BATCH   8

Definition at line 58 of file parallel_128_sse.h.

#define COPY_8_BY (   d,
  s 
)    do { *(__m64 *)(d) = *(__m64 *)(s); } while(0)

Definition at line 81 of file parallel_128_sse.h.

#define FF0 ( )    ff0.v

Definition at line 36 of file parallel_128_sse.h.

#define FF1 ( )    ff1.v

Definition at line 37 of file parallel_128_sse.h.

#define FFAND (   a,
  b 
)    _mm_and_ps((a),(b))

Definition at line 38 of file parallel_128_sse.h.

#define FFNOT (   a)    _mm_xor_ps((a),FF1())

Definition at line 41 of file parallel_128_sse.h.

#define FFOR (   a,
  b 
)    _mm_or_ps((a),(b))

Definition at line 39 of file parallel_128_sse.h.

#define FFXOR (   a,
  b 
)    _mm_xor_ps((a),(b))

Definition at line 40 of file parallel_128_sse.h.

#define FREE (   X)    _mm_free(X)

Definition at line 43 of file parallel_128_sse.h.

#define GROUP_PARALLELISM   128

Definition at line 35 of file parallel_128_sse.h.

#define M_EMPTY (   void)    _mm_empty()

Definition at line 71 of file parallel_128_sse.h.

#define MALLOC (   X)    _mm_malloc(X,16)

Definition at line 42 of file parallel_128_sse.h.

#define MEMALIGN_VAL   16

Definition at line 24 of file parallel_128_sse.h.

#define XOR_8_BY (   d,
  s1,
  s2 
)    do { *(__m64*)d = _mm_xor_si64(*(__m64*)(s1), *(__m64*)(s2)); } while(0)

Definition at line 75 of file parallel_128_sse.h.

#define XOREQ_8_BY (   d,
  s 
)    XOR_8_BY(d, d, s)

Definition at line 78 of file parallel_128_sse.h.


Typedef Documentation

typedef __m64 batch

Definition at line 57 of file parallel_128_sse.h.

typedef __m128 group

Definition at line 34 of file parallel_128_sse.h.


Function Documentation

static void XOR_BEST_BY ( unsigned char *  d,
unsigned char *  s1,
unsigned char *  s2 
) [inline, static]

Definition at line 87 of file parallel_128_sse.h.

{
    __m128 vs1 = _mm_load_ps((float*)s1);
    __m128 vs2 = _mm_load_ps((float*)s2);
    vs1 = _mm_xor_ps(vs1, vs2);
    _mm_store_ps((float*)d, vs1);
}

Variable Documentation

union __u128 ff0 = {{0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U}} [static]

Definition at line 31 of file parallel_128_sse.h.

union __u64 ff02 = {{0x02020202U, 0x02020202U}} [static]

Definition at line 51 of file parallel_128_sse.h.

union __u64 ff04 = {{0x04040404U, 0x04040404U}} [static]

Definition at line 52 of file parallel_128_sse.h.

union __u128 ff1 = {{0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU}} [static]

Definition at line 32 of file parallel_128_sse.h.

union __u64 ff10 = {{0x10101010U, 0x10101010U}} [static]

Definition at line 53 of file parallel_128_sse.h.

union __u64 ff29 = {{0x29292929U, 0x29292929U}} [static]

Definition at line 50 of file parallel_128_sse.h.

union __u64 ff40 = {{0x40404040U, 0x40404040U}} [static]

Definition at line 54 of file parallel_128_sse.h.

union __u64 ff80 = {{0x80808080U, 0x80808080U}} [static]

Definition at line 55 of file parallel_128_sse.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines