1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_CPU_H_ 6 #define BASE_CPU_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/base_api.h" 12 13 namespace base { 14 15 // Query information about the processor. 16 class BASE_API CPU { 17 public: 18 // Constructor 19 CPU(); 20 21 // Accessors for CPU information. vendor_name()22 const std::string& vendor_name() const { return cpu_vendor_; } stepping()23 int stepping() const { return stepping_; } model()24 int model() const { return model_; } family()25 int family() const { return family_; } type()26 int type() const { return type_; } extended_model()27 int extended_model() const { return ext_model_; } extended_family()28 int extended_family() const { return ext_family_; } has_mmx()29 int has_mmx() const { return has_mmx_; } has_sse()30 int has_sse() const { return has_sse_; } has_sse2()31 int has_sse2() const { return has_sse2_; } has_sse3()32 int has_sse3() const { return has_sse3_; } has_ssse3()33 int has_ssse3() const { return has_ssse3_; } has_sse41()34 int has_sse41() const { return has_sse41_; } has_sse42()35 int has_sse42() const { return has_sse42_; } 36 37 private: 38 // Query the processor for CPUID information. 39 void Initialize(); 40 41 int type_; // process type 42 int family_; // family of the processor 43 int model_; // model of processor 44 int stepping_; // processor revision number 45 int ext_model_; 46 int ext_family_; 47 bool has_mmx_; 48 bool has_sse_; 49 bool has_sse2_; 50 bool has_sse3_; 51 bool has_ssse3_; 52 bool has_sse41_; 53 bool has_sse42_; 54 std::string cpu_vendor_; 55 }; 56 57 } // namespace base 58 59 #endif // BASE_CPU_H_ 60