Simple Example

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}
Versions
9.0.1
9.0.0
Development
latest