libosmocore 1.11.0
Osmocom core library
Loading...
Searching...
No Matches
conv_acc_sse_impl.h File Reference

Accelerated Viterbi decoder implementation: Actual definitions which are being included from both conv_acc_sse.c and conv_acc_sse_avx.c. More...

Go to the source code of this file.

Macros

#define __always_inline   inline __attribute__((always_inline))
 
#define SSE_BUTTERFLY(M0, M1, M2, M3, M4)
 
#define _I8_SHUFFLE_MASK   15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0
 
#define SSE_DEINTERLEAVE_K5(M0, M1, M2, M3)
 
#define SSE_DEINTERLEAVE_K7(M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15)
 
#define SSE_BRANCH_METRIC_N2(M0, M1, M2, M3, M4, M6, M7)
 
#define SSE_BRANCH_METRIC_N4(M0, M1, M2, M3, M4, M5)
 
#define SSE_MINPOS(M0, M1)
 
#define SSE_NORMALIZE_K5(M0, M1, M2, M3)
 
#define SSE_NORMALIZE_K7(M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11)
 

Functions

static __always_inline void _sse_metrics_k5_n2 (const int16_t *val, const int16_t *out, int16_t *sums, int16_t *paths, int norm)
 
static __always_inline void _sse_metrics_k5_n4 (const int16_t *val, const int16_t *out, int16_t *sums, int16_t *paths, int norm)
 
static __always_inline void _sse_metrics_k7_n2 (const int16_t *val, const int16_t *out, int16_t *sums, int16_t *paths, int norm)
 
static __always_inline void _sse_metrics_k7_n4 (const int16_t *val, const int16_t *out, int16_t *sums, int16_t *paths, int norm)
 

Variables

int sse41_supported
 

Detailed Description

Accelerated Viterbi decoder implementation: Actual definitions which are being included from both conv_acc_sse.c and conv_acc_sse_avx.c.

Macro Definition Documentation

◆ __always_inline

#define __always_inline   inline __attribute__((always_inline))

◆ _I8_SHUFFLE_MASK

#define _I8_SHUFFLE_MASK   15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0

◆ SSE_BRANCH_METRIC_N2

#define SSE_BRANCH_METRIC_N2 (   M0,
  M1,
  M2,
  M3,
  M4,
  M6,
  M7 
)
Value:
{ \
}
char subsys[16]
logging sub-system
Definition gsmtap.h:9

◆ SSE_BRANCH_METRIC_N4

#define SSE_BRANCH_METRIC_N4 (   M0,
  M1,
  M2,
  M3,
  M4,
  M5 
)

◆ SSE_BUTTERFLY

#define SSE_BUTTERFLY (   M0,
  M1,
  M2,
  M3,
  M4 
)

◆ SSE_DEINTERLEAVE_K5

#define SSE_DEINTERLEAVE_K5 (   M0,
  M1,
  M2,
  M3 
)
Value:
{ \
}
#define _I8_SHUFFLE_MASK
Definition conv_acc_sse_impl.h:74

◆ SSE_DEINTERLEAVE_K7

#define SSE_DEINTERLEAVE_K7 (   M0,
  M1,
  M2,
  M3,
  M4,
  M5,
  M6,
  M7,
  M8,
  M9,
  M10,
  M11,
  M12,
  M13,
  M14,
  M15 
)

◆ SSE_MINPOS

#define SSE_MINPOS (   M0,
  M1 
)
Value:
{ \
M1 = _mm_shuffle_epi32(M0, _MM_SHUFFLE(0, 0, 3, 2)); \
M1 = _mm_shufflelo_epi16(M0, _MM_SHUFFLE(0, 0, 3, 2)); \
M1 = _mm_shufflelo_epi16(M0, _MM_SHUFFLE(0, 0, 0, 1)); \
}

◆ SSE_NORMALIZE_K5

#define SSE_NORMALIZE_K5 (   M0,
  M1,
  M2,
  M3 
)

◆ SSE_NORMALIZE_K7

#define SSE_NORMALIZE_K7 (   M0,
  M1,
  M2,
  M3,
  M4,
  M5,
  M6,
  M7,
  M8,
  M9,
  M10,
  M11 
)

Function Documentation

◆ _sse_metrics_k5_n2()

static __always_inline void _sse_metrics_k5_n2 ( const int16_t val,
const int16_t out,
int16_t sums,
int16_t paths,
int  norm 
)
static

◆ _sse_metrics_k5_n4()

static __always_inline void _sse_metrics_k5_n4 ( const int16_t val,
const int16_t out,
int16_t sums,
int16_t paths,
int  norm 
)
static

◆ _sse_metrics_k7_n2()

static __always_inline void _sse_metrics_k7_n2 ( const int16_t val,
const int16_t out,
int16_t sums,
int16_t paths,
int  norm 
)
static

◆ _sse_metrics_k7_n4()

static __always_inline void _sse_metrics_k7_n4 ( const int16_t val,
const int16_t out,
int16_t sums,
int16_t paths,
int  norm 
)
static

Variable Documentation

◆ sse41_supported

int sse41_supported
extern

Referenced by osmo_conv_init().