RFR: 8341260: Add Float16 to jdk.incubator.vector [v3]

Joe Darcy darcy at openjdk.org
Tue Oct 22 23:16:11 UTC 2024


On Tue, 22 Oct 2024 20:01:45 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:

>> Joe Darcy has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
>> 
>>  - Add @since tag, respond to review feedback.
>>  - Merge branch 'master' into JDK-8341260
>>  - Remove comments for intrinsics per review feedback.
>>  - Update with changes from lworld+fp16 Float16.
>>  - Merge branch 'master' into JDK-8341260
>>  - Add support for BigDecimal -> Float16 conversion.
>>  - JDK-8341260: Add Float16 to jdk.incubator.vector
>
> src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float16.java line 690:
> 
>> 688:     // public int hashCode()
>> 689:     // public static int hashCode(Float16 value)
>> 690:     // public boolean equals(Object obj)
> 
> I think we should add these methods in a subsequent PR. e.g., (although i may be ignorant of some details)
> 
>     @Override
>     public int hashCode() {
>         return Float16.hashCode(value);
>     }
> 
>     public static int hashCode(float value) {
>         return float16ToShortBits(value); 
>     }
> 
>     public static int float16ToShortBits(float value) {
>         if (!isNaN(value)) {
>             return float16ToRawShortBits(value);
>         }
>         return Float16.NaN;
>     }
> 
>     public boolean equals(Object obj) {
>         return (obj instanceof Float16)
>                && (float16ToShortBits(((Float16)obj).value) == float16ToShortBits(value));
>     }

Hmm. Yes, adding at least explicit hashCode/equals methods from Object is reasonable. Back when the type was in the Valhalla repo, I wasn't sure what the recommended practice regarding Object methods vis a vis JEP 401/402.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21574#discussion_r1811550800


More information about the core-libs-dev mailing list