diff --git a/aom_dsp/x86/sse_sse4.c b/aom_dsp/x86/sse_sse4.c
index 1945eb4..5f95eb9 100644
--- a/aom_dsp/x86/sse_sse4.c
+++ b/aom_dsp/x86/sse_sse4.c
@@ -51,9 +51,8 @@
   *sum = _mm_add_epi32(*sum, _mm_madd_epi16(v_d01_w, v_d01_w));
 }
 
-static INLINE void aom_sse4x2_sse4_1(const uint8_t *a, int a_stride,
-                                     const uint8_t *b, int b_stride,
-                                     __m128i *sum) {
+static INLINE void sse4x2_sse4_1(const uint8_t *a, int a_stride,
+                                 const uint8_t *b, int b_stride, __m128i *sum) {
   const __m128i v_a0 = xx_loadl_32(a);
   const __m128i v_a1 = xx_loadl_32(a + a_stride);
   const __m128i v_b0 = xx_loadl_32(b);
@@ -63,8 +62,8 @@
   const __m128i v_d_w = _mm_sub_epi16(v_a_w, v_b_w);
   *sum = _mm_add_epi32(*sum, _mm_madd_epi16(v_d_w, v_d_w));
 }
-static INLINE void aom_sse8_sse4_1(const uint8_t *a, const uint8_t *b,
-                                   __m128i *sum) {
+static INLINE void sse8_sse4_1(const uint8_t *a, const uint8_t *b,
+                               __m128i *sum) {
   const __m128i v_a0 = xx_loadl_64(a);
   const __m128i v_b0 = xx_loadl_64(b);
   const __m128i v_a_w = _mm_cvtepu8_epi16(v_a0);
@@ -81,7 +80,7 @@
   switch (width) {
     case 4:
       do {
-        aom_sse4x2_sse4_1(a, a_stride, b, b_stride, &sum);
+        sse4x2_sse4_1(a, a_stride, b, b_stride, &sum);
         a += a_stride << 1;
         b += b_stride << 1;
         y += 2;
@@ -90,7 +89,7 @@
       break;
     case 8:
       do {
-        aom_sse8_sse4_1(a, b, &sum);
+        sse8_sse4_1(a, b, &sum);
         a += a_stride;
         b += b_stride;
         y += 1;
@@ -149,11 +148,11 @@
         do {
           int i = 0;
           do {
-            aom_sse8_sse4_1(a + i, b + i, &sum);
-            aom_sse8_sse4_1(a + i + a_stride, b + i + b_stride, &sum);
+            sse8_sse4_1(a + i, b + i, &sum);
+            sse8_sse4_1(a + i + a_stride, b + i + b_stride, &sum);
             i += 8;
           } while (i + 4 < width);
-          aom_sse4x2_sse4_1(a + i, a_stride, b + i, b_stride, &sum);
+          sse4x2_sse4_1(a + i, a_stride, b + i, b_stride, &sum);
           a += (a_stride << 1);
           b += (b_stride << 1);
           y += 2;
@@ -162,7 +161,7 @@
         do {
           int i = 0;
           do {
-            aom_sse8_sse4_1(a + i, b + i, &sum);
+            sse8_sse4_1(a + i, b + i, &sum);
             i += 8;
           } while (i < width);
           a += a_stride;
