cpu.h revision ddb351dbec246cf1fab5ec20d2d5520909041de1
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
13namespace base {
14
15// Query information about the processor.
16class 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