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