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
lizhongxiao
OpenXG-RAN
Commits
e5f35bcd
Commit
e5f35bcd
authored
Jul 11, 2023
by
Tsung-Yu Chan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix / warning in llr computing
parent
191206bf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
200 additions
and
211 deletions
+200
-211
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
+200
-211
No files found.
openair1/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
View file @
e5f35bcd
...
@@ -119,27 +119,27 @@ static inline simde__m256i prodsum_psi_a_epi16_256(simde__m256i psi_r, simde__m2
...
@@ -119,27 +119,27 @@ static inline simde__m256i prodsum_psi_a_epi16_256(simde__m256i psi_r, simde__m2
}
}
// Calculate interference magnitude
// Calculate interference magnitude
static
inline
void
interference_abs_epi16
(
simde__m128i
psi
,
simde__m128i
int_ch_mag
,
simde__m128i
int
_mag
,
simde__m128i
c1
,
simde__m128i
c2
)
static
inline
simde__m128i
interference_abs_epi16
(
simde__m128i
psi
,
simde__m128i
int_ch
_mag
,
simde__m128i
c1
,
simde__m128i
c2
)
{
{
simde__m128i
tmp_result
=
simde_mm_cmplt_epi16
(
psi
,
int_ch_mag
);
simde__m128i
tmp_result
=
simde_mm_cmplt_epi16
(
psi
,
int_ch_mag
);
simde__m128i
tmp_result2
=
simde_mm_xor_si128
(
tmp_result
,
(
*
(
simde__m128i
*
)
&
ones
[
0
]));
simde__m128i
tmp_result2
=
simde_mm_xor_si128
(
tmp_result
,
(
*
(
simde__m128i
*
)
&
ones
[
0
]));
tmp_result
=
simde_mm_and_si128
(
tmp_result
,
c1
);
tmp_result
=
simde_mm_and_si128
(
tmp_result
,
c1
);
tmp_result2
=
simde_mm_and_si128
(
tmp_result2
,
c2
);
tmp_result2
=
simde_mm_and_si128
(
tmp_result2
,
c2
);
int_mag
=
simde_mm_or_si128
(
tmp_result
,
tmp_result2
);
return
simde_mm_or_si128
(
tmp_result
,
tmp_result2
);
}
}
// Calculate interference magnitude
// Calculate interference magnitude
static
inline
void
interference_abs_epi16_256
(
simde__m256i
psi
,
simde__m256i
int_ch_mag
,
simde__m256i
int
_mag
,
simde__m256i
c1
,
simde__m256i
c2
)
static
inline
simde__m256i
interference_abs_epi16_256
(
simde__m256i
psi
,
simde__m256i
int_ch
_mag
,
simde__m256i
c1
,
simde__m256i
c2
)
{
{
simde__m256i
tmp_result
=
simde_mm256_cmpgt_epi16
(
int_ch_mag
,
psi
);
simde__m256i
tmp_result
=
simde_mm256_cmpgt_epi16
(
int_ch_mag
,
psi
);
simde__m256i
tmp_result2
=
simde_mm256_xor_si256
(
tmp_result
,
(
*
(
simde__m256i
*
)
&
ones256
[
0
]));
simde__m256i
tmp_result2
=
simde_mm256_xor_si256
(
tmp_result
,
(
*
(
simde__m256i
*
)
&
ones256
[
0
]));
tmp_result
=
simde_mm256_and_si256
(
tmp_result
,
c1
);
tmp_result
=
simde_mm256_and_si256
(
tmp_result
,
c1
);
tmp_result2
=
simde_mm256_and_si256
(
tmp_result2
,
c2
);
tmp_result2
=
simde_mm256_and_si256
(
tmp_result2
,
c2
);
int_mag
=
simde_mm256_or_si256
(
tmp_result
,
tmp_result2
);
return
simde_mm256_or_si256
(
tmp_result
,
tmp_result2
);
}
}
// Calculates a_sq = int_ch_mag * (a_r^2 + a_i^2) * scale_factor
// Calculates a_sq = int_ch_mag * (a_r^2 + a_i^2) * scale_factor
static
inline
void
square_a_epi16
(
simde__m128i
a_r
,
simde__m128i
a_i
,
simde__m128i
int_ch_mag
,
simde__m128i
scale_factor
,
simde__m128i
a_sq
)
static
inline
simde__m128i
square_a_epi16
(
simde__m128i
a_r
,
simde__m128i
a_i
,
simde__m128i
int_ch_mag
,
simde__m128i
scale_factor
)
{
{
simde__m128i
tmp_result
=
simde_mm_mulhi_epi16
(
a_r
,
a_r
);
simde__m128i
tmp_result
=
simde_mm_mulhi_epi16
(
a_r
,
a_r
);
tmp_result
=
simde_mm_slli_epi16
(
tmp_result
,
1
);
tmp_result
=
simde_mm_slli_epi16
(
tmp_result
,
1
);
...
@@ -153,11 +153,11 @@ static inline void square_a_epi16(simde__m128i a_r, simde__m128i a_i, simde__m12
...
@@ -153,11 +153,11 @@ static inline void square_a_epi16(simde__m128i a_r, simde__m128i a_i, simde__m12
tmp_result2
=
simde_mm_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm_mulhi_epi16
(
tmp_result2
,
int_ch_mag
);
tmp_result2
=
simde_mm_mulhi_epi16
(
tmp_result2
,
int_ch_mag
);
tmp_result2
=
simde_mm_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm_slli_epi16
(
tmp_result2
,
1
);
a_sq
=
simde_mm_adds_epi16
(
tmp_result
,
tmp_result2
);
return
simde_mm_adds_epi16
(
tmp_result
,
tmp_result2
);
}
}
// Calculates a_sq = int_ch_mag * (a_r^2 + a_i^2) * scale_factor
// Calculates a_sq = int_ch_mag * (a_r^2 + a_i^2) * scale_factor
static
inline
void
square_a_epi16_256
(
simde__m256i
a_r
,
simde__m256i
a_i
,
simde__m256i
int_ch_mag
,
simde__m256i
scale_factor
,
simde__m256i
a_sq
)
static
inline
simde__m256i
square_a_epi16_256
(
simde__m256i
a_r
,
simde__m256i
a_i
,
simde__m256i
int_ch_mag
,
simde__m256i
scale_factor
)
{
{
simde__m256i
tmp_result
=
simde_mm256_mulhi_epi16
(
a_r
,
a_r
);
simde__m256i
tmp_result
=
simde_mm256_mulhi_epi16
(
a_r
,
a_r
);
tmp_result
=
simde_mm256_slli_epi16
(
tmp_result
,
1
);
tmp_result
=
simde_mm256_slli_epi16
(
tmp_result
,
1
);
...
@@ -171,7 +171,7 @@ static inline void square_a_epi16_256(simde__m256i a_r, simde__m256i a_i, simde_
...
@@ -171,7 +171,7 @@ static inline void square_a_epi16_256(simde__m256i a_r, simde__m256i a_i, simde_
tmp_result2
=
simde_mm256_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm256_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm256_mulhi_epi16
(
tmp_result2
,
int_ch_mag
);
tmp_result2
=
simde_mm256_mulhi_epi16
(
tmp_result2
,
int_ch_mag
);
tmp_result2
=
simde_mm256_slli_epi16
(
tmp_result2
,
1
);
tmp_result2
=
simde_mm256_slli_epi16
(
tmp_result2
,
1
);
a_sq
=
simde_mm256_adds_epi16
(
tmp_result
,
tmp_result2
);
return
simde_mm256_adds_epi16
(
tmp_result
,
tmp_result2
);
}
}
// calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor for 64-QAM
// calculates a_sq = int_ch_mag*(a_r^2 + a_i^2)*scale_factor for 64-QAM
...
@@ -1084,9 +1084,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1084,9 +1084,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
simde__m128i
y1r
__attribute__
((
aligned
(
16
)));
simde__m128i
y1r
__attribute__
((
aligned
(
16
)));
simde__m128i
y1i
__attribute__
((
aligned
(
16
)));
simde__m128i
y1i
__attribute__
((
aligned
(
16
)));
simde__m128i
tmp_result
__attribute__
((
aligned
(
16
)));
simde__m128i
tmp_result2
__attribute__
((
aligned
(
16
)));
// In one iteration, we deal with 8 REs
// In one iteration, we deal with 8 REs
for
(
int
i
=
0
;
i
<
length
>>
2
;
i
+=
2
)
{
for
(
int
i
=
0
;
i
<
length
>>
2
;
i
+=
2
)
{
...
@@ -1219,74 +1216,74 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1219,74 +1216,74 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
y0_m_3_3
=
simde_mm_subs_epi16
(
y0r_three_over_sqrt10
,
y0i_three_over_sqrt10
);
y0_m_3_3
=
simde_mm_subs_epi16
(
y0r_three_over_sqrt10
,
y0i_three_over_sqrt10
);
// Compute optimal interfering symbol magnitude
// Compute optimal interfering symbol magnitude
interference_abs_epi16
(
psi_r_p1_p1
,
ch_mag_int
,
a_r_p1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_p1
=
interference_abs_epi16
(
psi_r_p1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p1_p1
,
ch_mag_int
,
a_i_p1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_p1
=
interference_abs_epi16
(
psi_i_p1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p1_p3
,
ch_mag_int
,
a_r_p1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_p3
=
interference_abs_epi16
(
psi_r_p1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p1_p3
,
ch_mag_int
,
a_i_p1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_p3
=
interference_abs_epi16
(
psi_i_p1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p1_m1
,
ch_mag_int
,
a_r_p1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_m1
=
interference_abs_epi16
(
psi_r_p1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p1_m1
,
ch_mag_int
,
a_i_p1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_m1
=
interference_abs_epi16
(
psi_i_p1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p1_m3
,
ch_mag_int
,
a_r_p1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_m3
=
interference_abs_epi16
(
psi_r_p1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p1_m3
,
ch_mag_int
,
a_i_p1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_m3
=
interference_abs_epi16
(
psi_i_p1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p3_p1
,
ch_mag_int
,
a_r_p3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_p1
=
interference_abs_epi16
(
psi_r_p3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p3_p1
,
ch_mag_int
,
a_i_p3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_p1
=
interference_abs_epi16
(
psi_i_p3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p3_p3
,
ch_mag_int
,
a_r_p3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_p3
=
interference_abs_epi16
(
psi_r_p3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p3_p3
,
ch_mag_int
,
a_i_p3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_p3
=
interference_abs_epi16
(
psi_i_p3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p3_m1
,
ch_mag_int
,
a_r_p3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_m1
=
interference_abs_epi16
(
psi_r_p3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p3_m1
,
ch_mag_int
,
a_i_p3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_m1
=
interference_abs_epi16
(
psi_i_p3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_p3_m3
,
ch_mag_int
,
a_r_p3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_m3
=
interference_abs_epi16
(
psi_r_p3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_p3_m3
,
ch_mag_int
,
a_i_p3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_m3
=
interference_abs_epi16
(
psi_i_p3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m1_p1
,
ch_mag_int
,
a_r_m1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_p1
=
interference_abs_epi16
(
psi_r_m1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m1_p1
,
ch_mag_int
,
a_i_m1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_p1
=
interference_abs_epi16
(
psi_i_m1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m1_p3
,
ch_mag_int
,
a_r_m1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_p3
=
interference_abs_epi16
(
psi_r_m1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m1_p3
,
ch_mag_int
,
a_i_m1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_p3
=
interference_abs_epi16
(
psi_i_m1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m1_m1
,
ch_mag_int
,
a_r_m1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_m1
=
interference_abs_epi16
(
psi_r_m1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m1_m1
,
ch_mag_int
,
a_i_m1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_m1
=
interference_abs_epi16
(
psi_i_m1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m1_m3
,
ch_mag_int
,
a_r_m1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_m3
=
interference_abs_epi16
(
psi_r_m1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m1_m3
,
ch_mag_int
,
a_i_m1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_m3
=
interference_abs_epi16
(
psi_i_m1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m3_p1
,
ch_mag_int
,
a_r_m3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_p1
=
interference_abs_epi16
(
psi_r_m3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m3_p1
,
ch_mag_int
,
a_i_m3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_p1
=
interference_abs_epi16
(
psi_i_m3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m3_p3
,
ch_mag_int
,
a_r_m3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_p3
=
interference_abs_epi16
(
psi_r_m3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m3_p3
,
ch_mag_int
,
a_i_m3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_p3
=
interference_abs_epi16
(
psi_i_m3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m3_m1
,
ch_mag_int
,
a_r_m3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_m1
=
interference_abs_epi16
(
psi_r_m3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m3_m1
,
ch_mag_int
,
a_i_m3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_m1
=
interference_abs_epi16
(
psi_i_m3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_r_m3_m3
,
ch_mag_int
,
a_r_m3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_m3
=
interference_abs_epi16
(
psi_r_m3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16
(
psi_i_m3_m3
,
ch_mag_int
,
a_i_m3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_m3
=
interference_abs_epi16
(
psi_i_m3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
// Calculation of groups of two terms in the bit metric involving product of psi and interference magnitude
// Calculation of groups of two terms in the bit metric involving product of psi and interference magnitude
simde__m128i
psi_a_p1_p1
=
prodsum_psi_a_epi16
(
psi_r_p1_p1
,
a_r_p1_p1
,
psi_i_p1_p1
,
a_i_p1_p1
);
psi_a_p1_p1
=
prodsum_psi_a_epi16
(
psi_r_p1_p1
,
a_r_p1_p1
,
psi_i_p1_p1
,
a_i_p1_p1
);
simde__m128i
psi_a_p1_p3
=
prodsum_psi_a_epi16
(
psi_r_p1_p3
,
a_r_p1_p3
,
psi_i_p1_p3
,
a_i_p1_p3
);
psi_a_p1_p3
=
prodsum_psi_a_epi16
(
psi_r_p1_p3
,
a_r_p1_p3
,
psi_i_p1_p3
,
a_i_p1_p3
);
simde__m128i
psi_a_p3_p1
=
prodsum_psi_a_epi16
(
psi_r_p3_p1
,
a_r_p3_p1
,
psi_i_p3_p1
,
a_i_p3_p1
);
psi_a_p3_p1
=
prodsum_psi_a_epi16
(
psi_r_p3_p1
,
a_r_p3_p1
,
psi_i_p3_p1
,
a_i_p3_p1
);
simde__m128i
psi_a_p3_p3
=
prodsum_psi_a_epi16
(
psi_r_p3_p3
,
a_r_p3_p3
,
psi_i_p3_p3
,
a_i_p3_p3
);
psi_a_p3_p3
=
prodsum_psi_a_epi16
(
psi_r_p3_p3
,
a_r_p3_p3
,
psi_i_p3_p3
,
a_i_p3_p3
);
simde__m128i
psi_a_p1_m1
=
prodsum_psi_a_epi16
(
psi_r_p1_m1
,
a_r_p1_m1
,
psi_i_p1_m1
,
a_i_p1_m1
);
psi_a_p1_m1
=
prodsum_psi_a_epi16
(
psi_r_p1_m1
,
a_r_p1_m1
,
psi_i_p1_m1
,
a_i_p1_m1
);
simde__m128i
psi_a_p1_m3
=
prodsum_psi_a_epi16
(
psi_r_p1_m3
,
a_r_p1_m3
,
psi_i_p1_m3
,
a_i_p1_m3
);
psi_a_p1_m3
=
prodsum_psi_a_epi16
(
psi_r_p1_m3
,
a_r_p1_m3
,
psi_i_p1_m3
,
a_i_p1_m3
);
simde__m128i
psi_a_p3_m1
=
prodsum_psi_a_epi16
(
psi_r_p3_m1
,
a_r_p3_m1
,
psi_i_p3_m1
,
a_i_p3_m1
);
psi_a_p3_m1
=
prodsum_psi_a_epi16
(
psi_r_p3_m1
,
a_r_p3_m1
,
psi_i_p3_m1
,
a_i_p3_m1
);
simde__m128i
psi_a_p3_m3
=
prodsum_psi_a_epi16
(
psi_r_p3_m3
,
a_r_p3_m3
,
psi_i_p3_m3
,
a_i_p3_m3
);
psi_a_p3_m3
=
prodsum_psi_a_epi16
(
psi_r_p3_m3
,
a_r_p3_m3
,
psi_i_p3_m3
,
a_i_p3_m3
);
simde__m128i
psi_a_m1_p1
=
prodsum_psi_a_epi16
(
psi_r_m1_p1
,
a_r_m1_p1
,
psi_i_m1_p1
,
a_i_m1_p1
);
psi_a_m1_p1
=
prodsum_psi_a_epi16
(
psi_r_m1_p1
,
a_r_m1_p1
,
psi_i_m1_p1
,
a_i_m1_p1
);
simde__m128i
psi_a_m1_p3
=
prodsum_psi_a_epi16
(
psi_r_m1_p3
,
a_r_m1_p3
,
psi_i_m1_p3
,
a_i_m1_p3
);
psi_a_m1_p3
=
prodsum_psi_a_epi16
(
psi_r_m1_p3
,
a_r_m1_p3
,
psi_i_m1_p3
,
a_i_m1_p3
);
simde__m128i
psi_a_m3_p1
=
prodsum_psi_a_epi16
(
psi_r_m3_p1
,
a_r_m3_p1
,
psi_i_m3_p1
,
a_i_m3_p1
);
psi_a_m3_p1
=
prodsum_psi_a_epi16
(
psi_r_m3_p1
,
a_r_m3_p1
,
psi_i_m3_p1
,
a_i_m3_p1
);
simde__m128i
psi_a_m3_p3
=
prodsum_psi_a_epi16
(
psi_r_m3_p3
,
a_r_m3_p3
,
psi_i_m3_p3
,
a_i_m3_p3
);
psi_a_m3_p3
=
prodsum_psi_a_epi16
(
psi_r_m3_p3
,
a_r_m3_p3
,
psi_i_m3_p3
,
a_i_m3_p3
);
simde__m128i
psi_a_m1_m1
=
prodsum_psi_a_epi16
(
psi_r_m1_m1
,
a_r_m1_m1
,
psi_i_m1_m1
,
a_i_m1_m1
);
psi_a_m1_m1
=
prodsum_psi_a_epi16
(
psi_r_m1_m1
,
a_r_m1_m1
,
psi_i_m1_m1
,
a_i_m1_m1
);
simde__m128i
psi_a_m1_m3
=
prodsum_psi_a_epi16
(
psi_r_m1_m3
,
a_r_m1_m3
,
psi_i_m1_m3
,
a_i_m1_m3
);
psi_a_m1_m3
=
prodsum_psi_a_epi16
(
psi_r_m1_m3
,
a_r_m1_m3
,
psi_i_m1_m3
,
a_i_m1_m3
);
simde__m128i
psi_a_m3_m1
=
prodsum_psi_a_epi16
(
psi_r_m3_m1
,
a_r_m3_m1
,
psi_i_m3_m1
,
a_i_m3_m1
);
psi_a_m3_m1
=
prodsum_psi_a_epi16
(
psi_r_m3_m1
,
a_r_m3_m1
,
psi_i_m3_m1
,
a_i_m3_m1
);
simde__m128i
psi_a_m3_m3
=
prodsum_psi_a_epi16
(
psi_r_m3_m3
,
a_r_m3_m3
,
psi_i_m3_m3
,
a_i_m3_m3
);
psi_a_m3_m3
=
prodsum_psi_a_epi16
(
psi_r_m3_m3
,
a_r_m3_m3
,
psi_i_m3_m3
,
a_i_m3_m3
);
// squared interference magnitude times int. ch. power
// squared interference magnitude times int. ch. power
square_a_epi16
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_p1
);
a_sq_p1_p1
=
square_a_epi16
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_p3
);
a_sq_p1_p3
=
square_a_epi16
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_p1
);
a_sq_p3_p1
=
square_a_epi16
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_p3
);
a_sq_p3_p3
=
square_a_epi16
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_m1
);
a_sq_p1_m1
=
square_a_epi16
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_m3
);
a_sq_p1_m3
=
square_a_epi16
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_m1
);
a_sq_p3_m1
=
square_a_epi16
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_m3
);
a_sq_p3_m3
=
square_a_epi16
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_p1
);
a_sq_m1_p1
=
square_a_epi16
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_p3
);
a_sq_m1_p3
=
square_a_epi16
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_p1
);
a_sq_m3_p1
=
square_a_epi16
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_p3
);
a_sq_m3_p3
=
square_a_epi16
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_m1
);
a_sq_m1_m1
=
square_a_epi16
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_m3
);
a_sq_m1_m3
=
square_a_epi16
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_m1
);
a_sq_m3_m1
=
square_a_epi16
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_m3
);
a_sq_m3_m3
=
square_a_epi16
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
// Computing different multiples of channel norms
// Computing different multiples of channel norms
ch_mag_over_10
=
simde_mm_mulhi_epi16
(
ch_mag_des
,
ONE_OVER_TWO_SQRT_10
);
ch_mag_over_10
=
simde_mm_mulhi_epi16
(
ch_mag_des
,
ONE_OVER_TWO_SQRT_10
);
...
@@ -1483,8 +1480,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1483,8 +1480,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
simde__m256i
ch_mag_over_2
;
simde__m256i
ch_mag_over_2
;
simde__m256i
ch_mag_9_over_10
;
simde__m256i
ch_mag_9_over_10
;
simde__m256i
xmm0
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm1
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm2
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm2
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm3
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm3
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm4
__attribute__
((
aligned
(
16
)));
simde__m256i
xmm4
__attribute__
((
aligned
(
16
)));
...
@@ -1619,9 +1614,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1619,9 +1614,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
simde__m256i
y1r
__attribute__
((
aligned
(
16
)));
simde__m256i
y1r
__attribute__
((
aligned
(
16
)));
simde__m256i
y1i
__attribute__
((
aligned
(
16
)));
simde__m256i
y1i
__attribute__
((
aligned
(
16
)));
simde__m256i
tmp_result
__attribute__
((
aligned
(
16
)));
simde__m256i
tmp_result2
__attribute__
((
aligned
(
16
)));
// In one iteration, we deal with 8 REs
// In one iteration, we deal with 8 REs
for
(
int
i
=
0
;
i
<
length
>>
3
;
i
+=
2
)
{
for
(
int
i
=
0
;
i
<
length
>>
3
;
i
+=
2
)
{
...
@@ -1655,7 +1647,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1655,7 +1647,6 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
// Rearrange interfering MF output
// Rearrange interfering MF output
simde_mm256_separate_real_imag_parts
(
&
y1r
,
&
y1i
,
stream1_256i_in
[
i
],
stream1_256i_in
[
i
+
1
]);
simde_mm256_separate_real_imag_parts
(
&
y1r
,
&
y1i
,
stream1_256i_in
[
i
],
stream1_256i_in
[
i
+
1
]);
xmm0
=
simde_mm256_setzero_si256
();
// ZERO
xmm2
=
simde_mm256_subs_epi16
(
rho_rpi_1_1
,
y1r
);
// = [Re(rho)+ Im(rho)]/sqrt(10) - y1r
xmm2
=
simde_mm256_subs_epi16
(
rho_rpi_1_1
,
y1r
);
// = [Re(rho)+ Im(rho)]/sqrt(10) - y1r
psi_r_p1_p1
=
simde_mm256_abs_epi16
(
xmm2
);
// = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r|
psi_r_p1_p1
=
simde_mm256_abs_epi16
(
xmm2
);
// = |[Re(rho)+ Im(rho)]/sqrt(10) - y1r|
...
@@ -1754,74 +1745,74 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
...
@@ -1754,74 +1745,74 @@ void nr_ulsch_qam16_qam16(c16_t *stream0_in,
y0_m_3_3
=
simde_mm256_subs_epi16
(
y0r_three_over_sqrt10
,
y0i_three_over_sqrt10
);
y0_m_3_3
=
simde_mm256_subs_epi16
(
y0r_three_over_sqrt10
,
y0i_three_over_sqrt10
);
// Compute optimal interfering symbol magnitude
// Compute optimal interfering symbol magnitude
interference_abs_epi16_256
(
psi_r_p1_p1
,
ch_mag_int
,
a_r_p1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_p1
=
interference_abs_epi16_256
(
psi_r_p1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p1_p1
,
ch_mag_int
,
a_i_p1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_p1
=
interference_abs_epi16_256
(
psi_i_p1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p1_p3
,
ch_mag_int
,
a_r_p1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_p3
=
interference_abs_epi16_256
(
psi_r_p1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p1_p3
,
ch_mag_int
,
a_i_p1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_p3
=
interference_abs_epi16_256
(
psi_i_p1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p1_m1
,
ch_mag_int
,
a_r_p1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_m1
=
interference_abs_epi16_256
(
psi_r_p1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p1_m1
,
ch_mag_int
,
a_i_p1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_m1
=
interference_abs_epi16_256
(
psi_i_p1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p1_m3
,
ch_mag_int
,
a_r_p1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p1_m3
=
interference_abs_epi16_256
(
psi_r_p1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p1_m3
,
ch_mag_int
,
a_i_p1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p1_m3
=
interference_abs_epi16_256
(
psi_i_p1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p3_p1
,
ch_mag_int
,
a_r_p3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_p1
=
interference_abs_epi16_256
(
psi_r_p3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p3_p1
,
ch_mag_int
,
a_i_p3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_p1
=
interference_abs_epi16_256
(
psi_i_p3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p3_p3
,
ch_mag_int
,
a_r_p3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_p3
=
interference_abs_epi16_256
(
psi_r_p3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p3_p3
,
ch_mag_int
,
a_i_p3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_p3
=
interference_abs_epi16_256
(
psi_i_p3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p3_m1
,
ch_mag_int
,
a_r_p3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_m1
=
interference_abs_epi16_256
(
psi_r_p3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p3_m1
,
ch_mag_int
,
a_i_p3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_m1
=
interference_abs_epi16_256
(
psi_i_p3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_p3_m3
,
ch_mag_int
,
a_r_p3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_p3_m3
=
interference_abs_epi16_256
(
psi_r_p3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_p3_m3
,
ch_mag_int
,
a_i_p3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_p3_m3
=
interference_abs_epi16_256
(
psi_i_p3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m1_p1
,
ch_mag_int
,
a_r_m1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_p1
=
interference_abs_epi16_256
(
psi_r_m1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m1_p1
,
ch_mag_int
,
a_i_m1_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_p1
=
interference_abs_epi16_256
(
psi_i_m1_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m1_p3
,
ch_mag_int
,
a_r_m1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_p3
=
interference_abs_epi16_256
(
psi_r_m1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m1_p3
,
ch_mag_int
,
a_i_m1_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_p3
=
interference_abs_epi16_256
(
psi_i_m1_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m1_m1
,
ch_mag_int
,
a_r_m1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_m1
=
interference_abs_epi16_256
(
psi_r_m1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m1_m1
,
ch_mag_int
,
a_i_m1_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_m1
=
interference_abs_epi16_256
(
psi_i_m1_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m1_m3
,
ch_mag_int
,
a_r_m1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m1_m3
=
interference_abs_epi16_256
(
psi_r_m1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m1_m3
,
ch_mag_int
,
a_i_m1_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m1_m3
=
interference_abs_epi16_256
(
psi_i_m1_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m3_p1
,
ch_mag_int
,
a_r_m3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_p1
=
interference_abs_epi16_256
(
psi_r_m3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m3_p1
,
ch_mag_int
,
a_i_m3_p1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_p1
=
interference_abs_epi16_256
(
psi_i_m3_p1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m3_p3
,
ch_mag_int
,
a_r_m3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_p3
=
interference_abs_epi16_256
(
psi_r_m3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m3_p3
,
ch_mag_int
,
a_i_m3_p3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_p3
=
interference_abs_epi16_256
(
psi_i_m3_p3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m3_m1
,
ch_mag_int
,
a_r_m3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_m1
=
interference_abs_epi16_256
(
psi_r_m3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m3_m1
,
ch_mag_int
,
a_i_m3_m1
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_m1
=
interference_abs_epi16_256
(
psi_i_m3_m1
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_r_m3_m3
,
ch_mag_int
,
a_r_m3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_r_m3_m3
=
interference_abs_epi16_256
(
psi_r_m3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
interference_abs_epi16_256
(
psi_i_m3_m3
,
ch_mag_int
,
a_i_m3_m3
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
a_i_m3_m3
=
interference_abs_epi16_256
(
psi_i_m3_m3
,
ch_mag_int
,
ONE_OVER_SQRT_10_Q15
,
THREE_OVER_SQRT_10
);
// Calculation of groups of two terms in the bit metric involving product of psi and interference magnitude
// Calculation of groups of two terms in the bit metric involving product of psi and interference magnitude
simde__m256i
psi_a_p1_p1
=
prodsum_psi_a_epi16_256
(
psi_r_p1_p1
,
a_r_p1_p1
,
psi_i_p1_p1
,
a_i_p1_p1
);
psi_a_p1_p1
=
prodsum_psi_a_epi16_256
(
psi_r_p1_p1
,
a_r_p1_p1
,
psi_i_p1_p1
,
a_i_p1_p1
);
simde__m256i
psi_a_p1_p3
=
prodsum_psi_a_epi16_256
(
psi_r_p1_p3
,
a_r_p1_p3
,
psi_i_p1_p3
,
a_i_p1_p3
);
psi_a_p1_p3
=
prodsum_psi_a_epi16_256
(
psi_r_p1_p3
,
a_r_p1_p3
,
psi_i_p1_p3
,
a_i_p1_p3
);
simde__m256i
psi_a_p3_p1
=
prodsum_psi_a_epi16_256
(
psi_r_p3_p1
,
a_r_p3_p1
,
psi_i_p3_p1
,
a_i_p3_p1
);
psi_a_p3_p1
=
prodsum_psi_a_epi16_256
(
psi_r_p3_p1
,
a_r_p3_p1
,
psi_i_p3_p1
,
a_i_p3_p1
);
simde__m256i
psi_a_p3_p3
=
prodsum_psi_a_epi16_256
(
psi_r_p3_p3
,
a_r_p3_p3
,
psi_i_p3_p3
,
a_i_p3_p3
);
psi_a_p3_p3
=
prodsum_psi_a_epi16_256
(
psi_r_p3_p3
,
a_r_p3_p3
,
psi_i_p3_p3
,
a_i_p3_p3
);
simde__m256i
psi_a_p1_m1
=
prodsum_psi_a_epi16_256
(
psi_r_p1_m1
,
a_r_p1_m1
,
psi_i_p1_m1
,
a_i_p1_m1
);
psi_a_p1_m1
=
prodsum_psi_a_epi16_256
(
psi_r_p1_m1
,
a_r_p1_m1
,
psi_i_p1_m1
,
a_i_p1_m1
);
simde__m256i
psi_a_p1_m3
=
prodsum_psi_a_epi16_256
(
psi_r_p1_m3
,
a_r_p1_m3
,
psi_i_p1_m3
,
a_i_p1_m3
);
psi_a_p1_m3
=
prodsum_psi_a_epi16_256
(
psi_r_p1_m3
,
a_r_p1_m3
,
psi_i_p1_m3
,
a_i_p1_m3
);
simde__m256i
psi_a_p3_m1
=
prodsum_psi_a_epi16_256
(
psi_r_p3_m1
,
a_r_p3_m1
,
psi_i_p3_m1
,
a_i_p3_m1
);
psi_a_p3_m1
=
prodsum_psi_a_epi16_256
(
psi_r_p3_m1
,
a_r_p3_m1
,
psi_i_p3_m1
,
a_i_p3_m1
);
simde__m256i
psi_a_p3_m3
=
prodsum_psi_a_epi16_256
(
psi_r_p3_m3
,
a_r_p3_m3
,
psi_i_p3_m3
,
a_i_p3_m3
);
psi_a_p3_m3
=
prodsum_psi_a_epi16_256
(
psi_r_p3_m3
,
a_r_p3_m3
,
psi_i_p3_m3
,
a_i_p3_m3
);
simde__m256i
psi_a_m1_p1
=
prodsum_psi_a_epi16_256
(
psi_r_m1_p1
,
a_r_m1_p1
,
psi_i_m1_p1
,
a_i_m1_p1
);
psi_a_m1_p1
=
prodsum_psi_a_epi16_256
(
psi_r_m1_p1
,
a_r_m1_p1
,
psi_i_m1_p1
,
a_i_m1_p1
);
simde__m256i
psi_a_m1_p3
=
prodsum_psi_a_epi16_256
(
psi_r_m1_p3
,
a_r_m1_p3
,
psi_i_m1_p3
,
a_i_m1_p3
);
psi_a_m1_p3
=
prodsum_psi_a_epi16_256
(
psi_r_m1_p3
,
a_r_m1_p3
,
psi_i_m1_p3
,
a_i_m1_p3
);
simde__m256i
psi_a_m3_p1
=
prodsum_psi_a_epi16_256
(
psi_r_m3_p1
,
a_r_m3_p1
,
psi_i_m3_p1
,
a_i_m3_p1
);
psi_a_m3_p1
=
prodsum_psi_a_epi16_256
(
psi_r_m3_p1
,
a_r_m3_p1
,
psi_i_m3_p1
,
a_i_m3_p1
);
simde__m256i
psi_a_m3_p3
=
prodsum_psi_a_epi16_256
(
psi_r_m3_p3
,
a_r_m3_p3
,
psi_i_m3_p3
,
a_i_m3_p3
);
psi_a_m3_p3
=
prodsum_psi_a_epi16_256
(
psi_r_m3_p3
,
a_r_m3_p3
,
psi_i_m3_p3
,
a_i_m3_p3
);
simde__m256i
psi_a_m1_m1
=
prodsum_psi_a_epi16_256
(
psi_r_m1_m1
,
a_r_m1_m1
,
psi_i_m1_m1
,
a_i_m1_m1
);
psi_a_m1_m1
=
prodsum_psi_a_epi16_256
(
psi_r_m1_m1
,
a_r_m1_m1
,
psi_i_m1_m1
,
a_i_m1_m1
);
simde__m256i
psi_a_m1_m3
=
prodsum_psi_a_epi16_256
(
psi_r_m1_m3
,
a_r_m1_m3
,
psi_i_m1_m3
,
a_i_m1_m3
);
psi_a_m1_m3
=
prodsum_psi_a_epi16_256
(
psi_r_m1_m3
,
a_r_m1_m3
,
psi_i_m1_m3
,
a_i_m1_m3
);
simde__m256i
psi_a_m3_m1
=
prodsum_psi_a_epi16_256
(
psi_r_m3_m1
,
a_r_m3_m1
,
psi_i_m3_m1
,
a_i_m3_m1
);
psi_a_m3_m1
=
prodsum_psi_a_epi16_256
(
psi_r_m3_m1
,
a_r_m3_m1
,
psi_i_m3_m1
,
a_i_m3_m1
);
simde__m256i
psi_a_m3_m3
=
prodsum_psi_a_epi16_256
(
psi_r_m3_m3
,
a_r_m3_m3
,
psi_i_m3_m3
,
a_i_m3_m3
);
psi_a_m3_m3
=
prodsum_psi_a_epi16_256
(
psi_r_m3_m3
,
a_r_m3_m3
,
psi_i_m3_m3
,
a_i_m3_m3
);
// squared interference magnitude times int. ch. power
// squared interference magnitude times int. ch. power
square_a_epi16_256
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_p1
);
a_sq_p1_p1
=
square_a_epi16_256
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_p3
);
a_sq_p1_p3
=
square_a_epi16_256
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_p1
);
a_sq_p3_p1
=
square_a_epi16_256
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_p3
);
a_sq_p3_p3
=
square_a_epi16_256
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_m1
);
a_sq_p1_m1
=
square_a_epi16_256
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p1_m3
);
a_sq_p1_m3
=
square_a_epi16_256
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_m1
);
a_sq_p3_m1
=
square_a_epi16_256
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_p3_m3
);
a_sq_p3_m3
=
square_a_epi16_256
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_p1
);
a_sq_m1_p1
=
square_a_epi16_256
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_p3
);
a_sq_m1_p3
=
square_a_epi16_256
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_p1
);
a_sq_m3_p1
=
square_a_epi16_256
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_p3
);
a_sq_m3_p3
=
square_a_epi16_256
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_m1
);
a_sq_m1_m1
=
square_a_epi16_256
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m1_m3
);
a_sq_m1_m3
=
square_a_epi16_256
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_m1
);
a_sq_m3_m1
=
square_a_epi16_256
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
square_a_epi16_256
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
,
a_sq_m3_m3
);
a_sq_m3_m3
=
square_a_epi16_256
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_10_OVER_FOUR
);
// Computing different multiples of channel norms
// Computing different multiples of channel norms
ch_mag_over_10
=
simde_mm256_mulhi_epi16
(
ch_mag_des
,
ONE_OVER_TWO_SQRT_10
);
ch_mag_over_10
=
simde_mm256_mulhi_epi16
(
ch_mag_des
,
ONE_OVER_TWO_SQRT_10
);
...
@@ -2487,7 +2478,6 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
...
@@ -2487,7 +2478,6 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
ch_mag_int_with_sigma2
=
simde_mm256_srai_epi16
(
ch_mag_int
,
1
);
// *2
ch_mag_int_with_sigma2
=
simde_mm256_srai_epi16
(
ch_mag_int
,
1
);
// *2
two_ch_mag_int_with_sigma2
=
ch_mag_int
;
// *4
two_ch_mag_int_with_sigma2
=
ch_mag_int
;
// *4
three_ch_mag_int_with_sigma2
=
simde_mm256_adds_epi16
(
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
);
// *6
three_ch_mag_int_with_sigma2
=
simde_mm256_adds_epi16
(
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
);
// *6
simde__m256i
tmp_result
,
tmp_result2
,
tmp_result3
,
tmp_result4
;
simde__m256i
a_r_p7_p7
=
interference_abs_64qam_epi16_256
(
psi_r_p7_p7
,
simde__m256i
a_r_p7_p7
=
interference_abs_64qam_epi16_256
(
psi_r_p7_p7
,
ch_mag_int_with_sigma2
,
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
,
...
@@ -3711,70 +3701,70 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
...
@@ -3711,70 +3701,70 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
psi_a_m7_m7
=
simde_mm256_slli_epi16
(
psi_a_m7_m7
,
2
);
psi_a_m7_m7
=
simde_mm256_slli_epi16
(
psi_a_m7_m7
,
2
);
// Calculation of a group of two terms in the bit metric involving squares of interference
// Calculation of a group of two terms in the bit metric involving squares of interference
simde_m256i
a_sq_p7_p7
=
square_a_64qam_epi16_256
(
a_r_p7_p7
,
a_i_p7_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_p7
=
square_a_64qam_epi16_256
(
a_r_p7_p7
,
a_i_p7_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_p5
=
square_a_64qam_epi16_256
(
a_r_p7_p5
,
a_i_p7_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_p5
=
square_a_64qam_epi16_256
(
a_r_p7_p5
,
a_i_p7_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_p3
=
square_a_64qam_epi16_256
(
a_r_p7_p3
,
a_i_p7_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_p3
=
square_a_64qam_epi16_256
(
a_r_p7_p3
,
a_i_p7_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_p1
=
square_a_64qam_epi16_256
(
a_r_p7_p1
,
a_i_p7_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_p1
=
square_a_64qam_epi16_256
(
a_r_p7_p1
,
a_i_p7_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_m1
=
square_a_64qam_epi16_256
(
a_r_p7_m1
,
a_i_p7_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_m1
=
square_a_64qam_epi16_256
(
a_r_p7_m1
,
a_i_p7_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_m3
=
square_a_64qam_epi16_256
(
a_r_p7_m3
,
a_i_p7_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_m3
=
square_a_64qam_epi16_256
(
a_r_p7_m3
,
a_i_p7_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_m5
=
square_a_64qam_epi16_256
(
a_r_p7_m5
,
a_i_p7_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_m5
=
square_a_64qam_epi16_256
(
a_r_p7_m5
,
a_i_p7_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p7_m7
=
square_a_64qam_epi16_256
(
a_r_p7_m7
,
a_i_p7_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p7_m7
=
square_a_64qam_epi16_256
(
a_r_p7_m7
,
a_i_p7_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_p7
=
square_a_64qam_epi16_256
(
a_r_p5_p7
,
a_i_p5_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_p7
=
square_a_64qam_epi16_256
(
a_r_p5_p7
,
a_i_p5_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_p5
=
square_a_64qam_epi16_256
(
a_r_p5_p5
,
a_i_p5_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_p5
=
square_a_64qam_epi16_256
(
a_r_p5_p5
,
a_i_p5_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_p3
=
square_a_64qam_epi16_256
(
a_r_p5_p3
,
a_i_p5_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_p3
=
square_a_64qam_epi16_256
(
a_r_p5_p3
,
a_i_p5_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_p1
=
square_a_64qam_epi16_256
(
a_r_p5_p1
,
a_i_p5_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_p1
=
square_a_64qam_epi16_256
(
a_r_p5_p1
,
a_i_p5_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_m1
=
square_a_64qam_epi16_256
(
a_r_p5_m1
,
a_i_p5_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_m1
=
square_a_64qam_epi16_256
(
a_r_p5_m1
,
a_i_p5_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_m3
=
square_a_64qam_epi16_256
(
a_r_p5_m3
,
a_i_p5_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_m3
=
square_a_64qam_epi16_256
(
a_r_p5_m3
,
a_i_p5_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_m5
=
square_a_64qam_epi16_256
(
a_r_p5_m5
,
a_i_p5_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_m5
=
square_a_64qam_epi16_256
(
a_r_p5_m5
,
a_i_p5_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p5_m7
=
square_a_64qam_epi16_256
(
a_r_p5_m7
,
a_i_p5_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p5_m7
=
square_a_64qam_epi16_256
(
a_r_p5_m7
,
a_i_p5_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_p7
=
square_a_64qam_epi16_256
(
a_r_p3_p7
,
a_i_p3_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_p7
=
square_a_64qam_epi16_256
(
a_r_p3_p7
,
a_i_p3_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_p5
=
square_a_64qam_epi16_256
(
a_r_p3_p5
,
a_i_p3_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_p5
=
square_a_64qam_epi16_256
(
a_r_p3_p5
,
a_i_p3_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_p3
=
square_a_64qam_epi16_256
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_p3
=
square_a_64qam_epi16_256
(
a_r_p3_p3
,
a_i_p3_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_p1
=
square_a_64qam_epi16_256
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_p1
=
square_a_64qam_epi16_256
(
a_r_p3_p1
,
a_i_p3_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_m1
=
square_a_64qam_epi16_256
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_m1
=
square_a_64qam_epi16_256
(
a_r_p3_m1
,
a_i_p3_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_m3
=
square_a_64qam_epi16_256
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_m3
=
square_a_64qam_epi16_256
(
a_r_p3_m3
,
a_i_p3_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_m5
=
square_a_64qam_epi16_256
(
a_r_p3_m5
,
a_i_p3_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_m5
=
square_a_64qam_epi16_256
(
a_r_p3_m5
,
a_i_p3_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p3_m7
=
square_a_64qam_epi16_256
(
a_r_p3_m7
,
a_i_p3_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p3_m7
=
square_a_64qam_epi16_256
(
a_r_p3_m7
,
a_i_p3_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_p7
=
square_a_64qam_epi16_256
(
a_r_p1_p7
,
a_i_p1_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_p7
=
square_a_64qam_epi16_256
(
a_r_p1_p7
,
a_i_p1_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_p5
=
square_a_64qam_epi16_256
(
a_r_p1_p5
,
a_i_p1_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_p5
=
square_a_64qam_epi16_256
(
a_r_p1_p5
,
a_i_p1_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_p3
=
square_a_64qam_epi16_256
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_p3
=
square_a_64qam_epi16_256
(
a_r_p1_p3
,
a_i_p1_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_p1
=
square_a_64qam_epi16_256
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_p1
=
square_a_64qam_epi16_256
(
a_r_p1_p1
,
a_i_p1_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_m1
=
square_a_64qam_epi16_256
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_m1
=
square_a_64qam_epi16_256
(
a_r_p1_m1
,
a_i_p1_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_m3
=
square_a_64qam_epi16_256
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_m3
=
square_a_64qam_epi16_256
(
a_r_p1_m3
,
a_i_p1_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_m5
=
square_a_64qam_epi16_256
(
a_r_p1_m5
,
a_i_p1_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_m5
=
square_a_64qam_epi16_256
(
a_r_p1_m5
,
a_i_p1_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_p1_m7
=
square_a_64qam_epi16_256
(
a_r_p1_m7
,
a_i_p1_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_p1_m7
=
square_a_64qam_epi16_256
(
a_r_p1_m7
,
a_i_p1_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_p7
=
square_a_64qam_epi16_256
(
a_r_m1_p7
,
a_i_m1_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_p7
=
square_a_64qam_epi16_256
(
a_r_m1_p7
,
a_i_m1_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_p5
=
square_a_64qam_epi16_256
(
a_r_m1_p5
,
a_i_m1_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_p5
=
square_a_64qam_epi16_256
(
a_r_m1_p5
,
a_i_m1_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_p3
=
square_a_64qam_epi16_256
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_p3
=
square_a_64qam_epi16_256
(
a_r_m1_p3
,
a_i_m1_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_p1
=
square_a_64qam_epi16_256
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_p1
=
square_a_64qam_epi16_256
(
a_r_m1_p1
,
a_i_m1_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_m1
=
square_a_64qam_epi16_256
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_m1
=
square_a_64qam_epi16_256
(
a_r_m1_m1
,
a_i_m1_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_m3
=
square_a_64qam_epi16_256
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_m3
=
square_a_64qam_epi16_256
(
a_r_m1_m3
,
a_i_m1_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_m5
=
square_a_64qam_epi16_256
(
a_r_m1_m5
,
a_i_m1_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_m5
=
square_a_64qam_epi16_256
(
a_r_m1_m5
,
a_i_m1_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m1_m7
=
square_a_64qam_epi16_256
(
a_r_m1_m7
,
a_i_m1_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m1_m7
=
square_a_64qam_epi16_256
(
a_r_m1_m7
,
a_i_m1_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_p7
=
square_a_64qam_epi16_256
(
a_r_m3_p7
,
a_i_m3_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_p7
=
square_a_64qam_epi16_256
(
a_r_m3_p7
,
a_i_m3_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_p5
=
square_a_64qam_epi16_256
(
a_r_m3_p5
,
a_i_m3_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_p5
=
square_a_64qam_epi16_256
(
a_r_m3_p5
,
a_i_m3_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_p3
=
square_a_64qam_epi16_256
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_p3
=
square_a_64qam_epi16_256
(
a_r_m3_p3
,
a_i_m3_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_p1
=
square_a_64qam_epi16_256
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_p1
=
square_a_64qam_epi16_256
(
a_r_m3_p1
,
a_i_m3_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_m1
=
square_a_64qam_epi16_256
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_m1
=
square_a_64qam_epi16_256
(
a_r_m3_m1
,
a_i_m3_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_m3
=
square_a_64qam_epi16_256
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_m3
=
square_a_64qam_epi16_256
(
a_r_m3_m3
,
a_i_m3_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_m5
=
square_a_64qam_epi16_256
(
a_r_m3_m5
,
a_i_m3_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_m5
=
square_a_64qam_epi16_256
(
a_r_m3_m5
,
a_i_m3_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m3_m7
=
square_a_64qam_epi16_256
(
a_r_m3_m7
,
a_i_m3_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m3_m7
=
square_a_64qam_epi16_256
(
a_r_m3_m7
,
a_i_m3_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_p7
=
square_a_64qam_epi16_256
(
a_r_m5_p7
,
a_i_m5_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_p7
=
square_a_64qam_epi16_256
(
a_r_m5_p7
,
a_i_m5_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_p5
=
square_a_64qam_epi16_256
(
a_r_m5_p5
,
a_i_m5_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_p5
=
square_a_64qam_epi16_256
(
a_r_m5_p5
,
a_i_m5_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_p3
=
square_a_64qam_epi16_256
(
a_r_m5_p3
,
a_i_m5_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_p3
=
square_a_64qam_epi16_256
(
a_r_m5_p3
,
a_i_m5_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_p1
=
square_a_64qam_epi16_256
(
a_r_m5_p1
,
a_i_m5_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_p1
=
square_a_64qam_epi16_256
(
a_r_m5_p1
,
a_i_m5_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_m1
=
square_a_64qam_epi16_256
(
a_r_m5_m1
,
a_i_m5_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_m1
=
square_a_64qam_epi16_256
(
a_r_m5_m1
,
a_i_m5_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_m3
=
square_a_64qam_epi16_256
(
a_r_m5_m3
,
a_i_m5_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_m3
=
square_a_64qam_epi16_256
(
a_r_m5_m3
,
a_i_m5_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_m5
=
square_a_64qam_epi16_256
(
a_r_m5_m5
,
a_i_m5_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_m5
=
square_a_64qam_epi16_256
(
a_r_m5_m5
,
a_i_m5_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m5_m7
=
square_a_64qam_epi16_256
(
a_r_m5_m7
,
a_i_m5_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m5_m7
=
square_a_64qam_epi16_256
(
a_r_m5_m7
,
a_i_m5_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_p7
=
square_a_64qam_epi16_256
(
a_r_m7_p7
,
a_i_m7_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_p7
=
square_a_64qam_epi16_256
(
a_r_m7_p7
,
a_i_m7_p7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_p5
=
square_a_64qam_epi16_256
(
a_r_m7_p5
,
a_i_m7_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_p5
=
square_a_64qam_epi16_256
(
a_r_m7_p5
,
a_i_m7_p5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_p3
=
square_a_64qam_epi16_256
(
a_r_m7_p3
,
a_i_m7_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_p3
=
square_a_64qam_epi16_256
(
a_r_m7_p3
,
a_i_m7_p3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_p1
=
square_a_64qam_epi16_256
(
a_r_m7_p1
,
a_i_m7_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_p1
=
square_a_64qam_epi16_256
(
a_r_m7_p1
,
a_i_m7_p1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_m1
=
square_a_64qam_epi16_256
(
a_r_m7_m1
,
a_i_m7_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_m1
=
square_a_64qam_epi16_256
(
a_r_m7_m1
,
a_i_m7_m1
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_m3
=
square_a_64qam_epi16_256
(
a_r_m7_m3
,
a_i_m7_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_m3
=
square_a_64qam_epi16_256
(
a_r_m7_m3
,
a_i_m7_m3
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_m5
=
square_a_64qam_epi16_256
(
a_r_m7_m5
,
a_i_m7_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_m5
=
square_a_64qam_epi16_256
(
a_r_m7_m5
,
a_i_m7_m5
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_m256i
a_sq_m7_m7
=
square_a_64qam_epi16_256
(
a_r_m7_m7
,
a_i_m7_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
simde_
_
m256i
a_sq_m7_m7
=
square_a_64qam_epi16_256
(
a_r_m7_m7
,
a_i_m7_m7
,
ch_mag_int
,
SQRT_42_OVER_FOUR
);
// Computing different multiples of ||h0||^2
// Computing different multiples of ||h0||^2
// x=1, y=1
// x=1, y=1
...
@@ -4868,7 +4858,6 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
...
@@ -4868,7 +4858,6 @@ void nr_ulsch_qam64_qam64(c16_t *stream0_in,
ch_mag_int_with_sigma2
=
simde_mm_srai_epi16
(
ch_mag_int
,
1
);
// *2
ch_mag_int_with_sigma2
=
simde_mm_srai_epi16
(
ch_mag_int
,
1
);
// *2
two_ch_mag_int_with_sigma2
=
ch_mag_int
;
// *4
two_ch_mag_int_with_sigma2
=
ch_mag_int
;
// *4
three_ch_mag_int_with_sigma2
=
simde_mm_adds_epi16
(
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
);
// *6
three_ch_mag_int_with_sigma2
=
simde_mm_adds_epi16
(
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
);
// *6
simde__m128i
tmp_result
,
tmp_result2
,
tmp_result3
,
tmp_result4
;
simde__m128i
a_r_p7_p7
=
interference_abs_64qam_epi16
(
psi_r_p7_p7
,
simde__m128i
a_r_p7_p7
=
interference_abs_64qam_epi16
(
psi_r_p7_p7
,
ch_mag_int_with_sigma2
,
ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
,
two_ch_mag_int_with_sigma2
,
...
...
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