diff --git a/dl/sp/api/omxSP.h b/dl/sp/api/omxSP.h
index 5a7980a..d056fb9 100644
--- a/dl/sp/api/omxSP.h
+++ b/dl/sp/api/omxSP.h
@@ -2203,6 +2203,59 @@
 );
 
 /**
+ * Function:  omxSP_FFTFwd_CToC_FC32_Sfs   (2.2.4.2.2)
+ *
+ * Description:
+ * Compute an FFT for a complex signal of length of 2^order, 
+ * where 0 <= order <= 15. 
+ * Transform length is determined by the specification structure, which 
+ * must be initialized prior to calling the FFT function using the appropriate 
+ * helper, i.e., <FFTInit_C_sc32> or <FFTInit_C_SC16>. The relationship 
+ * between the input and output sequences can be expressed in terms of the 
+ * DFT, i.e., 
+ *
+ *      X[k] = SUM[n=0...N-1]x[n].e^(-jnk.2.pi/N)
+ *      k = 0,1,2,..., N-1
+ *      N = 2^order
+ *
+ * Input Arguments:
+ *   pSrc - pointer to the input signal, a complex-valued vector of length
+ *            2^order; must be aligned on a 32 byte boundary. 
+ *   pFFTSpec - pointer to the preallocated and initialized specification 
+ *            structure 
+ *
+ * Output Arguments:
+ *   pDst - pointer to the complex-valued output vector, of length 2^order;
+ *            must be aligned on an 32-byte boundary. 
+ *
+ * Return Value:
+ *    
+ *    OMX_Sts_NoErr - no error 
+ *    OMX_Sts_BadArgErr - returned if one or more of the following conditions 
+ *              is true: 
+ *    -   one or more of the following pointers is NULL: pSrc, pDst, or 
+ *              pFFTSpec. 
+ *    -    pSrc or pDst is not 32-byte aligned 
+ *    -    scaleFactor<0 or scaleFactor >32 
+ *
+ */
+OMXResult omxSP_FFTFwd_CToC_FC32_Sfs (
+    const OMX_FC32 *pSrc,
+    OMX_FC32 *pDst,
+    const OMXFFTSpec_C_FC32 *pFFTSpec
+);
+#ifdef __arm__
+/*
+ * Non-NEON version
+ */    
+OMXResult omxSP_FFTFwd_CToC_FC32_Sfs_vfp (
+    const OMX_FC32 *pSrc,
+    OMX_FC32 *pDst,
+    const OMXFFTSpec_C_FC32 *pFFTSpec
+);
+#endif
+
+/**
  * Function:  omxSP_FFTFwd_RToCCS_F32_Sfs
  *
  * Description:
@@ -2421,6 +2474,59 @@
 );
 
 /**
+ * Function:  omxSP_FFTInv_CToC_FC32_Sfs   (2.2.4.2.4)
+ *
+ * Description:
+ * These functions compute an inverse FFT for a complex signal of
+ * length of 2^order, where 0 <= order <= 15. Transform length is
+ * determined by the specification structure, which must be
+ * initialized prior to calling the FFT function using the appropriate
+ * helper, i.e., <FFTInit_C_FC32>. The relationship between the input
+ * and output sequences can be expressed in terms of the IDFT, i.e.:
+ *
+ *     x[n] = SUM[k=0,...,N-1] X[k].e^(jnk.2.pi/N)
+ *     n=0,1,2,...N-1
+ *     N=2^order.
+ *
+ * Input Arguments:
+ *   pSrc - pointer to the complex-valued input signal, of length 2^order ; 
+ *          must be aligned on a 32-byte boundary. 
+ *   pFFTSpec - pointer to the preallocated and initialized specification 
+ *            structure 
+ *
+ * Output Arguments:
+ *   order 
+ *   pDst - pointer to the complex-valued output signal, of length 2^order; 
+ *          must be aligned on a 32-byte boundary. 
+ *
+ * Return Value:
+ *    
+ *    OMX_Sts_NoErr - no error 
+ *    OMX_Sts_BadArgErr - returned if one or more of the following conditions 
+ *              is true: 
+ *    -   one or more of the following pointers is NULL: pSrc, pDst, or 
+ *              pFFTSpec. 
+ *    -   pSrc or pDst is not 32-byte aligned 
+ *    -   scaleFactor<0 or scaleFactor>32
+ *
+ */
+OMXResult omxSP_FFTInv_CToC_FC32_Sfs (
+    const OMX_FC32 *pSrc,
+    OMX_FC32 *pDst,
+    const OMXFFTSpec_C_FC32 *pFFTSpec
+);
+#ifdef __arm__
+/*
+ * Non-NEON version
+ */    
+OMXResult omxSP_FFTInv_CToC_FC32_Sfs_vfp (
+    const OMX_FC32 *pSrc,
+    OMX_FC32 *pDst,
+    const OMXFFTSpec_C_FC32 *pFFTSpec
+);
+#endif
+
+/**
  * Function:  omxSP_FFTInv_CCSToR_F32_Sfs
  *
  * Description:
diff --git a/dl/sp/src/arm/detect.c b/dl/sp/src/arm/detect.c
index b74220a..57bfe40 100644
--- a/dl/sp/src/arm/detect.c
+++ b/dl/sp/src/arm/detect.c
@@ -14,7 +14,7 @@
 #include "android/log.h"
 #include "dl/sp/api/omxSP.h"
 
-int HasArmNeon() {
+int omxSP_HasArmNeon() {
   return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
 }
 
@@ -23,7 +23,7 @@
    * Choose the correct (NEON or non-NEON) routines for both the
    * forward and inverse FFTs
    */
