Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | diff --git a/gfx/skia/src/opts/SkBlitRow_opts_arm.cpp b/gfx/skia/src/opts/SkBlitRow_opts_arm.cpp |
michael@0 | 2 | --- a/gfx/skia/src/opts/SkBlitRow_opts_arm.cpp |
michael@0 | 3 | +++ b/gfx/skia/src/opts/SkBlitRow_opts_arm.cpp |
michael@0 | 4 | @@ -26,66 +26,78 @@ static void S32A_D565_Opaque(uint16_t* S |
michael@0 | 5 | asm volatile ( |
michael@0 | 6 | "1: \n\t" |
michael@0 | 7 | "ldr r3, [%[src]], #4 \n\t" |
michael@0 | 8 | "cmp r3, #0xff000000 \n\t" |
michael@0 | 9 | "blo 2f \n\t" |
michael@0 | 10 | "and r4, r3, #0x0000f8 \n\t" |
michael@0 | 11 | "and r5, r3, #0x00fc00 \n\t" |
michael@0 | 12 | "and r6, r3, #0xf80000 \n\t" |
michael@0 | 13 | +#ifdef SK_ARM_HAS_EDSP |
michael@0 | 14 | "pld [r1, #32] \n\t" |
michael@0 | 15 | +#endif |
michael@0 | 16 | "lsl r3, r4, #8 \n\t" |
michael@0 | 17 | "orr r3, r3, r5, lsr #5 \n\t" |
michael@0 | 18 | "orr r3, r3, r6, lsr #19 \n\t" |
michael@0 | 19 | "subs %[count], %[count], #1 \n\t" |
michael@0 | 20 | "strh r3, [%[dst]], #2 \n\t" |
michael@0 | 21 | "bne 1b \n\t" |
michael@0 | 22 | "b 4f \n\t" |
michael@0 | 23 | "2: \n\t" |
michael@0 | 24 | "lsrs r7, r3, #24 \n\t" |
michael@0 | 25 | "beq 3f \n\t" |
michael@0 | 26 | "ldrh r4, [%[dst]] \n\t" |
michael@0 | 27 | "rsb r7, r7, #255 \n\t" |
michael@0 | 28 | "and r6, r4, #0x001f \n\t" |
michael@0 | 29 | -#if SK_ARM_ARCH == 6 |
michael@0 | 30 | +#if SK_ARM_ARCH <= 6 |
michael@0 | 31 | "lsl r5, r4, #21 \n\t" |
michael@0 | 32 | "lsr r5, r5, #26 \n\t" |
michael@0 | 33 | #else |
michael@0 | 34 | "ubfx r5, r4, #5, #6 \n\t" |
michael@0 | 35 | #endif |
michael@0 | 36 | +#ifdef SK_ARM_HAS_EDSP |
michael@0 | 37 | "pld [r0, #16] \n\t" |
michael@0 | 38 | +#endif |
michael@0 | 39 | "lsr r4, r4, #11 \n\t" |
michael@0 | 40 | #ifdef SK_ARM_HAS_EDSP |
michael@0 | 41 | "smulbb r6, r6, r7 \n\t" |
michael@0 | 42 | "smulbb r5, r5, r7 \n\t" |
michael@0 | 43 | "smulbb r4, r4, r7 \n\t" |
michael@0 | 44 | #else |
michael@0 | 45 | "mul r6, r6, r7 \n\t" |
michael@0 | 46 | "mul r5, r5, r7 \n\t" |
michael@0 | 47 | "mul r4, r4, r7 \n\t" |
michael@0 | 48 | #endif |
michael@0 | 49 | +#if SK_ARM_ARCH >= 6 |
michael@0 | 50 | "uxtb r7, r3, ROR #16 \n\t" |
michael@0 | 51 | "uxtb ip, r3, ROR #8 \n\t" |
michael@0 | 52 | +#else |
michael@0 | 53 | + "mov ip, #0xff \n\t" |
michael@0 | 54 | + "and r7, ip, r3, ROR #16 \n\t" |
michael@0 | 55 | + "and ip, ip, r3, ROR #8 \n\t" |
michael@0 | 56 | +#endif |
michael@0 | 57 | "and r3, r3, #0xff \n\t" |
michael@0 | 58 | "add r6, r6, #16 \n\t" |
michael@0 | 59 | "add r5, r5, #32 \n\t" |
michael@0 | 60 | "add r4, r4, #16 \n\t" |
michael@0 | 61 | "add r6, r6, r6, lsr #5 \n\t" |
michael@0 | 62 | "add r5, r5, r5, lsr #6 \n\t" |
michael@0 | 63 | "add r4, r4, r4, lsr #5 \n\t" |
michael@0 | 64 | "add r6, r7, r6, lsr #5 \n\t" |
michael@0 | 65 | "add r5, ip, r5, lsr #6 \n\t" |
michael@0 | 66 | "add r4, r3, r4, lsr #5 \n\t" |
michael@0 | 67 | "lsr r6, r6, #3 \n\t" |
michael@0 | 68 | "and r5, r5, #0xfc \n\t" |
michael@0 | 69 | "and r4, r4, #0xf8 \n\t" |
michael@0 | 70 | "orr r6, r6, r5, lsl #3 \n\t" |
michael@0 | 71 | "orr r4, r6, r4, lsl #8 \n\t" |
michael@0 | 72 | "strh r4, [%[dst]], #2 \n\t" |
michael@0 | 73 | +#ifdef SK_ARM_HAS_EDSP |
michael@0 | 74 | "pld [r1, #32] \n\t" |
michael@0 | 75 | +#endif |
michael@0 | 76 | "subs %[count], %[count], #1 \n\t" |
michael@0 | 77 | "bne 1b \n\t" |
michael@0 | 78 | "b 4f \n\t" |
michael@0 | 79 | "3: \n\t" |
michael@0 | 80 | "subs %[count], %[count], #1 \n\t" |
michael@0 | 81 | "add %[dst], %[dst], #2 \n\t" |
michael@0 | 82 | "bne 1b \n\t" |
michael@0 | 83 | "4: \n\t" |