summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h5
-rw-r--r--volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc17
2 files changed, 16 insertions, 6 deletions
diff --git a/volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h b/volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h
index 224ab19c8e..b4214f5d2d 100644
--- a/volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h
+++ b/volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h
@@ -81,10 +81,9 @@ static inline void volk_32fc_x2_multiply_32fc_a16_generic(lv_32fc_t* cVector, co
\param bVector One of the vectors to be multiplied
\param num_points The number of complex values in aVector and bVector to be multiplied together and stored into cVector
*/
-extern void volk_32fc_x2_multiply_32fc_a16_orc_impl(lv_32fc_t* cVector, const lv_32fc_t* aVector, const lv_32fc_t* bVector, float mask, unsigned int num_points);
+extern void volk_32fc_x2_multiply_32fc_a16_orc_impl(lv_32fc_t* cVector, const lv_32fc_t* aVector, const lv_32fc_t* bVector, unsigned int num_points);
static inline void volk_32fc_x2_multiply_32fc_a16_orc(lv_32fc_t* cVector, const lv_32fc_t* aVector, const lv_32fc_t* bVector, unsigned int num_points){
- static const float mask = -0.0;
- volk_32fc_x2_multiply_32fc_a16_orc_impl(cVector, aVector, bVector, mask, num_points);
+ volk_32fc_x2_multiply_32fc_a16_orc_impl(cVector, aVector, bVector, num_points);
}
#endif /* LV_HAVE_ORC */
diff --git a/volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc b/volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc
index b72dfe8e73..a27d722cdb 100644
--- a/volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc
+++ b/volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc
@@ -1,7 +1,18 @@
.function volk_32fc_x2_multiply_32fc_a16_orc_impl
.source 8 src1
.source 8 src2
-.floatparam 4 mask
.dest 8 dst
-.temp 8 tmp
-x2 mulf dst, src1, src2
+.temp 8 iqprod
+.temp 4 real
+.temp 4 imag
+.temp 4 ac
+.temp 4 bd
+.temp 8 swapped
+x2 mulf iqprod, src1, src2
+splitql bd, ac, iqprod
+subf real, ac, bd
+swaplq swapped, src1
+x2 mulf iqprod, swapped, src2
+splitql bd, ac, iqprod
+addf imag, ac, bd
+mergelq dst, real, imag