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() &&