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
promise
OpenXG-RAN
Commits
6acad6ff
Commit
6acad6ff
authored
Oct 29, 2019
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved interpolation inside TOOLS
parent
7f688f78
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
13 deletions
+27
-13
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+0
-13
openair1/PHY/TOOLS/cmult_sv.c
openair1/PHY/TOOLS/cmult_sv.c
+27
-0
No files found.
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
6acad6ff
...
...
@@ -805,16 +805,3 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
return
(
0
);
}
void
simple_lerp
(
int16_t
*
in
,
int16_t
*
out
)
{
__m128i
est
,
sign
;
__m128i
*
x0
=
(
__m128i
*
)
in
;
__m128i
*
x1
=
(
__m128i
*
)(
in
+
2
);
__m128i
*
y
=
(
__m128i
*
)
out
;
est
=
_mm_add_epi16
(
*
x0
,
*
x1
);
sign
=
_mm_and_si128
(
est
,
_mm_set1_epi16
(
0x8000
));
est
=
_mm_or_si128
(
_mm_srli_epi16
(
est
,
1
),
sign
);
y
[
0
]
=
_mm_unpacklo_epi32
(
*
x0
,
est
);
y
[
1
]
=
_mm_unpackhi_epi32
(
*
x0
,
est
);
}
openair1/PHY/TOOLS/cmult_sv.c
View file @
6acad6ff
...
...
@@ -500,6 +500,33 @@ int complex_conjugate(int16_t *x1,
return
(
0
);
}
void
simple_lerp
(
int16_t
*
in
,
int16_t
*
out
)
{
simd_q15_t
est
;
simd_q15_t
sign
;
simd_q15_t
*
x0
=
(
__m128i
*
)
in
;
simd_q15_t
*
x1
=
(
__m128i
*
)(
in
+
2
);
simd_q15_t
*
y
=
(
__m128i
*
)
out
;
#if defined(__x86_64__) || defined(__i386__)
est
=
_mm_add_epi16
(
*
x0
,
*
x1
);
sign
=
_mm_and_si128
(
est
,
_mm_set1_epi16
(
0x8000
));
est
=
_mm_or_si128
(
_mm_srli_epi16
(
est
,
1
),
sign
);
y
[
0
]
=
_mm_unpacklo_epi32
(
*
x0
,
est
);
y
[
1
]
=
_mm_unpackhi_epi32
(
*
x0
,
est
);
#elif defined(__arm__)
est
=
vaddq_s16
(
*
x0
,
*
x1
);
est
=
vshrq_n_s16
(
est
,
1
);
y
[
0
]
=
vzip2q_s32
(
*
x0
,
est
);
y
[
1
]
=
vzip1q_s32
(
*
x0
,
est
);
#endif
_mm_empty
();
_m_empty
();
}
#ifdef MAIN
#define L 8
...
...
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