/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: CpuId.hpp Date: 2022-1-24 Author: Reece ***/ #pragma once namespace Aurora::HWInfo { struct AUKN_SYM CpuId { AU_COPY_MOVE_DEF(CpuId); bool SSE3() const; bool PCLMULQDQ() const; bool MONITOR() const; bool SSSE3() const; bool FMA() const; bool CMPXCHG16B() const; bool SSE41() const; bool SSE42() const; bool MOVBE() const; bool POPCNT() const; bool AES() const; bool XSAVE() const; bool OSXSAVE() const; bool AVX() const; bool F16C() const; bool RDRAND() const; bool MSR() const; bool CX8() const; bool SEP() const; bool CMOV() const; bool CLFSH() const; bool MMX() const; bool FXSR() const; bool SSE() const; bool SSE2() const; bool FSGSBASE() const; bool BMI1() const; bool HLE() const; bool AVX2() const; bool BMI2() const; bool ERMS() const; bool INVPCID() const; bool RTM() const; bool AVX512F() const; bool RDSEED() const; bool ADX() const; bool AVX512PF() const; bool AVX512ER() const; bool AVX512CD() const; bool SHA() const; bool PREFETCHWT1() const; bool LAHF() const; bool LZCNT() const; bool ABM() const; bool SSE4a() const; bool XOP() const; bool TBM() const; bool SYSCALL() const; bool MMXEXT() const; bool RDTSCP() const; bool _3DNOWEXT() const; bool _3DNOW() const; AuString ToString() const; AuString vendor; AuString brand; bool isIntel; bool isAMD; AuUInt32 f_1_ECX; AuUInt32 f_1_EDX; AuUInt32 f_7_EBX; AuUInt32 f_7_ECX; AuUInt32 f_81_ECX; AuUInt32 f_81_EDX; }; }