diff --git a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_gps_sdr_acquisition_ss.cc b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_gps_sdr_acquisition_ss.cc index fc5664e7e..001797f38 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_gps_sdr_acquisition_ss.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_gps_sdr_acquisition_ss.cc @@ -34,13 +34,10 @@ #include "gps_sdr_fft.h" #include "gps_sdr_prn_codes_short.h" #include "control_message_factory.h" - -#ifdef NO_SIMD - #include "gps_sdr_x86.h" -#else +#include "gps_sdr_x86.h" +#ifndef NO_SIMD #include "gps_sdr_simd.h" #endif - #include #include @@ -183,15 +180,13 @@ int gps_l1_ca_gps_sdr_acquisition_ss::general_work(int noutput_items, << " bytes into buffer (" << d_fft_size << " samples)"; memcpy(d_baseband_signal, in, d_fft_size * sizeof(CPX)); #ifdef NO_SIMD - x86_cmulsc(d_baseband_signal, d_sine_250, + x86_cmulsc(d_baseband_signal, d_sine_250, &d_baseband_signal[d_fft_size], d_fft_size, 14); x86_cmulsc(d_baseband_signal, d_sine_500, &d_baseband_signal[2 * d_fft_size], d_fft_size, 14); x86_cmulsc(d_baseband_signal, d_sine_750, &d_baseband_signal[3 * d_fft_size], d_fft_size, 14); - x86_cmuls(d_baseband_signal, d_sine_if, d_fft_size, 14); - #else sse_cmulsc(d_baseband_signal, d_sine_250, &d_baseband_signal[d_fft_size], d_fft_size, 14); @@ -199,7 +194,6 @@ int gps_l1_ca_gps_sdr_acquisition_ss::general_work(int noutput_items, * d_fft_size], d_fft_size, 14); sse_cmulsc(d_baseband_signal, d_sine_750, &d_baseband_signal[3 * d_fft_size], d_fft_size, 14); - sse_cmuls(d_baseband_signal, d_sine_if, d_fft_size, 14); #endif for (unsigned int i = 0; i < d_doppler_resolution; i++) @@ -227,14 +221,12 @@ int gps_l1_ca_gps_sdr_acquisition_ss::general_work(int noutput_items, x86_cmulsc(&d_baseband_signal_shift[(j * (d_fft_size + 201)) + 100 + i], d_fft_codes[d_satellite], buffer, d_fft_size, 10); - #else sse_cmulsc(&d_baseband_signal_shift[(j * (d_fft_size + 201)) + 100 + i], d_fft_codes[d_satellite], buffer, - d_fft_size, 10); - + d_fft_size, 10); #endif - d_piFFT->doiFFT(buffer, true); + d_piFFT->doiFFT(buffer, true); x86_cmag(buffer, d_fft_size); x86_max((unsigned int *)buffer, &indext, &magt, d_fft_size); diff --git a/src/algorithms/acquisition/gnuradio_blocks/jamfile.jam b/src/algorithms/acquisition/gnuradio_blocks/jamfile.jam index db00608aa..09b5b6f3a 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/jamfile.jam +++ b/src/algorithms/acquisition/gnuradio_blocks/jamfile.jam @@ -1,6 +1,6 @@ project : build-dir ../../../../build ; obj gps_l1_ca_gps_sdr_acquisition_cc : gps_l1_ca_gps_sdr_acquisition_cc.cc ; -obj gps_l1_ca_gps_sdr_acquisition_ss : gps_l1_ca_gps_sdr_acquisition_ss.cc : darwin:NO_SIMD ; +obj gps_l1_ca_gps_sdr_acquisition_ss : gps_l1_ca_gps_sdr_acquisition_ss.cc : darwin:NO_SIMD gcc:USE_SIMD ; obj gps_l1_ca_pcps_acquisition_cc : gps_l1_ca_pcps_acquisition_cc.cc ; obj gps_l1_ca_tong_pcps_acquisition_cc : gps_l1_ca_tong_pcps_acquisition_cc.cc ; diff --git a/src/algorithms/libs/gps_sdr_simd.cc b/src/algorithms/libs/gps_sdr_simd.cc index 0ff08c93f..83b0ee84d 100644 --- a/src/algorithms/libs/gps_sdr_simd.cc +++ b/src/algorithms/libs/gps_sdr_simd.cc @@ -20,9 +20,7 @@ write to the: Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ************************************************************************************************/ -#ifdef NO_SIMD -#else - +#ifdef USE_SIMD #include "gps_sdr_simd.h" // __asm diff --git a/src/algorithms/libs/jamfile.jam b/src/algorithms/libs/jamfile.jam index d213aee25..fd86a4413 100644 --- a/src/algorithms/libs/jamfile.jam +++ b/src/algorithms/libs/jamfile.jam @@ -3,8 +3,8 @@ project : build-dir ../../../build ; obj gps_sdr_signal_processing : gps_sdr_signal_processing.cc ; obj gnss_sdr_valve : gnss_sdr_valve.cc ; obj pass_through : pass_through.cc ; -obj gps_sdr_fft : gps_sdr_fft.cc : darwin:NO_SIMD ; -obj gps_sdr_simd : gps_sdr_simd.cc : darwin:NO_SIMD ; +obj gps_sdr_fft : gps_sdr_fft.cc : darwin:NO_SIMD gcc:USE_SIMD ; +obj gps_sdr_simd : gps_sdr_simd.cc : darwin:NO_SIMD gcc:USE_SIMD ; obj gps_sdr_x86 : gps_sdr_x86.cc ; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc index e04758974..5ff7f5a72 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc @@ -36,7 +36,9 @@ #include "gps_l1_ca_dll_fll_pll_tracking.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" -#include +#ifdef GNSS_SDR_USE_BOOST_ROUND + #include +#endif #include #include @@ -84,8 +86,12 @@ GpsL1CaDllFllPllTracking::GpsL1CaDllFllPllTracking( std::string default_dump_filename = "./track_ch"; dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); //unused! - + #ifdef USE_BOOST_ROUND vector_length = round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); + #else + vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); + #endif + //################# MAKE TRACKING GNURadio object ################### if (item_type.compare("gr_complex") == 0) diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc index 807126f5c..7477446d9 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc @@ -36,7 +36,9 @@ #include "gps_l1_ca_dll_pll_tracking.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" -#include +#ifdef GNSS_SDR_USE_BOOST_ROUND + #include +#endif #include #include @@ -80,9 +82,11 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking( std::string default_dump_filename = "./track_ch"; dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); //unused! - + #ifdef GNSS_SDR_USE_BOOST_CONST vector_length = round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); - + #else + vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); + #endif //################# MAKE TRACKING GNURadio object ################### if (item_type.compare("gr_complex") == 0) { diff --git a/src/algorithms/tracking/adapters/jamfile.jam b/src/algorithms/tracking/adapters/jamfile.jam index 9e9101fd7..655b271ca 100644 --- a/src/algorithms/tracking/adapters/jamfile.jam +++ b/src/algorithms/tracking/adapters/jamfile.jam @@ -1,4 +1,4 @@ project : build-dir ../../../../build ; -obj gps_l1_ca_dll_pll_tracking : gps_l1_ca_dll_pll_tracking.cc ; -obj gps_l1_ca_dll_fll_pll_tracking : gps_l1_ca_dll_fll_pll_tracking.cc ; \ No newline at end of file +obj gps_l1_ca_dll_pll_tracking : gps_l1_ca_dll_pll_tracking.cc : darwin:GNSS_SDR_USE_BOOST_ROUND ; +obj gps_l1_ca_dll_fll_pll_tracking : gps_l1_ca_dll_fll_pll_tracking.cc : darwin:GNSS_SDR_USE_BOOST_ROUND ; diff --git a/src/main/jamfile.jam b/src/main/jamfile.jam index 1c3ee08ff..0b86c6f6b 100644 --- a/src/main/jamfile.jam +++ b/src/main/jamfile.jam @@ -16,7 +16,7 @@ exe gnss-sdr : main.cc ../algorithms/libs//gnss_sdr_valve ../algorithms/libs//pass_through ../algorithms/libs//gps_sdr_fft -#../algorithms/libs//gps_sdr_simd +../algorithms/libs//gps_sdr_simd ../algorithms/libs//gps_sdr_x86 ../algorithms/observables/adapters//gps_l1_ca_observables ../algorithms/observables/gnuradio_blocks//gps_l1_ca_observables_cc