diff options
author | Frank Barchard <fbarchard@google.com> | 2017-12-08 15:08:59 -0800 |
---|---|---|
committer | Frank Barchard <fbarchard@chromium.org> | 2017-12-09 00:11:20 +0000 |
commit | 0f98c3c1dfd8aa7ecc9ac24cef5d140a4ee2db63 (patch) | |
tree | 4502e6f52c2cd1e16b663ff245b5b5e4d89d1714 /source/convert_from_argb.cc | |
parent | aabe3808905910559f1e21338d033d771c653097 (diff) | |
download | libyuv-0f98c3c1dfd8aa7ecc9ac24cef5d140a4ee2db63.tar.gz |
Add ARGBToAR30Row_SSE2 to speed up H010ToAR30
Port ARGBToAR30Row_AVX2 to ARGBToAR30Row_SSE2 using same instructions
but xmm registers and doing half as many pixels per loop.
Bug: libyuv:751
Test: LibYUVConvertTest.ARGBToAR30_Opt
Change-Id: Id644e54639133d1caf28ea3cd11ff6ab6891a673
Reviewed-on: https://chromium-review.googlesource.com/817918
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: richard winterton <rrwinterton@gmail.com>
Diffstat (limited to 'source/convert_from_argb.cc')
-rw-r--r-- | source/convert_from_argb.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/source/convert_from_argb.cc b/source/convert_from_argb.cc index fbd9e990..02a54685 100644 --- a/source/convert_from_argb.cc +++ b/source/convert_from_argb.cc @@ -1333,6 +1333,14 @@ int ARGBToAR30(const uint8* src_argb, height = 1; src_stride_argb = dst_stride_ar30 = 0; } +#if defined(HAS_ARGBTOAR30ROW_SSE2) + if (TestCpuFlag(kCpuHasSSE2)) { + ARGBToAR30Row = ARGBToAR30Row_Any_SSE2; + if (IS_ALIGNED(width, 4)) { + ARGBToAR30Row = ARGBToAR30Row_SSE2; + } + } +#endif #if defined(HAS_ARGBTOAR30ROW_AVX2) if (TestCpuFlag(kCpuHasAVX2)) { ARGBToAR30Row = ARGBToAR30Row_Any_AVX2; |