ARGBMirror AVX2
BUG=none
TEST=out\release\libyuv_unittest --gtest_filter=*ARGBMirror*
Review URL: https://webrtc-codereview.appspot.com/1159005
git-svn-id: http://libyuv.googlecode.com/svn/trunk@594 16f28f9a-4ce2-e073-06de-1de4eb20be90
diff --git a/source/rotate_argb.cc b/source/rotate_argb.cc
index 20406f5..cccfb9b 100644
--- a/source/rotate_argb.cc
+++ b/source/rotate_argb.cc
@@ -99,7 +99,15 @@
IS_ALIGNED(dst, 16) && IS_ALIGNED(dst_stride, 16)) {
ARGBMirrorRow = ARGBMirrorRow_SSSE3;
}
-#elif defined(HAS_ARGBMIRRORROW_NEON)
+#endif
+#if defined(HAS_ARGBMIRRORROW_AVX2)
+ bool clear = false;
+ if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 8)) {
+ clear = true;
+ ARGBMirrorRow = ARGBMirrorRow_AVX2;
+ }
+#endif
+#if defined(HAS_ARGBMIRRORROW_NEON)
if (TestCpuFlag(kCpuHasNEON) && IS_ALIGNED(width, 4)) {
ARGBMirrorRow = ARGBMirrorRow_NEON;
}
@@ -151,6 +159,11 @@
src_bot -= src_stride;
dst_bot -= dst_stride;
}
+#if defined(HAS_ARGBMIRRORROW_AVX2)
+ if (clear) {
+ __asm vzeroupper;
+ }
+#endif
}
LIBYUV_API