On Mon, 8 Dec 2025 03:22:31 GMT, Eric Fang <[email protected]> wrote:

> 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 pull request has now been integrated.

Changeset: 56d7b524
Author:    Eric Fang <[email protected]>
Committer: Xiaohong Gong <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/56d7b524b3ddb49b985b4e6f061a7128b10cffb5
Stats:     13975 lines in 48 files changed: 7543 ins; 3660 del; 2772 mod

8372978: [VectorAPI] Fix incorrect identity values in UMIN/UMAX reductions

Reviewed-by: psandoz, qamai, xgong

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

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

Reply via email to