--- old/src/hotspot/cpu/x86/vm_version_x86.hpp 2019-12-10 17:10:26.565015380 -0800 +++ new/src/hotspot/cpu/x86/vm_version_x86.hpp 2019-12-10 17:10:26.421015380 -0800 @@ -341,6 +341,7 @@ #define CPU_AVX512_VPCLMULQDQ ((uint64_t)UCONST64(0x4000000000)) //Vector carryless multiplication #define CPU_VAES ((uint64_t)UCONST64(0x8000000000)) // Vector AES instructions #define CPU_VNNI ((uint64_t)UCONST64(0x10000000000)) // Vector Neural Network Instructions +#define CPU_VBMI2 ((uint64_t)UCONST64(0x20000000000)) // VBMI2 shift left double instructions #define CPU_FLUSH ((uint64_t)UCONST64(0x20000000000)) // flush instruction #define CPU_FLUSHOPT ((uint64_t)UCONST64(0x40000000000)) // flushopt instruction @@ -567,6 +568,8 @@ result |= CPU_VAES; if (_cpuid_info.sef_cpuid7_ecx.bits.avx512_vnni != 0) result |= CPU_VNNI; + if (_cpuid_info.sef_cpuid7_ecx.bits.avx512_vbmi2 != 0) + result |= CPU_VBMI2; } } if (_cpuid_info.sef_cpuid7_ebx.bits.bmi1 != 0) @@ -858,6 +861,7 @@ static bool supports_avx512_vpclmulqdq() { return (_features & CPU_AVX512_VPCLMULQDQ) != 0; } static bool supports_vaes() { return (_features & CPU_VAES) != 0; } static bool supports_vnni() { return (_features & CPU_VNNI) != 0; } + static bool supports_vbmi2() { return (_features & CPU_VBMI2) != 0; } // Intel features static bool is_intel_family_core() { return is_intel() &&