aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/convert
Commit message (Collapse)AuthorAgeFilesLines
* cmake: Update coding style to use lowercase commandsMartin Braun2018-11-141-31/+31
| | | | | | | | | | | | | | | | | Also updates our coding style file. Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case. Run the following shell code (with GNU compliant sed): cmake --help-command-list | grep -v "cmake version" | while read c; do echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g' done > convert.sed \ && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' \ '*CMakeLists.txt' | xargs -0 gsed -i -f convert.sed && rm convert.sed (Make sure the backslashes don't get mangled!)
* host: lib: convert: Add CMake flag for NEON SIMDBrent Stapleton2018-09-121-1/+5
| | | | | | | Adding CMake flag to enable/disable NEON SIMD instructions. This is an addition to the previous checks (check for NEON headers and checking the size of pointers), so behavior is unchanged unless users specify that they do not want to use NEON instructions.
* uhd: Update license headersMartin Braun2018-02-1924-22/+46
| | | | | | | All copyright is now attributed to "Ettus Research, a National Instruments company". SPDX headers were also updated to latest version 3.0.
* converters: Swap 16 bit samples (s16)Martin Braun2017-12-221-20/+6
|
* Move all license headers to SPDX format.Martin Braun2017-12-2224-288/+24
|
* converters: Remove log message in register_converterMartin Braun2017-09-291-1/+1
| | | | | Similar to b431866a5, this reduces logging in static initializer blocks. Those are prone to hang during DLL initialization.
* build: Enable SSSE3 sc12 converters by build switch onlyTom Tsou2017-07-261-0/+2
| | | | | | | | | | | | | | | The existence of SSSE3 intrinsic headers is not a sufficient condition that SSSE3 support is available, which may lead to 'illegal instruction' runtime failuire on some platforms. Major OS distributions (Ubuntu, Fedora, etc.) include x86_64 intrinsic headers, though the underlying architecture may or may not support the instruction set. Assuming SSE2 availability is safe as instructions are present on all x86_64 architectures for which instrinsic headers would be present. The same cannot be said for SSSE3. Issue: #1761
* convert: Add SSE implementation for sc12Tom Tsou2017-07-257-211/+719
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implementation uses SSSE3 intructions to perform 12-bit sample pack/unpack operations to/from standard 16 and 32 bit host values. Input/output shuffle orderings for a single 128-bit SSE register with 16-bit integers shown below. 16-bit interleaved I/Q --------------------------------------- | Q3 | I3 | Q2 | I2 | Q1 | I1 | Q0 | I0 | Input --------------------------------------- | 127 0 | 12-bit packed I/Q byteswapped ----------------------- | I0 | Q0 | I1 | 0 |-----------------------| | I1 | Q1 | I2 | Q2 | Output |-----------------------| | Q2 | I3 | Q3 | |-----------------------| | Unused | 3 ----------------------- 31 0 Fixes: #1740, #966 Related: #1739
* convert: Add sc12-sc16 convertersTom Tsou2017-07-182-24/+117
| | | | | | | | | | | | | | | | | Create missing sc12-sc16 and sc16-sc12 type converters. To avoid replicating the full sc12 converter class object, overload the converter calls with C++11 std::enable_if metafunctions. When used with std::is_floating and std::is_integral templates, this allow a single template interface with compile time function selection and static type checking. Note the below std::enable_if interface is confusing, but quite effective in this case. typename enable_if<is_floating_point<type>::value>::type* = NULL Fixes: #966 Related: #967, #1721
* utils: introduce new logging API and remove msg APIAndrej Rode2017-02-204-14/+8
|
* uhd: replace BOOST_FOREACH with C++11 range-based for loopAndrej Rode2017-02-101-2/+1
| | | | | Note: This is the first commit that uses for-range, and range-based for-loops are now usable for UHD development.
* Remove all boost:: namespace prefix for uint32_t, int32_t etc. (fixed-width ↵Martin Braun2016-11-087-106/+106
| | | | | | | | types) - Also removes all references to boost/cstdint.hpp and replaces it with stdint.h (The 'correct' replacement would be <cstdint>, but not all of our compilers support that).
* Merge branch 'maint'Martin Braun2016-06-232-0/+10
|\ | | | | | | | | Conflicts: host/lib/usrp/b200/b200_impl.cpp
| * converters: Clarifying comment re packingMartin Braun2016-06-222-0/+10
| |
* | Merge branch 'maint'Martin Braun2016-06-171-2/+1
|\|
| * convert: remove duplicate registration of sc12 sizeNicholas Corgan2016-06-171-2/+1
| |
* | Merge branch 'maint'Martin Braun2016-03-251-2/+46
|\|
| * Unroll the loops in the NEON float to/from integer converters.Philip Balister2016-03-231-2/+46
| | | | | | | | | | | | | | | | Unrolling the RX loop showed marked improvement with perf. The TX path was only slightly better. Checked signal correctness with shinysdr to verify received signal and tx_waveforms into a spectrum analyzer for TX. Signed-off-by: Philip Balister <philip@opensdr.com>
* | convert: Fixed s16 that would fail on some platforms/compilersMartin Braun2015-10-081-8/+4
| |
* | Merge branch 'maint'Martin Braun2015-09-111-1/+1
|\|
| * cmake: Checked for ARMv8 to avoid building ARMv7 convertersMartin Braun2015-09-111-1/+1
| |
* | convert: Added s8, s16 types and did some refactoringMartin Braun2015-09-012-29/+106
|/
* convert: Added converters for raw stringsMartin Braun2015-07-313-14/+76
| | | | | - u8: Converts arbitrary-length strings from and to item32 - item32->item32 memcpy non-conversion
* uhd: Replacing Cheetah w/ Mako 0.4.2 (allows Python 3 compat)Martin Braun2015-07-141-37/+39
|
* uhd: Removed the ORC dependencyMartin Braun2015-07-014-181/+2
|
* convert: Add sc16-sc16 SSE converterTom Tsou2015-05-142-0/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | The sc16-sc16 wire to host type converter is effectively an I/Q swap or 16-bit byteswap for little and big endian cases respectively. This implmentation is a subset of fc32 and fc64 converters without the floating point portion and scaling. The resulting byte ordering is as follows: ----------------- | A | B | C | D | Wire ----------------- 0 1 2 3 ----------------- | C | D | A | B | Litte-endian ----------------- 0 1 2 3 ----------------- | B | A | D | C | Big-endian ----------------- 0 1 2 3 Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
* convert: Added logging point in get_converter()Martin Braun2015-01-271-1/+16
|
* convert: Modifications to id_typeMartin Braun2015-01-271-3/+12
| | | | | - Converter ID symbols are exported - to_string() function for lighter feedback
* docs: Amended docs for conversion routinesMartin Braun2015-01-141-0/+13
|
* convert: Removed default-all-lines 12-bit packerMartin Braun2015-01-141-21/+6
|
* convert: Limit sc12 converter buffer overwriteTom Tsou2015-01-141-12/+74
| | | | | | | | | | | | | | | | | | | | | This patch addresses issue #648 "B200: TX with SC12 format and MIMO". The observed MIMO header corruption was caused by overwriting the end of the packed 12-bit sample output buffer. The overwrite was due to the converter call always writing out 4 complex samples even if less than 4 samples were available. The extra samples would corrupt data with zero padding. Avoid the overwrite condition by only writing the minimum number of 32-bit lines necessary rather than the entire 12 byte struct. Samples 32-bit lines 1 1 2 2 3 3 4 3 Signed-off-by: Tom Tsou <tom@tsou.cc>
* convert: Fix sc12 unpack shiftingTom Tsou2015-01-121-8/+8
| | | | | | | | | | | | Resolve issue #666 "B200: Rx signal distortion when using SC12". During 12-bit unpacking, OTW samples are shifted into the high order bits of the 16-bit intermediate values. The remaining 4-bits are not zeroed and contain bits from adjacent samples. Consequently, signal distortion becomes noticable with spurs and other random signal garbage when operating at low signal levels. Signed-off-by: Tom Tsou <tom@tsou.cc>
* Initial commit E300 support.Martin Braun2014-10-073-1/+75
|
* Added missing pure virtual destructors to base classesNicholas Corgan2014-09-011-0/+4
|
* Restoring compatibility with CMake 2.6Nicholas Corgan2014-08-141-1/+1
| | | | | * The UNSET command didn't exist back then, but using SET with no value does the same thing * CMake 2.6 doesn't like nested parantheses in IF statements, so tweak IF/ELSE statements
* Fix issue with "item32" registered size, Bug 466.Ben Hilburn2014-06-131-0/+3
|\
| * UHD: Addressing Bug 466, as per Balint.Ben Hilburn2014-05-221-0/+3
| |
* | Do not set the mfloat-soft flag during the test for arm_neon.h.Philip Balister2014-06-031-7/+0
|/ | | | | | | Use the flags passed in from the toolchain. If this test runs on a hard-float system, bad things happen. Signed-off-by: Philip Balister <philip@opensdr.com>
* uhd: Registered sc12 as typeMartin Braun2014-04-101-0/+1
|
* Merging USRP X300 and X310 support!!Ben Hilburn2014-02-041-2/+15
|
* Merge of mwest's fix to the sse2_fc32_to_sc16 converter.Ben Hilburn2013-12-111-1/+1
|
* Squashed merge of Coverity fixes.Ben Hilburn2013-11-275-30/+67
|
* sc12: fixed byte alignment issueJohannes Demel2013-11-191-4/+57
|
* convert: added sc12 and fc32 convertersJosh Blum2013-08-284-1/+413
|
* convert: sc8 swap for vita complianceJosh Blum2013-08-288-55/+54
|
* orc: added std cmake finder script for orcJosh Blum2013-03-291-5/+4
|
* convert: add sc8 host to/from sc8 wire formatJosh Blum2012-06-122-0/+27
|
* convert: applied sc8 signed convert fixJosh Blum2012-05-101-8/+12
|
* convert: some platform specific fixesJosh Blum2012-05-094-8/+15
| | | | | | | neon: missing header windows: shuffle needs to be deemed "constant expression", fixed with a template parameter.
* convert: squashed converter and sse2 workJosh Blum2012-05-0913-497/+714
|