FpMinMaxIntrinsics micro-benchmarks can't run in emulation when APX is enabled

XMLWordPrintable

    • b27
    • 26
    • x86
    • linux

      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

            Assignee:
            Jatin Bhateja
            Reporter:
            Mohamed Issa
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: