Changes for 64qam_64qam for avx2
Conflicts: openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
This commit is contained in:
@@ -8831,15 +8831,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
len = (nb_rb*12) - pbch_pss_sss_adjust;
|
||||
}
|
||||
|
||||
#if 0
|
||||
qam64_qam64((short *)rxF,
|
||||
(short *)rxF_i,
|
||||
(short *)ch_mag,
|
||||
(short *)ch_mag_i,
|
||||
(short *)llr16,
|
||||
(short *)rho,
|
||||
len);
|
||||
#else
|
||||
//#ifdef __AVX2__
|
||||
|
||||
// Round length up to multiple of 16 words
|
||||
uint32_t len256i = ((len+16)>>4)*16;
|
||||
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,
|
||||
memcpy(ch_mag_256i, ch_mag, len*4);
|
||||
memcpy(ch_mag_i_256i, ch_mag_i, len*4);
|
||||
memcpy(rho_256i, rho, len*4);
|
||||
|
||||
/*
|
||||
qam64_qam64_avx2((int32_t *)rxF_256i,
|
||||
(int32_t *)rxF_i_256i,
|
||||
(int32_t *)ch_mag_256i,
|
||||
@@ -8861,13 +8854,34 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
(int16_t *)llr16,
|
||||
(int32_t *) rho_256i,
|
||||
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_i_256i, sizeof(rxF_i_256i));
|
||||
free16(ch_mag_256i, sizeof(ch_mag_256i));
|
||||
free16(ch_mag_i_256i, sizeof(ch_mag_i_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);
|
||||
*llr16p = (short *)llr16;
|
||||
return(0);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -704,6 +704,22 @@ void qam64_qam16(short *stream0_in,
|
||||
short *rho01,
|
||||
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.
|
||||
@param frame_parms Frame descriptor structure
|
||||
@param rxdataF_comp Compensated channel output
|
||||
|
||||
Reference in New Issue
Block a user