aboutsummaryrefslogtreecommitdiff
path: root/source/convert_from.cc
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2016-10-27 10:47:35 -0700
committerFrank Barchard <fbarchard@google.com>2016-10-27 10:47:35 -0700
commit10ce829bad9b1d9908874b8aa9f3ba8d04523282 (patch)
tree3f43ffef591fc7efbec57989f40e67744d008630 /source/convert_from.cc
parent532f5708a95b02185db463a481c0315524742dd8 (diff)
downloadlibyuv-10ce829bad9b1d9908874b8aa9f3ba8d04523282.tar.gz
Add MSA optimized I422ToRGB565Row_MSA, I422ToARGB4444Row_MSA and I422ToARGB1555Row_MSA functions
R=fbarchard@google.com BUG=libyuv:634 Performance Gain (vs C vectorized) I422ToRGB565Row_MSA : ~1.5x I422ToRGB565Row_Any_MSA : ~1.5x I422ToARGB4444Row_MSA : ~1.4x I422ToARGB4444Row_Any_MSA : ~1.4x I422ToARGB1555Row_MSA : ~1.4x I422ToARGB1555Row_Any_MSA : ~1.4x Performance Gain (vs C non-vectorized) I422ToRGB565Row_MSA : ~6.8x I422ToRGB565Row_Any_MSA : ~6.8x I422ToARGB4444Row_MSA : ~6.6x I422ToARGB4444Row_Any_MSA : ~6.6x I422ToARGB1555Row_MSA : ~6.6x I422ToARGB1555Row_Any_MSA : ~6.6x Review URL: https://codereview.chromium.org/2445343007 .
Diffstat (limited to 'source/convert_from.cc')
-rw-r--r--source/convert_from.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/convert_from.cc b/source/convert_from.cc
index 9859f5f3..518f0a54 100644
--- a/source/convert_from.cc
+++ b/source/convert_from.cc
@@ -657,6 +657,14 @@ int I420ToARGB1555(const uint8* src_y, int src_stride_y,
}
}
#endif
+#if defined(HAS_I422TOARGB1555ROW_MSA)
+ if (TestCpuFlag(kCpuHasMSA)) {
+ I422ToARGB1555Row = I422ToARGB1555Row_Any_MSA;
+ if (IS_ALIGNED(width, 8)) {
+ I422ToARGB1555Row = I422ToARGB1555Row_MSA;
+ }
+ }
+#endif
for (y = 0; y < height; ++y) {
I422ToARGB1555Row(src_y, src_u, src_v, dst_argb1555, &kYuvI601Constants,
@@ -720,6 +728,14 @@ int I420ToARGB4444(const uint8* src_y, int src_stride_y,
}
}
#endif
+#if defined(HAS_I422TOARGB4444ROW_MSA)
+ if (TestCpuFlag(kCpuHasMSA)) {
+ I422ToARGB4444Row = I422ToARGB4444Row_Any_MSA;
+ if (IS_ALIGNED(width, 8)) {
+ I422ToARGB4444Row = I422ToARGB4444Row_MSA;
+ }
+ }
+#endif
for (y = 0; y < height; ++y) {
I422ToARGB4444Row(src_y, src_u, src_v, dst_argb4444, &kYuvI601Constants,
@@ -782,6 +798,14 @@ int I420ToRGB565(const uint8* src_y, int src_stride_y,
}
}
#endif
+#if defined(HAS_I422TORGB565ROW_MSA)
+ if (TestCpuFlag(kCpuHasMSA)) {
+ I422ToRGB565Row = I422ToRGB565Row_Any_MSA;
+ if (IS_ALIGNED(width, 8)) {
+ I422ToRGB565Row = I422ToRGB565Row_MSA;
+ }
+ }
+#endif
for (y = 0; y < height; ++y) {
I422ToRGB565Row(src_y, src_u, src_v, dst_rgb565, &kYuvI601Constants, width);