aboutsummaryrefslogtreecommitdiffstats
path: root/src/conv_acc.c
AgeCommit message (Collapse)AuthorFilesLines
2020-08-06libomsocoding: NEON viterbi accelerationEric1-0/+28
configure flag required to enable this: --enable-neon Although autodetection according to __ARM_NEON would work because this is only defined if the fpu is neon neon-fp16 neon-vfpv3 neon-vfpv4 neon-fp-armv8 crypto-neon-fp-armv8 doing that would lead to a unknown performance impact, so it needs to be enabled manually. Speedup is about ~1.3-1.5 on a unspecified single core Cortex A9. This requires handling a special case for RACH with len 14 which is far too short for neon and would actually incur a performance penalty of 25%. Related: OS#4585 Change-Id: I58ff2cb4ce3514f43390ff0a2121f81e6a4983b5
2017-11-17conv_acc: Our code requires SSSE3, not just SSE3Harald Welte1-12/+12
The accelerated convolutional decoder uses SSSE3 instructions such as PSIGNW (via _mm_sign_epi16) which go beyond what SSE3 offers. So let's make sure we use the right compiler flag (-mssse3) and also the right runtime check. Without this patch, we would use illegal instructions e.g. on Opteron Gen3 such as Opteron 2427, which are also used as build.opensuse.org build hosts (build31 through build36) where we wouldn't pass "make check" as a result. Change-Id: I2754164384109f2821fd98ffb48f625893f2923d Fixes: OS#2386
2017-11-13Fix/Update copyright notices; Add SPDX annotationHarald Welte1-0/+2
Let's fix some erroneous/accidential references to wrong license, update copyright information where applicable and introduce a SPDX-License-Identifier to all files. Change-Id: I39af26c6aaaf5c926966391f6565fc5936be21af
2017-06-23doxygen: unify use of \file across the boardNeels Hofmeyr1-2/+2
Considering the various styles and implications found in the sources, edit scores of files to follow the same API doc guidelines around the doxygen grouping and the \file tag. Many files now show a short description in the generated API doc that was so far only available as C comment. The guidelines and reasoning behind it is documented at https://osmocom.org/projects/cellular-infrastructure/wiki/Guidelines_for_API_documentation In some instances, remove file comments and add to the corresponding group instead, to be shared among several files (e.g. bitvec). Change-Id: Ifa70e77e90462b5eb2b0457c70fd25275910c72b
2017-06-19core/conv/conv_acc.c: use static allocation for trellisVadim Yanitskiy1-27/+23
Allocation of a new memory is an expensive operation, which takes place when it's initially unknown, how much memory will we need, or in order to decrease total memory usage. The trellis struct wasn't require dynamic allocation itself, so let's allocate one statically inside the vdecoder structure. Change-Id: Ib8e448823ca5548a05a45824b0b1c06743dfe5a4
2017-06-19core/conv/conv_acc.c: use static allocation for vdecoderVadim Yanitskiy1-23/+19
Allocation of a new memory is an expensive operation, which takes place when it's initially unknown, how much memory will we need, or in order to decrease total memory usage. The vdecoder struct wasn't require dynamic allocation itself, so let's use static allocation in order to increase performance. Change-Id: Id1b140d3cb61db7352dcfc217a8fc36091e945ab
2017-06-19core/conv/conv_acc.c: delete reset_decoder()Vadim Yanitskiy1-20/+13
Currently this implementation exposes nothing than osmo_conv_decode_acc(), so it wasn't possible to call reset_decoder() from outside. The method itself was used to initialize accumulated path metrics and the starting state of encoder. Now this code is moved to generate_trellis(). Moreover, setting accumulated path metrics inside existing loop is a bit faster that calling memset(). Change-Id: I8f17cebf468cf0106927ccee091cfb2896649cb2
2017-06-19core/conv/conv_acc.c: drop unused structure memberVadim Yanitskiy1-2/+0
Change-Id: I81f7c35abf424f501ca53d6984c0d56f7936984b
2017-06-19core/conv: update description headers for conv_acc_*Vadim Yanitskiy1-1/+1
Change-Id: I00154776c8e7d346abcbaf9048ce04d9488bb458
2017-06-19core/conv: use proper filenamesVadim Yanitskiy1-0/+728
We already have generic convolutional transcoding implementation written by Sylvain Munaut and named 'conv.c', so 'viterbi_*' names looked a bit confusing. Let's use a single naming scheme for Viterbi related code. Change-Id: I61062a8d1fbf5f5fc85b4fac58dc4e9fa8b5ef90