src/cpu/x86/vm/vm_version_x86_64.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6532536 Cdiff src/cpu/x86/vm/vm_version_x86_64.hpp

src/cpu/x86/vm/vm_version_x86_64.hpp

Print this page

        

*** 66,78 **** cid : 1, : 2, cmpxchg16: 1, : 4, dca : 1, ! : 4, ! popcnt : 1, ! : 8; } bits; }; union StdCpuid1Edx { uint32_t value; --- 66,78 ---- cid : 1, : 2, cmpxchg16: 1, : 4, dca : 1, ! sse4_1 : 1, ! sse4_2 : 1, ! : 11; } bits; }; union StdCpuid1Edx { uint32_t value;
*** 175,186 **** CPU_3DNOW= (1 << 5), CPU_SSE = (1 << 6), CPU_SSE2 = (1 << 7), CPU_SSE3 = (1 << 8), CPU_SSSE3= (1 << 9), ! CPU_SSE4 = (1 <<10), ! CPU_SSE4A= (1 <<11) } cpuFeatureFlags; // cpuid information block. All info derived from executing cpuid with // various function numbers is stored here. Intel and AMD info is // merged in this block: accessor methods disentangle it. --- 175,187 ---- CPU_3DNOW= (1 << 5), CPU_SSE = (1 << 6), CPU_SSE2 = (1 << 7), CPU_SSE3 = (1 << 8), CPU_SSSE3= (1 << 9), ! CPU_SSE4A= (1 <<10), ! CPU_SSE4_1 = (1 << 11), ! CPU_SSE4_2 = (1 << 12) } cpuFeatureFlags; // cpuid information block. All info derived from executing cpuid with // various function numbers is stored here. Intel and AMD info is // merged in this block: accessor methods disentangle it.
*** 238,263 **** // The actual cpuid info block static CpuidInfo _cpuid_info; // Extractors and predicates - static bool is_extended_cpu_family() { - const uint32_t Extended_Cpu_Family = 0xf; - return _cpuid_info.std_cpuid1_eax.bits.family == Extended_Cpu_Family; - } static uint32_t extended_cpu_family() { uint32_t result = _cpuid_info.std_cpuid1_eax.bits.family; - if (is_extended_cpu_family()) { result += _cpuid_info.std_cpuid1_eax.bits.ext_family; - } return result; } static uint32_t extended_cpu_model() { uint32_t result = _cpuid_info.std_cpuid1_eax.bits.model; - if (is_extended_cpu_family()) { result |= _cpuid_info.std_cpuid1_eax.bits.ext_model << 4; - } return result; } static uint32_t cpu_stepping() { uint32_t result = _cpuid_info.std_cpuid1_eax.bits.stepping; return result; --- 239,256 ----
*** 291,300 **** --- 284,297 ---- result |= CPU_SSE3; if (_cpuid_info.std_cpuid1_ecx.bits.ssse3 != 0) result |= CPU_SSSE3; if (is_amd() && _cpuid_info.ext_cpuid1_ecx.bits.sse4a != 0) result |= CPU_SSE4A; + if (_cpuid_info.std_cpuid1_ecx.bits.sse4_1 != 0) + result |= CPU_SSE4_1; + if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0) + result |= CPU_SSE4_2; return result; } static void get_processor_features();
*** 378,388 **** static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; } static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; } static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; } static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; } static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; } ! static bool supports_sse4() { return (_cpuFeatures & CPU_SSE4) != 0; } // // AMD features // static bool supports_3dnow() { return (_cpuFeatures & CPU_3DNOW) != 0; } static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; } --- 375,386 ---- static bool supports_mmx() { return (_cpuFeatures & CPU_MMX) != 0; } static bool supports_sse() { return (_cpuFeatures & CPU_SSE) != 0; } static bool supports_sse2() { return (_cpuFeatures & CPU_SSE2) != 0; } static bool supports_sse3() { return (_cpuFeatures & CPU_SSE3) != 0; } static bool supports_ssse3() { return (_cpuFeatures & CPU_SSSE3)!= 0; } ! static bool supports_sse4_1() { return (_cpuFeatures & CPU_SSE4_1) != 0; } ! static bool supports_sse4_2() { return (_cpuFeatures & CPU_SSE4_2) != 0; } // // AMD features // static bool supports_3dnow() { return (_cpuFeatures & CPU_3DNOW) != 0; } static bool supports_mmx_ext() { return is_amd() && _cpuid_info.ext_cpuid1_edx.bits.mmx_amd != 0; }
src/cpu/x86/vm/vm_version_x86_64.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File