[9] RFR(S): 8178033: C1 crashes with -XX:UseAVX = 3: "not a mov [reg+offs], reg instruction"
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Apr 4 16:19:06 UTC 2017
I think it is better to use VM_Version::supports_evex() in assert. May
be change similar assert in Assembler::locate_operand() too.
Note, assembler instructions VM_Version::supports_evex() check too.
CCing to Michael to review this change.
Thanks,
Vladimir
On 4/4/17 3:38 AM, Tobias Hartmann wrote:
> Hi,
>
> please review the following patch:
> https://bugs.openjdk.java.net/browse/JDK-8178033
> http://cr.openjdk.java.net/~thartmann/8178033/webrev.00/
>
> JDK-8076276 [1] added support for AVX512 but NativeMovRegMem::instruction_start() was not updated to recognize/skip the 4-bytes prefix for EVEX instructions. As a result, C1 crashes in NativeMovRegMem::verify() because the instruction_address() points to the EVEX prefix (0x62) which is not a valid MovRegMem instruction.
>
> Similar to the VEX prefixes, we should skip the corresponding number of bytes such that the instruction address points to the prefixed opcode (see also 'case 0x62' in Assembler::locate_operand()).
>
> Tested with replay compilation and RBT (running).
>
> Thanks,
> Tobias
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8076276
>
More information about the hotspot-compiler-dev
mailing list