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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
1ca5c909
Unverified
Commit
1ca5c909
authored
May 14, 2026
by
Rakesh Mundlamuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use SIMD for Interference addition
Signed-off-by:
Rakesh Mundlamuri
<
rakesh.mundlamuri@openairinterface.org
>
parent
677b21ed
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
0 deletions
+44
-0
openair1/SIMULATION/TOOLS/multipath_channel.c
openair1/SIMULATION/TOOLS/multipath_channel.c
+42
-0
openair1/SIMULATION/TOOLS/sim.h
openair1/SIMULATION/TOOLS/sim.h
+2
-0
No files found.
openair1/SIMULATION/TOOLS/multipath_channel.c
View file @
1ca5c909
...
@@ -373,3 +373,45 @@ void multipath_channel_float(channel_desc_t *desc,
...
@@ -373,3 +373,45 @@ void multipath_channel_float(channel_desc_t *desc,
}
}
#endif
#endif
// \f$\mathbf{y} = y + \mathbf{x}\f$
#ifdef CHANNEL_SSE
void
__attribute__
((
no_sanitize_address
))
add_rx_signals
(
float
**
y_re
,
float
**
y_im
,
float
**
x_re
,
float
**
x_im
,
int
n_rx
,
int
length
)
{
for
(
int
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
int
i
=
0
;
for
(;
i
<=
length
-
4
;
i
+=
4
)
{
// Add real values
simde__m128
vec_re_x
=
simde_mm_loadu_ps
(
&
x_re
[
aarx
][
i
]);
simde__m128
vec_re_y
=
simde_mm_loadu_ps
(
&
y_re
[
aarx
][
i
]);
simde_mm_storeu_ps
(
&
y_re
[
aarx
][
i
],
simde_mm_add_ps
(
vec_re_y
,
vec_re_x
));
// Add imaginary values
simde__m128
vec_im_x
=
simde_mm_loadu_ps
(
&
x_im
[
aarx
][
i
]);
simde__m128
vec_im_y
=
simde_mm_loadu_ps
(
&
y_im
[
aarx
][
i
]);
simde_mm_storeu_ps
(
&
y_im
[
aarx
][
i
],
simde_mm_add_ps
(
vec_im_y
,
vec_im_x
));
}
// Add remaining samples
for
(;
i
<
length
;
i
++
)
{
y_re
[
aarx
][
i
]
+=
x_re
[
aarx
][
i
];
y_im
[
aarx
][
i
]
+=
x_im
[
aarx
][
i
];
}
}
}
#else
void
add_rx_signals
(
float
**
y_re
,
float
**
y_im
,
float
**
x_re
,
float
**
x_im
,
int
n_rx
,
int
length
)
{
for
(
int
aarx
=
0
;
aarx
<
n_rx
;
aarx
++
)
{
for
(
int
i
=
0
;
i
<
length
;
i
++
)
{
y_re
[
aarx
][
i
]
+=
x_re
[
aarx
][
i
];
y_im
[
aarx
][
i
]
+=
x_im
[
aarx
][
i
];
}
}
}
#endif
openair1/SIMULATION/TOOLS/sim.h
View file @
1ca5c909
...
@@ -429,6 +429,8 @@ void add_noise_float(c16_t **rxdata,
...
@@ -429,6 +429,8 @@ void add_noise_float(c16_t **rxdata,
bool
apply_phase_noise
,
bool
apply_phase_noise
,
const
uint8_t
nb_antennas_rx
);
const
uint8_t
nb_antennas_rx
);
void
add_rx_signals
(
float
**
y_re
,
float
**
y_im
,
float
**
x_re
,
float
**
x_im
,
int
n_rx
,
int
length
);
/*
/*
\fn double compute_pbch_sinr(channel_desc_t *desc,
\fn double compute_pbch_sinr(channel_desc_t *desc,
channel_desc_t *desc_i1,
channel_desc_t *desc_i1,
...
...
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