Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lizhongxiao
OpenXG UE
Commits
c5657080
Commit
c5657080
authored
6 years ago
by
Elena Lukashova
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extracting SISO llr computations in separate fucntions
qpsk_llr, qam16_llr, qam64_llqam64.
parent
feae9cb8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
165 additions
and
113 deletions
+165
-113
openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
+149
-113
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
+16
-0
No files found.
openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
View file @
c5657080
...
@@ -681,19 +681,28 @@ int dlsch_qpsk_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -681,19 +681,28 @@ int dlsch_qpsk_llr(LTE_DL_FRAME_PARMS *frame_parms,
dlsch_llr,
dlsch_llr,
llr32);
llr32);
*/
*/
//printf("ll32p=%p , dlsch_llr=%p, symbol=%d, flag=%d \n", llr32, dlsch_llr, symbol, first_symbol_flag);
for (i=0; i<len; i++) {
*llr32 = *rxF;
//printf("llr %d : (%d,%d)\n",i,((int16_t*)llr32)[0],((int16_t*)llr32)[1]);
rxF++;
llr32++;
}
//*llr32p = (int16_t *)llr32;
qpsk_llr((short *)rxF,
(short *)llr32,
len);
return(0);
return(0);
}
}
void qpsk_llr(int16_t *stream0_in,
int16_t *stream0_out,
int length)
{
int i;
for (i=0; i<2*length; i++) {
*stream0_out = *stream0_in;
//printf("llr %d : (%d,%d)\n",i,((int16_t*)stream0_out)[0],((int16_t*)stream0_out)[1]);
stream0_in++;
stream0_out++;
}
}
int32_t dlsch_qpsk_llr_SIC(LTE_DL_FRAME_PARMS *frame_parms,
int32_t dlsch_qpsk_llr_SIC(LTE_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp,
int32_t **rxdataF_comp,
int32_t **sic_buffer, //Q15
int32_t **sic_buffer, //Q15
...
@@ -817,45 +826,21 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -817,45 +826,21 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
int16_t **llr32p,
int16_t **llr32p,
uint8_t beamforming_mode)
uint8_t beamforming_mode)
{
{
int32_t *rxF = (int32_t*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
int32_t *ch_mag = (int32_t*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
int32_t *llr32;
#if defined(__x86_64__) || defined(__i386__)
int len;
__m128i *rxF = (__m128i*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
__m128i *ch_mag;
__m128i llr128[2];
uint32_t *llr32;
#elif defined(__arm__)
int16x8_t *rxF = (int16x8_t*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
int16x8_t *ch_mag;
int16x8_t xmm0;
int16_t *llr16;
#endif
int i,len;
unsigned char symbol_mod,len_mod4=0;
unsigned char symbol_mod,len_mod4=0;
#if defined(__x86_64__) || defined(__i386__)
if (first_symbol_flag==1) {
if (first_symbol_flag==1) {
llr32 = (
u
int32_t*)dlsch_llr;
llr32 = (int32_t*)dlsch_llr;
} else {
} else {
llr32 = (
u
int32_t*)*llr32p;
llr32 = (int32_t*)*llr32p;
}
}
#elif defined(__arm__)
if (first_symbol_flag==1) {
llr16 = (int16_t*)dlsch_llr;
} else {
llr16 = (int16_t*)*llr32p;
}
#endif
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
#if defined(__x86_64__) || defined(__i386__)
ch_mag = (__m128i*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
#elif defined(__arm__)
ch_mag = (int16x8_t*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
#endif
if ((symbol_mod==0) || (symbol_mod==(4-frame_parms->Ncp))) {
if ((symbol_mod==0) || (symbol_mod==(4-frame_parms->Ncp))) {
if (frame_parms->nb_antenna_ports_eNB!=1)
if (frame_parms->nb_antenna_ports_eNB!=1)
len = (nb_rb*8) - (2*pbch_pss_sss_adjust/3);
len = (nb_rb*8) - (2*pbch_pss_sss_adjust/3);
...
@@ -881,18 +866,45 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -881,18 +866,45 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
len>>=2; // length in quad words (4 REs)
len>>=2; // length in quad words (4 REs)
// printf("len>>=2=%d\n", len);
// printf("len>>=2=%d\n", len);
len+=(len_mod4==0 ? 0 : 1);
len+=(len_mod4==0 ? 0 : 1);
// printf("len+=%d\n", len);
for (i=0; i<len; i++) {
qam16_llr((short *)rxF,
(short *)ch_mag,
(short *)llr32,
len);
// printf ("This line in qam16_llr is %d.\n", __LINE__);
}
void qam16_llr(int16_t *stream0_in,
int16_t *chan_magn,
int16_t *llr,
int length)
{
int i;
#if defined(__x86_64__) || defined(__i386__)
__m128i *rxF_128 = (__m128i*)stream0_in;
__m128i *ch_mag_128 = (__m128i*)chan_magn;
__m128i llr128[2];
int32_t *llr32 = (int32_t*) llr;
#elif defined(__arm__)
int16x8_t *rxF_128 = (int16x8_t*)stream0_in;
int16x8_t *ch_mag_128 = (int16x8_t*)chan_magn;
int16x8_t xmm0;
int16_t *llr16 = (int16_t*)llr;
#endif
// printf ("This line in qam16_llr is %d.\n", __LINE__);
for (i=0; i<length; i++) {
#if defined(__x86_64__) || defined(__i386)
#if defined(__x86_64__) || defined(__i386)
xmm0 = _mm_abs_epi16(rxF
[i]);
xmm0 = _mm_abs_epi16(rxF_128
[i]);
xmm0 = _mm_subs_epi16(ch_mag
[i],xmm0);
xmm0 = _mm_subs_epi16(ch_mag_128
[i],xmm0);
// lambda_1=y_R, lambda_2=|y_R|-|h|^2, lamda_3=y_I, lambda_4=|y_I|-|h|^2
// lambda_1=y_R, lambda_2=|y_R|-|h|^2, lamda_3=y_I, lambda_4=|y_I|-|h|^2
llr128[0] = _mm_unpacklo_epi32(rxF[i],xmm0);
llr128[0] = _mm_unpacklo_epi32(rxF
_128
[i],xmm0);
llr128[1] = _mm_unpackhi_epi32(rxF[i],xmm0);
llr128[1] = _mm_unpackhi_epi32(rxF
_128
[i],xmm0);
llr32[0] = _mm_extract_epi32(llr128[0],0); //((uint32_t *)&llr128[0])[0];
llr32[0] = _mm_extract_epi32(llr128[0],0); //((uint32_t *)&llr128[0])[0];
llr32[1] = _mm_extract_epi32(llr128[0],1); //((uint32_t *)&llr128[0])[
1
];
llr32[1] = _mm_extract_epi32(llr128[0],1); //((uint32_t *)&llr128[0])[
0
];
llr32[2] = _mm_extract_epi32(llr128[0],2); //((uint32_t *)&llr128[0])[2];
llr32[2] = _mm_extract_epi32(llr128[0],2); //((uint32_t *)&llr128[0])[2];
llr32[3] = _mm_extract_epi32(llr128[0],3); //((uint32_t *)&llr128[0])[3];
llr32[3] = _mm_extract_epi32(llr128[0],3); //((uint32_t *)&llr128[0])[3];
llr32[4] = _mm_extract_epi32(llr128[1],0); //((uint32_t *)&llr128[1])[0];
llr32[4] = _mm_extract_epi32(llr128[1],0); //((uint32_t *)&llr128[1])[0];
...
@@ -922,14 +934,17 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -922,14 +934,17 @@ void dlsch_16qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
llr16[14] = vgetq_lane_s16(xmm0,7);
llr16[14] = vgetq_lane_s16(xmm0,7);
llr16[15] = vgetq_lane_s16(xmm0,7);
llr16[15] = vgetq_lane_s16(xmm0,7);
llr16+=16;
llr16+=16;
#endif
#endif
}
}
#if defined(__x86_64__) || defined(__i386
__
)
#if defined(__x86_64__) || defined(__i386)
_mm_empty();
_mm_empty();
_m_empty();
_m_empty();
#endif
#endif
}
}
void dlsch_16qam_llr_SIC (LTE_DL_FRAME_PARMS *frame_parms,
void dlsch_16qam_llr_SIC (LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1036,6 +1051,7 @@ void dlsch_16qam_llr_SIC (LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1036,6 +1051,7 @@ void dlsch_16qam_llr_SIC (LTE_DL_FRAME_PARMS *frame_parms,
}
}
}
}
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
// 64-QAM
// 64-QAM
//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------
...
@@ -1053,14 +1069,10 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1053,14 +1069,10 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
uint32_t llr_offset,
uint32_t llr_offset,
uint8_t beamforming_mode)
uint8_t beamforming_mode)
{
{
#if defined(__x86_64__) || defined(__i386__)
int32_t *rxF = (int32_t*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
__m128i *rxF = (__m128i*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
int32_t *ch_mag = (int32_t*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
__m128i *ch_mag,*ch_magb;
int32_t *ch_magb = (int32_t*)&dl_ch_magb[0][(symbol*frame_parms->N_RB_DL*12)];
#elif defined(__arm__)
int len,len2;
int16x8_t *rxF = (int16x8_t*)&rxdataF_comp[0][(symbol*frame_parms->N_RB_DL*12)];
int16x8_t *ch_mag,*ch_magb,xmm1,xmm2;
#endif
int i,len,len2;
unsigned char symbol_mod,len_mod4;
unsigned char symbol_mod,len_mod4;
short *llr;
short *llr;
int16_t *llr2;
int16_t *llr2;
...
@@ -1079,13 +1091,6 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1079,13 +1091,6 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
#if defined(__x86_64__) || defined(__i386__)
ch_mag = (__m128i*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
ch_magb = (__m128i*)&dl_ch_magb[0][(symbol*frame_parms->N_RB_DL*12)];
#elif defined(__arm__)
ch_mag = (int16x8_t*)&dl_ch_mag[0][(symbol*frame_parms->N_RB_DL*12)];
ch_magb = (int16x8_t*)&dl_ch_magb[0][(symbol*frame_parms->N_RB_DL*12)];
#endif
if ((symbol_mod==0) || (symbol_mod==(4-frame_parms->Ncp))) {
if ((symbol_mod==0) || (symbol_mod==(4-frame_parms->Ncp))) {
if (frame_parms->nb_antenna_ports_eNB!=1)
if (frame_parms->nb_antenna_ports_eNB!=1)
len = (nb_rb*8) - (2*pbch_pss_sss_adjust/3);
len = (nb_rb*8) - (2*pbch_pss_sss_adjust/3);
...
@@ -1115,18 +1120,49 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1115,18 +1120,49 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
len2=len>>2; // length in quad words (4 REs)
len2=len>>2; // length in quad words (4 REs)
len2+=((len_mod4==0)?0:1);
len2+=((len_mod4==0)?0:1);
for (i=0; i<len2; i++) {
qam64_llr((short *)rxF,
(short *)ch_mag,
(short *)ch_magb,
llr2,
len2);
}
void qam64_llr(int16_t *stream0_in,
int16_t *chan_magn,
int16_t *chan_magn_b,
int16_t *llr,
int length)
{
#if defined(__x86_64__) || defined(__i386__)
#if defined(__x86_64__) || defined(__i386__)
xmm1 = _mm_abs_epi16(rxF[i]);
__m128i *rxF_128 = (__m128i*)stream0_in;
xmm1 = _mm_subs_epi16(ch_mag[i],xmm1);
__m128i *ch_mag_128 = (__m128i*)chan_magn;
__m128i *ch_magb_128 = (__m128i*)chan_magn_b;
#elif defined(__arm__)
int16x8_t *rxF_128 = (int16x8_t*)stream0_in;
int16x8_t *ch_mag_128 = (int16x8_t*)chan_magn;
int16x8_t *ch_magb_128 = (int16x8_t*)chan_magn_b;
int16x8_t xmm1,xmm2;
#endif
int i;
//int16_t *llr2;
//llr2 = llr;
for (i=0; i<length; i++) {
#if defined(__x86_64__) || defined(__i386__)
xmm1 = _mm_abs_epi16(rxF_128[i]);
xmm1 = _mm_subs_epi16(ch_mag_128[i],xmm1);
xmm2 = _mm_abs_epi16(xmm1);
xmm2 = _mm_abs_epi16(xmm1);
xmm2 = _mm_subs_epi16(ch_magb[i],xmm2);
xmm2 = _mm_subs_epi16(ch_magb
_128
[i],xmm2);
#elif defined(__arm__)
#elif defined(__arm__)
xmm1 = vabsq_s16(rxF[i]);
xmm1 = vabsq_s16(rxF
_128
[i]);
xmm1 = vsubq_s16(ch_mag[i],xmm1);
xmm1 = vsubq_s16(ch_mag
_128
[i],xmm1);
xmm2 = vabsq_s16(xmm1);
xmm2 = vabsq_s16(xmm1);
xmm2 = vsubq_s16(ch_magb[i],xmm2);
xmm2 = vsubq_s16(ch_magb
_128
[i],xmm2);
#endif
#endif
// loop over all LLRs in quad word (24 coded bits)
// loop over all LLRs in quad word (24 coded bits)
/*
/*
...
@@ -1141,64 +1177,64 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -1141,64 +1177,64 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
llr2+=6;
llr2+=6;
}
}
*/
*/
llr
2[0] = ((short *)&rxF
[i])[0];
llr
[0] = ((short *)&rxF_128
[i])[0];
llr
2[1] = ((short *)&rxF
[i])[1];
llr
[1] = ((short *)&rxF_128
[i])[1];
#if defined(__x86_64__) || defined(__i386__)
#if defined(__x86_64__) || defined(__i386__)
llr
2
[2] = _mm_extract_epi16(xmm1,0);
llr[2] = _mm_extract_epi16(xmm1,0);
llr
2
[3] = _mm_extract_epi16(xmm1,1);//((short *)&xmm1)[j+1];
llr[3] = _mm_extract_epi16(xmm1,1);//((short *)&xmm1)[j+1];
llr
2
[4] = _mm_extract_epi16(xmm2,0);//((short *)&xmm2)[j];
llr[4] = _mm_extract_epi16(xmm2,0);//((short *)&xmm2)[j];
llr
2
[5] = _mm_extract_epi16(xmm2,1);//((short *)&xmm2)[j+1];
llr[5] = _mm_extract_epi16(xmm2,1);//((short *)&xmm2)[j+1];
#elif defined(__arm__)
#elif defined(__arm__)
llr
2
[2] = vgetq_lane_s16(xmm1,0);
llr[2] = vgetq_lane_s16(xmm1,0);
llr
2
[3] = vgetq_lane_s16(xmm1,1);//((short *)&xmm1)[j+1];
llr[3] = vgetq_lane_s16(xmm1,1);//((short *)&xmm1)[j+1];
llr
2
[4] = vgetq_lane_s16(xmm2,0);//((short *)&xmm2)[j];
llr[4] = vgetq_lane_s16(xmm2,0);//((short *)&xmm2)[j];
llr
2
[5] = vgetq_lane_s16(xmm2,1);//((short *)&xmm2)[j+1];
llr[5] = vgetq_lane_s16(xmm2,1);//((short *)&xmm2)[j+1];
#endif
#endif
llr
2
+=6;
llr+=6;
llr
2[0] = ((short *)&rxF
[i])[2];
llr
[0] = ((short *)&rxF_128
[i])[2];
llr
2[1] = ((short *)&rxF
[i])[3];
llr
[1] = ((short *)&rxF_128
[i])[3];
#if defined(__x86_64__) || defined(__i386__)
#if defined(__x86_64__) || defined(__i386__)
llr
2
[2] = _mm_extract_epi16(xmm1,2);
llr[2] = _mm_extract_epi16(xmm1,2);
llr
2
[3] = _mm_extract_epi16(xmm1,3);//((short *)&xmm1)[j+1];
llr[3] = _mm_extract_epi16(xmm1,3);//((short *)&xmm1)[j+1];
llr
2
[4] = _mm_extract_epi16(xmm2,2);//((short *)&xmm2)[j];
llr[4] = _mm_extract_epi16(xmm2,2);//((short *)&xmm2)[j];
llr
2
[5] = _mm_extract_epi16(xmm2,3);//((short *)&xmm2)[j+1];
llr[5] = _mm_extract_epi16(xmm2,3);//((short *)&xmm2)[j+1];
#elif defined(__arm__)
#elif defined(__arm__)
llr
2
[2] = vgetq_lane_s16(xmm1,2);
llr[2] = vgetq_lane_s16(xmm1,2);
llr
2
[3] = vgetq_lane_s16(xmm1,3);//((short *)&xmm1)[j+1];
llr[3] = vgetq_lane_s16(xmm1,3);//((short *)&xmm1)[j+1];
llr
2
[4] = vgetq_lane_s16(xmm2,2);//((short *)&xmm2)[j];
llr[4] = vgetq_lane_s16(xmm2,2);//((short *)&xmm2)[j];
llr
2
[5] = vgetq_lane_s16(xmm2,3);//((short *)&xmm2)[j+1];
llr[5] = vgetq_lane_s16(xmm2,3);//((short *)&xmm2)[j+1];
#endif
#endif
llr
2
+=6;
llr+=6;
llr
2[0] = ((short *)&rxF
[i])[4];
llr
[0] = ((short *)&rxF_128
[i])[4];
llr
2[1] = ((short *)&rxF
[i])[5];
llr
[1] = ((short *)&rxF_128
[i])[5];
#if defined(__x86_64__) || defined(__i386__)
#if defined(__x86_64__) || defined(__i386__)
llr
2
[2] = _mm_extract_epi16(xmm1,4);
llr[2] = _mm_extract_epi16(xmm1,4);
llr
2
[3] = _mm_extract_epi16(xmm1,5);//((short *)&xmm1)[j+1];
llr[3] = _mm_extract_epi16(xmm1,5);//((short *)&xmm1)[j+1];
llr
2
[4] = _mm_extract_epi16(xmm2,4);//((short *)&xmm2)[j];
llr[4] = _mm_extract_epi16(xmm2,4);//((short *)&xmm2)[j];
llr
2
[5] = _mm_extract_epi16(xmm2,5);//((short *)&xmm2)[j+1];
llr[5] = _mm_extract_epi16(xmm2,5);//((short *)&xmm2)[j+1];
#elif defined(__arm__)
#elif defined(__arm__)
llr
2
[2] = vgetq_lane_s16(xmm1,4);
llr[2] = vgetq_lane_s16(xmm1,4);
llr
2
[3] = vgetq_lane_s16(xmm1,5);//((short *)&xmm1)[j+1];
llr[3] = vgetq_lane_s16(xmm1,5);//((short *)&xmm1)[j+1];
llr
2
[4] = vgetq_lane_s16(xmm2,4);//((short *)&xmm2)[j];
llr[4] = vgetq_lane_s16(xmm2,4);//((short *)&xmm2)[j];
llr
2
[5] = vgetq_lane_s16(xmm2,5);//((short *)&xmm2)[j+1];
llr[5] = vgetq_lane_s16(xmm2,5);//((short *)&xmm2)[j+1];
#endif
#endif
llr
2
+=6;
llr+=6;
llr
2[0] = ((short *)&rxF
[i])[6];
llr
[0] = ((short *)&rxF_128
[i])[6];
llr
2[1] = ((short *)&rxF
[i])[7];
llr
[1] = ((short *)&rxF_128
[i])[7];
#if defined(__x86_64__) || defined(__i386__)
#if defined(__x86_64__) || defined(__i386__)
llr
2
[2] = _mm_extract_epi16(xmm1,6);
llr[2] = _mm_extract_epi16(xmm1,6);
llr
2
[3] = _mm_extract_epi16(xmm1,7);//((short *)&xmm1)[j+1];
llr[3] = _mm_extract_epi16(xmm1,7);//((short *)&xmm1)[j+1];
llr
2
[4] = _mm_extract_epi16(xmm2,6);//((short *)&xmm2)[j];
llr[4] = _mm_extract_epi16(xmm2,6);//((short *)&xmm2)[j];
llr
2
[5] = _mm_extract_epi16(xmm2,7);//((short *)&xmm2)[j+1];
llr[5] = _mm_extract_epi16(xmm2,7);//((short *)&xmm2)[j+1];
#elif defined(__arm__)
#elif defined(__arm__)
llr
2
[2] = vgetq_lane_s16(xmm1,6);
llr[2] = vgetq_lane_s16(xmm1,6);
llr
2
[3] = vgetq_lane_s16(xmm1,7);//((short *)&xmm1)[j+1];
llr[3] = vgetq_lane_s16(xmm1,7);//((short *)&xmm1)[j+1];
llr
2
[4] = vgetq_lane_s16(xmm2,6);//((short *)&xmm2)[j];
llr[4] = vgetq_lane_s16(xmm2,6);//((short *)&xmm2)[j];
llr
2
[5] = vgetq_lane_s16(xmm2,7);//((short *)&xmm2)[j+1];
llr[5] = vgetq_lane_s16(xmm2,7);//((short *)&xmm2)[j+1];
#endif
#endif
llr
2
+=6;
llr+=6;
}
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
View file @
c5657080
...
@@ -106,6 +106,22 @@ void qpsk_qpsk(int16_t *stream0_in,
...
@@ -106,6 +106,22 @@ void qpsk_qpsk(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation
@param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/
@param llr128p pointer to pointer to symbol in dlsch_llr*/
void
qpsk_llr
(
int16_t
*
stream0_in
,
int16_t
*
stream0_out
,
int
length
);
void
qam16_llr
(
int16_t
*
stream0_in
,
int16_t
*
chan_magn
,
int16_t
*
llr
,
int
length
);
void
qam64_llr
(
int16_t
*
stream0_in
,
int16_t
*
chan_magn
,
int16_t
*
chan_magn_b
,
int16_t
*
llr
,
int
length
);
int32_t
dlsch_qpsk_qpsk_llr
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
dlsch_qpsk_qpsk_llr
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp
,
int32_t
**
rxdataF_comp_i
,
int32_t
**
rxdataF_comp_i
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment