diff --git a/openair1/PHY/CODING/TESTBENCH/pdcch_test.c b/openair1/PHY/CODING/TESTBENCH/pdcch_test.c index 85dfb074da..873e9e19bc 100644 --- a/openair1/PHY/CODING/TESTBENCH/pdcch_test.c +++ b/openair1/PHY/CODING/TESTBENCH/pdcch_test.c @@ -247,7 +247,7 @@ int main(int argc, char *argv[]) ccodelte_init(); - phy_generate_viterbi_tables_lte(false); + phy_generate_viterbi_tables_lte(); lte_frame_parms = &(PHY_config->lte_frame_parms); lte_frame_parms->N_RB_DL = 25; //50 for 10MHz and 25 for 5 MHz lte_frame_parms->Ncp = 1; diff --git a/openair1/PHY/CODING/coding_defs.h b/openair1/PHY/CODING/coding_defs.h index 2618036146..3c91892d8c 100644 --- a/openair1/PHY/CODING/coding_defs.h +++ b/openair1/PHY/CODING/coding_defs.h @@ -399,7 +399,7 @@ void phy_viterbi_lte_sse2(int8_t *y, uint8_t *decoded_bytes, uint16_t n); */ void phy_generate_viterbi_tables(void); -/*!\fn void phy_generate_viterbi_tables_lte(bool dabflag) +/*!\fn void phy_generate_viterbi_tables_lte(void) \brief This routine initializes metric tables for the optimized LTE Viterbi decoder. */ void phy_generate_viterbi_tables_lte(void); diff --git a/openair1/PHY/CODING/viterbi_lte.c b/openair1/PHY/CODING/viterbi_lte.c index 269fa761b2..b074e1c914 100644 --- a/openair1/PHY/CODING/viterbi_lte.c +++ b/openair1/PHY/CODING/viterbi_lte.c @@ -47,13 +47,10 @@ static int8_t m1_table[64*16*16*16] __attribute__ ((aligned(16))); // Set up Viterbi tables for SSE2 implementation -void phy_generate_viterbi_tables_lte(bool dabflag) +void phy_generate_viterbi_tables_lte( void ) { uint8_t ccodelte_table_rev[128]; - if (dabflag) - ccodedab_init_inv(ccodelte_table_rev); - else - ccodelte_init_inv(ccodelte_table_rev); + ccodelte_init_inv(ccodelte_table_rev); int8_t w[8],in0,in1,in2; uint8_t state,index0,index1; diff --git a/openair1/PHY/INIT/init_top.c b/openair1/PHY/INIT/init_top.c index cc7967d306..b4ac0617a6 100644 --- a/openair1/PHY/INIT/init_top.c +++ b/openair1/PHY/INIT/init_top.c @@ -63,7 +63,7 @@ void generate_qpsk_table(void) { void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms) { ccodelte_init(); - phy_generate_viterbi_tables_lte(false); + phy_generate_viterbi_tables_lte(); load_codinglib(); generate_ul_ref_sigs(); generate_ul_ref_sigs_rx(); diff --git a/openair1/PHY/TOOLS/cmult_vv.c b/openair1/PHY/TOOLS/cmult_vv.c index e55ffcede1..111bfcabcb 100644 --- a/openair1/PHY/TOOLS/cmult_vv.c +++ b/openair1/PHY/TOOLS/cmult_vv.c @@ -27,7 +27,6 @@ static const int16_t conjug[8]__attribute__((aligned(16))) = {-1,1,-1,1,-1,1,-1, static const int16_t conjug2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1} ; #define simd_q15_t simde__m128i -#define simdshort_q15_t simde__m64 #define set1_int16(a) simde_mm_set1_epi16(a) #define setr_int16(a0, a1, a2, a3, a4, a5, a6, a7) simde_mm_setr_epi16(a0, a1, a2, a3, a4, a5, a6, a7 ) diff --git a/openair1/PHY/TOOLS/oai_dfts.c b/openair1/PHY/TOOLS/oai_dfts.c index 6b92cd0692..36bae5bd3d 100644 --- a/openair1/PHY/TOOLS/oai_dfts.c +++ b/openair1/PHY/TOOLS/oai_dfts.c @@ -1513,7 +1513,6 @@ const static int16_t tw64c[96] __attribute__((aligned(32))) = { -12539,-30273,-20787,-25330,-27244,-18205,-31356,-9512 }; #define simd_q15_t simde__m128i -#define simdshort_q15_t simde__m64 #define shiftright_int16(a,shift) simde_mm_srai_epi16(a,shift) #define mulhi_int16(a,b) simde_mm_mulhrs_epi16 (a,b) #define simd256_q15_t simde__m256i diff --git a/openair1/PHY/TOOLS/oai_dfts_neon.c b/openair1/PHY/TOOLS/oai_dfts_neon.c index 12e1cacbda..ddf8a59bf5 100644 --- a/openair1/PHY/TOOLS/oai_dfts_neon.c +++ b/openair1/PHY/TOOLS/oai_dfts_neon.c @@ -909,9 +909,6 @@ const static int16_t tw64c[96] __attribute__((aligned(32))) = { #ifdef simd_q15_t #undef simd_q15_t #endif -#ifdef simdshort_q15_t -#undef simdshort_q15_t -#endif #ifdef shiftright_int16 #undef shiftright_int16 #endif diff --git a/openair1/PHY/TOOLS/signal_energy.c b/openair1/PHY/TOOLS/signal_energy.c index cc0b260ee6..93544da758 100644 --- a/openair1/PHY/TOOLS/signal_energy.c +++ b/openair1/PHY/TOOLS/signal_energy.c @@ -65,50 +65,6 @@ int32_t signal_energy(int32_t *input,uint32_t length) return temp; } -int32_t signal_energy_amp_shift(int32_t *input,uint32_t length) -{ - - int32_t i; - int32_t temp,temp2; - register simde__m64 mm0,mm1,mm2,mm3; - simde__m64 *in = (simde__m64 *)input; - - mm0 = simde_mm_setzero_si64(); - mm3 = simde_mm_setzero_si64(); - - for (i=0; i>1; i++) { - - mm1 = in[i]; - mm2 = mm1; - mm1 = simde_m_pmaddwd(mm1,mm1); - mm1 = simde_m_psradi(mm1,AMP_SHIFT);// shift any 32 bits blocs of the word by the value shift_p9 - mm0 = simde_m_paddd(mm0,mm1);// add the two 64 bits words 4 bytes by 4 bytes - mm3 = simde_m_paddw(mm3,mm2);// add the two 64 bits words 2 bytes by 2 bytes - } - - mm1 = mm0; - mm0 = simde_m_psrlqi(mm0,32); - mm0 = simde_m_paddd(mm0,mm1); - temp = simde_m_to_int(mm0); - temp/=length; // this is the average of x^2 - - - // now remove the DC component - - - mm2 = simde_m_psrlqi(mm3,32); - mm2 = simde_m_paddw(mm2,mm3); - mm2 = simde_m_pmaddwd(mm2,mm2); - mm2 = simde_m_psradi(mm2,AMP_SHIFT); // fixed point representation of elements - temp2 = simde_m_to_int(mm2); - temp2/=(length*length); - - temp -= temp2; - - - return((temp>0)?temp:1); -} - uint32_t signal_energy_nodc(const c16_t *input, uint32_t length) { // init diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h index 41af6ba0a9..d7e738a9f4 100644 --- a/openair1/PHY/TOOLS/tools_defs.h +++ b/openair1/PHY/TOOLS/tools_defs.h @@ -41,7 +41,6 @@ #include "common/utils/LOG/log.h" #define simd_q15_t simde__m128i -#define simdshort_q15_t simde__m64 #define shiftright_int16(a,shift) simde_mm_srai_epi16(a,shift) #define set1_int16(a) simde_mm_set1_epi16(a) #define mulhi_int16(a,b) simde_mm_mulhrs_epi16 (a,b) @@ -727,8 +726,6 @@ int32_t sub_cpx_vector16(int16_t *x, */ int32_t signal_energy(int32_t *,uint32_t); -int32_t signal_energy_amp_shift(int32_t *input, uint32_t length); - #ifdef LOCALIZATION /*!\fn int32_t signal_energy(int *,uint32_t); \brief Computes the signal energy per subcarrier diff --git a/openair1/PHY/nr_phy_common/src/nr_phy_common.c b/openair1/PHY/nr_phy_common/src/nr_phy_common.c index 6ba539ee00..c543f5a630 100644 --- a/openair1/PHY/nr_phy_common/src/nr_phy_common.c +++ b/openair1/PHY/nr_phy_common/src/nr_phy_common.c @@ -194,9 +194,6 @@ void nr_64qam_llr(int32_t *rxdataF_comp, int32_t *ch_mag, int32_t *ch_mag2, int1 simde__m128i *rxF_128 = (simde__m128i *)rxF; simde__m128i *ch_mag_128 = (simde__m128i *)ch_maga; simde__m128i *ch_magb_128 = (simde__m128i *)ch_magb; - - simde__m64 *llr64 = (simde__m64 *)llr_32; - // Each iteration does 4 RE (gives 24 16bit-llrs) for (int i = 0; i < (nb_re >> 2); i++) { simde__m128i xmm0, xmm1, xmm2; @@ -206,12 +203,18 @@ void nr_64qam_llr(int32_t *rxdataF_comp, int32_t *ch_mag, int32_t *ch_mag2, int1 xmm2 = simde_mm_abs_epi16(xmm1); xmm2 = simde_mm_subs_epi16(*ch_magb_128, xmm2); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm1, 0), simde_mm_extract_epi32(xmm0, 0)); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm0, 1), simde_mm_extract_epi32(xmm2, 0)); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm2, 1), simde_mm_extract_epi32(xmm1, 1)); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm1, 2), simde_mm_extract_epi32(xmm0, 2)); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm0, 3), simde_mm_extract_epi32(xmm2, 2)); - *llr64++ = simde_mm_set_pi32(simde_mm_extract_epi32(xmm2, 3), simde_mm_extract_epi32(xmm1, 3)); + *llr_32++ = simde_mm_extract_epi32(xmm0, 0); + *llr_32++ = simde_mm_extract_epi32(xmm1, 0); + *llr_32++ = simde_mm_extract_epi32(xmm2, 0); + *llr_32++ = simde_mm_extract_epi32(xmm0, 1); + *llr_32++ = simde_mm_extract_epi32(xmm1, 1); + *llr_32++ = simde_mm_extract_epi32(xmm2, 1); + *llr_32++ = simde_mm_extract_epi32(xmm0, 2); + *llr_32++ = simde_mm_extract_epi32(xmm1, 2); + *llr_32++ = simde_mm_extract_epi32(xmm2, 2); + *llr_32++ = simde_mm_extract_epi32(xmm0, 3); + *llr_32++ = simde_mm_extract_epi32(xmm1, 3); + *llr_32++ = simde_mm_extract_epi32(xmm2, 3); rxF_128++; ch_mag_128++; ch_magb_128++; @@ -222,7 +225,7 @@ void nr_64qam_llr(int32_t *rxdataF_comp, int32_t *ch_mag, int32_t *ch_mag2, int1 int16_t *rxDataF_i16 = (int16_t *)rxF_128; int16_t *ch_mag_i16 = (int16_t *)ch_mag_128; int16_t *ch_magb_i16 = (int16_t *)ch_magb_128; - int16_t *llr_i16 = (int16_t *)llr64; + int16_t *llr_i16 = (int16_t *)llr_32; for (int i = 0; i < nb_re; i++) { int16_t real = rxDataF_i16[2 * i]; int16_t imag = rxDataF_i16[2 * i + 1];