Implementing Color32 functions for Neon platforms.

Besides the raw processing improvement provided by Neon, the code uses memory
preteches (pld) which seem to improve performance greatly when dealing with
very large counts.

This was tested using bench where color32 accounts for the majority of the
workload:
bench -match rects_1 -config 8888 -repeat 500 -forceBlend 1
(the forceBlend is there so that the Color32 code does not go through the
special cases where alpha == 0xFF as it would transform color32 into
a sk_memset32.

Numbers averaged over 3 runs:
bench name      | Before | Neon, no pld | Neon with pld | full boost
rrects_1        | 153.9  | 128.3        | 92            | 1.66x
rects_1_stroke_4| 32.8   | 31.4         | 28.45         | 1.15x
rects_1         | 125.35 | 97.2         | 63.59         | 1.97x

Credits: various googletv team members.

Committed on behalf of evannier.
Review URL: http://codereview.appspot.com/5569077/

git-svn-id: http://skia.googlecode.com/svn/trunk@4779 2bbb7eff-a529-9590-31e7-b0007b416f81
Landing arm patch from contributor.

http://codereview.appspot.com/5649055

git-svn-id: http://skia.googlecode.com/svn/trunk@3541 2bbb7eff-a529-9590-31e7-b0007b416f81
Revert "memcpy_76(): add support for non-ARM architectures"

This reverts commit ad673c1cb9dd151fd4e74380c4ba82c1fefb580b.
FIX: memcpy_76(): add support for non-ARM architectures

Before, memcpy_76() assumed ARM instruction set.  Add preprocessor
guards to use generic memcpy() if not on ARM.

Original patch had args to memcpy_76 backwards.

Change-Id: Ib5375e9de28ab6c2b348731dcdf282d6f7a529c1
memcpy_76(): fix behavior on non-ARM architectures

The destination is passed as the first argument to memcpy_76() and the
source is passed as the second argument.  As originally written in
commit cb5701e, the first argument was called 'src' (despite being the
destination) and the second was called 'dst' (despite being the
source).  The behavior of the memcpy_76() function was correct despite
the backward variable naming.

Commit ad673c1 reversed the naming of the two arguments to clarify the
semantics of the function but failed to reverse the naming in the ARM
assembly code.  This broke the function's behavior on ARM devices.

Commits a8ce1a0 and f4be52e reversed the argument names again.  This
fixed ARM support, but broke non-ARM architectures (the arguments to
memcpy() in the body of the memcpy_76() function were not also
reversed).

This change swaps the argument names again and swaps the names in the
ARM assembly, restoring correct behavior on non-ARM architectures and
aligning the variable names with the function's semantics.

Change-Id: Iaeb2b84b6696e3eebf29617dfdc41c55e5226776