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
Michael Black
OpenXG-RAN
Commits
cff72a8b
Commit
cff72a8b
authored
Oct 27, 2021
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SIMD optimization for RE mapping
parent
fc9baef9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
9 deletions
+9
-9
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+9
-9
No files found.
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
cff72a8b
...
...
@@ -415,17 +415,18 @@ uint8_t nr_generate_pdsch(processingData_L1tx_t *msgTx,
}
else
{
// no PTRS or DMRS in this symbol
// Loop Over SCs:
int16_t
*
txF
=
&
txdataF_precoding
[
ap
][((
l
*
frame_parms
->
ofdm_symbol_size
+
start_sc
+
txdataF_offset
)
<<
1
)];
__m64
*
txF
=
(
__m64
*
)
&
txdataF_precoding
[
ap
][((
l
*
frame_parms
->
ofdm_symbol_size
+
start_sc
+
txdataF_offset
)
<<
1
)];
int
upper_limit
=
rel15
->
rbSize
*
NR_NB_SC_PER_RB
;
int
remaining_re
=
0
;
if
(
start_sc
+
upper_limit
>
frame_parms
->
ofdm_symbol_size
)
{
remaining_re
=
upper_limit
+
start_sc
-
frame_parms
->
ofdm_symbol_size
;
upper_limit
=
frame_parms
->
ofdm_symbol_size
-
start_sc
;
}
int16_t
*
txl
=
&
tx_layers
[
ap
][
m
<<
1
];
for
(
int
i
=
0
;
i
<
(
upper_limit
<<
1
);
i
++
)
{
__m64
*
txl
=
(
__m64
*
)
&
tx_layers
[
ap
][
m
<<
1
];
__m64
amp64
=
_mm_set1_pi16
(
amp
);
for
(
int
i
=
0
;
i
<
(
upper_limit
>>
1
);
i
++
)
{
txF
[
i
]
=
(
amp
*
txl
[
i
])
>>
15
;
txF
[
i
]
=
_mm_mulhrs_pi16
(
amp64
,
txl
[
i
])
;
#ifdef DEBUG_DLSCH_MAPPING
if
((
i
&
1
)
>
0
)
printf
(
"m %d
\t
l %d
\t
k %d
\t
txdataF: %d %d
\n
"
,
...
...
@@ -440,11 +441,10 @@ uint8_t nr_generate_pdsch(processingData_L1tx_t *msgTx,
}
//RE loop, first part
m
+=
upper_limit
;
if
(
remaining_re
>
0
)
{
txF
=
&
txdataF_precoding
[
ap
][((
l
*
frame_parms
->
ofdm_symbol_size
+
txdataF_offset
)
<<
1
)];
txl
=
&
tx_layers
[
ap
][
m
<<
1
];
for
(
int
i
=
0
;
i
<
(
remaining_re
<<
1
);
i
++
)
{
txF
[
i
]
=
(
amp
*
txl
[
i
])
>>
15
;
txF
=
(
__m64
*
)
&
txdataF_precoding
[
ap
][((
l
*
frame_parms
->
ofdm_symbol_size
+
txdataF_offset
)
<<
1
)];
txl
=
(
__m64
*
)
&
tx_layers
[
ap
][
m
<<
1
];
for
(
int
i
=
0
;
i
<
(
remaining_re
>>
1
);
i
++
)
{
txF
[
i
]
=
_mm_mulhrs_pi16
(
amp64
,
txl
[
i
]);
#ifdef DEBUG_DLSCH_MAPPING
if
((
i
&
1
)
>
0
)
printf
(
"m %d
\t
l %d
\t
k %d
\t
txdataF: %d %d
\n
"
,
...
...
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