1
0
mirror of https://github.com/libretro/RetroArch synced 2025-02-21 18:40:09 +00:00

(features_cpu) noticed that the buffer wasn't actually being used,

so it can go
This commit is contained in:
twinaphex 2019-09-18 08:37:35 +02:00
parent 3fbeb0617b
commit 922680851a
2 changed files with 148 additions and 63 deletions
libretro-common/features
retroarch.c

@ -590,7 +590,6 @@ uint64_t cpu_features_get(void)
int flags[4];
int vendor_shuffle[3];
char vendor[13];
size_t len = 0;
uint64_t cpu_flags = 0;
uint64_t cpu = 0;
unsigned max_flag = 0;
@ -598,20 +597,9 @@ uint64_t cpu_features_get(void)
int vendor_is_intel = 0;
const int avx_flags = (1 << 27) | (1 << 28);
#endif
char buf[sizeof(" MMX MMXEXT SSE SSE2 SSE3 SSSE3 SS4 SSE4.2 AES AVX AVX2 NEON VMX VMX128 VFPU PS")];
memset(buf, 0, sizeof(buf));
(void)len;
(void)cpu_flags;
(void)flags;
(void)max_flag;
(void)vendor;
(void)vendor_shuffle;
size_t written = 0;
#if defined(__MACH__)
len = sizeof(size_t);
size_t len = sizeof(size_t);
if (sysctlbyname("hw.optional.mmx", NULL, &len, NULL, 0) == 0)
{
cpu |= RETRO_SIMD_MMX;
@ -673,8 +661,6 @@ uint64_t cpu_features_get(void)
cpu |= RETRO_SIMD_SSE;
cpu |= RETRO_SIMD_MMXEXT;
#elif defined(CPU_X86)
(void)avx_flags;
x86_cpuid(0, flags);
vendor_shuffle[0] = flags[1];
vendor_shuffle[1] = flags[3];
@ -806,26 +792,6 @@ uint64_t cpu_features_get(void)
cpu |= RETRO_SIMD_PS;
#endif
if (cpu & RETRO_SIMD_MMX) strlcat(buf, " MMX", sizeof(buf));
if (cpu & RETRO_SIMD_MMXEXT) strlcat(buf, " MMXEXT", sizeof(buf));
if (cpu & RETRO_SIMD_SSE) strlcat(buf, " SSE", sizeof(buf));
if (cpu & RETRO_SIMD_SSE2) strlcat(buf, " SSE2", sizeof(buf));
if (cpu & RETRO_SIMD_SSE3) strlcat(buf, " SSE3", sizeof(buf));
if (cpu & RETRO_SIMD_SSSE3) strlcat(buf, " SSSE3", sizeof(buf));
if (cpu & RETRO_SIMD_SSE4) strlcat(buf, " SSE4", sizeof(buf));
if (cpu & RETRO_SIMD_SSE42) strlcat(buf, " SSE4.2", sizeof(buf));
if (cpu & RETRO_SIMD_AES) strlcat(buf, " AES", sizeof(buf));
if (cpu & RETRO_SIMD_AVX) strlcat(buf, " AVX", sizeof(buf));
if (cpu & RETRO_SIMD_AVX2) strlcat(buf, " AVX2", sizeof(buf));
if (cpu & RETRO_SIMD_NEON) strlcat(buf, " NEON", sizeof(buf));
if (cpu & RETRO_SIMD_VFPV3) strlcat(buf, " VFPv3", sizeof(buf));
if (cpu & RETRO_SIMD_VFPV4) strlcat(buf, " VFPv4", sizeof(buf));
if (cpu & RETRO_SIMD_VMX) strlcat(buf, " VMX", sizeof(buf));
if (cpu & RETRO_SIMD_VMX128) strlcat(buf, " VMX128", sizeof(buf));
if (cpu & RETRO_SIMD_VFPU) strlcat(buf, " VFPU", sizeof(buf));
if (cpu & RETRO_SIMD_PS) strlcat(buf, " PS", sizeof(buf));
if (cpu & RETRO_SIMD_ASIMD) strlcat(buf, " ASIMD", sizeof(buf));
return cpu;
}

