diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c index e215be2e2b..f9105844d1 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c @@ -420,7 +420,7 @@ void applyFtoleft(t_nrPolar_params *pp,decoder_node_t *node) { #ifdef DEBUG_NEW_IMPL printf("betal[0] %d (%p)\n",betal[0],&betal[0]); #endif - pp->nr_polar_u[node->first_leaf_index] = (betal[0]+1)>>1; + pp->nr_polar_u[node->first_leaf_index] = (1+betal[0])>>1; #ifdef DEBUG_NEW_IMPL printf("Setting bit %d to %d (LLR %d)\n",node->first_leaf_index,(betal[0]+1)>>1,alpha_l[0]); #endif @@ -466,7 +466,7 @@ void applyGtoright(t_nrPolar_params *pp,decoder_node_t *node) { } if (node->Nv == 2) { // apply hard decision on right node betar[0] = (alpha_r[0]>0) ? -1 : 1; - pp->nr_polar_u[node->first_leaf_index+1] = (betar[0]+1)>>1; + pp->nr_polar_u[node->first_leaf_index+1] = (1+betar[0])>>1; #ifdef DEBUG_NEW_IMPL printf("Setting bit %d to %d (LLR %d frozen_mask %d)\n",node->first_leaf_index+1,(betar[0]+1)>>1,alpha_r[0],frozen_mask); #endif @@ -474,7 +474,6 @@ void applyGtoright(t_nrPolar_params *pp,decoder_node_t *node) { } } - void computeBeta(t_nrPolar_params *pp,decoder_node_t *node) { int16_t *betav = node->beta; @@ -484,14 +483,31 @@ void computeBeta(t_nrPolar_params *pp,decoder_node_t *node) { printf("Computing beta @ level %d first_leaf_index %d (all_frozen %d)\n",node->level,node->first_leaf_index,node->left->all_frozen); #endif if (node->left->all_frozen==0) { // if left node is not aggregation of frozen bits - for (int i=0;iNv/2;i++) { - betav[i] = (betal[i] != betar[i]) ? 1 : -1; -#ifdef DEBUG_NEW_IMPL - printf("COMPUTE betav[%d] %d (%p)\n",i, - betav[i], - &betav[i]); -#endif + /*#if defined(__AVX2__) + int avx2mod = (node->Nv/2)&15; + if (avx2mod == 0) { + int avx2len = node->Nv/2/16; + + for (int i=0;iNv/2;i++) { + betav[i] = (betal[i] != betar[i]) ? 1 : -1; + } + } } else memcpy((void*)&betav[0],betar,(node->Nv/2)*sizeof(int16_t)); memcpy((void*)&betav[node->Nv/2],betar,(node->Nv/2)*sizeof(int16_t)); diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h index 7acd92324f..34c2e9a50b 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_defs.h @@ -67,7 +67,7 @@ typedef struct decoder_node_t_s { int first_leaf_index; int all_frozen; int16_t *alpha; - int8_t *beta; + int16_t *beta; } decoder_node_t; typedef struct decoder_tree_t_s {