Integrated: 8256054: C2: Floating-point min/max operations on vectors intermittently produce wrong results for NaN values

Vladimir Ivanov vlivanov at openjdk.java.net
Tue Nov 10 12:42:58 UTC 2020


On Mon, 9 Nov 2020 14:57:09 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

> Floating-point min/max operations on vectors intermittently produce wrong results for NaN values.
> 
> The problem boils down to a missing "TEMP dst" declaration on AVX512-related AD instruction. Without it`dst` vector register may match one of the input registers and it breaks the computation since it assumes all the used registers are different.
> 
> The fix adds missing effect and also introduces additional asserts to catch similar problems in the future.  
> 
> Testing:
> - [x] jdk/incubator/vector w/ -XX:+DeoptimizeALot on AVX512-capable hardware
> - [x] hs-precheckin-comp, hs-tier1, hs-tier2
> 
> Thanks!

This pull request has now been integrated.

Changeset: e6df13e6
Author:    Vladimir Ivanov <vlivanov at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/e6df13e6
Stats:     8 lines in 2 files changed: 7 ins; 0 del; 1 mod

8256054: C2: Floating-point min/max operations on vectors intermittently produce wrong results for NaN values

Reviewed-by: redestad, psandoz, dlong

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

PR: https://git.openjdk.java.net/jdk/pull/1128


More information about the hotspot-compiler-dev mailing list