diff options
-rw-r--r-- | volk/include/volk/volk_32fc_x2_multiply_32fc_a16.h | 5 | ||||
-rw-r--r-- | volk/orc/volk_32fc_x2_multiply_32fc_a16_orc_impl.orc | 17 |
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 |