hotspot/src/cpu/x86/vm/vm_version_x86.hpp
changeset 34185 ee71c590a456
parent 33735 b6b92fae32c0
parent 34162 16b54851eaf6
child 35123 b0b89d83bcf5
equal deleted inserted replaced
33813:4f376e851453 34185:ee71c590a456
   550         if (_cpuid_info.ymm_save[i] != ymm_test_value()) {
   550         if (_cpuid_info.ymm_save[i] != ymm_test_value()) {
   551           retVal = false;
   551           retVal = false;
   552           break;
   552           break;
   553         }
   553         }
   554       }
   554       }
       
   555       // zmm_save will be set on a EVEX enabled machine even if we choose AVX code gen
       
   556       if (retVal == false) {
       
   557         // Verify that OS save/restore all bits of EVEX registers
       
   558         // during signal processing.
       
   559         int nreg = 2 LP64_ONLY(+2);
       
   560         retVal = true;
       
   561         for (int i = 0; i < 16 * nreg; i++) { // 64 bytes per zmm register
       
   562           if (_cpuid_info.zmm_save[i] != ymm_test_value()) {
       
   563             retVal = false;
       
   564             break;
       
   565           }
       
   566         }
       
   567       }
   555     }
   568     }
   556     return retVal;
   569     return retVal;
   557   }
   570   }
   558 
   571 
   559   static void get_processor_features();
   572   static void get_processor_features();
   704   static bool supports_avx512cd() { return (_cpuFeatures & CPU_AVX512CD) != 0; }
   717   static bool supports_avx512cd() { return (_cpuFeatures & CPU_AVX512CD) != 0; }
   705   static bool supports_avx512bw() { return (_cpuFeatures & CPU_AVX512BW) != 0; }
   718   static bool supports_avx512bw() { return (_cpuFeatures & CPU_AVX512BW) != 0; }
   706   static bool supports_avx512vl() { return (_cpuFeatures & CPU_AVX512VL) != 0; }
   719   static bool supports_avx512vl() { return (_cpuFeatures & CPU_AVX512VL) != 0; }
   707   static bool supports_avx512vlbw() { return (supports_avx512bw() && supports_avx512vl()); }
   720   static bool supports_avx512vlbw() { return (supports_avx512bw() && supports_avx512vl()); }
   708   static bool supports_avx512novl() { return (supports_evex() && !supports_avx512vl()); }
   721   static bool supports_avx512novl() { return (supports_evex() && !supports_avx512vl()); }
       
   722   static bool supports_avx512nobw() { return (supports_evex() && !supports_avx512bw()); }
       
   723   static bool supports_avx256only() { return (supports_avx2() && !supports_evex()); }
       
   724   static bool supports_avxonly()    { return ((supports_avx2() || supports_avx()) && !supports_evex()); }
   709   // Intel features
   725   // Intel features
   710   static bool is_intel_family_core() { return is_intel() &&
   726   static bool is_intel_family_core() { return is_intel() &&
   711                                        extended_cpu_family() == CPU_FAMILY_INTEL_CORE; }
   727                                        extended_cpu_family() == CPU_FAMILY_INTEL_CORE; }
   712 
   728 
   713   static bool is_intel_tsc_synched_at_init()  {
   729   static bool is_intel_tsc_synched_at_init()  {