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

Sandhya Viswanathan sviswanathan at openjdk.java.net
Mon Nov 9 19:23:56 UTC 2020


On Mon, 9 Nov 2020 16:22:57 GMT, Paul Sandoz <psandoz 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!
>
> Marked as reviewed by psandoz (Reviewer).

Changes look good. Thanks for fixing this.

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

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


More information about the hotspot-compiler-dev mailing list