src/cpu/x86/vm/vm_version_x86.hpp

changeset 5353
b800986664f4
parent 4410
00af3a3a8df4
child 6378
8a8ff6b577ed
     1.1 --- a/src/cpu/x86/vm/vm_version_x86.hpp	Tue Jul 02 07:51:31 2013 +0200
     1.2 +++ b/src/cpu/x86/vm/vm_version_x86.hpp	Tue Jul 02 20:42:12 2013 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -61,7 +61,8 @@
    1.11      uint32_t value;
    1.12      struct {
    1.13        uint32_t sse3     : 1,
    1.14 -                        : 2,
    1.15 +               clmul    : 1,
    1.16 +                        : 1,
    1.17                 monitor  : 1,
    1.18                          : 1,
    1.19                 vmx      : 1,
    1.20 @@ -249,7 +250,8 @@
    1.21      CPU_AVX    = (1 << 17),
    1.22      CPU_AVX2   = (1 << 18),
    1.23      CPU_AES    = (1 << 19),
    1.24 -    CPU_ERMS   = (1 << 20) // enhanced 'rep movsb/stosb' instructions
    1.25 +    CPU_ERMS   = (1 << 20), // enhanced 'rep movsb/stosb' instructions
    1.26 +    CPU_CLMUL  = (1 << 21) // carryless multiply for CRC
    1.27    } cpuFeatureFlags;
    1.28  
    1.29    enum {
    1.30 @@ -429,6 +431,8 @@
    1.31        result |= CPU_AES;
    1.32      if (_cpuid_info.sef_cpuid7_ebx.bits.erms != 0)
    1.33        result |= CPU_ERMS;
    1.34 +    if (_cpuid_info.std_cpuid1_ecx.bits.clmul != 0)
    1.35 +      result |= CPU_CLMUL;
    1.36  
    1.37      // AMD features.
    1.38      if (is_amd()) {
    1.39 @@ -555,6 +559,7 @@
    1.40    static bool supports_tsc()      { return (_cpuFeatures & CPU_TSC)    != 0; }
    1.41    static bool supports_aes()      { return (_cpuFeatures & CPU_AES) != 0; }
    1.42    static bool supports_erms()     { return (_cpuFeatures & CPU_ERMS) != 0; }
    1.43 +  static bool supports_clmul()    { return (_cpuFeatures & CPU_CLMUL) != 0; }
    1.44  
    1.45    // Intel features
    1.46    static bool is_intel_family_core() { return is_intel() &&

mercurial