JDK-8239331 : C2: AVX512VL isn't properly handled
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 15
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • CPU: x86
  • Submitted: 2020-02-18
  • Updated: 2022-01-26
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Description
Explicitly disabling AVX512VL leads to the following assertion failures:

#  Internal Error (open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:3306), pid=25774, tid=25788
#  assert(((dst->encoding() < 16) || VM_Version::supports_avx512vl())) failed: XMM register should be 0-15
V  [libjvm.so+0x107695c]  MacroAssembler::vmovdqu(XMMRegisterImpl*, AddressLiteral, RegisterImpl*)+0x20c
V  [libjvm.so+0x36fd7a]  vshift64B_avxNode::emit(CodeBuffer&, PhaseRegAlloc*) const+0x41a


#  Internal Error (open/src/hotspot/cpu/x86/assembler_x86.cpp:7910), pid=26235, tid=26249
#  assert(((!attributes->uses_vl()) || (attributes->get_vector_len() == AVX_512bit) || (!_legacy_mode_vl) || (attributes->is_legacy_mode()))) failed: XMM register should be 0-15
V  [libjvm.so+0x4fd964]  Assembler::vex_prefix(Address, int, int, Assembler::VexSimdPrefix, Assembler::VexOpcode, InstructionAttr*)+0x214
V  [libjvm.so+0x4ff184]  Assembler::vpmullq(XMMRegisterImpl*, XMMRegisterImpl*, Address, int)+0x104
V  [libjvm.so+0x365536]  vmulL_mem_0Node::emit(CodeBuffer&, PhaseRegAlloc*) const+0x1d6


#  Internal Error (open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:3894), pid=26287, tid=26301
#  assert(((dst->encoding() < 16 && shift->encoding() < 16 && nds->encoding() < 16) || VM_Version::supports_avx512vlbw())) failed: XMM register should be 0-15
V  [libjvm.so+0x107b38a]  MacroAssembler::vpsllw(XMMRegisterImpl*, XMMRegisterImpl*, XMMRegisterImpl*, int)+0x7a
V  [libjvm.so+0x372c2a]  vshiftSNode::emit(CodeBuffer&, PhaseRegAlloc*) const+0x14a


#  Internal Error (open/src/hotspot/cpu/x86/macroAssembler_x86.cpp:3803), pid=26980, tid=26994
#  assert(((dst->encoding() < 16 && src->encoding() < 16) || VM_Version::supports_avx512vlbw())) failed: XMM register should be 0-15
V  [libjvm.so+0x1079d0d]  MacroAssembler::vpbroadcastw(XMMRegisterImpl*, XMMRegisterImpl*, int)+0x6d
V  [libjvm.so+0x342213]  ReplS_immNode::emit(CodeBuffer&, PhaseRegAlloc*) const+0x373


As of now, the configuration is artificial since there's no such hardware exist.