JDK-8362383 : C2 compilation fails with assert(VM_Version::supports_3dnow_prefetch()) failed: must support
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2025-07-16
  • Updated: 2025-10-27
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
Related Reports
Causes :  
Description
Fails with SDE emulating Intel(R) Goldmont CPU.

sde64 -glm -- java -Xbatch -XX:+TieredCompilation -XX:AllocatePrefetchInstr=3 Test.java

# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/workspace/open/src/hotspot/cpu/x86/assembler_x86.cpp:5762), pid=446762, tid=446782
#  assert(VM_Version::supports_3dnow_prefetch()) failed: must support
#
# JRE version: Java(TM) SE Runtime Environment (26.0+7) (fastdebug build 26-ea+7-633)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 26-ea+7-633, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x788070]  Assembler::prefetchw(Address)+0x1f0
#

Current CompileTask:
C2:17308  146    b  4       java.util.HashMap::putVal (300 bytes)

Stack: [0x00007a4cc73f4000,0x00007a4cc74f4000],  sp=0x00007a4cc74ef6e0,  free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x788070]  Assembler::prefetchw(Address)+0x1f0  (assembler_x86.cpp:5762)
V  [libjvm.so+0x3c6e3b]  prefetchAllocNode::emit(C2_MacroAssembler*, PhaseRegAlloc*) const+0x10b
V  [libjvm.so+0x17c1094]  PhaseOutput::scratch_emit_size(Node const*)+0x4a4
V  [libjvm.so+0x17b8e2f]  PhaseOutput::shorten_branches(unsigned int*)+0x35f
V  [libjvm.so+0x17cbf23]  PhaseOutput::Output()+0xb23
V  [libjvm.so+0xb4ffb0]  Compile::Code_Gen()+0xa20
V  [libjvm.so+0xb5542f]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x209f
V  [libjvm.so+0x97a437]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x467
V  [libjvm.so+0xb64698]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xb58
V  [libjvm.so+0xb65868]  CompileBroker::compiler_thread_loop()+0x578
V  [libjvm.so+0x10bc88b]  JavaThread::thread_main_inner()+0x13b
V  [libjvm.so+0x1b2eb26]  Thread::call_run()+0xb6
V  [libjvm.so+0x179e698]  thread_native_entry(Thread*)+0x128

Comments
ILW = Assert during compilation due to unsupported instruction being emitted, with non-default -XX:AllocatePrefetchInstr and SDE emulating old) Intel(R) Goldmont CPU, use different -XX:AllocatePrefetchInstr or disable compilation of affected method = HLL = P4
16-07-2025