| Index: source/libvpx/third_party/libyuv/source/scale_argb.cc
 | 
| diff --git a/source/libvpx/third_party/libyuv/source/scale_argb.cc b/source/libvpx/third_party/libyuv/source/scale_argb.cc
 | 
| index e339cd7c79151a669e8f166d923eac2047392031..05b58e1babae1a45a1e5fdccf4ef9e09368f6ea2 100644
 | 
| --- a/source/libvpx/third_party/libyuv/source/scale_argb.cc
 | 
| +++ b/source/libvpx/third_party/libyuv/source/scale_argb.cc
 | 
| @@ -53,16 +53,14 @@ static void ScaleARGBDown2(int src_width, int src_height,
 | 
|    }
 | 
|  
 | 
|  #if defined(HAS_SCALEARGBROWDOWN2_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4) &&
 | 
| -      IS_ALIGNED(src_argb, 16) && IS_ALIGNED(row_stride, 16) &&
 | 
| -      IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4)) {
 | 
|      ScaleARGBRowDown2 = filtering == kFilterNone ? ScaleARGBRowDown2_SSE2 :
 | 
|          (filtering == kFilterLinear ? ScaleARGBRowDown2Linear_SSE2 :
 | 
|          ScaleARGBRowDown2Box_SSE2);
 | 
|    }
 | 
| -#elif defined(HAS_SCALEARGBROWDOWN2_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 8) &&
 | 
| -      IS_ALIGNED(src_argb, 4) && IS_ALIGNED(row_stride, 4)) {
 | 
| +#endif
 | 
| +#if defined(HAS_SCALEARGBROWDOWN2_NEON)
 | 
| +  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 8)) {
 | 
|      ScaleARGBRowDown2 = filtering ? ScaleARGBRowDown2Box_NEON :
 | 
|          ScaleARGBRowDown2_NEON;
 | 
|    }
 | 
| @@ -98,14 +96,12 @@ static void ScaleARGBDown4Box(int src_width, int src_height,
 | 
|    assert(dx == 65536 * 4);  // Test scale factor of 4.
 | 
|    assert((dy & 0x3ffff) == 0);  // Test vertical scale is multiple of 4.
 | 
|  #if defined(HAS_SCALEARGBROWDOWN2_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4) &&
 | 
| -      IS_ALIGNED(src_argb, 16) && IS_ALIGNED(row_stride, 16) &&
 | 
| -      IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4)) {
 | 
|      ScaleARGBRowDown2 = ScaleARGBRowDown2Box_SSE2;
 | 
|    }
 | 
| -#elif defined(HAS_SCALEARGBROWDOWN2_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 8) &&
 | 
| -      IS_ALIGNED(src_argb, 4) && IS_ALIGNED(row_stride, 4)) {
 | 
| +#endif
 | 
| +#if defined(HAS_SCALEARGBROWDOWN2_NEON)
 | 
| +  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 8)) {
 | 
|      ScaleARGBRowDown2 = ScaleARGBRowDown2Box_NEON;
 | 
|    }
 | 
|  #endif
 | 
| @@ -139,14 +135,13 @@ static void ScaleARGBDownEven(int src_width, int src_height,
 | 
|    assert(IS_ALIGNED(src_height, 2));
 | 
|    src_argb += (y >> 16) * src_stride + (x >> 16) * 4;
 | 
|  #if defined(HAS_SCALEARGBROWDOWNEVEN_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4) &&
 | 
| -      IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 4)) {
 | 
|      ScaleARGBRowDownEven = filtering ? ScaleARGBRowDownEvenBox_SSE2 :
 | 
|          ScaleARGBRowDownEven_SSE2;
 | 
|    }
 | 
| -#elif defined(HAS_SCALEARGBROWDOWNEVEN_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 4) &&
 | 
