> Implemented `Float.floatToFloat16` and `Float.float16ToFloat` intrinsics in > Interpreter and C1 compiler to produce the same results as C2 intrinsics on > x64, Aarch64 and RISC-V - all platforms where C2 intrinsics for these Java > methods were implemented originally. > > Replaced `SharedRuntime::f2hf()` and `hf2f()` C runtime functions with calls > to runtime stubs which use the same HW instructions as C2 intrinsics. Only > for 64-bit x64 because 32-bit x86 stub does not work: result is passed > through FPU register and NaN values become different from C2 intrinsic. This > runtime stub is only used to calculate constant values during C2 compilation > and can be skipped. > > I added new tests based on Tobias's `TestAll.java` And copied > `jdk/lang/Float/Binary16Conversion*.java` tests to run them with `-Xcomp` to > make sure code is compiled by C1 or C2. I modified > `Binary16ConversionNaN.java` to compare results from Interpreter, C1 and C2. > > Tested tier1-5, Xcomp, stress
Vladimir Kozlov has updated the pull request incrementally with one additional commit since the last revision: Remove SharedRuntime::f2hf and hf2f wrapper functions ------------- Changes: - all: https://git.openjdk.org/jdk/pull/12869/files - new: https://git.openjdk.org/jdk/pull/12869/files/9f4b2474..fa799942 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=12869&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12869&range=03-04 Stats: 43 lines in 5 files changed: 15 ins; 20 del; 8 mod Patch: https://git.openjdk.org/jdk/pull/12869.diff Fetch: git fetch https://git.openjdk.org/jdk pull/12869/head:pull/12869 PR: https://git.openjdk.org/jdk/pull/12869