/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 2018 Danny Robson */ #ifndef CRUFT_UTIL_CPUID_X86_HPP #define CRUFT_UTIL_CPUID_X86_HPP #include "cpuid.hpp" #include namespace util::cpu { struct x86 { x86 (); struct { int logical; // currently unused because we lack APIC enumeration code // required for physical:logical mappings. int physical = 0; bool hyper_threading; } cores; struct { bool sse; bool sse2; bool sse3; bool ssse3; bool sse41; bool sse42; bool avx; } simd; std::array vendor_name; std::array product_name; }; std::ostream& operator<< (std::ostream&, const util::cpu::x86&); }; #endif