| -      IS_ALIGNED(src_argb, 4)) {
 | 
| +#endif
 | 
| +#if defined(HAS_SCALEARGBROWDOWNEVEN_NEON)
 | 
| +  if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(dst_width, 4)) {
 | 
|      ScaleARGBRowDownEven = filtering ? ScaleARGBRowDownEvenBox_NEON :
 | 
|          ScaleARGBRowDownEven_NEON;
 | 
|    }
 | 
| @@ -190,29 +185,23 @@ static void ScaleARGBBilinearDown(int src_width, int src_height,
 | 
|    src_argb += xl * 4;
 | 
|    x -= (int)(xl << 16);
 | 
|  #if defined(HAS_INTERPOLATEROW_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && clip_src_width >= 16) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSE2;
 | 
|      if (IS_ALIGNED(clip_src_width, 16)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSE2;
 | 
| -      if (IS_ALIGNED(src_argb, 16) && IS_ALIGNED(src_stride, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSE2;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSE2;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_SSSE3)
 | 
| -  if (TestCpuFlag(kCpuHasSSSE3) && clip_src_width >= 16) {
 | 
| +  if (TestCpuFlag(kCpuHasSSSE3)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSSE3;
 | 
|      if (IS_ALIGNED(clip_src_width, 16)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSSE3;
 | 
| -      if (IS_ALIGNED(src_argb, 16) && IS_ALIGNED(src_stride, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSSE3;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSSE3;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_AVX2)
 | 
| -  if (TestCpuFlag(kCpuHasAVX2) && clip_src_width >= 32) {
 | 
| +  if (TestCpuFlag(kCpuHasAVX2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_AVX2;
 | 
|      if (IS_ALIGNED(clip_src_width, 32)) {
 | 
|        InterpolateRow = InterpolateRow_AVX2;
 | 
| @@ -220,15 +209,15 @@ static void ScaleARGBBilinearDown(int src_width, int src_height,
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && clip_src_width >= 16) {
 | 
| +  if (TestCpuFlag(kCpuHasNEON)) {
 | 
|      InterpolateRow = InterpolateRow_Any_NEON;
 | 
|      if (IS_ALIGNED(clip_src_width, 16)) {
 | 
|        InterpolateRow = InterpolateRow_NEON;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
| -#if defined(HAS_INTERPOLATEROWS_MIPS_DSPR2)
 | 
| -  if (TestCpuFlag(kCpuHasMIPS_DSPR2) && clip_src_width >= 4 &&
 | 
| +#if defined(HAS_INTERPOLATEROW_MIPS_DSPR2)
 | 
| +  if (TestCpuFlag(kCpuHasMIPS_DSPR2) &&
 | 
|        IS_ALIGNED(src_argb, 4) && IS_ALIGNED(src_stride, 4)) {
 | 
|      InterpolateRow = InterpolateRow_Any_MIPS_DSPR2;
 | 
|      if (IS_ALIGNED(clip_src_width, 4)) {
 | 
| @@ -286,29 +275,23 @@ static void ScaleARGBBilinearUp(int src_width, int src_height,
 | 
|        filtering ? ScaleARGBFilterCols_C : ScaleARGBCols_C;
 | 
|    const int max_y = (src_height - 1) << 16;
 | 
|  #if defined(HAS_INTERPOLATEROW_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSE2;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSE2;
 | 
| -      if (IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSE2;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSE2;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_SSSE3)
 | 
| -  if (TestCpuFlag(kCpuHasSSSE3) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasSSSE3)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSSE3;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSSE3;
 | 
| -      if (IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSSE3;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSSE3;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_AVX2)
 | 
| -  if (TestCpuFlag(kCpuHasAVX2) && dst_width >= 8) {
 | 
| +  if (TestCpuFlag(kCpuHasAVX2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_AVX2;
 | 
|      if (IS_ALIGNED(dst_width, 8)) {
 | 
|        InterpolateRow = InterpolateRow_AVX2;
 | 
| @@ -316,15 +299,15 @@ static void ScaleARGBBilinearUp(int src_width, int src_height,
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasNEON)) {
 | 
|      InterpolateRow = InterpolateRow_Any_NEON;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
|        InterpolateRow = InterpolateRow_NEON;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
| -#if defined(HAS_INTERPOLATEROWS_MIPS_DSPR2)
 | 
| -  if (TestCpuFlag(kCpuHasMIPS_DSPR2) && dst_width >= 1 &&
 | 
| +#if defined(HAS_INTERPOLATEROW_MIPS_DSPR2)
 | 
| +  if (TestCpuFlag(kCpuHasMIPS_DSPR2) &&
 | 
|        IS_ALIGNED(dst_argb, 4) && IS_ALIGNED(dst_stride, 4)) {
 | 
|      InterpolateRow = InterpolateRow_MIPS_DSPR2;
 | 
|    }
 | 
| @@ -346,9 +329,7 @@ static void ScaleARGBBilinearUp(int src_width, int src_height,
 | 
|    if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
 | 
|      ScaleARGBFilterCols = ScaleARGBColsUp2_C;
 | 
|  #if defined(HAS_SCALEARGBCOLSUP2_SSE2)
 | 
| -    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8) &&
 | 
| -        IS_ALIGNED(src_argb, 16) && IS_ALIGNED(src_stride, 16) &&
 | 
| -        IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
 | 
|        ScaleARGBFilterCols = ScaleARGBColsUp2_SSE2;
 | 
|      }
 | 
|  #endif
 | 
| @@ -427,18 +408,15 @@ static void ScaleYUVToARGBBilinearUp(int src_width, int src_height,
 | 
|                          uint8* rgb_buf,
 | 
|                          int width) = I422ToARGBRow_C;
 | 
|  #if defined(HAS_I422TOARGBROW_SSSE3)
 | 
| -  if (TestCpuFlag(kCpuHasSSSE3) && src_width >= 8) {
 | 
| +  if (TestCpuFlag(kCpuHasSSSE3)) {
 | 
|      I422ToARGBRow = I422ToARGBRow_Any_SSSE3;
 | 
|      if (IS_ALIGNED(src_width, 8)) {
 | 
| -      I422ToARGBRow = I422ToARGBRow_Unaligned_SSSE3;
 | 
| -      if (IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride_argb, 16)) {
 | 
| -        I422ToARGBRow = I422ToARGBRow_SSSE3;
 | 
| -      }
 | 
| +      I422ToARGBRow = I422ToARGBRow_SSSE3;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_I422TOARGBROW_AVX2)
 | 
| -  if (TestCpuFlag(kCpuHasAVX2) && src_width >= 16) {
 | 
| +  if (TestCpuFlag(kCpuHasAVX2)) {
 | 
|      I422ToARGBRow = I422ToARGBRow_Any_AVX2;
 | 
|      if (IS_ALIGNED(src_width, 16)) {
 | 
|        I422ToARGBRow = I422ToARGBRow_AVX2;
 | 
| @@ -446,7 +424,7 @@ static void ScaleYUVToARGBBilinearUp(int src_width, int src_height,
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_I422TOARGBROW_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && src_width >= 8) {
 | 
| +  if (TestCpuFlag(kCpuHasNEON)) {
 | 
|      I422ToARGBRow = I422ToARGBRow_Any_NEON;
 | 
|      if (IS_ALIGNED(src_width, 8)) {
 | 
|        I422ToARGBRow = I422ToARGBRow_NEON;
 | 
| @@ -467,29 +445,23 @@ static void ScaleYUVToARGBBilinearUp(int src_width, int src_height,
 | 
|        ptrdiff_t src_stride, int dst_width, int source_y_fraction) =
 | 
|        InterpolateRow_C;
 | 
|  #if defined(HAS_INTERPOLATEROW_SSE2)
 | 
| -  if (TestCpuFlag(kCpuHasSSE2) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasSSE2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSE2;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSE2;
 | 
| -      if (IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride_argb, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSE2;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSE2;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_SSSE3)
 | 
| -  if (TestCpuFlag(kCpuHasSSSE3) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasSSSE3)) {
 | 
|      InterpolateRow = InterpolateRow_Any_SSSE3;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
| -      InterpolateRow = InterpolateRow_Unaligned_SSSE3;
 | 
| -      if (IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride_argb, 16)) {
 | 
| -        InterpolateRow = InterpolateRow_SSSE3;
 | 
| -      }
 | 
| +      InterpolateRow = InterpolateRow_SSSE3;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_AVX2)
 | 
| -  if (TestCpuFlag(kCpuHasAVX2) && dst_width >= 8) {
 | 
| +  if (TestCpuFlag(kCpuHasAVX2)) {
 | 
|      InterpolateRow = InterpolateRow_Any_AVX2;
 | 
|      if (IS_ALIGNED(dst_width, 8)) {
 | 
|        InterpolateRow = InterpolateRow_AVX2;
 | 
| @@ -497,15 +469,15 @@ static void ScaleYUVToARGBBilinearUp(int src_width, int src_height,
 | 
|    }
 | 
|  #endif
 | 
|  #if defined(HAS_INTERPOLATEROW_NEON)
 | 
| -  if (TestCpuFlag(kCpuHasNEON) && dst_width >= 4) {
 | 
| +  if (TestCpuFlag(kCpuHasNEON)) {
 | 
|      InterpolateRow = InterpolateRow_Any_NEON;
 | 
|      if (IS_ALIGNED(dst_width, 4)) {
 | 
|        InterpolateRow = InterpolateRow_NEON;
 | 
|      }
 | 
|    }
 | 
|  #endif
 | 
| -#if defined(HAS_INTERPOLATEROWS_MIPS_DSPR2)
 | 
| -  if (TestCpuFlag(kCpuHasMIPS_DSPR2) && dst_width >= 1 &&
 | 
| +#if defined(HAS_INTERPOLATEROW_MIPS_DSPR2)
 | 
| +  if (TestCpuFlag(kCpuHasMIPS_DSPR2) &&
 | 
|        IS_ALIGNED(dst_argb, 4) && IS_ALIGNED(dst_stride_argb, 4)) {
 | 
|      InterpolateRow = InterpolateRow_MIPS_DSPR2;
 | 
|    }
 | 
| @@ -531,9 +503,7 @@ static void ScaleYUVToARGBBilinearUp(int src_width, int src_height,
 | 
|    if (!filtering && src_width * 2 == dst_width && x < 0x8000) {
 | 
|      ScaleARGBFilterCols = ScaleARGBColsUp2_C;
 | 
|  #if defined(HAS_SCALEARGBCOLSUP2_SSE2)
 | 
| -    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8) &&
 | 
| -        IS_ALIGNED(src_argb, 16) && IS_ALIGNED(src_stride, 16) &&
 | 
| -        IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
 | 
|        ScaleARGBFilterCols = ScaleARGBColsUp2_SSE2;
 | 
|      }
 | 
|  #endif
 | 
| @@ -640,9 +610,7 @@ static void ScaleARGBSimple(int src_width, int src_height,
 | 
|    if (src_width * 2 == dst_width && x < 0x8000) {
 | 
|      ScaleARGBCols = ScaleARGBColsUp2_C;
 | 
|  #if defined(HAS_SCALEARGBCOLSUP2_SSE2)
 | 
| -    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8) &&
 | 
| -        IS_ALIGNED(src_argb, 16) && IS_ALIGNED(src_stride, 16) &&
 | 
| -        IS_ALIGNED(dst_argb, 16) && IS_ALIGNED(dst_stride, 16)) {
 | 
| +    if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(dst_width, 8)) {
 | 
|        ScaleARGBCols = ScaleARGBColsUp2_SSE2;
 | 
|      }
 | 
|  #endif
 | 
| 
 |