Commit f9192461 authored by Laurent THOMAS's avatar Laurent THOMAS

remove part of code using _m64 type (so old mmx instructions)

parent ba27aefe
......@@ -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];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment