diff --git a/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_complex.c b/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_complex.c
index a43946d..f6334fd 100644
--- a/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_complex.c
+++ b/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_complex.c
@@ -159,7 +159,7 @@
       /* Twiddle table is initialized for the maximal FFT size. */
       w_re_ptr = pFFTSpec->pTwiddle + step;
       w_im_ptr =
-          pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - step;
+          pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - step;
 
       /*
        * Loop performing split-radix butterfly operations for
@@ -198,7 +198,7 @@
 
   /* Additional computation to get the output for full FFT size. */
   w_re_ptr = pFFTSpec->pTwiddle + step;
-  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - step;
+  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - step;
 
   for (uint32_t i = 1; i < fft_size / 8; ++i) {
     tmp1 = p_buf[i].Re;
diff --git a/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_real.c b/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_real.c
index a33b90e..d9fad33 100644
--- a/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_real.c
+++ b/dl/sp/src/mips/mips_FFTFwd_RToCCS_F32_real.c
@@ -159,7 +159,7 @@
   p_dst[4].Im = p_buf[4].Im - tmp2;
 
   w_re_ptr = pFFTSpec->pTwiddle + 1;
-  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - 1;
+  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - 1;
 
   /* Loop performing split-radix butterfly operations. */
   for (uint32_t n = 1; n < 4; ++n) {
diff --git a/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_complex.c b/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_complex.c
index f47a937..fd1b86d 100644
--- a/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_complex.c
+++ b/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_complex.c
@@ -31,7 +31,7 @@
   OMX_F32 w_re, w_im;
 
   w_re_ptr = pFFTSpec->pTwiddle + 1;
-  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - 1;
+  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - 1;
 
   /*
    * Preliminary loop performing input adaptation due to computing real FFT
@@ -213,7 +213,7 @@
 
       w_re_ptr = pFFTSpec->pTwiddle + step;
       w_im_ptr =
-          pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - step;
+          pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - step;
 
       /*
        * Loop performing split-radix butterfly operations for one sub-transform.
@@ -271,7 +271,7 @@
   p_dst[n1_4].Im = factor * (p_buf[n1_4].Im + tmp2);
 
   w_re_ptr = pFFTSpec->pTwiddle + step;
-  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - step;
+  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - step;
 
   for (uint32_t i = 1; i < n1_4; ++i) {
     w_re = *w_re_ptr;
diff --git a/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_real.c b/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_real.c
index e2f36fe..d50b3ea 100644
--- a/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_real.c
+++ b/dl/sp/src/mips/mips_FFTInv_CCSToR_F32_real.c
@@ -17,7 +17,7 @@
 OMXResult mips_FFTInv_CCSToR_F32_real(const OMX_F32* pSrc,
                                       OMX_F32* pDst,
                                       const MIPSFFTSpec_R_FC32* pFFTSpec) {
-  OMX_U32 step, num_transforms;
+  OMX_U32 num_transforms;
   OMX_FC32* p_buf = (OMX_FC32*)pFFTSpec->pBuf;
   const OMX_FC32* p_src = (const OMX_FC32*)pSrc;
   OMX_U32 fft_size = 1 << pFFTSpec->order;
@@ -192,7 +192,7 @@
   pDst[4] = factor * (p_buf[4].Re - tmp2);
 
   w_re_ptr = pFFTSpec->pTwiddle + 1;
-  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << pFFTSpec->order - 2) - 1;
+  w_im_ptr = pFFTSpec->pTwiddle + (OMX_U32)(1 << (pFFTSpec->order - 2)) - 1;
 
   /* Loop performing split-radix butterfly operations. */
   for (uint32_t n = 1; n < 4; ++n) {
diff --git a/dl/sp/src/mips/omxSP_FFTInit_R_F32.c b/dl/sp/src/mips/omxSP_FFTInit_R_F32.c
index 9230b5b..1635c11 100644
--- a/dl/sp/src/mips/omxSP_FFTInit_R_F32.c
+++ b/dl/sp/src/mips/omxSP_FFTInit_R_F32.c
@@ -125,7 +125,7 @@
   /* Fill the twiddle table */
   if (order > 3) {
     tmp = 1 << (TWIDDLE_TABLE_ORDER - order);
-    for (n = 0; n < (1 << (order - 2)); ++n) {
+    for (n = 0; n < (1u << (order - 2)); ++n) {
       p_twiddle[n] = mipsSP_FFT_F32TwiddleTable[n * tmp];
     }
   }
@@ -150,10 +150,10 @@
       }
     } else if (order < 5) {
       /* Check for p_offset table. */
-      int shift = 2;
-      int over = 4;
-      int num_transforms = (SUBTRANSFORM_CONST >> (16 - order)) | 1;
-      for (uint32_t i = 2; i < order; ++i) {
+      uint32_t shift = 2;
+      uint32_t over = 4;
+      uint32_t num_transforms = (SUBTRANSFORM_CONST >> (16 - order)) | 1;
+      for (int i = 2; i < order; ++i) {
         for (uint32_t j = 0; j < num_transforms; ++j) {
           if (((p_offset[j] << shift) + over - 1) >= fft_size)
             return OMX_Sts_BadArgErr;
@@ -169,10 +169,10 @@
       }
     } else {
       /* Check for p_offset table. */
-      int shift = 2;
-      int over = 4;
-      int num_transforms = (SUBTRANSFORM_CONST >> (17 - order)) | 1;
-      for (uint32_t i = 2; i < order; ++i) {
+      uint32_t shift = 2;
+      uint32_t over = 4;
+      uint32_t num_transforms = (SUBTRANSFORM_CONST >> (17 - order)) | 1;
+      for (int i = 2; i < order; ++i) {
         for (uint32_t j = 0; j < num_transforms; ++j) {
           if (((p_offset[j] << shift) + over - 1) >= fft_size)
             return OMX_Sts_BadArgErr;
