aboutsummaryrefslogtreecommitdiff
path: root/source/convert_from_argb.cc
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2017-12-08 15:08:59 -0800
committerFrank Barchard <fbarchard@chromium.org>2017-12-09 00:11:20 +0000
commit0f98c3c1dfd8aa7ecc9ac24cef5d140a4ee2db63 (patch)
tree4502e6f52c2cd1e16b663ff245b5b5e4d89d1714 /source/convert_from_argb.cc
parentaabe3808905910559f1e21338d033d771c653097 (diff)
downloadlibyuv-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.cc8
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;