libosmocore 1.10.0.64-ff3d
Osmocom core library
|
Accelerated Viterbi decoder implementation: straight port of SSE to NEON based on Tom Tsous work. More...
Go to the source code of this file.
Macros | |
#define | __always_inline inline __attribute__((always_inline)) |
#define | NEON_BUTTERFLY(M0, M1, M2, M3, M4) |
#define | NEON_DEINTERLEAVE_K5(M0, M1, M2, M3) |
#define | NEON_DEINTERLEAVE_K7(M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11, M12, M13, M14, M15) |
#define | NEON_BRANCH_METRIC_N2(M0, M1, M2, M3, M4, M6, M7) |
#define | NEON_BRANCH_METRIC_N4(M0, M1, M2, M3, M4, M5) |
#define | NEON_NORMALIZE_K5(M0, M1, M2, M3) |
#define | NEON_NORMALIZE_K7(M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11) |
Functions | |
__always_inline void | _neon_metrics_k5_n2 (const int16_t *val, const int16_t *outa, int16_t *sumsa, int16_t *paths, int norm) |
__always_inline void | _neon_metrics_k5_n4 (const int16_t *val, const int16_t *outa, int16_t *sumsa, int16_t *paths, int norm) |
static __always_inline void | _neon_metrics_k7_n2 (const int16_t *val, const int16_t *outa, int16_t *sumsa, int16_t *paths, int norm) |
static __always_inline void | _neon_metrics_k7_n4 (const int16_t *val, const int16_t *outa, int16_t *sumsa, int16_t *paths, int norm) |
Accelerated Viterbi decoder implementation: straight port of SSE to NEON based on Tom Tsous work.
#define __always_inline inline __attribute__((always_inline)) |
#define NEON_BRANCH_METRIC_N2 | ( | M0, | |
M1, | |||
M2, | |||
M3, | |||
M4, | |||
M6, | |||
M7 | |||
) |
#define NEON_BRANCH_METRIC_N4 | ( | M0, | |
M1, | |||
M2, | |||
M3, | |||
M4, | |||
M5 | |||
) |
#define NEON_BUTTERFLY | ( | M0, | |
M1, | |||
M2, | |||
M3, | |||
M4 | |||
) |
#define NEON_DEINTERLEAVE_K5 | ( | M0, | |
M1, | |||
M2, | |||
M3 | |||
) |
#define NEON_DEINTERLEAVE_K7 | ( | M0, | |
M1, | |||
M2, | |||
M3, | |||
M4, | |||
M5, | |||
M6, | |||
M7, | |||
M8, | |||
M9, | |||
M10, | |||
M11, | |||
M12, | |||
M13, | |||
M14, | |||
M15 | |||
) |
#define NEON_NORMALIZE_K5 | ( | M0, | |
M1, | |||
M2, | |||
M3 | |||
) |
#define NEON_NORMALIZE_K7 | ( | M0, | |
M1, | |||
M2, | |||
M3, | |||
M4, | |||
M5, | |||
M6, | |||
M7, | |||
M8, | |||
M9, | |||
M10, | |||
M11 | |||
) |
__always_inline void _neon_metrics_k5_n2 | ( | const int16_t * | val, |
const int16_t * | outa, | ||
int16_t * | sumsa, | ||
int16_t * | paths, | ||
int | norm | ||
) |
References NEON_BUTTERFLY, NEON_DEINTERLEAVE_K5, and NEON_NORMALIZE_K5.
__always_inline void _neon_metrics_k5_n4 | ( | const int16_t * | val, |
const int16_t * | outa, | ||
int16_t * | sumsa, | ||
int16_t * | paths, | ||
int | norm | ||
) |
References NEON_BRANCH_METRIC_N4, NEON_BUTTERFLY, NEON_DEINTERLEAVE_K5, and NEON_NORMALIZE_K5.
|
static |
References NEON_BRANCH_METRIC_N2, NEON_BUTTERFLY, NEON_DEINTERLEAVE_K7, and NEON_NORMALIZE_K7.
|
static |
References NEON_BRANCH_METRIC_N4, NEON_BUTTERFLY, NEON_DEINTERLEAVE_K7, and NEON_NORMALIZE_K7.