ARM64: toFloat() intrinsics with ARMv8 FP16.

This CL intrinsifies toFloat() method with ARMv8.2 FP16 instructions.

This CL depends on the android framework and libcore changes:
moving FP16 implementations into libcore.

Tested with local micro benchmark on Pixel 3, compared to original
android.util.Half.toFloat() Java implementation, this intrinsic is
50% faster.

In real-life case, the FP16 toFloat() intrinsic can help
accelerate ColorLong ARGB decoding in Android framework.

This intrinsic implementation archieves bit-level compatibility with the
original Java implementation android.util.Half.toFloat().

Test: 580-fp16
Test: art/test/testrunner/run_build_test_target.py -j80 art-test-javac
Test: test-art-host, test-art-target

Change-Id: I059c69747067b84f2c532465e32a1dcd3c25269f
diff --git a/test/knownfailures.json b/test/knownfailures.json
index 1d6e36d..4f119a8 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -950,6 +950,7 @@
           "574-irreducible-and-constant-area",
           "575-checker-string-init-alias",
           "580-checker-string-fact-intrinsics",
+          "580-fp16",
           "585-inline-unresolved",
           "586-checker-null-array-get",
           "587-inline-class-error",