summaryrefslogtreecommitdiff
path: root/volk/orc
diff options
context:
space:
mode:
Diffstat (limited to 'volk/orc')
-rw-r--r--volk/orc/Makefile.am10
-rw-r--r--volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc5
-rw-r--r--volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc12
-rw-r--r--volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc6
-rw-r--r--volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc14
-rw-r--r--volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc8
-rw-r--r--volk/orc/volk_32f_max_aligned16_orc_impl.orc5
-rw-r--r--volk/orc/volk_32f_min_aligned16_orc_impl.orc5
-rw-r--r--volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc24
-rw-r--r--volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc22
10 files changed, 69 insertions, 42 deletions
diff --git a/volk/orc/Makefile.am b/volk/orc/Makefile.am
index 3f105fd80..797efee18 100644
--- a/volk/orc/Makefile.am
+++ b/volk/orc/Makefile.am
@@ -35,13 +35,17 @@ 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_16sc_magnitude_32f_aligned16_orc_impl.orc \
+volk_32f_max_aligned16_orc_impl.orc \
+volk_32f_min_aligned16_orc_impl.orc \
volk_32fc_magnitude_32f_aligned16_orc_impl.orc \
-volk_32fc_magnitude_16s_aligned16_orc_impl.orc
+volk_32fc_magnitude_16s_aligned16_orc_impl.orc \
+volk_16sc_deinterleave_16s_aligned16_orc_impl.orc \
+volk_16sc_deinterleave_32f_aligned16_orc_impl.orc \
+volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc
-my_ORCC_FLAGS = --implementation --lazy-init $(ORCC_FLAGS)
+my_ORCC_FLAGS = --implementation $(ORCC_FLAGS)
.orc.c:
$(ORCC) $(my_ORCC_FLAGS) -o $@ $<
diff --git a/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc
new file mode 100644
index 000000000..d226064a7
--- /dev/null
+++ b/volk/orc/volk_16sc_deinterleave_16s_aligned16_orc_impl.orc
@@ -0,0 +1,5 @@
+.function volk_16sc_deinterleave_16s_aligned16_orc_impl
+.dest 2 idst
+.dest 2 qdst
+.source 4 src
+splitlw qdst, idst, src
diff --git a/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc
new file mode 100644
index 000000000..dddf682ca
--- /dev/null
+++ b/volk/orc/volk_16sc_deinterleave_32f_aligned16_orc_impl.orc
@@ -0,0 +1,12 @@
+.function volk_16sc_deinterleave_32f_aligned16_orc_impl
+.dest 4 idst
+.dest 4 qdst
+.source 4 src
+.floatparam 4 scalar
+.temp 8 iql
+.temp 8 iqf
+
+x2 convswl iql, src
+x2 convlf iqf, iql
+x2 divf iqf, iqf, scalar
+splitql qdst, idst, iqf
diff --git a/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc
new file mode 100644
index 000000000..609750096
--- /dev/null
+++ b/volk/orc/volk_16sc_deinterleave_real_8s_aligned16_orc_impl.orc
@@ -0,0 +1,6 @@
+.function volk_16sc_deinterleave_real_8s_aligned16_orc_impl
+.dest 1 dst
+.source 4 src
+.temp 2 iw
+select0lw iw, src
+convhwb dst, iw
diff --git a/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc
index f6c959c00..83b867dca 100644
--- a/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc
+++ b/volk/orc/volk_16sc_magnitude_16s_aligned16_orc_impl.orc
@@ -1,6 +1,7 @@
.function volk_16sc_magnitude_16s_aligned16_orc_impl
.source 4 src
.dest 2 dst
+.floatparam 4 scalar
.temp 2 reals
.temp 2 imags
.temp 4 reall
@@ -12,13 +13,16 @@
.temp 4 rootl
splitlw reals, imags, src
-convwl reall, reals
-convwl imagl, imags
+convswl reall, reals
+convswl imagl, imags
convlf realf, reall
convlf imagf, imagl
-mulf realf, realf, (1.0 / 32768.0)
-mulf imagf, imagf, (1.0 / 32768.0)
+divf realf, realf, scalar
+divf imagf, imagf, scalar
+mulf realf, realf, realf
+mulf imagf, imagf, imagf
addf sumf, realf, imagf
sqrtf rootf, sumf
+mulf rootf, rootf, scalar
convfl rootl, rootf
-conflw dst, rootl
+convlw 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
index 44654ad8e..6d2ed8197 100644
--- a/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc
+++ b/volk/orc/volk_16sc_magnitude_32f_aligned16_orc_impl.orc
@@ -2,7 +2,6 @@
.source 4 src
.dest 4 dst
.floatparam 4 scalar
-.temp 4 invscalar
.temp 4 reall
.temp 4 imagl
.temp 2 reals
@@ -11,14 +10,15 @@
.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
+divf realf, realf, scalar
+divf imagf, imagf, scalar
mulf realf, realf, realf
mulf imagf, imagf, imagf
addf sumf, realf, imagf
diff --git a/volk/orc/volk_32f_max_aligned16_orc_impl.orc b/volk/orc/volk_32f_max_aligned16_orc_impl.orc
new file mode 100644
index 000000000..97f48ba4a
--- /dev/null
+++ b/volk/orc/volk_32f_max_aligned16_orc_impl.orc
@@ -0,0 +1,5 @@
+.function volk_32f_max_aligned16_orc_impl
+.dest 4 dst
+.source 4 src1
+.source 4 src2
+maxf dst, src1, src2
diff --git a/volk/orc/volk_32f_min_aligned16_orc_impl.orc b/volk/orc/volk_32f_min_aligned16_orc_impl.orc
new file mode 100644
index 000000000..a597933de
--- /dev/null
+++ b/volk/orc/volk_32f_min_aligned16_orc_impl.orc
@@ -0,0 +1,5 @@
+.function volk_32f_min_aligned16_orc_impl
+.dest 4 dst
+.source 4 src1
+.source 4 src2
+minf dst, src1, src2
diff --git a/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc
index db8405e59..f71dd9a37 100644
--- a/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc
+++ b/volk/orc/volk_32fc_magnitude_16s_aligned16_orc_impl.orc
@@ -2,24 +2,18 @@
.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 8 iqf
+.temp 8 prodiqf
+.temp 4 qf
+.temp 4 if
.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
+x2 mulf prodiqf, src, src
+splitql qf, if, prodiqf
+addf sumf, if, qf
sqrtf rootf, sumf
+mulf rootf, rootf, scalar
convfl rootl, rootf
-convlw dst, rootl
+convssslw 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
index cc5c85b45..47a10531d 100644
--- a/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc
+++ b/volk/orc/volk_32fc_magnitude_32f_aligned16_orc_impl.orc
@@ -1,21 +1,13 @@
.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 8 iqf
+.temp 8 prodiqf
+.temp 4 qf
+.temp 4 if
.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
+x2 mulf prodiqf, src, src
+splitql qf, if, prodiqf
+addf sumf, if, qf
sqrtf dst, sumf