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); |