Commit 42b834d6 authored by Sebastian Wagner's avatar Sebastian Wagner Committed by hbilel

Changes for 64qam_64qam for avx2

Conflicts:
	openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
parent ba55fcac
...@@ -8831,15 +8831,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -8831,15 +8831,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
len = (nb_rb*12) - pbch_pss_sss_adjust; len = (nb_rb*12) - pbch_pss_sss_adjust;
} }
#if 0 //#ifdef __AVX2__
qam64_qam64((short *)rxF,
(short *)rxF_i,
(short *)ch_mag,
(short *)ch_mag_i,
(short *)llr16,
(short *)rho,
len);
#else
// Round length up to multiple of 16 words // Round length up to multiple of 16 words
uint32_t len256i = ((len+16)>>4)*16; uint32_t len256i = ((len+16)>>4)*16;
int32_t *rxF_256i = (int32_t*) malloc16_clear(len256i*4); int32_t *rxF_256i = (int32_t*) malloc16_clear(len256i*4);
...@@ -8853,7 +8846,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -8853,7 +8846,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
memcpy(ch_mag_256i, ch_mag, len*4); memcpy(ch_mag_256i, ch_mag, len*4);
memcpy(ch_mag_i_256i, ch_mag_i, len*4); memcpy(ch_mag_i_256i, ch_mag_i, len*4);
memcpy(rho_256i, rho, len*4); memcpy(rho_256i, rho, len*4);
/*
qam64_qam64_avx2((int32_t *)rxF_256i, qam64_qam64_avx2((int32_t *)rxF_256i,
(int32_t *)rxF_i_256i, (int32_t *)rxF_i_256i,
(int32_t *)ch_mag_256i, (int32_t *)ch_mag_256i,
...@@ -8861,13 +8854,34 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -8861,13 +8854,34 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
(int16_t *)llr16, (int16_t *)llr16,
(int32_t *) rho_256i, (int32_t *) rho_256i,
len); len);
*/
qam64_qam16_avx2((short *)rxF_256i,
(short *)rxF_i_256i,
(short *)ch_mag_256i,
(short *)ch_mag_i_256i,
(short *)llr16,
(short *)rho_256i,
len);
free16(rxF_256i, sizeof(rxF_256i)); free16(rxF_256i, sizeof(rxF_256i));
free16(rxF_i_256i, sizeof(rxF_i_256i)); free16(rxF_i_256i, sizeof(rxF_i_256i));
free16(ch_mag_256i, sizeof(ch_mag_256i)); free16(ch_mag_256i, sizeof(ch_mag_256i));
free16(ch_mag_i_256i, sizeof(ch_mag_i_256i)); free16(ch_mag_i_256i, sizeof(ch_mag_i_256i));
free16(rho_256i, sizeof(rho_256i)); free16(rho_256i, sizeof(rho_256i));
#endif
//#else
/*
qam64_qam64((short *)rxF,
(short *)rxF_i,
(short *)ch_mag,
(short *)ch_mag_i,
(short *)llr16,
(short *)rho,
len);
*/
//#endif
llr16 += (6*len); llr16 += (6*len);
*llr16p = (short *)llr16; *llr16p = (short *)llr16;
return(0); return(0);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -704,6 +704,22 @@ void qam64_qam16(short *stream0_in, ...@@ -704,6 +704,22 @@ void qam64_qam16(short *stream0_in,
short *rho01, short *rho01,
int length); int length);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception.
@param stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1
@param ch_mag Input from scaled channel magnitude square of h0'*g0
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
@param stream0_out Output from LLR unit for stream0
@param rho01 Cross-correlation between channels (MR combined)
@param length in complex channel outputs*/
void qam64_qam16_avx2(short *stream0_in,
short *stream1_in,
short *ch_mag,
short *ch_mag_i,
short *stream0_out,
short *rho01,
int length);
/** \brief This function perform LLR computation for dual-stream (64QAM/16QAM) transmission. /** \brief This function perform LLR computation for dual-stream (64QAM/16QAM) transmission.
@param frame_parms Frame descriptor structure @param frame_parms Frame descriptor structure
@param rxdataF_comp Compensated channel output @param rxdataF_comp Compensated channel output
......
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