RFR: 8271078: jdk/incubator/vector/Float128VectorTests.java failed a subtest [v4]

Dean Long dlong at openjdk.java.net
Wed May 18 02:34:44 UTC 2022


On Tue, 17 May 2022 03:34:58 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

>> Dean Long has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Just do full 512-bit memory accesses when -XX:+UseKNLSetting is set
>
> Regarding @sviswa7 question.
> 
> The comment in [sharedRuntime_x86_64.cpp#L458](https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp#L458) says:
> `16 bytes XMM registers are saved by default using fxsave/fxrstor instructions.`
> That is why we did not care about saving 128 bit xmm registers before AVX512. Unfortunately `fxsave` saves only `xmm0-xmm15`. So we save `xmm16-xmm31` manually in the code Dean is fixing. But we save only 64-bits before.
> 
> What I was surprise that there is no evex instruction to save only 128 bit of `xmm15-31` registers if `avx512vl` is not supported. I see specific asserts regarding that: [macroAssembler_x86.cpp#L2561](https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/x86/macroAssembler_x86.cpp#L2561)

> @vnkozlov @dean-long The "else" path is for scalar usage of xmm registers. For vector usage the "if" path should have been taken. It looks to me that C->max_vector_size() is not being set properly from some specific Vector API path. It is set properly for auto vectorizer. Do we know which subtest fails in Float128VectorTest.java and what is the command line/platform where the subtest fails?

The failures are in MINReduceFloat128VectorTestsMasked() and MAXReduceFloat128VectorTestsMasked() when XMM16-XMM31 are used with -XX:UseAVX=3.

Currently the "else" path is not just for scalars.  It is also for vector sizes not considered "wide".

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

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


More information about the hotspot-compiler-dev mailing list