diff --git a/celt/celt.c b/celt/celt.c
index 3b1b4f6d6f158f6a871fbadf6c163ed910b055ba..8c9105bdd53dcbd2702bb294f6f1737c51b0ab8c 100644
--- a/celt/celt.c
+++ b/celt/celt.c
@@ -865,8 +865,9 @@ static int stereo_analysis(const CELTMode *m, const celt_norm *X,
          R = X[N0+j];
          M = L+R;
          S = L-R;
-         sumLR += EXTEND32(ABS16(L)) + EXTEND32(ABS16(R));
-         sumMS += EXTEND32(ABS16(M)) + EXTEND32(ABS16(S));
+         /* We cast to 32-bit first because of the -32768 case */
+         sumLR += ABS32(EXTEND32(L)) + ABS32(EXTEND32(R));
+         sumMS += ABS32(EXTEND32(M)) + ABS32(EXTEND32(S));
       }
    }
    sumMS = MULT16_32_Q15(QCONST16(0.707107f, 15), sumMS);
diff --git a/silk/fixed/prefilter_FIX.c b/silk/fixed/prefilter_FIX.c
index 1b54d142d7b1f9fd497489c59da71b098bfc0313..a96f5118b0bd30681afccb9e3f0de69298fef181 100644
--- a/silk/fixed/prefilter_FIX.c
+++ b/silk/fixed/prefilter_FIX.c
@@ -135,9 +135,9 @@ void silk_prefilter_FIX(
         tmp_32 = silk_SMULWB( tmp_32, -psEncCtrl->GainsPre_Q14[ k ] );                                                /* Q24 */
         tmp_32 = silk_RSHIFT_ROUND( tmp_32, 14 );                                                                     /* Q10 */
         B_Q10[ 1 ]= silk_SAT16( tmp_32 );
-        x_filt_Q12[ 0 ] = silk_SMLABB( silk_SMULBB( st_res_Q2[ 0 ], B_Q10[ 0 ] ), P->sHarmHP_Q2, B_Q10[ 1 ] );
+        x_filt_Q12[ 0 ] = silk_MLA( silk_MUL( st_res_Q2[ 0 ], B_Q10[ 0 ] ), P->sHarmHP_Q2, B_Q10[ 1 ] );
         for( j = 1; j < psEnc->sCmn.subfr_length; j++ ) {
-            x_filt_Q12[ j ] = silk_SMLABB( silk_SMULBB( st_res_Q2[ j ], B_Q10[ 0 ] ), st_res_Q2[ j - 1 ], B_Q10[ 1 ] );
+            x_filt_Q12[ j ] = silk_MLA( silk_MUL( st_res_Q2[ j ], B_Q10[ 0 ] ), st_res_Q2[ j - 1 ], B_Q10[ 1 ] );
         }
         P->sHarmHP_Q2 = st_res_Q2[ psEnc->sCmn.subfr_length - 1 ];