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