aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/convert
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Merge branch 'maint'Josh Blum2012-05-091-16/+24
|\
| * convert: fixed sc8 convert issue w/ undefined behaviourJosh Blum2012-05-081-16/+24
| | | | | | | | | | | | | | Its important to use a signed cast when converting float to int. Then assign that signed int to an unsigned type of the same width. Its undefined behaviour when converting a negative float to an unsigned int.
* | convert: added prio param to get converterJosh Blum2012-04-271-20/+23
|/ | | | We can now test generic conversion implementations against SIMD (for example)
* convert: give SIMD conversions prio over tableJosh Blum2012-04-161-2/+2
| | | | | | | | given performance benchmarks involving the converter, when the driver is also doing other things sc8 conversions will still involve tables since no SIMD implementations exist yet