RFR: 8372978: [VectorAPI] Fix incorrect identity values in UMIN/UMAX reductions [v6]
Paul Sandoz
psandoz at openjdk.org
Tue Jan 13 17:39:44 UTC 2026
On Tue, 6 Jan 2026 00:53:04 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:
>> Eric Fang has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains eight commits:
>>
>> - Update copyright year to 2026
>> - Merge branch 'master' into JDK-8372978-fix-umin-umax-identity
>> - wrap the test loop within a try/catch to speed up the tests
>> - Refine the tests for identity values
>> - Merge branch 'master' into JDK-8372978-fix-umin-umax-identity
>> - Declare two constants for UMIN/UMAX reduction identity values
>> - Merge branch 'master' into JDK-8372978-fix-umin-umax-identity
>> - 8372978: [VectorAPI] Fix incorrect identity values in UMIN/UMAX reductions
>>
>> The original implementation of UMIN/UMAX reductions in JDK-8346174
>> used incorrect identity values in the Java implementation and test code.
>>
>> Problem:
>> --------
>> UMIN was using MAX_OR_INF (signed maximum value) as the identity:
>> - Byte.MAX_VALUE (127) instead of max unsigned byte (255)
>> - Short.MAX_VALUE (32767) instead of max unsigned short (65535)
>> - Integer.MAX_VALUE instead of max unsigned int (-1)
>> - Long.MAX_VALUE instead of max unsigned long (-1)
>>
>> UMAX was using MIN_OR_INF (signed minimum value) as the identity:
>> - Byte.MIN_VALUE (-128) instead of 0
>> - Short.MIN_VALUE (-32768) instead of 0
>> - Integer.MIN_VALUE instead of 0
>> - Long.MIN_VALUE instead of 0
>>
>> This caused incorrect result. For example:
>> UMAX([42,42,...,42]) returned 128 instead of 42
>>
>> Solution:
>> ---------
>> Use correct unsigned identity values:
>> - UMIN: ($type$)-1 (maximum unsigned value)
>> - UMAX: ($type$)0 (minimum unsigned value)
>>
>> Changes:
>> --------
>> - X-Vector.java.template: Fixed identity values in reductionOperations
>> - gen-template.sh: Fixed identity values for test code generation
>> - templates/Unit-header.template: Updated copyright year to 2025
>> - Regenerated all Vector classes and test files
>>
>> Testing:
>> --------
>> All types (byte/short/int/long) now return correct results in both
>> interpreter mode (-Xint) and compiled mode.
>
> This looks good. Before we integrate we will run it through our test system and report back to you.
> Hi @PaulSandoz , if you’ve already had a chance to run the tests, could you let me know how they turned out? Thanks~
Yes, all good!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28692#issuecomment-3745582478
More information about the core-libs-dev
mailing list