1 | // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 | // for details. All rights reserved. Use of this source code is governed by a |
3 | // BSD-style license that can be found in the LICENSE file. |
4 | |
5 | #ifndef RUNTIME_VM_CPUID_H_ |
6 | #define RUNTIME_VM_CPUID_H_ |
7 | |
8 | #include "vm/globals.h" |
9 | #if !defined(HOST_OS_MACOS) |
10 | #include "vm/allocation.h" |
11 | #include "vm/cpuinfo.h" |
12 | |
13 | namespace dart { |
14 | |
15 | class CpuId : public AllStatic { |
16 | public: |
17 | #if defined(HOST_ARCH_IA32) || defined(HOST_ARCH_X64) |
18 | static void Init(); |
19 | static void Cleanup(); |
20 | |
21 | // Caller must free the result of field. |
22 | static const char* field(CpuInfoIndices idx); |
23 | #else |
24 | static void Init() {} |
25 | static void Cleanup() {} |
26 | static const char* field(CpuInfoIndices idx) { return nullptr; } |
27 | #endif |
28 | |
29 | private: |
30 | // Caller must free the result of id_string and brand_string. |
31 | static const char* id_string(); |
32 | static const char* brand_string(); |
33 | |
34 | static bool sse2() { return sse2_; } |
35 | static bool sse41() { return sse41_; } |
36 | static bool popcnt() { return popcnt_; } |
37 | static bool abm() { return abm_; } |
38 | |
39 | static bool sse2_; |
40 | static bool sse41_; |
41 | static bool popcnt_; |
42 | static bool abm_; |
43 | static const char* id_string_; |
44 | static const char* brand_string_; |
45 | |
46 | static void GetCpuId(int32_t level, uint32_t info[4]); |
47 | }; |
48 | |
49 | } // namespace dart |
50 | |
51 | #endif // !defined(HOST_OS_MACOS) |
52 | #endif // RUNTIME_VM_CPUID_H_ |
53 | |