Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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
littleBu
OpenXG-RAN
Commits
f9192461
Commit
f9192461
authored
Dec 26, 2024
by
Laurent THOMAS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove part of code using _m64 type (so old mmx instructions)
parent
ba27aefe
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
18 additions
and
70 deletions
+18
-70
openair1/PHY/CODING/TESTBENCH/pdcch_test.c
openair1/PHY/CODING/TESTBENCH/pdcch_test.c
+1
-1
openair1/PHY/CODING/coding_defs.h
openair1/PHY/CODING/coding_defs.h
+1
-1
openair1/PHY/CODING/viterbi_lte.c
openair1/PHY/CODING/viterbi_lte.c
+2
-5
openair1/PHY/INIT/init_top.c
openair1/PHY/INIT/init_top.c
+1
-1
openair1/PHY/TOOLS/cmult_vv.c
openair1/PHY/TOOLS/cmult_vv.c
+0
-1
openair1/PHY/TOOLS/oai_dfts.c
openair1/PHY/TOOLS/oai_dfts.c
+0
-1
openair1/PHY/TOOLS/oai_dfts_neon.c
openair1/PHY/TOOLS/oai_dfts_neon.c
+0
-3
openair1/PHY/TOOLS/signal_energy.c
openair1/PHY/TOOLS/signal_energy.c
+0
-44
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/TOOLS/tools_defs.h
+0
-3
openair1/PHY/nr_phy_common/src/nr_phy_common.c
openair1/PHY/nr_phy_common/src/nr_phy_common.c
+13
-10
No files found.
openair1/PHY/CODING/TESTBENCH/pdcch_test.c
View file @
f9192461
...
...
@@ -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
;
...
...
openair1/PHY/CODING/coding_defs.h
View file @
f9192461
...
...
@@ -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
);
...
...
openair1/PHY/CODING/viterbi_lte.c
View file @
f9192461
...
...
@@ -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
;
...
...
openair1/PHY/INIT/init_top.c
View file @
f9192461
...
...
@@ -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
();
...
...
openair1/PHY/TOOLS/cmult_vv.c
View file @
f9192461
...
...
@@ -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 )
...
...
openair1/PHY/TOOLS/oai_dfts.c
View file @
f9192461
...
...
@@ -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
...
...
openair1/PHY/TOOLS/oai_dfts_neon.c
View file @
f9192461
...
...
@@ -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
...
...
openair1/PHY/TOOLS/signal_energy.c
View file @
f9192461
...
...
@@ -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
...
...
openair1/PHY/TOOLS/tools_defs.h
View file @
f9192461
...
...
@@ -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
...
...
openair1/PHY/nr_phy_common/src/nr_phy_common.c
View file @
f9192461
...
...
@@ -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
*
)
llr
64
;
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
];
...
...
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