remove part of code using _m64 type (so old mmx instructions)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 )
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<length>>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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user