diff --git a/common_audio/signal_processing/energy.c b/common_audio/signal_processing/energy.c
index a8698e0..0611ad3 100644
--- a/common_audio/signal_processing/energy.c
+++ b/common_audio/signal_processing/energy.c
@@ -27,8 +27,8 @@
 
     for (i = 0; i < looptimes; i++)
     {
-        en += WEBRTC_SPL_MUL_16_16_RSFT(*vectorptr, *vectorptr, scaling);
-        vectorptr++;
+      en += (*vectorptr * *vectorptr) >> scaling;
+      vectorptr++;
     }
     *scale_factor = scaling;
 
diff --git a/common_audio/signal_processing/ilbc_specific_functions.c b/common_audio/signal_processing/ilbc_specific_functions.c
index 4a1a7d6..de870b2 100644
--- a/common_audio/signal_processing/ilbc_specific_functions.c
+++ b/common_audio/signal_processing/ilbc_specific_functions.c
@@ -32,8 +32,7 @@
     const int16_t *winptr = win;
     for (i = 0; i < vector_length; i++)
     {
-        (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++,
-                                                               *winptr--, right_shifts);
+      *outptr++ = (int16_t)((*inptr++ * *winptr--) >> right_shifts);
     }
 }
 
@@ -47,8 +46,7 @@
     const int16_t *winptr = win;
     for (i = 0; i < vector_length; i++)
     {
-        (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++,
-                                                               *winptr++, right_shifts);
+      *outptr++ = (int16_t)((*inptr++ * *winptr++) >> right_shifts);
     }
 }
 
diff --git a/common_audio/signal_processing/include/signal_processing_library.h b/common_audio/signal_processing/include/signal_processing_library.h
index a1dc6aa..7014fa1 100644
--- a/common_audio/signal_processing/include/signal_processing_library.h
+++ b/common_audio/signal_processing/include/signal_processing_library.h
@@ -92,7 +92,7 @@
 #define WEBRTC_SPL_RSHIFT_U32(x, c)     ((uint32_t)(x) >> (c))
 
 #define WEBRTC_SPL_RAND(a) \
-    ((int16_t)(WEBRTC_SPL_MUL_16_16_RSFT((a), 18816, 7) & 0x00007fff))
+    ((int16_t)((((int16_t)a * 18816) >> 7) & 0x00007fff))
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/common_audio/signal_processing/refl_coef_to_lpc.c b/common_audio/signal_processing/refl_coef_to_lpc.c
index 17055c9..06a29b6 100644
--- a/common_audio/signal_processing/refl_coef_to_lpc.c
+++ b/common_audio/signal_processing/refl_coef_to_lpc.c
@@ -41,8 +41,7 @@
         any[m + 1] = *kptr >> 3;
         for (i = 0; i < m; i++)
         {
-            *anyptr = (*aptr)
-                    + (int16_t)WEBRTC_SPL_MUL_16_16_RSFT((*aptr2), (*kptr), 15);
+            *anyptr = *aptr + (int16_t)((*aptr2 * *kptr) >> 15);
             anyptr++;
             aptr++;
             aptr2--;
diff --git a/common_audio/signal_processing/vector_scaling_operations.c b/common_audio/signal_processing/vector_scaling_operations.c
index c3eaa28..736f62c 100644
--- a/common_audio/signal_processing/vector_scaling_operations.c
+++ b/common_audio/signal_processing/vector_scaling_operations.c
@@ -97,7 +97,7 @@
 
     for (i = 0; i < in_vector_length; i++)
     {
-        (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(*inptr++, gain, right_shifts);
+      *outptr++ = (int16_t)((*inptr++ * gain) >> right_shifts);
     }
 }
 
@@ -107,17 +107,14 @@
 {
     // Performs vector operation: out_vector = (gain*in_vector)>>right_shifts
     int i;
-    int32_t tmpW32;
     const int16_t *inptr;
     int16_t *outptr;
 
     inptr = in_vector;
     outptr = out_vector;
 
-    for (i = 0; i < in_vector_length; i++)
-    {
-        tmpW32 = WEBRTC_SPL_MUL_16_16_RSFT(*inptr++, gain, right_shifts);
-        (*outptr++) = WebRtcSpl_SatW32ToW16(tmpW32);
+    for (i = 0; i < in_vector_length; i++) {
+      *outptr++ = WebRtcSpl_SatW32ToW16((*inptr++ * gain) >> right_shifts);
     }
 }
 
@@ -137,8 +134,8 @@
 
     for (i = 0; i < vector_length; i++)
     {
-        (*outptr++) = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(gain1, *in1ptr++, shift1)
-                + (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(gain2, *in2ptr++, shift2);
+      *outptr++ = (int16_t)((gain1 * *in1ptr++) >> shift1) +
+          (int16_t)((gain2 * *in2ptr++) >> shift2);
     }
 }
 
