am b450292f: Unroll skia ARGB8888 blitter loops.

* commit 'b450292fabdb04f8904725898ab7fa84abe51bdf':
  Unroll skia ARGB8888 blitter loops.
diff --git a/src/core/SkBlitRow_D32.cpp b/src/core/SkBlitRow_D32.cpp
index 0036025..3300ead 100644
--- a/src/core/SkBlitRow_D32.cpp
+++ b/src/core/SkBlitRow_D32.cpp
@@ -2,6 +2,8 @@
 #include "SkColorPriv.h"
 #include "SkUtils.h"
 
+#define UNROLL
+
 static void S32_Opaque_BlitRow32(SkPMColor* SK_RESTRICT dst,
                                  const SkPMColor* SK_RESTRICT src,
                                  int count, U8CPU alpha) {
@@ -16,11 +18,28 @@
     if (count > 0) {
         unsigned src_scale = SkAlpha255To256(alpha);
         unsigned dst_scale = 256 - src_scale;
+
+#ifdef UNROLL
+        if (count & 1) {
+            *dst = SkAlphaMulQ(*(src++), src_scale) + SkAlphaMulQ(*dst, dst_scale);
+            dst += 1;
+            count -= 1;
+        }
+
+        const SkPMColor* SK_RESTRICT srcEnd = src + count;
+        while (src != srcEnd) {
+            *dst = SkAlphaMulQ(*(src++), src_scale) + SkAlphaMulQ(*dst, dst_scale);
+            dst += 1;
+            *dst = SkAlphaMulQ(*(src++), src_scale) + SkAlphaMulQ(*dst, dst_scale);
+            dst += 1;
+        }
+#else
         do {
             *dst = SkAlphaMulQ(*src, src_scale) + SkAlphaMulQ(*dst, dst_scale);
             src += 1;
             dst += 1;
         } while (--count > 0);
+#endif
     }
 }
 
@@ -31,6 +50,21 @@
                                   int count, U8CPU alpha) {
     SkASSERT(255 == alpha);
     if (count > 0) {
+#ifdef UNROLL
+        if (count & 1) {
+            *dst = SkPMSrcOver(*(src++), *dst);
+            dst += 1;
+            count -= 1;
+        }
+
+        const SkPMColor* SK_RESTRICT srcEnd = src + count;
+        while (src != srcEnd) {
+            *dst = SkPMSrcOver(*(src++), *dst);
+            dst += 1;
+            *dst = SkPMSrcOver(*(src++), *dst);
+            dst += 1;
+        }
+#else
         do {
 #ifdef TEST_SRC_ALPHA
             SkPMColor sc = *src;
@@ -48,6 +82,7 @@
             src += 1;
             dst += 1;
         } while (--count > 0);
+#endif
     }
 }
 
@@ -56,11 +91,27 @@
                                  int count, U8CPU alpha) {
     SkASSERT(alpha <= 255);
     if (count > 0) {
+#ifdef UNROLL
+        if (count & 1) {
+            *dst = SkBlendARGB32(*(src++), *dst, alpha);
+            dst += 1;
+            count -= 1;
+        }
+
+        const SkPMColor* SK_RESTRICT srcEnd = src + count;
+        while (src != srcEnd) {
+            *dst = SkBlendARGB32(*(src++), *dst, alpha);
+            dst += 1;
+            *dst = SkBlendARGB32(*(src++), *dst, alpha);
+            dst += 1;
+        }
+#else
         do {
             *dst = SkBlendARGB32(*src, *dst, alpha);
             src += 1;
             dst += 1;
         } while (--count > 0);
+#endif
     }
 }