libm: replace Qualcomm's arm routines  with Nvidia's (except pow)

Thank you to Johnny Qiu and Shu Zhang from Nvidia for both creating these
and making them public.

This commit is a squash of the following (but modified for KitKat):

Optimization for sin/cos:
    1. Add assembly version of sin/cos for arm
    2. Enable a fast implementation of sin() and cos() for small
    input (|x| < 640). It is only enabled for Cortex-A15.
Bug 1154547
Bug 1340861
Change-Id: I176cf84ea7df0e612f78d181b8324f31a231095e
Reviewed-on: http://git-master/r/277610
(cherry picked from commit 325d52623445ee089a0199fc993b28264b1cc9a6)

libm: correct a confusing macro name in __kernel_log2

Change-Id: I5c05c2f5d7f28558d77338a50e75e668efefefa2
Reviewed-on: http://git-master/r/278950
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Johnny Qiu <joqiu@nvidia.com>
Tested-by: Johnny Qiu <joqiu@nvidia.com>
Reviewed-on: http://git-master/r/336758
Reviewed-by: Shu Zhang <chazhang@nvidia.com>
Tested-by: Shu Zhang <chazhang@nvidia.com>

ibm: Optimize exp()

Perform fast exp(x) when |x| < 16.0.
Bug 1362653
Change-Id: I26060c75e7be63af169f00005fdb7cfe162c3a23
Reviewed-on: http://git-master/r/278360
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Johnny Qiu <joqiu@nvidia.com>
Tested-by: Johnny Qiu <joqiu@nvidia.com>
Reviewed-on: http://git-master/r/336759
Reviewed-by: Shu Zhang <chazhang@nvidia.com>
Tested-by: Shu Zhang <chazhang@nvidia.com>

use vfma.f64/vfms.f64 instead of vmla.f64/vmls.f64

vmfa/vmfs has better precision than vmla/vmls. Use vmfa/vfms if
vfpv4 FPU is available.
Bug 1426401
Change-Id: Ib7f338353d3861417b24e0bfcdcafae94e46b555
Reviewed-on: http://git-master/r/343595
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Shu Zhang <chazhang@nvidia.com>
Tested-by: Shu Zhang <chazhang@nvidia.com>

libm: fast and precise sin()/cos()

Rewrite upstream sin/cos with assembly. Jump paths are optimized.
Introduce a PRECISE_TRIGONOMETRIC macro to select precision and
performance. With PRECISE_TRIGONOMETRIC set, the error is within 1 ULP.
The error is 2ULP if not set.
Bug 1426401
Change-Id: Iac712c0e6eb9bf42c87db9d7840c8aa3293ef674
Reviewed-on: http://git-master/r/345073
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Shu Zhang <chazhang@nvidia.com>
Tested-by: Shu Zhang <chazhang@nvidia.com>

libm: turn on high-precision sin/cos

Turn on PRECISE_TRIGONOMETRIC macro to get high precision sin/cos.
Bug 1437755
Change-Id: I41aa40b5b6234172ab123339364eae8bdee70ead
Reviewed-on: http://git-master/r/355653
Tested-by: Shu Zhang <chazhang@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Shu Zhang <chazhang@nvidia.com>

Add arm specific floor() optimization

Add arch specifi optimization scheme for libm.
Add arm specific floor() implementation which avoids VMSR and VMRS
instructions.
Change-Id: Ibd4cd7147aa2f98c9b5bbaf74948843ea619dba4

add arm specific sqrt and sqrtf

Add arm specific optimized sqrt and sqrtf.
Change-Id: I8ea417fc98a800c8cf4f47a0c6668c51d927b1dc

libm: Fix incorrect exponent when hitting a boundary condition

Bug 1466747
Change-Id: I3db7fe8eb79f99afd0d520f5736ad9c8ca5482f1
Reviewed-on: http://git-master/r/375210
Reviewed-by: Johnny Qiu <joqiu@nvidia.com>
Tested-by: Johnny Qiu <joqiu@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ryane Luo <ryanel@nvidia.com>
Tested-by: Ryane Luo <ryanel@nvidia.com>
Reviewed-by: Peter Zu <pzu@nvidia.com>