From ea7df91790508be76494270257f9bfbc09c1c9f8 Mon Sep 17 00:00:00 2001 From: Raymond Knopp <raymond.knopp@eurecom.fr> Date: Fri, 17 Apr 2015 13:05:47 +0000 Subject: [PATCH] updated in dlsch_channel_compensation_TM3: inlining precoder and energy computation out of PRB loop (very bad performance bug) git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7203 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- .../PHY/LTE_TRANSPORT/dlsch_demodulation.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c index 121735704b..f2c15cbf2c 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c @@ -1350,9 +1350,10 @@ short TM3_prec[8]__attribute__((aligned(16))) = {1,1,-1,-1,1,1,-1,-1} ; #if defined(__x86_64__) || defined(__i386__) -void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) -{ - +static inline void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) __attribute__((always_inline)); +static inline void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) +{ + // __m128i amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15); __m128i tmp0,tmp1; @@ -1379,8 +1380,6 @@ void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) // print_shorts("prec2A_TM3 ch0 (after):",ch0); // print_shorts("prec2A_TM3 ch1 (after):",ch1); - _mm_empty(); - _m_empty(); } #elif defined(__arm__) @@ -2155,12 +2154,13 @@ void dlsch_channel_compensation_TM3(LTE_DL_FRAME_PARMS *frame_parms, Nre = (pilots==0) ? 12 : 8; - precoded_signal_strength0 += ((signal_energy_nodc(&dl_ch_estimates_ext[aarx][symbol*frame_parms->N_RB_DL*Nre], - (nb_rb*Nre))*rx_power_correction) - (phy_measurements->n0_power[aarx])); - precoded_signal_strength1 += ((signal_energy_nodc(&dl_ch_estimates_ext[aarx+2][symbol*frame_parms->N_RB_DL*Nre], - (nb_rb*Nre))*rx_power_correction) - (phy_measurements->n0_power[aarx])); } // rb loop + precoded_signal_strength0 += ((signal_energy_nodc(&dl_ch_estimates_ext[aarx][symbol*frame_parms->N_RB_DL*Nre], + (nb_rb*Nre))*rx_power_correction) - (phy_measurements->n0_power[aarx])); + + precoded_signal_strength1 += ((signal_energy_nodc(&dl_ch_estimates_ext[aarx+2][symbol*frame_parms->N_RB_DL*Nre], + (nb_rb*Nre))*rx_power_correction) - (phy_measurements->n0_power[aarx])); } // rx_antennas phy_measurements->precoded_cqi_dB[eNB_id][0] = dB_fixed2(precoded_signal_strength0,phy_measurements->n0_power_tot); -- GitLab