diff options
author | Nick Foster <nick@ettus.com> | 2011-05-23 22:36:51 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-06-14 17:27:46 -0700 |
commit | 00ee732c00fa74054117ef703afa1bf30bf53f50 (patch) | |
tree | b4fe2de2754aa309065055f7e9a9a3d074925366 | |
parent | 3dca19a3e7f56c64423789ee025f16150b1a2cdb (diff) | |
download | uhd-00ee732c00fa74054117ef703afa1bf30bf53f50.tar.gz uhd-00ee732c00fa74054117ef703afa1bf30bf53f50.tar.bz2 uhd-00ee732c00fa74054117ef703afa1bf30bf53f50.zip |
UHD: added item32<->sc16 conversions in Orc
-rw-r--r-- | host/include/uhd/convert.hpp | 2 | ||||
-rw-r--r-- | host/lib/convert/convert_orc.orc | 39 | ||||
-rw-r--r-- | host/lib/convert/convert_with_orc.cpp | 20 |
3 files changed, 58 insertions, 3 deletions
diff --git a/host/include/uhd/convert.hpp b/host/include/uhd/convert.hpp index c30484384..99f1860ae 100644 --- a/host/include/uhd/convert.hpp +++ b/host/include/uhd/convert.hpp @@ -40,7 +40,7 @@ namespace uhd{ namespace convert{ */ enum priority_type{ PRIORITY_GENERAL = 0, - PRIORITY_LIBORC = 4, + PRIORITY_LIBORC = 1, PRIORITY_CUSTOM = 2, PRIORITY_EMPTY = -1, }; diff --git a/host/lib/convert/convert_orc.orc b/host/lib/convert/convert_orc.orc index 83e63f22c..78718d229 100644 --- a/host/lib/convert/convert_orc.orc +++ b/host/lib/convert/convert_orc.orc @@ -5,7 +5,6 @@ .temp 8 scaled .temp 8 converted .temp 4 short - x2 mulf scaled, src, scalar x2 convfl converted, scaled x2 convlw short, converted @@ -19,8 +18,44 @@ x2 swapw dst, short .temp 8 scaled .temp 8 converted .temp 4 short - x2 mulf scaled, src, scalar x2 convfl converted, scaled x2 convlw short, converted x2 swapw dst, short + +.function _convert_item32_1_to_fc32_1_nswap_orc +.source 4 src +.dest 8 dst +.floatparam 4 scalar +.temp 4 tmp1 +.temp 8 tmp2 +x2 swapw tmp1, src +swapl tmp1, tmp1 +x2 convswl tmp2, tmp1 +x2 convlf tmp2, tmp2 +x2 mulf dst, tmp2, scalar + +.function _convert_item32_1_to_fc32_1_bswap_orc +.source 4 src +.dest 8 dst +.floatparam 4 scalar +.temp 4 tmp1 +.temp 8 tmp2 +x2 swapw tmp1, src +x2 convswl tmp2, tmp1 +x2 convlf tmp2, tmp2 +x2 mulf dst, tmp2, scalar + +.function _convert_sc16_1_to_item32_1_nswap_orc +.source 4 src +.dest 4 dst +.floatparam 4 scalar +swapl dst, src +x2 swapw dst, dst + +.function _convert_item32_1_to_sc16_1_nswap_orc +.source 4 src +.dest 4 dst +.floatparam 4 scalar +x2 swapw dst, src +swapl dst, dst diff --git a/host/lib/convert/convert_with_orc.cpp b/host/lib/convert/convert_with_orc.cpp index 2d50351e4..6f2f47784 100644 --- a/host/lib/convert/convert_with_orc.cpp +++ b/host/lib/convert/convert_with_orc.cpp @@ -24,6 +24,10 @@ using namespace uhd::convert; extern "C" { extern void _convert_fc32_1_to_item32_1_nswap_orc(void *, const void *, float, int); extern void _convert_fc32_1_to_item32_1_bswap_orc(void *, const void *, float, int); +extern void _convert_item32_1_to_fc32_1_nswap_orc(void *, const void *, float, int); +extern void _convert_item32_1_to_fc32_1_bswap_orc(void *, const void *, float, int); +extern void _convert_sc16_1_to_item32_1_nswap_orc(void *, const void *, float, int); +extern void _convert_item32_1_to_sc16_1_nswap_orc(void *, const void *, float, int); } DECLARE_CONVERTER(convert_fc32_1_to_item32_1_nswap, PRIORITY_LIBORC){ @@ -33,3 +37,19 @@ DECLARE_CONVERTER(convert_fc32_1_to_item32_1_nswap, PRIORITY_LIBORC){ DECLARE_CONVERTER(convert_fc32_1_to_item32_1_bswap, PRIORITY_LIBORC){ _convert_fc32_1_to_item32_1_bswap_orc(outputs[0], inputs[0], scale_factor, nsamps); } + +DECLARE_CONVERTER(convert_item32_1_to_fc32_1_nswap, PRIORITY_LIBORC){ + _convert_item32_1_to_fc32_1_nswap_orc(outputs[0], inputs[0], scale_factor, nsamps); +} + +DECLARE_CONVERTER(convert_item32_1_to_fc32_1_bswap, PRIORITY_LIBORC){ + _convert_item32_1_to_fc32_1_bswap_orc(outputs[0], inputs[0], scale_factor, nsamps); +} + +DECLARE_CONVERTER(convert_sc16_1_to_item32_1_nswap, PRIORITY_LIBORC){ + _convert_sc16_1_to_item32_1_nswap_orc(outputs[0], inputs[0], scale_factor, nsamps); +} + +DECLARE_CONVERTER(convert_item32_1_to_sc16_1_nswap, PRIORITY_LIBORC){ + _convert_item32_1_to_sc16_1_nswap_orc(outputs[0], inputs[0], scale_factor, nsamps); +} |