C2 crashes on Power9 when using UseVectorByteReverseInstructionsPPC64 without SuperwordUseVSX.
# SIGSEGV (0xb) at pc=0x00007fffad866adc, pid=69654, tid=69669
#
# JRE version: OpenJDK Runtime Environment (16.0.0.1) (slowdebug build 16.0.0.1-internal+0-adhoc.d056149.jdk)
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 16.0.0.1-internal+0-adhoc.d056149.jdk, mixed mode, compressed oops, g1 gc, linux-ppc64le)
# Problematic frame:
# V [libjvm.so+0x2b6adc] Type::ideal_reg() const+0x1c
V [libjvm.so+0x2b6adc] Type::ideal_reg() const+0x1c
C 0x00007fff6cf9a0d0
V [libjvm.so+0x11537ac] Node::is_iteratively_computed()+0x44
V [libjvm.so+0xf57790] PhaseCFG::schedule_local(Block*, GrowableArray<int>&, VectorSet&, long*)+0xaf4
V [libjvm.so+0xb3aacc] PhaseCFG::global_code_motion()+0x7d0
V [libjvm.so+0xb3ae2c] PhaseCFG::do_global_code_motion()+0x7c
V [libjvm.so+0x7e21cc] Compile::Code_Gen()+0x1a4
V [libjvm.so+0x7d7560] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x169c
m is a MachTempNode in PhaseCFG::schedule_local. Out edge leads to bytes_reverse_long_vecNode which uses vecX temp operand which can only be used with SuperwordUseVSX.
# SIGSEGV (0xb) at pc=0x00007fffad866adc, pid=69654, tid=69669
#
# JRE version: OpenJDK Runtime Environment (16.0.0.1) (slowdebug build 16.0.0.1-internal+0-adhoc.d056149.jdk)
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 16.0.0.1-internal+0-adhoc.d056149.jdk, mixed mode, compressed oops, g1 gc, linux-ppc64le)
# Problematic frame:
# V [libjvm.so+0x2b6adc] Type::ideal_reg() const+0x1c
V [libjvm.so+0x2b6adc] Type::ideal_reg() const+0x1c
C 0x00007fff6cf9a0d0
V [libjvm.so+0x11537ac] Node::is_iteratively_computed()+0x44
V [libjvm.so+0xf57790] PhaseCFG::schedule_local(Block*, GrowableArray<int>&, VectorSet&, long*)+0xaf4
V [libjvm.so+0xb3aacc] PhaseCFG::global_code_motion()+0x7d0
V [libjvm.so+0xb3ae2c] PhaseCFG::do_global_code_motion()+0x7c
V [libjvm.so+0x7e21cc] Compile::Code_Gen()+0x1a4
V [libjvm.so+0x7d7560] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x169c
m is a MachTempNode in PhaseCFG::schedule_local. Out edge leads to bytes_reverse_long_vecNode which uses vecX temp operand which can only be used with SuperwordUseVSX.
- relates to
-
JDK-8241874 PPC64: Improve performance of Long.reverseBytes() and Integer.reverseBytes() on Power9
-
- Resolved
-