From 6f898e611c7f6ec3f3b8c6aa9efafc8d8120b18a Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Sat, 24 Apr 2021 22:58:14 +0100 Subject: [PATCH] cpu detection detection vfp unit for Darwin. --- libretro-common/features/features_cpu.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/libretro-common/features/features_cpu.c b/libretro-common/features/features_cpu.c index de993063b0..9bb11a29a3 100644 --- a/libretro-common/features/features_cpu.c +++ b/libretro-common/features/features_cpu.c @@ -602,18 +602,20 @@ uint64_t cpu_features_get(void) #endif #if defined(__MACH__) size_t len = sizeof(size_t); + + if (sysctlbyname("hw.optional.floatingpoint", NULL, &len, NULL, 0) == 0) + { + cpu |= RETRO_SIMD_CMOV; + } + +#if defined(CPU_X86) + len = sizeof(size_t); if (sysctlbyname("hw.optional.mmx", NULL, &len, NULL, 0) == 0) { cpu |= RETRO_SIMD_MMX; cpu |= RETRO_SIMD_MMXEXT; } - len = sizeof(size_t); - if (sysctlbyname("hw.optional.floatingpoint", NULL, &len, NULL, 0) == 0) - { - cpu |= RETRO_SIMD_CMOV; - } - len = sizeof(size_t); if (sysctlbyname("hw.optional.sse", NULL, &len, NULL, 0) == 0) cpu |= RETRO_SIMD_SSE; @@ -654,10 +656,19 @@ uint64_t cpu_features_get(void) if (sysctlbyname("hw.optional.altivec", NULL, &len, NULL, 0) == 0) cpu |= RETRO_SIMD_VMX; +#else len = sizeof(size_t); if (sysctlbyname("hw.optional.neon", NULL, &len, NULL, 0) == 0) cpu |= RETRO_SIMD_NEON; + len = sizeof(size_t); + if (sysctlbyname("hw.optional.neon_fp16", NULL, &len, NULL, 0) == 0) + cpu |= RETRO_SIMD_VFPV3; + + len = sizeof(size_t); + if (sysctlbyname("hw.optional.neon_hpfp", NULL, &len, NULL, 0) == 0) + cpu |= RETRO_SIMD_VFPV4; +#endif #elif defined(_XBOX1) cpu |= RETRO_SIMD_MMX; cpu |= RETRO_SIMD_SSE;