summaryrefslogtreecommitdiff
path: root/volk/orc
diff options
context:
space:
mode:
Diffstat (limited to 'volk/orc')
-rw-r--r--volk/orc/Makefile.am6
-rw-r--r--volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc24
-rw-r--r--volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc25
-rw-r--r--volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc25
-rw-r--r--volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc21
-rw-r--r--volk/orc/volk_32s_or_aligned16_orc_impl.orc5
6 files changed, 105 insertions, 1 deletions
diff --git a/volk/orc/Makefile.am b/volk/orc/Makefile.am
index c71625d87..3f105fd80 100644
--- a/volk/orc/Makefile.am
+++ b/volk/orc/Makefile.am
@@ -29,11 +29,15 @@ volk_8s_convert_16s_aligned16_orc_impl.orc \
volk_8s_convert_32f_aligned16_orc_impl.orc \
volk_16u_byteswap_aligned16_orc_impl.orc \
volk_32s_and_aligned16_orc_impl.orc \
+volk_32s_or_aligned16_orc_impl.orc \
volk_32f_add_aligned16_orc_impl.orc \
volk_32f_subtract_aligned16_orc_impl.orc \
volk_32f_divide_aligned16_orc_impl.orc \
volk_32f_multiply_aligned16_orc_impl.orc \
-volk_32f_sqrt_aligned16_orc_impl.orc
+volk_32f_sqrt_aligned16_orc_impl.orc \
+volk_16sc_magnitude_32f_aligned16_orc_impl.orc \
+volk_32fc_magnitude_32f_aligned16_orc_impl.orc \
+volk_32fc_magnitude_16s_aligned16_orc_impl.orc
diff --git a/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc
new file mode 100644
index 000000000..f6c959c00
--- /dev/null
+++ b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc
@@ -0,0 +1,24 @@
+.function volk_16sc_magnitude_16s_aligned16_orc_impl
+.source 4 src
+.dest 2 dst
+.temp 2 reals
+.temp 2 imags
+.temp 4 reall
+.temp 4 imagl
+.temp 4 realf
+.temp 4 imagf
+.temp 4 sumf
+.temp 4 rootf
+.temp 4 rootl
+
+splitlw reals, imags, src
+convwl reall, reals
+convwl imagl, imags
+convlf realf, reall
+convlf imagf, imagl
+mulf realf, realf, (1.0 / 32768.0)
+mulf imagf, imagf, (1.0 / 32768.0)
+addf sumf, realf, imagf
+sqrtf rootf, sumf
+convfl rootl, rootf
+conflw dst, rootl
diff --git a/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc b/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc
new file mode 100644
index 000000000..44654ad8e
--- /dev/null
+++ b/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc
@@ -0,0 +1,25 @@
+.function volk_16sc_magnitude_32f_aligned16_orc_impl
+.source 4 src
+.dest 4 dst
+.floatparam 4 scalar
+.temp 4 invscalar
+.temp 4 reall
+.temp 4 imagl
+.temp 2 reals
+.temp 2 imags
+.temp 4 realf
+.temp 4 imagf
+.temp 4 sumf
+
+divf invscalar, 1.0, scalar
+splitlw reals, imags, src
+convswl reall, reals
+convswl imagl, imags
+convlf realf, reall
+convlf imagf, imagl
+mulf realf, realf, invscalar
+mulf imagf, imagf, invscalar
+mulf realf, realf, realf
+mulf imagf, imagf, imagf
+addf sumf, realf, imagf
+sqrtf dst, sumf
diff --git a/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc
new file mode 100644
index 000000000..db8405e59
--- /dev/null
+++ b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc
@@ -0,0 +1,25 @@
+.function volk_32fc_magnitude_16s_aligned16_orc_impl
+.source 8 src
+.dest 2 dst
+.floatparam 4 scalar
+.temp 4 invscalar
+.temp 4 reall
+.temp 4 imagl
+.temp 4 realf
+.temp 4 imagf
+.temp 4 sumf
+.temp 4 rootf
+.temp 4 rootl
+
+divf invscalar, 1.0, scalar
+splitql reall, imagl, src
+convlf realf, reall
+convlf imagf, imagl
+mulf realf, realf, invscalar
+mulf imagf, imagf, invscalar
+mulf realf, realf, realf
+mulf imagf, imagf, imagf
+addf sumf, realf, imagf
+sqrtf rootf, sumf
+convfl rootl, rootf
+convlw dst, rootl
diff --git a/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc b/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc
new file mode 100644
index 000000000..cc5c85b45
--- /dev/null
+++ b/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc
@@ -0,0 +1,21 @@
+.function volk_32fc_magnitude_32f_aligned16_orc_impl
+.source 8 src
+.dest 4 dst
+.floatparam 4 scalar
+.temp 4 invscalar
+.temp 4 reall
+.temp 4 imagl
+.temp 4 realf
+.temp 4 imagf
+.temp 4 sumf
+
+divf invscalar, 1.0, scalar
+splitql reall, imagl, src
+convlf realf, reall
+convlf imagf, imagl
+mulf realf, realf, invscalar
+mulf imagf, imagf, invscalar
+mulf realf, realf, realf
+mulf imagf, imagf, imagf
+addf sumf, realf, imagf
+sqrtf dst, sumf
diff --git a/volk/orc/volk_32s_or_aligned16_orc_impl.orc b/volk/orc/volk_32s_or_aligned16_orc_impl.orc
new file mode 100644
index 000000000..6d2a3859a
--- /dev/null
+++ b/volk/orc/volk_32s_or_aligned16_orc_impl.orc
@@ -0,0 +1,5 @@
+.function volk_32s_or_aligned16_orc_impl
+.dest 4 dst
+.source 4 src1
+.source 4 src2
+orl dst, src1, src2