[hamradio-commits] [gnss-sdr] 122/149: adding neon implementation

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Sat Feb 6 19:43:11 UTC 2016


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.

commit 1d9fc3ceaee912ce9aac7fc570350e63a6230187
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Mon Jan 25 20:53:02 2016 +0100

    adding neon implementation
---
 .../volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h  | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h
index 8da330a..8d8c8f0 100644
--- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h
+++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_conjugate_8ic.h
@@ -304,4 +304,39 @@ static inline void volk_gnsssdr_8ic_conjugate_8ic_u_orc(lv_8sc_t* cVector, const
 }
 #endif /* LV_HAVE_ORC */
 
+
+#ifdef LV_HAVE_NEON
+#include <arm_neon.h>
+/*!
+ \brief Takes the conjugate of an unsigned char vector.
+ \param cVector The vector where the results will be stored
+ \param aVector Vector to be conjugated
+ \param num_points The number of unsigned char values in aVector to be conjugated and stored into cVector
+ */
+static inline void volk_gnsssdr_8ic_conjugate_8ic_neon(lv_8sc_t* cVector, const lv_8sc_t* aVector, unsigned int num_points)
+{
+    const unsigned int sse_iters = num_points / 8;
+    lv_8sc_t* c = cVector;
+    const lv_8sc_t* a = aVector;
+
+    int8x8x2_t a_val;
+
+    for (unsigned int i = 0; i < sse_iters; ++i)
+        {
+            a_val = vld2_s8((const int8_t*)a);
+            __builtin_prefetch(a + 16);
+            a_val.val[1] = vneg_s8(a_val.val[1]);
+            vst2_s8((int8_t*)c, a_val);
+            a += 8;
+            c += 8;
+        }
+
+    for (unsigned int i = sse_iters * 8; i < num_points; ++i)
+        {
+            *c++ = lv_conj(*a++);
+        }
+
+}
+#endif /* LV_HAVE_NEON */
+
 #endif /* INCLUDED_volk_gnsssdr_8ic_conjugate_8ic_H */

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list