[email protected] | 90509cb | 2011-03-25 18:46:38 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 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_ | ||||
[email protected] | 32b76ef | 2010-07-26 23:08:24 | [diff] [blame] | 7 | #pragma once |
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 8 | |
9 | #include <string> | ||||
10 | |||||
[email protected] | 0bea725 | 2011-08-05 15:34:00 | [diff] [blame] | 11 | #include "base/base_export.h" |
[email protected] | 90509cb | 2011-03-25 18:46:38 | [diff] [blame] | 12 | |
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 13 | namespace base { |
14 | |||||
15 | // Query information about the processor. | ||||
[email protected] | 0bea725 | 2011-08-05 15:34:00 | [diff] [blame] | 16 | class BASE_EXPORT CPU { |
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 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_; } | ||||
[email protected] | 7e6d42b | 2011-02-16 18:51:58 | [diff] [blame] | 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_; } | ||||
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 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_; | ||||
[email protected] | 7e6d42b | 2011-02-16 18:51:58 | [diff] [blame] | 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_; | ||||
[email protected] | de8d2667 | 2008-09-25 22:08:44 | [diff] [blame] | 54 | std::string cpu_vendor_; |
55 | }; | ||||
56 | |||||
57 | } // namespace base | ||||
58 | |||||
59 | #endif // BASE_CPU_H_ |