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
zzha zzha
OpenXG-RAN
Commits
47e150fb
Commit
47e150fb
authored
Aug 04, 2023
by
Raymond Knopp
Committed by
Robert Schmidt
Sep 13, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixes radix-2 butterfly for NEON, dft size 512 works properly now
parent
fa73c14d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
6 deletions
+22
-6
openair1/PHY/TOOLS/Makefile
openair1/PHY/TOOLS/Makefile
+3
-0
openair1/PHY/TOOLS/oai_dfts_neon.c
openair1/PHY/TOOLS/oai_dfts_neon.c
+19
-6
No files found.
openair1/PHY/TOOLS/Makefile
View file @
47e150fb
...
...
@@ -14,3 +14,6 @@ oai_dfts_sse4.s: oai_dfts.c
dft_cycles_avx2
:
oai_dfts_avx2
./oai_dfts_avx2 | egrep cycles
oai_dfts_aarch64
:
oai_dfts_neon.c
gcc
-O2
-std
=
gnu99
-gdwarf-2
-lgcc
-lrt
-g
-ggdb
-o
oai_dfts_neon oai_dfts_neon.c ../../../common/utils/time_meas.c ../../SIMULATION/TOOLS/taus.c
$$
OPENAIR_HOME/common/utils/LOG/log.c ../../SIMULATION/TOOLS/rangen_double.c
-I
$$
OPENAIR_HOME
-I
$$
OPENAIR1_DIR
-I
$$
OPENAIR_TARGETS
-I
$$
OPENAIR_TARGETS/COMMON
-I
$$
OPENAIR_HOME/radio/COMMON
-I
$$
OPENAIR2_DIR
-I
$$
OPENAIR2_DIR/COMMON
-I
$$
OPENAIR_HOME/common/utils
-I
$$
OPENAIR_HOME/common/utils/T
-I
$$
OPENAIR_HOME/common/utils/msc
-I
$$
OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc
-DMR_MAIN
-DNB_ANTENNAS_RX
=
1
-DNB_ANTENNAS_TX
=
1
-DMAX_NUM_CCs
=
1
-lm
-lpthread
openair1/PHY/TOOLS/oai_dfts_neon.c
View file @
47e150fb
...
...
@@ -287,8 +287,11 @@ static inline void bfly2_16(int16x8_t *x0, int16x8_t *x1, int16x8_t *y0, int16x8
static
inline
void
bfly2_16
(
int16x8_t
*
x0
,
int16x8_t
*
x1
,
int16x8_t
*
y0
,
int16x8_t
*
y1
,
int16x8_t
*
tw
,
int16x8_t
*
twb
)
{
*
y0
=
vqaddq_s16
(
*
x0
,
*
x1
);
*
y1
=
vqsubq_s16
(
*
x0
,
*
x1
);
int16x8_t
x1t
;
x1t
=
packed_cmult2
(
*
(
x1
),
*
(
tw
),
*
(
twb
));
*
y0
=
vqaddq_s16
(
*
x0
,
x1t
);
*
y1
=
vqsubq_s16
(
*
x0
,
x1t
);
}
static
inline
void
ibfly2
(
int16x8_t
*
x0
,
int16x8_t
*
x1
,
int16x8_t
*
y0
,
int16x8_t
*
y1
,
int16x8_t
*
tw
)
...
...
@@ -1534,7 +1537,7 @@ void dft512(int16_t *x,int16_t *y,unsigned char scale)
{
simdshort_q15_t
xtmp
[
256
],
*
xtmpp
,
*
x64
=
(
simdshort_q15_t
*
)
x
;
simd_q15_t
ytmp
[
128
],
*
tw512a_128p
=
(
simd_q15_t
*
)
tw512a
,
*
tw512b_128p
=
(
simd_q15_t
*
)
tw512b
,
*
y128
=
(
simd_q15_t
*
)
y
,
*
y128p
=
(
simd_q15_t
*
)
y
;
simd_q15_t
ytmp
[
128
],
*
tw512
_128p
=
(
simd_q15_t
*
)
tw512
,
*
tw512
a_128p
=
(
simd_q15_t
*
)
tw512a
,
*
tw512b_128p
=
(
simd_q15_t
*
)
tw512b
,
*
y128
=
(
simd_q15_t
*
)
y
,
*
y128p
=
(
simd_q15_t
*
)
y
;
simd_q15_t
*
ytmpp
=
&
ytmp
[
0
];
int
i
;
simd_q15_t
ONE_OVER_SQRT2_Q15_128
=
set1_int16
(
ONE_OVER_SQRT2_Q15
);
...
...
@@ -7147,7 +7150,7 @@ void idft(uint8_t sizeidx, int16_t *input,int16_t *output,unsigned char scale_fl
#ifdef MR_MAIN
#include <string.h>
#include <stdio.h>
/*
#define LOG_M write_output
int write_output(const char *fname,const char *vname,void *data,int length,int dec,char format)
{
...
...
@@ -7303,6 +7306,12 @@ int write_output(const char *fname,const char *vname,void *data,int length,int d
return 0;
}
*/
#include "common/config/config_paramdesc.h"
void
exit_function
(
const
char
*
file
,
const
char
*
function
,
const
int
line
,
const
char
*
s
,
const
int
assert
)
{
return
;
}
int
oai_exit
=
0
;
int
config_get
(
paramdef_t
*
params
,
int
numparams
,
char
*
prefix
)
{
return
;}
int
config_check_unknown_cmdlineopt
(
char
*
prefix
)
{
return
;
}
int
main
(
int
argc
,
char
**
argv
)
{
...
...
@@ -7669,6 +7678,10 @@ int main(int argc, char**argv)
printf
(
"
\n\n
512-point(%f cycles)
\n
"
,(
double
)
ts
.
diff
/
(
double
)
ts
.
trials
);
LOG_M
(
"y512.m"
,
"y512"
,
y
,
512
,
1
,
1
);
LOG_M
(
"x512.m"
,
"x512"
,
x
,
512
,
1
,
1
);
dft512
((
int16_t
*
)
y
,(
int16_t
*
)
x
,
1
);
LOG_M
(
"y512_dft.m"
,
"y512"
,
y
,
512
,
1
,
1
);
LOG_M
(
"x512_dft.m"
,
"x512"
,
x
,
512
,
1
,
1
);
/*
printf("X: ");
for (i=0;i<64;i++)
...
...
@@ -7810,8 +7823,8 @@ int main(int argc, char**argv)
LOG_M
(
"y4096.m"
,
"y4096"
,
y
,
4096
,
1
,
1
);
LOG_M
(
"x4096.m"
,
"x4096"
,
x
,
4096
,
1
,
1
);
dft4096
((
int16_t
*
)
y
,(
int16_t
*
)
x
2
,
1
);
LOG_M
(
"x4096_2.m"
,
"x4096_2"
,
x
2
,
4096
,
1
,
1
);
dft4096
((
int16_t
*
)
y
,(
int16_t
*
)
x
,
1
);
LOG_M
(
"x4096_2.m"
,
"x4096_2"
,
x
,
4096
,
1
,
1
);
// NR 160Mhz, 434 PRB, 3/4 sampling
memset
((
void
*
)
x
,
0
,
6144
*
sizeof
(
int32_t
));
...
...
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