< prev index next >
src/hotspot/cpu/x86/vm_version_x86.cpp
Print this page
@@ -746,11 +746,14 @@
(supports_bmi1() ? ", bmi1" : ""),
(supports_bmi2() ? ", bmi2" : ""),
(supports_adx() ? ", adx" : ""),
(supports_evex() ? ", evex" : ""),
(supports_sha() ? ", sha" : ""),
- (supports_fma() ? ", fma" : ""));
+ (supports_fma() ? ", fma" : ""),
+ (supports_vbmi2() ? ", vbmi2" : ""),
+ (supports_vaes() ? ", vaes" : ""),
+ (supports_vnni() ? ", vnni" : ""));
_features_string = os::strdup(buf);
// UseSSE is set to the smaller of what hardware supports and what
// the command line requires. I.e., you cannot set UseSSE to 2 on
// older Pentiums which do not support it.
@@ -1427,10 +1430,20 @@
} else if (UseBMI2Instructions) {
warning("BMI2 instructions are not available on this CPU (AVX is also required)");
FLAG_SET_DEFAULT(UseBMI2Instructions, false);
}
+ // To enable VBMI2 we require that processor supports it and also that EVEX encoding is supported and enabled.
+ if (supports_vbmi2() && UseAVX > 2) {
+ if (FLAG_IS_DEFAULT(UseVBMI2)) {
+ UseVBMI2 = true;
+ }
+ } else if (UseVBMI2) {
+ warning("VBMI2 instructions are not available on this CPU");
+ FLAG_SET_DEFAULT(UseVBMI2, false);
+ }
+
// Use population count instruction if available.
if (supports_popcnt()) {
if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
UsePopCountInstruction = true;
}
< prev index next >