libm: Enable fast NEON pow() for supported targets

Change-Id: Iabda43e3c8462074a9a46c8f496eac903ea17084
libc: Add ARCH_ARM flags to enable new optimizations

Change-Id: I2a436f0730201509c6e53da7447835653d75f7f5
libm: Check for NEON support when choosing fast pow()

Change-Id: If981f6d00325fd599e8fa975782adcd9016b5e55
libc: Enable the fast memmove for NEON targets

 * The CodeAurora version of memmove provides roughly 20x the throughput
   of the default version for all tested platforms. Enable it.

Change-Id: Ia9740f6b38a72c0bd6a6818c96d73e2c23bb5979
libc: Add optimized memcpy for Cortex-A15

 * This version is from Newlib and is written/recommended by ARM as the best
   routine for Cortex-A15.

Change-Id: Ie9c2817dabda929ae4efaada5f6d467d53551ba4

Conflicts:
	libc/Android.mk
libc: Remove Scorpion memmove() routine

 * This code is slower than the new implementation under every
   circumstance on Scorpion devices. Remove it and standardize on one
   implementation.
 * Also remove "optimized" memmove_words, which was just a pointer to
   memmove. The performance was identical to the C version on Krait, and
   has regressions on other platforms. This function is only used for
   System.arraycopy in Dalvik.

Change-Id: I42d06fbd7c56d9874b80a0e768dbadf0fa5025a4

Conflicts:
	libc/Android.mk
msm: vidc: Add the support for MPEG-2 extension and user data

Update msm vidc header to match the new qcom/media branch

Change-Id: I444982ba7fb77f1ff3b71f4f09a4c436ff966859
libc: Add optimized strcmp

This version is from Newlib.

Original comment of the author:

The attached patch provides a new implementation of strcmp for ARM, using
LDRD instead of LDR whenever possible.

For older architectures that do not support LDRD, this implementation uses
the same algorithm as before.

This patch replaces strcmp.c with strcmp.S. The huge inline assembly from
strcmp.c was converted into plain assembly and included in strcmp.S under
the appropriate predefines.

Testing and benchmarking:
* Validation: successfully passes a test that compares different strings of
length 1-128 and offsets 0-8 from a word boundary. Checked on qemu/A15/A9,
ARM/Thumb mode, Big/Little Endian. This test is also added to newlib
testsuite as part of this patch.
* Integration with gcc: no regression on qemu for arm-none-eabi --with-cpu
a15/a9 --with-mode arm/thumb.
* Performance (relative to the current strcmp in newlib, only in ARM mode):
On Dhrystone, the new implementation (ldrd) is 22% faster on Cortex-A15
FPGA, and 16% on Cortex-A9 VE2.
On synthetic benchmarks, which measure the average number of cycles for
strcmp on strings of length 4-128K and offsets 0,1,2,3,4,8 from a word
boundary, where the strings are equal, the new implementation is three times
faster for long strings, when the input strings have the same offset from a
word boundary, and up to 30% faster in other cases, on both A15 FPGA and A9
VE2.

Change-Id: I7a39770cad48c2ecc6b6d375165652cd4f0c0619
Signed-off-by: Dirk Rettschlag <dirk.rettschlag@gmail.com>

Conflicts:
	tests/string_benchmark.cpp
libc: Fix invalid macro

Change-Id: Ia0c1d81cecb2f05834842bf3e6a3cc9cb06e00c9
build fix

Change-Id: I3d56083a729702d811f4fef0945d704134d336b1
Derp

Change-Id: If38946fff36d00c94d73d734004e2a73d7ed685c