Transceiver52M: Add SSE floating point / integer conversion

Convertions are performed in multiples of 4 or 8. All loads are
considered unaligned.

Signed-off-by: Thomas Tsou <tom@tsou.cc>
diff --git a/Transceiver52M/radioInterfaceResamp.cpp b/Transceiver52M/radioInterfaceResamp.cpp
index d3dc82e..2b59203 100644
--- a/Transceiver52M/radioInterfaceResamp.cpp
+++ b/Transceiver52M/radioInterfaceResamp.cpp
@@ -49,20 +49,6 @@
 short *convertRecvBuffer = NULL;
 short *convertSendBuffer = NULL;
 
-/* Complex float to short conversion */
-static void floatToShort(short *out, float *in, int num)
-{
-  for (int i = 0; i < num; i++)
-    out[i] = (short) in[i];
-}
-
-/* Complex short to float conversion */
-static void shortToFloat(float *out, short *in, int num)
-{
-  for (int i = 0; i < num; i++)
-    out[i] = (float) in[i];
-}
-
 RadioInterfaceResamp::RadioInterfaceResamp(RadioDevice *wRadio,
 					   int wReceiveOffset,
 					   int wSPS,
@@ -166,8 +152,8 @@
 		return;
 	}
 
-	shortToFloat((float *) outerRecvBuffer->begin(),
-		     convertRecvBuffer, 2 * outer_len);
+	convert_short_float((float *) outerRecvBuffer->begin(),
+			    convertRecvBuffer, 2 * outer_len);
 
 	underrun |= local_underrun;
 	readTimestamp += (TIMESTAMP) num_recv;
@@ -206,9 +192,9 @@
 		LOG(ALERT) << "Sample rate downsampling error";
 	}
 
-	floatToShort(convertSendBuffer,
-		     (float *) outerSendBuffer->begin(),
-		     2 * outer_len);
+	convert_float_short(convertSendBuffer,
+			    (float *) outerSendBuffer->begin(),
+			    powerScaling, 2 * outer_len);
 
 	num_sent = mRadio->writeSamples(convertSendBuffer,
 					outer_len,