Index: source/planar_functions.cc |
diff --git a/source/planar_functions.cc b/source/planar_functions.cc |
index 86854ae25dcf045ff509455aea824fd3befbe50f..9089bf2e56e1e01b091adf35f9f41343e6925cb4 100644 |
--- a/source/planar_functions.cc |
+++ b/source/planar_functions.cc |
@@ -1696,6 +1696,14 @@ int ARGBAttenuate(const uint8* src_argb, |
} |
} |
#endif |
+#if defined(HAS_ARGBATTENUATEROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBAttenuateRow = ARGBAttenuateRow_Any_MSA; |
+ if (IS_ALIGNED(width, 8)) { |
+ ARGBAttenuateRow = ARGBAttenuateRow_MSA; |
+ } |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBAttenuateRow(src_argb, dst_argb, width); |
@@ -1791,6 +1799,11 @@ int ARGBGrayTo(const uint8* src_argb, |
ARGBGrayRow = ARGBGrayRow_NEON; |
} |
#endif |
+#if defined(HAS_ARGBGRAYROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA) && IS_ALIGNED(width, 8)) { |
+ ARGBGrayRow = ARGBGrayRow_MSA; |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBGrayRow(src_argb, dst_argb, width); |
@@ -1831,6 +1844,12 @@ int ARGBGray(uint8* dst_argb, |
ARGBGrayRow = ARGBGrayRow_NEON; |
} |
#endif |
+#if defined(HAS_ARGBGRAYROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA) && IS_ALIGNED(width, 8)) { |
+ ARGBGrayRow = ARGBGrayRow_MSA; |
+ } |
+#endif |
+ |
for (y = 0; y < height; ++y) { |
ARGBGrayRow(dst, dst, width); |
dst += dst_stride_argb; |
@@ -1868,6 +1887,12 @@ int ARGBSepia(uint8* dst_argb, |
ARGBSepiaRow = ARGBSepiaRow_NEON; |
} |
#endif |
+#if defined(HAS_ARGBSEPIAROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA) && IS_ALIGNED(width, 8)) { |
+ ARGBSepiaRow = ARGBSepiaRow_MSA; |
+ } |
+#endif |
+ |
for (y = 0; y < height; ++y) { |
ARGBSepiaRow(dst, width); |
dst += dst_stride_argb; |
@@ -2261,6 +2286,11 @@ int ARGBShade(const uint8* src_argb, |
ARGBShadeRow = ARGBShadeRow_NEON; |
} |
#endif |
+#if defined(HAS_ARGBSHADEROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA) && IS_ALIGNED(width, 4)) { |
+ ARGBShadeRow = ARGBShadeRow_MSA; |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBShadeRow(src_argb, dst_argb, width, value); |
@@ -2455,6 +2485,14 @@ int ARGBShuffle(const uint8* src_bgra, |
} |
} |
#endif |
+#if defined(HAS_ARGBSHUFFLEROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBShuffleRow = ARGBShuffleRow_Any_MSA; |
+ if (IS_ALIGNED(width, 8)) { |
+ ARGBShuffleRow = ARGBShuffleRow_MSA; |
+ } |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBShuffleRow(src_bgra, dst_argb, shuffler, width); |