< 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 >