mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 07:09:48 -06:00
CPUDetect: improve win/arm64 support
read brand_string on macos/arm64 remove unused flags report family/model info instead of vendor name
This commit is contained in:
@ -16,62 +16,52 @@ enum class CPUVendor
|
||||
|
||||
struct CPUInfo
|
||||
{
|
||||
CPUVendor vendor = CPUVendor::Intel;
|
||||
CPUVendor vendor = CPUVendor::Other;
|
||||
|
||||
char cpu_string[0x41] = {};
|
||||
char brand_string[0x21] = {};
|
||||
bool OS64bit = false;
|
||||
bool CPU64bit = false;
|
||||
bool Mode64bit = false;
|
||||
std::string cpu_id;
|
||||
std::string model_name;
|
||||
|
||||
bool HTT = false;
|
||||
int num_cores = 0;
|
||||
|
||||
bool bSSE = false;
|
||||
bool bSSE2 = false;
|
||||
bool bSSE3 = false;
|
||||
bool bSSSE3 = false;
|
||||
bool bPOPCNT = false;
|
||||
bool bSSE4_1 = false;
|
||||
bool bSSE4_2 = false;
|
||||
bool bLZCNT = false;
|
||||
bool bSSE4A = false;
|
||||
bool bAVX = false;
|
||||
bool bAVX2 = false;
|
||||
bool bBMI1 = false;
|
||||
bool bBMI2 = false;
|
||||
// PDEP and PEXT are ridiculously slow on AMD Zen1, Zen1+ and Zen2 (Family 23)
|
||||
bool bFastBMI2 = false;
|
||||
// PDEP and PEXT are ridiculously slow on AMD Zen1, Zen1+ and Zen2 (Family 17h)
|
||||
bool bBMI2FastParallelBitOps = false;
|
||||
bool bFMA = false;
|
||||
bool bFMA4 = false;
|
||||
bool bAES = false;
|
||||
// FXSAVE/FXRSTOR
|
||||
bool bFXSR = false;
|
||||
bool bMOVBE = false;
|
||||
// This flag indicates that the hardware supports some mode
|
||||
// in which denormal inputs _and_ outputs are automatically set to (signed) zero.
|
||||
bool bFlushToZero = false;
|
||||
bool bLAHFSAHF64 = false;
|
||||
bool bLongMode = false;
|
||||
bool bAtom = false;
|
||||
bool bZen1p2 = false;
|
||||
|
||||
// ARMv8 specific
|
||||
bool bFP = false;
|
||||
bool bASIMD = false;
|
||||
bool bCRC32 = false;
|
||||
bool bSHA1 = false;
|
||||
bool bSHA2 = false;
|
||||
|
||||
// ARMv8 specific
|
||||
bool bAFP = false; // Alternate floating-point behavior
|
||||
|
||||
// Call Detect()
|
||||
explicit CPUInfo();
|
||||
|
||||
// Turn the CPU info into a string we can show
|
||||
// The returned string consists of "<model_name>,<cpu_id>,<flag...>"
|
||||
// Where:
|
||||
// model_name and cpud_id may be zero-length
|
||||
// model_name is human-readable marketing name
|
||||
// cpu_id is ':'-delimited string of id info
|
||||
// flags are optionally included if the related feature is supported and reporting its enablement
|
||||
// seems useful to report
|
||||
std::string Summarize();
|
||||
|
||||
private:
|
||||
// Detects the various CPU features
|
||||
void Detect();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user