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. 22 const std::string& vendor_name() const { return cpu_vendor_; } 23 int stepping() const { return stepping_; } 24 int model() const { return model_; } 25 int family() const { return family_; } 26 int type() const { return type_; } 27 int extended_model() const { return ext_model_; } 28 int extended_family() const { return ext_family_; } 29 int has_mmx() const { return has_mmx_; } 30 int has_sse() const { return has_sse_; } 31 int has_sse2() const { return has_sse2_; } 32 int has_sse3() const { return has_sse3_; } 33 int has_ssse3() const { return has_ssse3_; } 34 int has_sse41() const { return has_sse41_; } 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