I encountered an internal error when launching the FpMinMaxIntrinsics micros with APX enabled in v9.58 of the Intel SDE (https://www.intel.com/content/www/us/en/developer/articles/tool/software-development-emulator.html). The steps I took to reproduce the issue are posted below.
Apply a source code patch to workaround lack of APX_NCI_NDD_NF cpuid detection in SDE.
--- a/src/hotspot/cpu/x86/vm_version_x86.cpp
+++ b/src/hotspot/cpu/x86/vm_version_x86.cpp
@@ -2917,8 +2917,8 @@ VM_Version::VM_Features VM_Version::CpuidInfo::feature_flags() const {
if (std_cpuid1_ecx.bits.popcnt != 0)
vm_features.set_feature(CPU_POPCNT);
if (sefsl1_cpuid7_edx.bits.apx_f != 0 &&
- xem_xcr0_eax.bits.apx_f != 0 &&
- std_cpuid29_ebx.bits.apx_nci_ndd_nf != 0) {
+ xem_xcr0_eax.bits.apx_f != 0 /*&&
+ std_cpuid29_ebx.bits.apx_nci_ndd_nf != 0*/) {
vm_features.set_feature(CPU_APX_F);
}
if (std_cpuid1_ecx.bits.avx != 0 &&
bash ./configure --with-boot-jdk=/opt/jvm/java-25-openjdk --with-boot-jdk-jvmargs="-Xmx8G" --with-jmh=build/jmh/jars --with-hsdis=binutils --with-binutils-src=~/git/sourceware.org/binutils-gdb --with-jtreg=~/github/missa-prime/openjdk/jtreg/build/images/jtreg --with-gtest=~/github/missa-prime/google/googletest --with-debug-level=fastdebug
make CONF=linux-x86_64-server-fastdebug clean
make CONF=linux-x86_64-server-fastdebug install-hsdis
Do a test run to get through the one-time compilations on hardware rather than SDE.
make test TEST="micro:FpMinMaxIntrinsics" MICRO="JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:-UseAPX"
sde64 -future -ptr_raise -follow_subprocess -- make test TEST="micro:FpMinMaxIntrinsics" MICRO="JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:+UseAPX"
The resulting internal error is posted below.
Running test 'micro:FpMinMaxIntrinsics'
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (~/github/missa-prime/openjdk/jdk/src/hotspot/cpu/x86/x86.ad:2656), pid=165821, tid=165990
[thread 165865 also had an error]
# assert(oper_index != 1 || !is_demotion_candidate(mdef)) failed: negL_rReg_ndd
#
# JRE version: OpenJDK Runtime Environment (26.0) (fastdebug build 26-internal-adhoc.root.jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 26-internal-adhoc.root.jdk, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x414789] Matcher::is_register_biasing_candidate(MachNode const*, int)+0x199
#
# Core dump will be written. Default location: Determined by the following: "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (alternatively, falling back to ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/core.165821)
#
# An error report file with more information is saved as:
# ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/hs_err_pid165821.log
[thread 166025 also had an error]
#
# Compiler replay data is saved as:
# ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/replay_pid165821.log
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
#
/usr/bin/bash: line 1: 165821 Aborted (core dumped) ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseAPX --add-opens=java.base/java.io=ALL-UNNAMED -jar ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/micro/benchmarks.jar -jvmArgsPrepend '-Djava.library.path=~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/micro/native -XX:+UnlockExperimentalVMOptions -XX:+UseAPX' FpMinMaxIntrinsics > >(/usr/bin/tee ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/test-results/micro_FpMinMaxIntrinsics/micro.txt)
Finished running test 'micro:FpMinMaxIntrinsics'
Test report is stored in build/linux-x86_64-server-fastdebug/test-results/micro_FpMinMaxIntrinsics
==============================
Test summary
==============================
TEST TOTAL PASS FAIL ERROR SKIP
>> micro:FpMinMaxIntrinsics 1 0 0 1 0 <<
==============================
TEST FAILURE
make[1]: *** [~/github/missa-prime/openjdk/jdk/make/Init.gmk:155: main] Error 1
make: *** [~/github/missa-prime/openjdk/jdk/make/PreInit.gmk:159: test] Error 2
Apply a source code patch to workaround lack of APX_NCI_NDD_NF cpuid detection in SDE.
--- a/src/hotspot/cpu/x86/vm_version_x86.cpp
+++ b/src/hotspot/cpu/x86/vm_version_x86.cpp
@@ -2917,8 +2917,8 @@ VM_Version::VM_Features VM_Version::CpuidInfo::feature_flags() const {
if (std_cpuid1_ecx.bits.popcnt != 0)
vm_features.set_feature(CPU_POPCNT);
if (sefsl1_cpuid7_edx.bits.apx_f != 0 &&
- xem_xcr0_eax.bits.apx_f != 0 &&
- std_cpuid29_ebx.bits.apx_nci_ndd_nf != 0) {
+ xem_xcr0_eax.bits.apx_f != 0 /*&&
+ std_cpuid29_ebx.bits.apx_nci_ndd_nf != 0*/) {
vm_features.set_feature(CPU_APX_F);
}
if (std_cpuid1_ecx.bits.avx != 0 &&
bash ./configure --with-boot-jdk=/opt/jvm/java-25-openjdk --with-boot-jdk-jvmargs="-Xmx8G" --with-jmh=build/jmh/jars --with-hsdis=binutils --with-binutils-src=~/git/sourceware.org/binutils-gdb --with-jtreg=~/github/missa-prime/openjdk/jtreg/build/images/jtreg --with-gtest=~/github/missa-prime/google/googletest --with-debug-level=fastdebug
make CONF=linux-x86_64-server-fastdebug clean
make CONF=linux-x86_64-server-fastdebug install-hsdis
Do a test run to get through the one-time compilations on hardware rather than SDE.
make test TEST="micro:FpMinMaxIntrinsics" MICRO="JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:-UseAPX"
sde64 -future -ptr_raise -follow_subprocess -- make test TEST="micro:FpMinMaxIntrinsics" MICRO="JAVA_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:+UseAPX"
The resulting internal error is posted below.
Running test 'micro:FpMinMaxIntrinsics'
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (~/github/missa-prime/openjdk/jdk/src/hotspot/cpu/x86/x86.ad:2656), pid=165821, tid=165990
[thread 165865 also had an error]
# assert(oper_index != 1 || !is_demotion_candidate(mdef)) failed: negL_rReg_ndd
#
# JRE version: OpenJDK Runtime Environment (26.0) (fastdebug build 26-internal-adhoc.root.jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 26-internal-adhoc.root.jdk, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x414789] Matcher::is_register_biasing_candidate(MachNode const*, int)+0x199
#
# Core dump will be written. Default location: Determined by the following: "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (alternatively, falling back to ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/core.165821)
#
# An error report file with more information is saved as:
# ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/hs_err_pid165821.log
[thread 166025 also had an error]
#
# Compiler replay data is saved as:
# ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/replay_pid165821.log
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
#
/usr/bin/bash: line 1: 165821 Aborted (core dumped) ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseAPX --add-opens=java.base/java.io=ALL-UNNAMED -jar ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/micro/benchmarks.jar -jvmArgsPrepend '-Djava.library.path=~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/images/test/micro/native -XX:+UnlockExperimentalVMOptions -XX:+UseAPX' FpMinMaxIntrinsics > >(/usr/bin/tee ~/github/missa-prime/openjdk/jdk/build/linux-x86_64-server-fastdebug/test-results/micro_FpMinMaxIntrinsics/micro.txt)
Finished running test 'micro:FpMinMaxIntrinsics'
Test report is stored in build/linux-x86_64-server-fastdebug/test-results/micro_FpMinMaxIntrinsics
==============================
Test summary
==============================
TEST TOTAL PASS FAIL ERROR SKIP
>> micro:FpMinMaxIntrinsics 1 0 0 1 0 <<
==============================
TEST FAILURE
make[1]: *** [~/github/missa-prime/openjdk/jdk/make/Init.gmk:155: main] Error 1
make: *** [~/github/missa-prime/openjdk/jdk/make/PreInit.gmk:159: test] Error 2
- relates to
-
JDK-8351016 RA support for EVEX to REX/REX2 demotion to optimize NDD instructions
-
- Resolved
-
-
JDK-8329030 Intel Advanced Performance Extension support
-
- Open
-