On Wed, 8 Mar 2023 05:17:53 GMT, Vladimir Kozlov <k...@openjdk.org> wrote:

>> 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 RISC-V port code for float16 intrinsics

src/hotspot/cpu/x86/stubGenerator_x86_64.cpp line 3534:

> 3532:   __ leave(); // required for proper stackwalking of RuntimeStub frame
> 3533:   __ ret(0);
> 3534: 

Do we really need to set up a stack frame for these two?  This should be a 
leaf, and we have other leaf stubs that don't set up a frame.

-------------

PR: https://git.openjdk.org/jdk/pull/12869

Reply via email to