summaryrefslogtreecommitdiff
path: root/gr-filter
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2012-05-03 12:17:35 -0400
committerTom Rondeau <trondeau@vt.edu>2012-05-03 12:17:35 -0400
commit9968eb116b89f2a38602d590207fbe0ea514c018 (patch)
treef2fc9cee8cefe0be511ddc177cf00b91253c2ea2 /gr-filter
parent42eeb8736a50f13a36cc5b40e9465af03b64b2af (diff)
filter: preparing to handle alignment better in FIR filters.
Diffstat (limited to 'gr-filter')
-rw-r--r--gr-filter/include/filter/fir_filter.h1
-rw-r--r--gr-filter/lib/fir_filter.cc9
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;
}