mirror of
https://github.com/libretro/RetroArch
synced 2025-02-16 12:39:59 +00:00
Implement RETRO_SIMD_MOVBE
This commit is contained in:
parent
8b130b3866
commit
71e2487e8b
@ -430,6 +430,11 @@ unsigned retro_get_cpu_cores(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* According to http://en.wikipedia.org/wiki/CPUID */
|
||||||
|
#define VENDOR_INTEL_b 0x756e6547
|
||||||
|
#define VENDOR_INTEL_c 0x6c65746e
|
||||||
|
#define VENDOR_INTEL_d 0x49656e69
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* retro_get_cpu_features:
|
* retro_get_cpu_features:
|
||||||
*
|
*
|
||||||
@ -446,6 +451,7 @@ uint64_t retro_get_cpu_features(void)
|
|||||||
uint64_t cpu = 0;
|
uint64_t cpu = 0;
|
||||||
unsigned max_flag = 0;
|
unsigned max_flag = 0;
|
||||||
#if defined(CPU_X86)
|
#if defined(CPU_X86)
|
||||||
|
int vendor_is_intel = 0;
|
||||||
const int avx_flags = (1 << 27) | (1 << 28);
|
const int avx_flags = (1 << 27) | (1 << 28);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -470,6 +476,11 @@ uint64_t retro_get_cpu_features(void)
|
|||||||
|
|
||||||
RARCH_LOG("[CPUID]: Vendor: %s\n", vendor);
|
RARCH_LOG("[CPUID]: Vendor: %s\n", vendor);
|
||||||
|
|
||||||
|
vendor_is_intel = (
|
||||||
|
flags[1] == VENDOR_INTEL_b &&
|
||||||
|
flags[2] == VENDOR_INTEL_c &&
|
||||||
|
flags[3] == VENDOR_INTEL_d);
|
||||||
|
|
||||||
max_flag = flags[0];
|
max_flag = flags[0];
|
||||||
if (max_flag < 1) /* Does CPUID not support func = 1? (unlikely ...) */
|
if (max_flag < 1) /* Does CPUID not support func = 1? (unlikely ...) */
|
||||||
return 0;
|
return 0;
|
||||||
@ -505,6 +516,9 @@ uint64_t retro_get_cpu_features(void)
|
|||||||
if ((flags[2] & (1 << 23)))
|
if ((flags[2] & (1 << 23)))
|
||||||
cpu |= RETRO_SIMD_POPCNT;
|
cpu |= RETRO_SIMD_POPCNT;
|
||||||
|
|
||||||
|
if (vendor_is_intel && (flags[2] & (1 << 22)))
|
||||||
|
cpu |= RETRO_SIMD_MOVBE;
|
||||||
|
|
||||||
if (flags[2] & (1 << 25))
|
if (flags[2] & (1 << 25))
|
||||||
cpu |= RETRO_SIMD_AES;
|
cpu |= RETRO_SIMD_AES;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user