Integrated: 8281544: assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/

Emanuel Peter duke at openjdk.java.net
Mon Feb 21 07:08:50 UTC 2022


On Thu, 17 Feb 2022 07:51:42 GMT, Emanuel Peter <duke at openjdk.java.net> wrote:

> `ZSaveLiveRegisters::ZSaveLiveRegisters` stores live registers, and later they are loaded again.
> This includes opmask registers, which are part of AVX512. However, not all platforms have all of the AVX512 instructions.
> For example Knights Landing has general AVX512 support and makes use of optmask registers, but does not support the AVX512 BW subset of instructions, specifically it does not support the `kmovql` instruction. Platforms like Cannon Landing have support for AVX512 BW.
> 
> Solution: in analogy to `RegisterSaver::save_live_registers`, which seems to perform a very similar task, use `MacroAssembler::kmov` instead of `kmovql` directly. Internally, `kmov` choses either `kmovql` if avx512bw is available, else it takes `kmovwl`.
> 
> As a regression test, I took one of the tests that failed with `-XX:+UnlockExperimentalVMOptions -XX:+UseZGC`, and added an additional `@run` statement with those flags. I simulated this test locally with Intel Software Development Emulator:
> `sde -knl`: Knights Landing, AVX512 but not BW, fails without change to `kmov`, passes with it.
> `sde -cnl`: Cannon Landing, has AVX512 BW, passes before and after code change.
> 
> Ran additional tests to verify that the test triggers before code change, and that with the code change nothing broke.
> 
> @neliasso Thanks for the help!

This pull request has now been integrated.

Changeset: 4e0b81c5
Author:    Emanuel Peter <emanuel.peter at oracle.com>
Committer: Tobias Hartmann <thartmann at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/4e0b81c596f2a2eae49127b9ee98c80500b4e319
Stats:     14 lines in 2 files changed: 12 ins; 0 del; 2 mod

8281544: assert(VM_Version::supports_avx512bw()) failed for Tests jdk/incubator/vector/

Reviewed-by: kvn, neliasso, thartmann

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

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


More information about the hotspot-compiler-dev mailing list