[lworld+fp16] RFR: 8341414: Add support for FP16 conversion routines

Jatin Bhateja jbhateja at openjdk.org
Mon Oct 28 12:30:25 UTC 2024


On Mon, 28 Oct 2024 12:22:43 GMT, Jatin Bhateja <jbhateja at openjdk.org> wrote:

>> This patch adds intrinsic support for FP16 conversion routines to int/long/double and also the aarch64 backend support. This patch implements both scalar and vector versions for these conversions.
>> 
>> Performance numbers on aarch64 machine with SVE support :
>> 
>> 
>> Benchmark                         (vectorDim)   Gain
>> Float16OpsBenchmark.fp16ToDouble  1024          18.23
>> Float16OpsBenchmark.fp16ToInt     1024          1.93
>> Float16OpsBenchmark.fp16ToLong    1024          3.95
>> 
>> 
>> The Gain column is the ratio between thrpt of this patch and the thrpt with the intrinsics disabled (which generates FP32 arithmetic).
>
> src/java.base/share/classes/java/lang/Float16.java line 643:
> 
>> 641:     @IntrinsicCandidate
>> 642:     public int intValue() {
>> 643:         return (int)floatValue();
> 
> Should it be handled trough Idealization xform ?
> 
> ConvHF2F + ConvF2I => ConvHF2I

Matcher pattern may also suffice, but the problem will if ConvHF2F has multiple users.

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

PR Review Comment: https://git.openjdk.org/valhalla/pull/1283#discussion_r1818971252


More information about the valhalla-dev mailing list