diff options
author | Frank Barchard <fbarchard@google.com> | 2022-08-01 12:49:02 -0700 |
---|---|---|
committer | Frank Barchard <fbarchard@chromium.org> | 2022-08-01 22:54:48 +0000 |
commit | b028453ba61043a560298acae28eb813ea9bc67d (patch) | |
tree | ef1915fb359491eb88c283885baa6ba033a548e2 /source/scale.cc | |
parent | fe8c78b61aaf5a8cb2045e8a6231daf2d904c1a0 (diff) | |
download | libyuv-b028453ba61043a560298acae28eb813ea9bc67d.tar.gz |
Disable bilinear 16 bit scale up for SSE2
- Undefine HAS_SCALEROWUP2_BILINEAR_16_SSE2
- Save XMM7 in ScaleRowUp2_Bilinear_16_SSE2().
- Rename HAS_SCALEROWUP2LINEAR_xxx to HAS_SCALEROWUP2_LINEAR_xxx
- DetileSplitUVRow_C() is implemented using SplitUVRow_C().
- Changes to unit_test/planar_test.cc.
Bug: libyuv:882
Change-Id: I0a8e8e5fb43bdf58ded87244e802343eacb789f2
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/3795063
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Diffstat (limited to 'source/scale.cc')
-rw-r--r-- | source/scale.cc | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/source/scale.cc b/source/scale.cc index 8147c291..d673536b 100644 --- a/source/scale.cc +++ b/source/scale.cc @@ -1384,25 +1384,25 @@ void ScalePlaneUp2_Linear(int src_width, // This function can only scale up by 2 times horizontally. assert(src_width == ((dst_width + 1) / 2)); -#ifdef HAS_SCALEROWUP2LINEAR_SSE2 +#ifdef HAS_SCALEROWUP2_LINEAR_SSE2 if (TestCpuFlag(kCpuHasSSE2)) { ScaleRowUp = ScaleRowUp2_Linear_Any_SSE2; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_SSSE3 +#ifdef HAS_SCALEROWUP2_LINEAR_SSSE3 if (TestCpuFlag(kCpuHasSSSE3)) { ScaleRowUp = ScaleRowUp2_Linear_Any_SSSE3; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_AVX2 +#ifdef HAS_SCALEROWUP2_LINEAR_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { ScaleRowUp = ScaleRowUp2_Linear_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_NEON +#ifdef HAS_SCALEROWUP2_LINEAR_NEON if (TestCpuFlag(kCpuHasNEON)) { ScaleRowUp = ScaleRowUp2_Linear_Any_NEON; } @@ -1443,25 +1443,25 @@ void ScalePlaneUp2_Bilinear(int src_width, assert(src_width == ((dst_width + 1) / 2)); assert(src_height == ((dst_height + 1) / 2)); -#ifdef HAS_SCALEROWUP2BILINEAR_SSE2 +#ifdef HAS_SCALEROWUP2_BILINEAR_SSE2 if (TestCpuFlag(kCpuHasSSE2)) { Scale2RowUp = ScaleRowUp2_Bilinear_Any_SSE2; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_SSSE3 +#ifdef HAS_SCALEROWUP2_BILINEAR_SSSE3 if (TestCpuFlag(kCpuHasSSSE3)) { Scale2RowUp = ScaleRowUp2_Bilinear_Any_SSSE3; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_AVX2 +#ifdef HAS_SCALEROWUP2_BILINEAR_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { Scale2RowUp = ScaleRowUp2_Bilinear_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_NEON +#ifdef HAS_SCALEROWUP2_BILINEAR_NEON if (TestCpuFlag(kCpuHasNEON)) { Scale2RowUp = ScaleRowUp2_Bilinear_Any_NEON; } @@ -1503,19 +1503,19 @@ void ScalePlaneUp2_12_Linear(int src_width, // This function can only scale up by 2 times horizontally. assert(src_width == ((dst_width + 1) / 2)); -#ifdef HAS_SCALEROWUP2LINEAR_12_SSSE3 +#ifdef HAS_SCALEROWUP2_LINEAR_12_SSSE3 if (TestCpuFlag(kCpuHasSSSE3)) { ScaleRowUp = ScaleRowUp2_Linear_12_Any_SSSE3; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_12_AVX2 +#ifdef HAS_SCALEROWUP2_LINEAR_12_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { ScaleRowUp = ScaleRowUp2_Linear_12_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_12_NEON +#ifdef HAS_SCALEROWUP2_LINEAR_12_NEON if (TestCpuFlag(kCpuHasNEON)) { ScaleRowUp = ScaleRowUp2_Linear_12_Any_NEON; } @@ -1557,19 +1557,19 @@ void ScalePlaneUp2_12_Bilinear(int src_width, assert(src_width == ((dst_width + 1) / 2)); assert(src_height == ((dst_height + 1) / 2)); -#ifdef HAS_SCALEROWUP2BILINEAR_12_SSSE3 +#ifdef HAS_SCALEROWUP2_BILINEAR_12_SSSE3 if (TestCpuFlag(kCpuHasSSSE3)) { Scale2RowUp = ScaleRowUp2_Bilinear_12_Any_SSSE3; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_12_AVX2 +#ifdef HAS_SCALEROWUP2_BILINEAR_12_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { Scale2RowUp = ScaleRowUp2_Bilinear_12_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_12_NEON +#ifdef HAS_SCALEROWUP2_BILINEAR_12_NEON if (TestCpuFlag(kCpuHasNEON)) { Scale2RowUp = ScaleRowUp2_Bilinear_12_Any_NEON; } @@ -1604,19 +1604,19 @@ void ScalePlaneUp2_16_Linear(int src_width, // This function can only scale up by 2 times horizontally. assert(src_width == ((dst_width + 1) / 2)); -#ifdef HAS_SCALEROWUP2LINEAR_16_SSE2 +#ifdef HAS_SCALEROWUP2_LINEAR_16_SSE2 if (TestCpuFlag(kCpuHasSSE2)) { ScaleRowUp = ScaleRowUp2_Linear_16_Any_SSE2; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_16_AVX2 +#ifdef HAS_SCALEROWUP2_LINEAR_16_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { ScaleRowUp = ScaleRowUp2_Linear_16_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2LINEAR_16_NEON +#ifdef HAS_SCALEROWUP2_LINEAR_16_NEON if (TestCpuFlag(kCpuHasNEON)) { ScaleRowUp = ScaleRowUp2_Linear_16_Any_NEON; } @@ -1653,19 +1653,19 @@ void ScalePlaneUp2_16_Bilinear(int src_width, assert(src_width == ((dst_width + 1) / 2)); assert(src_height == ((dst_height + 1) / 2)); -#ifdef HAS_SCALEROWUP2BILINEAR_16_SSE2 +#ifdef HAS_SCALEROWUP2_BILINEAR_16_SSE2 if (TestCpuFlag(kCpuHasSSSE3)) { Scale2RowUp = ScaleRowUp2_Bilinear_16_Any_SSSE3; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_16_AVX2 +#ifdef HAS_SCALEROWUP2_BILINEAR_16_AVX2 if (TestCpuFlag(kCpuHasAVX2)) { Scale2RowUp = ScaleRowUp2_Bilinear_16_Any_AVX2; } #endif -#ifdef HAS_SCALEROWUP2BILINEAR_16_NEON +#ifdef HAS_SCALEROWUP2_BILINEAR_16_NEON if (TestCpuFlag(kCpuHasNEON)) { Scale2RowUp = ScaleRowUp2_Bilinear_16_Any_NEON; } @@ -1758,7 +1758,6 @@ void ScalePlaneBilinearUp_16(int src_width, } #endif } - if (y > max_y) { y = max_y; } @@ -1915,7 +1914,6 @@ void ScalePlane(const uint8_t* src, src = src + (src_height - 1) * (int64_t)src_stride; src_stride = -src_stride; } - // Use specialized scales to improve performance for common resolutions. // For example, all the 1/2 scalings will use ScalePlaneDown2() if (dst_width == src_width && dst_height == src_height) { @@ -2018,7 +2016,6 @@ void ScalePlane_16(const uint16_t* src, src = src + (src_height - 1) * (int64_t)src_stride; src_stride = -src_stride; } - // Use specialized scales to improve performance for common resolutions. // For example, all the 1/2 scalings will use ScalePlaneDown2() if (dst_width == src_width && dst_height == src_height) { |