src/cpu/x86/vm/vm_version_x86.hpp

changeset 1078
c771b7f43bbf
parent 1020
22e09c0f4b47
child 1210
93c14e5562c4
     1.1 --- a/src/cpu/x86/vm/vm_version_x86.hpp	Thu Mar 12 10:37:46 2009 -0700
     1.2 +++ b/src/cpu/x86/vm/vm_version_x86.hpp	Fri Mar 13 11:35:17 2009 -0700
     1.3 @@ -70,7 +70,9 @@
     1.4                 dca      : 1,
     1.5                 sse4_1   : 1,
     1.6                 sse4_2   : 1,
     1.7 -                        : 11;
     1.8 +                        : 2,
     1.9 +               popcnt   : 1,
    1.10 +                        : 8;
    1.11      } bits;
    1.12    };
    1.13  
    1.14 @@ -179,7 +181,8 @@
    1.15       CPU_SSSE3  = (1 << 9),
    1.16       CPU_SSE4A  = (1 << 10),
    1.17       CPU_SSE4_1 = (1 << 11),
    1.18 -     CPU_SSE4_2 = (1 << 12)
    1.19 +     CPU_SSE4_2 = (1 << 12),
    1.20 +     CPU_POPCNT = (1 << 13)
    1.21     } cpuFeatureFlags;
    1.22  
    1.23    // cpuid information block.  All info derived from executing cpuid with
    1.24 @@ -290,6 +293,8 @@
    1.25        result |= CPU_SSE4_1;
    1.26      if (_cpuid_info.std_cpuid1_ecx.bits.sse4_2 != 0)
    1.27        result |= CPU_SSE4_2;
    1.28 +    if (_cpuid_info.std_cpuid1_ecx.bits.popcnt != 0)
    1.29 +      result |= CPU_POPCNT;
    1.30      return result;
    1.31    }
    1.32  
    1.33 @@ -379,6 +384,7 @@
    1.34    static bool supports_ssse3()    { return (_cpuFeatures & CPU_SSSE3)!= 0; }
    1.35    static bool supports_sse4_1()   { return (_cpuFeatures & CPU_SSE4_1) != 0; }
    1.36    static bool supports_sse4_2()   { return (_cpuFeatures & CPU_SSE4_2) != 0; }
    1.37 +  static bool supports_popcnt()   { return (_cpuFeatures & CPU_POPCNT) != 0; }
    1.38    //
    1.39    // AMD features
    1.40    //

mercurial