From accc35f380e56af156153cd01540a46c7eb98f12 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Sun, 22 Jan 2012 17:46:22 -0500
Subject: core: test case of using Volk to convert from float to short.

---
 gnuradio-core/src/lib/general/gr_float_to_short.cc | 24 ++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

(limited to 'gnuradio-core')

diff --git a/gnuradio-core/src/lib/general/gr_float_to_short.cc b/gnuradio-core/src/lib/general/gr_float_to_short.cc
index 084f76f9c4..415ea6982e 100644
--- a/gnuradio-core/src/lib/general/gr_float_to_short.cc
+++ b/gnuradio-core/src/lib/general/gr_float_to_short.cc
@@ -27,6 +27,9 @@
 #include <gr_float_to_short.h>
 #include <gr_io_signature.h>
 #include <gri_float_to_short.h>
+#include <volk/volk.h>
+
+#include <iostream>
 
 gr_float_to_short_sptr
 gr_make_float_to_short ()
@@ -39,6 +42,9 @@ gr_float_to_short::gr_float_to_short ()
 		   gr_make_io_signature (1, 1, sizeof (float)),
 		   gr_make_io_signature (1, 1, sizeof (short)))
 {
+ const int alignment_multiple =
+   volk_get_alignment() / sizeof(short);
+ set_alignment(alignment_multiple);
 }
 
 int
@@ -49,8 +55,22 @@ gr_float_to_short::work (int noutput_items,
   const float *in = (const float *) input_items[0];
   short *out = (short *) output_items[0];
 
-  gri_float_to_short (in, out, noutput_items);
-  
+#if 0
+  if(is_unaligned()) {
+    float d_scale = 1.0;
+    //gri_float_to_short (in, out, noutput_items);
+    volk_32f_s32f_convert_16i_u(out, in, d_scale, noutput_items);
+  }
+  else {
+    float d_scale = 1.0;
+    volk_32f_s32f_convert_16i_a(out, in, d_scale, noutput_items);
+  }
+#else
+  float d_scale = 1.0;
+  volk_32f_s32f_convert_16i_u(out, in, d_scale, noutput_items);
+  //gri_float_to_short (in, out, noutput_items);
+#endif
+
   return noutput_items;
 }
 
-- 
cgit v1.2.3