diff options
author | Tom Rondeau | 2012-03-16 14:16:21 -0400 |
---|---|---|
committer | Tom Rondeau | 2012-03-16 14:16:21 -0400 |
commit | 0f2ea17981b70472d24cad82989b1707c33572d8 (patch) | |
tree | ad3f1a0d31007f3dd8098a247e1b830317714c9f | |
parent | 8badde89a36a1e24513632ed92a5174c89dabf42 (diff) | |
parent | 26c03164613be9c745c60ae53b3a4ba7d5a8c6a9 (diff) | |
download | gnuradio-0f2ea17981b70472d24cad82989b1707c33572d8.tar.gz gnuradio-0f2ea17981b70472d24cad82989b1707c33572d8.tar.bz2 gnuradio-0f2ea17981b70472d24cad82989b1707c33572d8.zip |
Merge branch 'maint' of gnuradio.org:gnuradio into maint
-rw-r--r-- | gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.cc | 5 | ||||
-rw-r--r-- | gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h | 2 | ||||
-rw-r--r-- | gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.cc | 5 | ||||
-rw-r--r-- | gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h | 2 | ||||
-rw-r--r-- | gnuradio-core/src/lib/general/gri_fft.cc | 18 | ||||
-rw-r--r-- | gnuradio-core/src/lib/general/gri_fft.h | 13 | ||||
-rw-r--r-- | gr-howto-write-a-block/version.sh | 2 | ||||
-rw-r--r-- | version.sh | 2 | ||||
-rw-r--r-- | volk/include/volk/volk_32f_s32f_convert_32i_a.h | 4 | ||||
-rw-r--r-- | volk/include/volk/volk_32f_s32f_convert_32i_u.h | 6 | ||||
-rw-r--r-- | volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h | 12 | ||||
-rw-r--r-- | volk/lib/CMakeLists.txt | 22 |
12 files changed, 60 insertions, 33 deletions
diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.cc b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.cc index c894d62aa..1a9273af0 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.cc +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.cc @@ -45,6 +45,7 @@ gri_fft_filter_ccc_generic::~gri_fft_filter_ccc_generic () { delete d_fwdfft; delete d_invfft; + gri_fft_free(d_xformed_taps); } #if 0 @@ -115,7 +116,7 @@ gri_fft_filter_ccc_generic::compute_sizes(int ntaps) delete d_invfft; d_fwdfft = new gri_fft_complex(d_fftsize, true, d_nthreads); d_invfft = new gri_fft_complex(d_fftsize, false, d_nthreads); - d_xformed_taps.resize(d_fftsize); + d_xformed_taps = gri_fft_malloc_complex(d_fftsize); } } @@ -152,7 +153,7 @@ gri_fft_filter_ccc_generic::filter (int nitems, const gr_complex *input, gr_comp d_fwdfft->execute(); // compute fwd xform gr_complex *a = d_fwdfft->get_outbuf(); - gr_complex *b = &d_xformed_taps[0]; + gr_complex *b = d_xformed_taps; gr_complex *c = d_invfft->get_inbuf(); volk_32fc_x2_multiply_32fc_a(c, a, b, d_fftsize); diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h index 217b9ab83..899b59e03 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_ccc_generic.h @@ -44,8 +44,8 @@ class GR_CORE_API gri_fft_filter_ccc_generic gri_fft_complex *d_invfft; // inverse "plan" int d_nthreads; // number of FFTW threads to use std::vector<gr_complex> d_tail; // state carried between blocks for overlap-add - std::vector<gr_complex> d_xformed_taps; // Fourier xformed taps std::vector<gr_complex> d_new_taps; + gr_complex *d_xformed_taps; // Fourier xformed taps void compute_sizes(int ntaps); int tailsize() const { return d_ntaps - 1; } diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.cc b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.cc index e7f66b714..0989c9621 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.cc +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.cc @@ -44,6 +44,7 @@ gri_fft_filter_fff_generic::~gri_fft_filter_fff_generic () { delete d_fwdfft; delete d_invfft; + gri_fft_free(d_xformed_taps); } /* @@ -102,7 +103,7 @@ gri_fft_filter_fff_generic::compute_sizes(int ntaps) delete d_invfft; d_fwdfft = new gri_fft_real_fwd(d_fftsize); d_invfft = new gri_fft_real_rev(d_fftsize); - d_xformed_taps.resize(d_fftsize/2+1); + d_xformed_taps = gri_fft_malloc_complex(d_fftsize/2+1); } } @@ -139,7 +140,7 @@ gri_fft_filter_fff_generic::filter (int nitems, const float *input, float *outpu d_fwdfft->execute(); // compute fwd xform gr_complex *a = d_fwdfft->get_outbuf(); - gr_complex *b = &d_xformed_taps[0]; + gr_complex *b = d_xformed_taps; gr_complex *c = d_invfft->get_inbuf(); volk_32fc_x2_multiply_32fc_a(c, a, b, d_fftsize/2+1); diff --git a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h index be31068aa..6ac30cef5 100644 --- a/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h +++ b/gnuradio-core/src/lib/filter/gri_fft_filter_fff_generic.h @@ -41,8 +41,8 @@ class GR_CORE_API gri_fft_filter_fff_generic gri_fft_real_rev *d_invfft; // inverse "plan" int d_nthreads; // number of FFTW threads to use std::vector<float> d_tail; // state carried between blocks for overlap-add - std::vector<gr_complex> d_xformed_taps; // Fourier xformed taps std::vector<float> d_new_taps; + gr_complex *d_xformed_taps; // Fourier xformed taps void compute_sizes(int ntaps); diff --git a/gnuradio-core/src/lib/general/gri_fft.cc b/gnuradio-core/src/lib/general/gri_fft.cc index 63e307776..2edb5f5aa 100644 --- a/gnuradio-core/src/lib/general/gri_fft.cc +++ b/gnuradio-core/src/lib/general/gri_fft.cc @@ -47,6 +47,24 @@ static int my_fftw_read_char(void *f) { return fgetc((FILE *) f); } #include <boost/filesystem/path.hpp> namespace fs = boost::filesystem; +gr_complex * +gri_fft_malloc_complex(int size) +{ + return (gr_complex*)fftwf_malloc(sizeof(gr_complex)*size); +} + +float * +gri_fft_malloc_float(int size) +{ + return (float*)fftwf_malloc(sizeof(float)*size); +} + +void +gri_fft_free(void *b) +{ + fftwf_free(b); +} + boost::mutex & gri_fft_planner::mutex() { diff --git a/gnuradio-core/src/lib/general/gri_fft.h b/gnuradio-core/src/lib/general/gri_fft.h index ed80badf1..f77a18e52 100644 --- a/gnuradio-core/src/lib/general/gri_fft.h +++ b/gnuradio-core/src/lib/general/gri_fft.h @@ -30,6 +30,19 @@ #include <gr_complex.h> #include <boost/thread.hpp> +/*! \brief Helper function for allocating complex fft buffers + */ +gr_complex* gri_fft_malloc_complex(int size); + +/*! \brief Helper function for allocating float fft buffers + */ +float* gri_fft_malloc_float(int size); + +/*! \brief Helper function for freeing fft buffers + */ +void gri_fft_free(void *b); + + /*! * \brief Export reference to planner mutex for those apps that * want to use FFTW w/o using the gri_fftw* classes. diff --git a/gr-howto-write-a-block/version.sh b/gr-howto-write-a-block/version.sh index 194150c0f..93c988d16 100644 --- a/gr-howto-write-a-block/version.sh +++ b/gr-howto-write-a-block/version.sh @@ -1,4 +1,4 @@ MAJOR_VERSION=3 API_COMPAT=5 MINOR_VERSION=2 -MAINT_VERSION=0 +MAINT_VERSION=1 diff --git a/version.sh b/version.sh index 194150c0f..93c988d16 100644 --- a/version.sh +++ b/version.sh @@ -1,4 +1,4 @@ MAJOR_VERSION=3 API_COMPAT=5 MINOR_VERSION=2 -MAINT_VERSION=0 +MAINT_VERSION=1 diff --git a/volk/include/volk/volk_32f_s32f_convert_32i_a.h b/volk/include/volk/volk_32f_s32f_convert_32i_a.h index 8f2fc791e..15fa282fb 100644 --- a/volk/include/volk/volk_32f_s32f_convert_32i_a.h +++ b/volk/include/volk/volk_32f_s32f_convert_32i_a.h @@ -22,7 +22,7 @@ static inline void volk_32f_s32f_convert_32i_a_avx(int32_t* outputVector, const const float* inputVectorPtr = (const float*)inputVector; int32_t* outputVectorPtr = outputVector; - float min_val = -2147483648; + float min_val = -2147483647; float max_val = 2147483647; float r; @@ -71,7 +71,7 @@ static inline void volk_32f_s32f_convert_32i_a_sse2(int32_t* outputVector, const const float* inputVectorPtr = (const float*)inputVector; int32_t* outputVectorPtr = outputVector; - float min_val = -2147483648; + float min_val = -2147483647; float max_val = 2147483647; float r; diff --git a/volk/include/volk/volk_32f_s32f_convert_32i_u.h b/volk/include/volk/volk_32f_s32f_convert_32i_u.h index d8493454b..d203546c6 100644 --- a/volk/include/volk/volk_32f_s32f_convert_32i_u.h +++ b/volk/include/volk/volk_32f_s32f_convert_32i_u.h @@ -22,10 +22,8 @@ static inline void volk_32f_s32f_convert_32i_u_sse2(int32_t* outputVector, const const float* inputVectorPtr = (const float*)inputVector; int32_t* outputVectorPtr = outputVector; - //float min_val = -2147483647; - //float max_val = 2147483647; - float min_val = -2146400000; - float max_val = 2146400000; + float min_val = -2147483647; + float max_val = 2147483647; float r; __m128 vScalar = _mm_set_ps1(scalar); diff --git a/volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h b/volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h index a865e0737..cde9240cc 100644 --- a/volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h +++ b/volk/include/volk/volk_32fc_x2_dot_prod_32fc_a.h @@ -196,7 +196,10 @@ static inline void volk_32fc_x2_dot_prod_32fc_a_sse_64(lv_32fc_t* result, const #if LV_HAVE_SSE && LV_HAVE_32 static inline void volk_32fc_x2_dot_prod_32fc_a_sse_32(lv_32fc_t* result, const lv_32fc_t* input, const lv_32fc_t* taps, unsigned int num_bytes) { - + + volk_32fc_x2_dot_prod_32fc_a_generic(result, input, taps, num_bytes); + +#if 0 asm volatile ( " #pushl %%ebp\n\t" @@ -307,12 +310,7 @@ static inline void volk_32fc_x2_dot_prod_32fc_a_sse_32(lv_32fc_t* result, const } return; - - - - - - +#endif } #endif /*LV_HAVE_SSE*/ diff --git a/volk/lib/CMakeLists.txt b/volk/lib/CMakeLists.txt index 00d8660ab..b491f94bb 100644 --- a/volk/lib/CMakeLists.txt +++ b/volk/lib/CMakeLists.txt @@ -254,13 +254,18 @@ add_custom_command( ) ######################################################################## -# Handle orc support +# Set local include directories first ######################################################################## +include_directories( + ${CMAKE_BINARY_DIR}/include + ${CMAKE_SOURCE_DIR}/include + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) - - - - +######################################################################## +# Handle orc support +######################################################################## if(ORC_FOUND) #setup orc library usage include_directories(${ORC_INCLUDE_DIRS}) @@ -294,13 +299,6 @@ if(NOT WIN32) add_definitions(-fvisibility=hidden) endif() -include_directories( - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_BINARY_DIR}/include - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} -) - list(APPEND volk_sources ${CMAKE_CURRENT_SOURCE_DIR}/volk_prefs.c ${CMAKE_CURRENT_SOURCE_DIR}/volk_rank_archs.c |