| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
- // Licensed under GPLv2 or any later version
- // Refer to the license.txt file included.
- // Detect the cpu, so we'll know which optimizations to use
- #pragma once
- #include <string>
- enum CPUVendor
- {
- VENDOR_INTEL = 0,
- VENDOR_AMD = 1,
- VENDOR_ARM = 2,
- VENDOR_OTHER = 3,
- };
- struct CPUInfo
- {
- CPUVendor vendor;
- char cpu_string[0x21];
- char brand_string[0x41];
- bool OS64bit;
- bool CPU64bit;
- bool Mode64bit;
- bool HTT;
- int num_cores;
- int logical_cpu_count;
- bool bSSE;
- bool bSSE2;
- bool bSSE3;
- bool bSSSE3;
- bool bPOPCNT;
- bool bSSE4_1;
- bool bSSE4_2;
- bool bLZCNT;
- bool bSSE4A;
- bool bAVX;
- bool bAES;
- bool bLAHFSAHF64;
- bool bLongMode;
- // ARM specific CPUInfo
- bool bSwp;
- bool bHalf;
- bool bThumb;
- bool bFastMult;
- bool bVFP;
- bool bEDSP;
- bool bThumbEE;
- bool bNEON;
- bool bVFPv3;
- bool bTLS;
- bool bVFPv4;
- bool bIDIVa;
- bool bIDIVt;
- bool bArmV7; // enable MOVT, MOVW etc
- // ARMv8 specific
- bool bFP;
- bool bASIMD;
- // Call Detect()
- explicit CPUInfo();
- // Turn the cpu info into a string we can show
- std::string Summarize();
- private:
- // Detects the various cpu features
- void Detect();
- };
- extern CPUInfo cpu_info;
|