-
Bug
-
Resolution: Fixed
-
P4
-
11, 12
-
b21
-
arm
-
linux
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8244236 | 11.0.8 | Boris Ulasevich | P4 | Resolved | Fixed | b02 |
TestPopCountVector.java test in fastdebug mode gives following assertion:
# Internal Error (/home/build/jdk-jdk/src/hotspot/cpu/arm/assembler_arm_32.hpp:1030), pid=19519, tid=19533
# assert(!VM_Version::is_initialized() || VM_Version::has_simd()) failed: simd instruction
Problem is that VM generates vcnt (Vector Count Set Bits) instruction in spite of failed check_simd check. Correct mechanism should work like the following:
1. VM_Version::initialize generates and calls short check_simd utility
2. check_simd executes vcnt instruction, vcnt produces SIGILL on machines without SIMD support
3. JVM_handle_linux_signal handles SIGILL and returns execution to the process with PC+=8 (to skip mov r0, 1)
4. check_simd returns false and makes VM_Version know that SIMD is not supported
5. VM_Version::initialize should set UsePopCountInstruction=false to disable further SIMD instructions usage
# Internal Error (/home/build/jdk-jdk/src/hotspot/cpu/arm/assembler_arm_32.hpp:1030), pid=19519, tid=19533
# assert(!VM_Version::is_initialized() || VM_Version::has_simd()) failed: simd instruction
Problem is that VM generates vcnt (Vector Count Set Bits) instruction in spite of failed check_simd check. Correct mechanism should work like the following:
1. VM_Version::initialize generates and calls short check_simd utility
2. check_simd executes vcnt instruction, vcnt produces SIGILL on machines without SIMD support
3. JVM_handle_linux_signal handles SIGILL and returns execution to the process with PC+=8 (to skip mov r0, 1)
4. check_simd returns false and makes VM_Version know that SIMD is not supported
5. VM_Version::initialize should set UsePopCountInstruction=false to disable further SIMD instructions usage
- backported by
-
JDK-8244236 ARM32: failed check_simd should set UsePopCountInstruction to false
-
- Resolved
-