| Index: source/convert.cc
|
| diff --git a/source/convert.cc b/source/convert.cc
|
| index ba07b3959c71d8e7b46abbd43d08f4aebf14db1b..077ae90b6ee161e71c128d9c58bdb4fff7e96369 100644
|
| --- a/source/convert.cc
|
| +++ b/source/convert.cc
|
| @@ -532,6 +532,22 @@ int ARGBToI420(const uint8* src_argb, int src_stride_argb,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGBTOYROW_MSA)
|
| + if (TestCpuFlag(kCpuHasMSA)) {
|
| + ARGBToYRow = ARGBToYRow_Any_MSA;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGBToYRow = ARGBToYRow_MSA;
|
| + }
|
| + }
|
| +#endif
|
| +#if defined(HAS_ARGBTOUVROW_MSA)
|
| + if (TestCpuFlag(kCpuHasMSA)) {
|
| + ARGBToUVRow = ARGBToUVRow_Any_MSA;
|
| + if (IS_ALIGNED(width, 32)) {
|
| + ARGBToUVRow = ARGBToUVRow_MSA;
|
| + }
|
| + }
|
| +#endif
|
|
|
| for (y = 0; y < height - 1; y += 2) {
|
| ARGBToUVRow(src_argb, src_stride_argb, dst_u, dst_v, width);
|
| @@ -1283,6 +1299,14 @@ int ARGB4444ToI420(const uint8* src_argb4444, int src_stride_argb4444,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGB4444TOARGBROW_MSA)
|
| + if (TestCpuFlag(kCpuHasMSA)) {
|
| + ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_MSA;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGB4444ToARGBRow = ARGB4444ToARGBRow_MSA;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_ARGBTOYROW_SSSE3) && defined(HAS_ARGBTOUVROW_SSSE3)
|
| if (TestCpuFlag(kCpuHasSSSE3)) {
|
| ARGBToUVRow = ARGBToUVRow_Any_SSSE3;
|
| @@ -1303,6 +1327,18 @@ int ARGB4444ToI420(const uint8* src_argb4444, int src_stride_argb4444,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGBTOYROW_MSA)
|
| + if (TestCpuFlag(kCpuHasMSA)) {
|
| + ARGBToUVRow = ARGBToUVRow_Any_MSA;
|
| + ARGBToYRow = ARGBToYRow_Any_MSA;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGBToYRow = ARGBToYRow_MSA;
|
| + if (IS_ALIGNED(width, 32)) {
|
| + ARGBToUVRow = ARGBToUVRow_MSA;
|
| + }
|
| + }
|
| + }
|
| +#endif
|
| {
|
| // Allocate 2 rows of ARGB.
|
| const int kRowSize = (width * 4 + 31) & ~31;
|
|
|