-  if (HasArmNeon()) {
+  if (omxSP_HasArmNeon()) {
     __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
                         "Using NEON FFT");
     omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
diff --git a/dl/sp/src/test/support/float_rfft_detect.c b/dl/sp/src/test/support/float_rfft_detect.c
index cf81e8d..e8b1e54 100644
--- a/dl/sp/src/test/support/float_rfft_detect.c
+++ b/dl/sp/src/test/support/float_rfft_detect.c
@@ -16,6 +16,8 @@
 static const char* message =
     "Test forward and inverse real floating-point FFT (Autodetect NEON)\n";
 
+extern int omxSP_HasArmNeon();
+
 const char* UsageMessage() {
   return message;
 }
@@ -26,8 +28,6 @@
 }
 
 void SetThresholds(struct TestInfo* info) {
-  extern int HasArmNeon();
-
   if (HasArmNeon()) {
     info->forward_threshold_ = FLOAT_RFFT_FORWARD_THRESHOLD_NEON;
     info->inverse_threshold_ = FLOAT_RFFT_INVERSE_THRESHOLD_NEON;
diff --git a/dl/sp/src/test/test_fft16.c b/dl/sp/src/test/test_fft16.c
index 05fc778..8d55ed6 100644
--- a/dl/sp/src/test/test_fft16.c
+++ b/dl/sp/src/test/test_fft16.c
@@ -48,7 +48,7 @@
     {-1, 0, 0}
 };
 
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   struct Options options;
   struct TestInfo info;
 
@@ -89,6 +89,8 @@
                &info,
                "16-bit FFT");
   }
+
+  return 0;
 }
 
 void GenerateSignal(OMX_SC16* x, struct ComplexFloat* fft,
diff --git a/dl/sp/src/test/test_fft32.c b/dl/sp/src/test/test_fft32.c
index fe3c57a..9fc7855 100644
--- a/dl/sp/src/test/test_fft32.c
+++ b/dl/sp/src/test/test_fft32.c
@@ -26,7 +26,7 @@
 int verbose;
 int signal_value;
 
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   struct Options options;
   struct TestInfo info;
 
@@ -67,6 +67,8 @@
                &info,
                "32-bit FFT");
   }
