This basic example shows how to setup a simple metrics object.
The complete example is shown below.
1// Copyright (c) 2013 Steinwurf ApS
2// All Rights Reserved
3//
4// Distributed under the "BSD License". See the accompanying LICENSE.rst file.
5
6#include <iostream>
7
8#include <cpuid/cpuinfo.hpp>
9
10int main()
11{
12 cpuid::cpuinfo m_cpuid;
13
14 std::cout << "CPU has FPU?: " << (m_cpuid.has_fpu() ? "Yes" : "No")
15 << std::endl;
16
17 std::cout << "CPU has MMX?: " << (m_cpuid.has_mmx() ? "Yes" : "No")
18 << std::endl;
19
20 std::cout << "CPU has SSE?: " << (m_cpuid.has_sse() ? "Yes" : "No")
21 << std::endl;
22
23 std::cout << "CPU has SSE2?: " << (m_cpuid.has_sse2() ? "Yes" : "No")
24 << std::endl;
25
26 std::cout << "CPU has SSE3?: " << (m_cpuid.has_sse3() ? "Yes" : "No")
27 << std::endl;
28
29 std::cout << "CPU has SSSE3?: " << (m_cpuid.has_ssse3() ? "Yes" : "No")
30 << std::endl;
31
32 std::cout << "CPU has SSE4.1?: " << (m_cpuid.has_sse4_1() ? "Yes" : "No")
33 << std::endl;
34
35 std::cout << "CPU has SSE4.2?: " << (m_cpuid.has_sse4_2() ? "Yes" : "No")
36 << std::endl;
37
38 std::cout << "CPU has PCLMULQDQ?: "
39 << (m_cpuid.has_pclmulqdq() ? "Yes" : "No") << std::endl;
40
41 std::cout << "CPU has AVX?: " << (m_cpuid.has_avx() ? "Yes" : "No")
42 << std::endl;
43
44 std::cout << "CPU has AVX2?: " << (m_cpuid.has_avx2() ? "Yes" : "No")
45 << std::endl;
46
47 std::cout << "CPU has AVX512F?: " << (m_cpuid.has_avx512_f() ? "Yes" : "No")
48 << std::endl;
49
50 std::cout << "CPU has AVX512DQ?: "
51 << (m_cpuid.has_avx512_dq() ? "Yes" : "No") << std::endl;
52
53 std::cout << "CPU has AVX512IFMA?: "
54 << (m_cpuid.has_avx512_ifma() ? "Yes" : "No") << std::endl;
55
56 std::cout << "CPU has AVX512PF?: "
57 << (m_cpuid.has_avx512_pf() ? "Yes" : "No") << std::endl;
58
59 std::cout << "CPU has AVX512ER?: "
60 << (m_cpuid.has_avx512_er() ? "Yes" : "No") << std::endl;
61
62 std::cout << "CPU has AVX512CD?: "
63 << (m_cpuid.has_avx512_cd() ? "Yes" : "No") << std::endl;
64
65 std::cout << "CPU has AVX512BW?: "
66 << (m_cpuid.has_avx512_bw() ? "Yes" : "No") << std::endl;
67
68 std::cout << "CPU has AVX512VL?: "
69 << (m_cpuid.has_avx512_vl() ? "Yes" : "No") << std::endl;
70
71 std::cout << "CPU has AVX512VBMI?: "
72 << (m_cpuid.has_avx512_vbmi() ? "Yes" : "No") << std::endl;
73
74 std::cout << "CPU has AVX512VBMI2?: "
75 << (m_cpuid.has_avx512_vbmi2() ? "Yes" : "No") << std::endl;
76
77 std::cout << "CPU has AVX512VNNI?: "
78 << (m_cpuid.has_avx512_vnni() ? "Yes" : "No") << std::endl;
79
80 std::cout << "CPU has AVX512BITALG?: "
81 << (m_cpuid.has_avx512_bitalg() ? "Yes" : "No") << std::endl;
82
83 std::cout << "CPU has AVX512VPOPCNTDQ?: "
84 << (m_cpuid.has_avx512_vpopcntdq() ? "Yes" : "No") << std::endl;
85
86 std::cout << "CPU has AVX5124VNNIW?: "
87 << (m_cpuid.has_avx512_4vnniw() ? "Yes" : "No") << std::endl;
88
89 std::cout << "CPU has AVX5124FMAPS?: "
90 << (m_cpuid.has_avx512_4fmaps() ? "Yes" : "No") << std::endl;
91
92 std::cout << "CPU has AVX512VP2INTERSECT?: "
93 << (m_cpuid.has_avx512_vp2intersect() ? "Yes" : "No")
94 << std::endl;
95
96 std::cout << "CPU has F16C?: " << (m_cpuid.has_f16c() ? "Yes" : "No")
97 << std::endl;
98
99 std::cout << "CPU has AES?: " << (m_cpuid.has_aes() ? "Yes" : "No")
100 << std::endl;
101
102 std::cout << "CPU has ARM NEON?: " << (m_cpuid.has_neon() ? "Yes" : "No")
103 << std::endl;
104
105 return 0;
106}