| Index: source/convert_from_argb.cc
|
| diff --git a/source/convert_from_argb.cc b/source/convert_from_argb.cc
|
| index 73c180d4071bd5b55b94f236fe10b90ae3475a3c..4e409f0d68e0dae1d99519f31cc92f218d90a706 100644
|
| --- a/source/convert_from_argb.cc
|
| +++ b/source/convert_from_argb.cc
|
| @@ -89,6 +89,14 @@ int ARGBToI444(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
|
|
|
| for (y = 0; y < height; ++y) {
|
| ARGBToUV444Row(src_argb, dst_u, dst_v, width);
|
| @@ -169,6 +177,22 @@ int ARGBToI422(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; ++y) {
|
| ARGBToUVRow(src_argb, 0, dst_u, dst_v, width);
|
| @@ -241,6 +265,22 @@ int ARGBToNV12(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
|
| #if defined(HAS_MERGEUVROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| MergeUVRow_ = MergeUVRow_Any_SSE2;
|
| @@ -350,6 +390,22 @@ int ARGBToNV21(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
|
| #if defined(HAS_MERGEUVROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| MergeUVRow_ = MergeUVRow_Any_SSE2;
|
| @@ -464,6 +520,22 @@ int ARGBToYUY2(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
|
| #if defined(HAS_I422TOYUY2ROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| I422ToYUY2Row = I422ToYUY2Row_Any_SSE2;
|
| @@ -574,6 +646,22 @@ int ARGBToUYVY(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
|
| #if defined(HAS_I422TOUYVYROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| I422ToUYVYRow = I422ToUYVYRow_Any_SSE2;
|
| @@ -665,6 +753,14 @@ int ARGBToI400(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
|
|
|
| for (y = 0; y < height; ++y) {
|
| ARGBToYRow(src_argb, dst_y, width);
|
|
|