Bug 901208 - Fix Skia for ARM v4t. r=derf, a=NPOTB
authorMike Hommey <mh+mozilla@glandium.org>
Mon, 04 Aug 2014 09:04:06 +0900
changeset 208225 aa124023125a
parent 208224 91dca763d0f5
child 208226 19d074395f1a
push id3782
push userryanvm@gmail.com
push date2014-08-04 16:21 +0000
treeherdermozilla-beta@e61371be0f38 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersderf, NPOTB
bugs901208
milestone32.0
Bug 901208 - Fix Skia for ARM v4t. r=derf, a=NPOTB
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"