@ -23640,46 +23640,165 @@ int retroarch_get_capabilities(enum rarch_capabilities type,
{
case RARCH_CAPABILITIES_CPU:
{
uint64_t cpu = cpu_features_get();
unsigned written = strlen(s);
uint64_t cpu = cpu_features_get();
if (cpu & RETRO_SIMD_MMX)
strlcat(s, "MMX ", len);
{
s[written++] = ' ';
s[written++] = 'M';
s[written++] = 'M';
s[written++] = 'X';
}
if (cpu & RETRO_SIMD_MMXEXT)
strlcat(s, "MMXEXT ", len);
{
s[written++] = ' ';
s[written++] = 'M';
s[written++] = 'M';
s[written++] = 'X';
s[written++] = 'E';
s[written++] = 'X';
s[written++] = 'T';
}
if (cpu & RETRO_SIMD_SSE)
strlcat(s, "SSE1 ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
}
if (cpu & RETRO_SIMD_SSE2)
strlcat(s, "SSE2 ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
s[written++] = '2';
}
if (cpu & RETRO_SIMD_SSE3)
strlcat(s, "SSE3 ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
s[written++] = '3';
}
if (cpu & RETRO_SIMD_SSSE3)
strlcat(s, "SSSE3 ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
s[written++] = '3';
}
if (cpu & RETRO_SIMD_SSE4)
strlcat(s, "SSE4 ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
s[written++] = '4';
}
if (cpu & RETRO_SIMD_SSE42)
strlcat(s, "SSE4.2 ", len);
if (cpu & RETRO_SIMD_AVX)
strlcat(s, "AVX ", len);
if (cpu & RETRO_SIMD_AVX2)
strlcat(s, "AVX2 ", len);
if (cpu & RETRO_SIMD_VFPU)
strlcat(s, "VFPU ", len);
if (cpu & RETRO_SIMD_NEON)
strlcat(s, "NEON ", len);
if (cpu & RETRO_SIMD_VFPV3)
strlcat(s, "VFPv3 ", len);
if (cpu & RETRO_SIMD_VFPV4)
strlcat(s, "VFPv4 ", len);
if (cpu & RETRO_SIMD_PS)
strlcat(s, "PS ", len);
{
s[written++] = ' ';
s[written++] = 'S';
s[written++] = 'S';
s[written++] = 'E';
s[written++] = '4';
s[written++] = '.';
s[written++] = '2';
}
if (cpu & RETRO_SIMD_AES)
strlcat(s, "AES ", len);
{
s[written++] = ' ';
s[written++] = 'A';
s[written++] = 'E';
s[written++] = 'S';
}
if (cpu & RETRO_SIMD_AVX)
{
s[written++] = ' ';
s[written++] = 'A';
s[written++] = 'V';
s[written++] = 'X';
}
if (cpu & RETRO_SIMD_AVX2)
{
s[written++] = ' ';
s[written++] = 'A';
s[written++] = 'V';
s[written++] = 'X';
s[written++] = '2';
}
if (cpu & RETRO_SIMD_NEON)
{
s[written++] = ' ';
s[written++] = 'N';
s[written++] = 'E';
s[written++] = 'O';
s[written++] = 'N';
}
if (cpu & RETRO_SIMD_VFPV3)
{
s[written++] = ' ';
s[written++] = 'V';
s[written++] = 'F';
s[written++] = 'P';
s[written++] = 'v';
s[written++] = '3';
}
if (cpu & RETRO_SIMD_VFPV4)
{
s[written++] = ' ';
s[written++] = 'V';
s[written++] = 'F';
s[written++] = 'P';
s[written++] = 'v';
s[written++] = '4';
}
if (cpu & RETRO_SIMD_VMX)
strlcat(s, "VMX ", len);
{
s[written++] = ' ';
s[written++] = 'V';
s[written++] = 'M';
s[written++] = 'X';
}
if (cpu & RETRO_SIMD_VMX128)
strlcat(s, "VMX128 ", len);
{
s[written++] = ' ';
s[written++] = 'V';
s[written++] = 'M';
s[written++] = 'X';
s[written++] = '1';
s[written++] = '2';
s[written++] = '8';
}
if (cpu & RETRO_SIMD_VFPU)
{
s[written++] = ' ';
s[written++] = 'V';
s[written++] = 'F';
s[written++] = 'P';
s[written++] = 'U';
}
if (cpu & RETRO_SIMD_PS)
{
s[written++] = ' ';
s[written++] = 'P';
s[written++] = 'S';
}
if (cpu & RETRO_SIMD_ASIMD)
strlcat(s, "ASIMD ", len);
{
s[written++] = ' ';
s[written++] = 'A';
s[written++] = 'S';
s[written++] = 'I';
s[written++] = 'M';
s[written++] = 'D';
}
s[written++] = '\0';
}
break;
case RARCH_CAPABILITIES_COMPILER: