diff options
author | Tom Rondeau <trondeau@vt.edu> | 2012-05-03 12:17:35 -0400 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2012-05-03 12:17:35 -0400 |
commit | 9968eb116b89f2a38602d590207fbe0ea514c018 (patch) | |
tree | f2fc9cee8cefe0be511ddc177cf00b91253c2ea2 /gr-filter | |
parent | 42eeb8736a50f13a36cc5b40e9465af03b64b2af (diff) |
filter: preparing to handle alignment better in FIR filters.
Diffstat (limited to 'gr-filter')
-rw-r--r-- | gr-filter/include/filter/fir_filter.h | 1 | ||||
-rw-r--r-- | gr-filter/lib/fir_filter.cc | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gr-filter/include/filter/fir_filter.h b/gr-filter/include/filter/fir_filter.h index 76b00cae95..fba4641bf3 100644 --- a/gr-filter/include/filter/fir_filter.h +++ b/gr-filter/include/filter/fir_filter.h @@ -54,6 +54,7 @@ namespace gr { private: unsigned int d_ntaps; float *d_taps; + float *d_aligned_taps[4]; }; /**************************************************************/ diff --git a/gr-filter/lib/fir_filter.cc b/gr-filter/lib/fir_filter.cc index b45209aa7e..3abcda53e9 100644 --- a/gr-filter/lib/fir_filter.cc +++ b/gr-filter/lib/fir_filter.cc @@ -57,6 +57,12 @@ namespace gr { for(unsigned int i = 0; i < d_ntaps; i++) { d_taps[d_ntaps-i-1] = taps[i]; } + + for(int i = 0; i < 4; i++) { + d_aligned_taps[i] = fft::malloc_float(d_ntaps+3); + memset(d_aligned_taps[i], 0, sizeof(float)*(d_ntaps+3)); + memcpy(&d_aligned_taps[i][i], d_taps, sizeof(float)*(d_ntaps)); + } } std::vector<float> @@ -78,6 +84,9 @@ namespace gr { fir_filter_fff::filter(const float input[]) { float output; + + //const float *ar = (float*)((unsigned long)input & ~15); + volk_32f_x2_dot_prod_32f_u(&output, input, d_taps, d_ntaps); return output; } |