Bug 901208 - Fix Skia for ARM v4t. r=derf
authorMike Hommey <mh+mozilla@glandium.org>
Mon, 04 Aug 2014 09:04:06 +0900
changeset 219254 f1a641e3d9dd2786278591909751ef2bd8ac123a
parent 219253 4bfdc8a6ee2f028ef65b60381fe49478939b4c1a
child 219255 5903b0f685fcf5bc24ce91af0243dcfa2e152c01
push id3979
push userraliiev@mozilla.com
push dateMon, 13 Oct 2014 16:35:44 +0000
treeherdermozilla-beta@30f2cc610691 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersderf
bugs901208
milestone34.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 901208 - Fix Skia for ARM v4t. r=derf
gfx/skia/trunk/src/opts/SkBlitRow_opts_arm.cpp
--- a/gfx/skia/trunk/src/opts/SkBlitRow_opts_arm.cpp
+++ b/gfx/skia/trunk/src/opts/SkBlitRow_opts_arm.cpp
@@ -34,66 +34,78 @@ static void S32A_D565_Opaque(uint16_t* S
     asm volatile (
                   "1:                                   \n\t"
                   "ldr     r3, [%[src]], #4             \n\t"
                   "cmp     r3, #0xff000000              \n\t"
                   "blo     2f                           \n\t"
                   "and     r4, r3, #0x0000f8            \n\t"
                   "and     r5, r3, #0x00fc00            \n\t"
                   "and     r6, r3, #0xf80000            \n\t"
+#ifdef SK_ARM_HAS_EDSP
                   "pld     [r1, #32]                    \n\t"
+#endif
                   "lsl     r3, r4, #8                   \n\t"
                   "orr     r3, r3, r5, lsr #5           \n\t"
                   "orr     r3, r3, r6, lsr #19          \n\t"
                   "subs    %[count], %[count], #1       \n\t"
                   "strh    r3, [%[dst]], #2             \n\t"
                   "bne     1b                           \n\t"
                   "b       4f                           \n\t"
                   "2:                                   \n\t"
                   "lsrs    r7, r3, #24                  \n\t"
                   "beq     3f                           \n\t"
                   "ldrh    r4, [%[dst]]                 \n\t"
                   "rsb     r7, r7, #255                 \n\t"
                   "and     r6, r4, #0x001f              \n\t"
-#if SK_ARM_ARCH == 6
+#if SK_ARM_ARCH <= 6
                   "lsl     r5, r4, #21                  \n\t"
                   "lsr     r5, r5, #26                  \n\t"
 #else
                   "ubfx    r5, r4, #5, #6               \n\t"
 #endif
+#ifdef SK_ARM_HAS_EDSP
                   "pld     [r0, #16]                    \n\t"
+#endif
                   "lsr     r4, r4, #11                  \n\t"
 #ifdef SK_ARM_HAS_EDSP
                   "smulbb  r6, r6, r7                   \n\t"
                   "smulbb  r5, r5, r7                   \n\t"
                   "smulbb  r4, r4, r7                   \n\t"
 #else
                   "mul     r6, r6, r7                   \n\t"
                   "mul     r5, r5, r7                   \n\t"
                   "mul     r4, r4, r7                   \n\t"
 #endif
+#if SK_ARM_ARCH >= 6
                   "uxtb    r7, r3, ROR #16              \n\t"
                   "uxtb    ip, r3, ROR #8               \n\t"
+#else
+                  "mov     ip, #0xff                    \n\t"
+                  "and     r7, ip, r3, ROR #16          \n\t"
+                  "and     ip, ip, r3, ROR #8           \n\t"
+#endif
                   "and     r3, r3, #0xff                \n\t"
                   "add     r6, r6, #16                  \n\t"
                   "add     r5, r5, #32                  \n\t"
                   "add     r4, r4, #16                  \n\t"
                   "add     r6, r6, r6, lsr #5           \n\t"
                   "add     r5, r5, r5, lsr #6           \n\t"
                   "add     r4, r4, r4, lsr #5           \n\t"
                   "add     r6, r7, r6, lsr #5           \n\t"
                   "add     r5, ip, r5, lsr #6           \n\t"
                   "add     r4, r3, r4, lsr #5           \n\t"
                   "lsr     r6, r6, #3                   \n\t"
                   "and     r5, r5, #0xfc                \n\t"
                   "and     r4, r4, #0xf8                \n\t"
                   "orr     r6, r6, r5, lsl #3           \n\t"
                   "orr     r4, r6, r4, lsl #8           \n\t"
                   "strh    r4, [%[dst]], #2             \n\t"
+#ifdef SK_ARM_HAS_EDSP
                   "pld     [r1, #32]                    \n\t"
+#endif
                   "subs    %[count], %[count], #1       \n\t"
                   "bne     1b                           \n\t"
                   "b       4f                           \n\t"
                   "3:                                   \n\t"
                   "subs    %[count], %[count], #1       \n\t"
                   "add     %[dst], %[dst], #2           \n\t"
                   "bne     1b                           \n\t"
                   "4:                                   \n\t"