+
+  return 0;
 }
 
 void GenerateSignal(OMX_SC32* x, OMX_SC32* fft, int size, int signal_type) {
diff --git a/dl/sp/src/test/test_fft_time.c b/dl/sp/src/test/test_fft_time.c
index 04228d9..db65134 100644
--- a/dl/sp/src/test/test_fft_time.c
+++ b/dl/sp/src/test/test_fft_time.c
@@ -19,6 +19,7 @@
 #include "dl/sp/api/omxSP.h"
 #include "dl/sp/src/test/aligned_ptr.h"
 #include "dl/sp/src/test/gensig.h"
+#include "dl/sp/src/test/test_util.h"
 
 #define MAX_FFT_ORDER TWIDDLE_TABLE_ORDER
 #define MAX_FFT_ORDER_FIXED_POINT 12
@@ -83,7 +84,7 @@
 static int min_fft_order = 2;
 static int max_fft_order = MAX_FFT_ORDER;
 
-void TimeFFTUsage(const char* prog) {
+void TimeFFTUsage(char* prog) {
   fprintf(stderr, 
       "%s: [-hTFICA] [-f fft] [-c count] [-n logsize] [-s scale]\n"
       "    [-g signal-type] [-S signal value]\n"
@@ -140,7 +141,7 @@
 }
 
 /* TODO(kma/ajm/rtoy): use strings instead of numbers for fft_type. */
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   int fft_log_size = 4;
   float signal_value = 32767;
   int signal_type = 0;
@@ -256,6 +257,8 @@
         break;
     }
   }
+
+  return 0;
 }
 
 void GetUserTime(struct timeval* time) {
@@ -365,7 +368,7 @@
   if (do_forward_test) {
     GetUserTime(&start_time);
     for (n = 0; n < count; ++n) {
-      FORWARD_FLOAT_FFT(x, y, fft_fwd_spec);
+      FORWARD_FLOAT_FFT((OMX_FC32*) x, (OMX_FC32*) y, fft_fwd_spec);
     }
     GetUserTime(&end_time);
 
@@ -377,7 +380,7 @@
   if (do_inverse_test) {
     GetUserTime(&start_time);
     for (n = 0; n < count; ++n) {
-      INVERSE_FLOAT_FFT(y, z, fft_inv_spec);
+      INVERSE_FLOAT_FFT((OMX_FC32*) y, z, fft_inv_spec);
     }
     GetUserTime(&end_time);
 
diff --git a/dl/sp/src/test/test_rfft16_s16.c b/dl/sp/src/test/test_rfft16_s16.c
index 33ca5b3..126a8c0 100644
--- a/dl/sp/src/test/test_rfft16_s16.c
+++ b/dl/sp/src/test/test_rfft16_s16.c
@@ -27,7 +27,7 @@
 int signal_value = 32767;
 int scale_factor = 0;
 
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   struct Options options;
   struct TestInfo info;
 
@@ -65,6 +65,8 @@
                &info,
                "16-bit Real FFT using 16-bit complex FFT");
   }
+
+  return 0;
 }
 
 void GenerateSignal(struct ComplexFloat* fft,
diff --git a/dl/sp/src/test/test_rfft16_s32.c b/dl/sp/src/test/test_rfft16_s32.c
index a319984..398f61d 100644
--- a/dl/sp/src/test/test_rfft16_s32.c
+++ b/dl/sp/src/test/test_rfft16_s32.c
@@ -26,7 +26,7 @@
 
 #define MAX_FFT_ORDER   12
 
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   struct Options options;
   struct TestInfo info;
 
@@ -61,6 +61,8 @@
                &info,
                "16-bit Real FFT using 32-bit complex FFT");
   }
+
+  return 0;
 }
 
 void GenerateSignal(OMX_S16* x, OMX_SC32* fft, int size, int signal_type) {
diff --git a/dl/sp/src/test/test_rfft32.c b/dl/sp/src/test/test_rfft32.c
index 1b81d44..19cad8e 100644
--- a/dl/sp/src/test/test_rfft32.c
+++ b/dl/sp/src/test/test_rfft32.c
@@ -26,7 +26,7 @@
 
 #define MAX_FFT_ORDER   12
 
-void main(int argc, char* argv[]) {
+int main(int argc, char* argv[]) {
   struct Options options;
   struct TestInfo info;
 
@@ -65,6 +65,8 @@
                &info,
                "32-bit Real FFT");
   }
+
+  return 0;
 }
 
 void GenerateSignal(OMX_S32* x, OMX_SC32* fft, int size, int signal_type) {
diff --git a/dl/sp/src/test/test_util.c b/dl/sp/src/test/test_util.c
index e9ca0cf..d21d8c5 100644
--- a/dl/sp/src/test/test_util.c
+++ b/dl/sp/src/test/test_util.c
@@ -16,6 +16,7 @@
 
 #include "dl/sp/api/armSP.h"
 #include "dl/sp/src/test/compare.h"
+#include "dl/sp/src/test/gensig.h"
 
 /*
  * Test results from running either forward or inverse FFT tests
diff --git a/dl/sp/src/x86/x86SP_FFT_F32_radix4_kernel.c b/dl/sp/src/x86/x86SP_FFT_F32_radix4_kernel.c
index e7c7b89..fab3471 100644
--- a/dl/sp/src/x86/x86SP_FFT_F32_radix4_kernel.c
+++ b/dl/sp/src/x86/x86SP_FFT_F32_radix4_kernel.c
@@ -87,6 +87,30 @@
     const OMX_F32 *twiddle,
     OMX_INT n);
 
+extern void x86SP_FFT_CToC_FC32_Fwd_Radix2_ls(
+    const OMX_F32 *in,
+    OMX_F32 *out,
+    const OMX_F32 *twiddle,
+    OMX_INT n);
+
+extern void x86SP_FFT_CToC_FC32_Inv_Radix2_ls(
+    const OMX_F32 *in,
+    OMX_F32 *out,
+    const OMX_F32 *twiddle,
+    OMX_INT n);
+
+extern void x86SP_FFT_CToC_FC32_Fwd_Radix2_ls_sse(
+    const OMX_F32 *in,
+    OMX_F32 *out,
+    const OMX_F32 *twiddle,
+    OMX_INT n);
+
+extern void x86SP_FFT_CToC_FC32_Inv_Radix2_ls_sse(
+    const OMX_F32 *in,
+    OMX_F32 *out,
+    const OMX_F32 *twiddle,
+    OMX_INT n);
+
 OMX_F32* x86SP_F32_radix4_kernel_OutOfPlace(
     const OMX_F32 *src,
     OMX_F32 *buf1,
