aboutsummaryrefslogtreecommitdiff
path: root/source/convert_from.cc
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2018-01-31 15:40:08 -0800
committerFrank Barchard <fbarchard@chromium.org>2018-02-01 00:33:25 +0000
commit664c735677521d3ec216315ed599304f660f0f48 (patch)
tree5b4f7429ef7b42889a401695f555696f75fddf12 /source/convert_from.cc
parentffec313dbe58c6b97d4943387bda618dccbe4591 (diff)
downloadlibyuv-664c735677521d3ec216315ed599304f660f0f48.tar.gz
I420ToYUY2_AVX2 port
I420 and I422 To YUY2 and UYVY ported from SSE2 to AVX2. Was SSE2 I420ToYUY2_Opt (135 ms) I420ToUYVY_Opt (148 ms) I422ToYUY2_Opt (145 ms) I422ToUYVY_Opt (142 ms) Now AVX2 I420ToYUY2_Opt (133 ms) I420ToUYVY_Opt (130 ms) I422ToYUY2_Opt (127 ms) I422ToUYVY_Opt (137 ms) Bug: libyuv:556 Test: out/Release/libyuv_unittest --sandbox_unittests --gtest_filter=*I42?To*UY*Opt Change-Id: Ic35f97cee02dc009fd98785589ba17c7cf50bb35 Reviewed-on: https://chromium-review.googlesource.com/892493 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: richard winterton <rrwinterton@gmail.com>
Diffstat (limited to 'source/convert_from.cc')
-rw-r--r--source/convert_from.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/source/convert_from.cc b/source/convert_from.cc
index bc90d3c5..b5587ced 100644
--- a/source/convert_from.cc
+++ b/source/convert_from.cc
@@ -219,6 +219,14 @@ int I422ToYUY2(const uint8_t* src_y,
}
}
#endif
+#if defined(HAS_I422TOYUY2ROW_AVX2)
+ if (TestCpuFlag(kCpuHasAVX2)) {
+ I422ToYUY2Row = I422ToYUY2Row_Any_AVX2;
+ if (IS_ALIGNED(width, 32)) {
+ I422ToYUY2Row = I422ToYUY2Row_AVX2;
+ }
+ }
+#endif
#if defined(HAS_I422TOYUY2ROW_NEON)
if (TestCpuFlag(kCpuHasNEON)) {
I422ToYUY2Row = I422ToYUY2Row_Any_NEON;
@@ -270,6 +278,14 @@ int I420ToYUY2(const uint8_t* src_y,
}
}
#endif
+#if defined(HAS_I422TOYUY2ROW_AVX2)
+ if (TestCpuFlag(kCpuHasAVX2)) {
+ I422ToYUY2Row = I422ToYUY2Row_Any_AVX2;
+ if (IS_ALIGNED(width, 32)) {
+ I422ToYUY2Row = I422ToYUY2Row_AVX2;
+ }
+ }
+#endif
#if defined(HAS_I422TOYUY2ROW_NEON)
if (TestCpuFlag(kCpuHasNEON)) {
I422ToYUY2Row = I422ToYUY2Row_Any_NEON;
@@ -341,6 +357,14 @@ int I422ToUYVY(const uint8_t* src_y,
}
}
#endif
+#if defined(HAS_I422TOUYVYROW_AVX2)
+ if (TestCpuFlag(kCpuHasAVX2)) {
+ I422ToUYVYRow = I422ToUYVYRow_Any_AVX2;
+ if (IS_ALIGNED(width, 32)) {
+ I422ToUYVYRow = I422ToUYVYRow_AVX2;
+ }
+ }
+#endif
#if defined(HAS_I422TOUYVYROW_NEON)
if (TestCpuFlag(kCpuHasNEON)) {
I422ToUYVYRow = I422ToUYVYRow_Any_NEON;
@@ -400,6 +424,14 @@ int I420ToUYVY(const uint8_t* src_y,
}
}
#endif
+#if defined(HAS_I422TOUYVYROW_AVX2)
+ if (TestCpuFlag(kCpuHasAVX2)) {
+ I422ToUYVYRow = I422ToUYVYRow_Any_AVX2;
+ if (IS_ALIGNED(width, 32)) {
+ I422ToUYVYRow = I422ToUYVYRow_AVX2;
+ }
+ }
+#endif
#if defined(HAS_I422TOUYVYROW_NEON)
if (TestCpuFlag(kCpuHasNEON)) {
I422ToUYVYRow = I422ToUYVYRow_Any_NEON;