aarch64: Add Apple runtime detection of dotprod and i8mm using sysctl
For now, there's not much value in this since Clang don't support enabling the dotprod or i8mm features with either .arch_extension or .arch (it has to be enabled by the base arch flags passed to the compiler). But it may be supported in the future. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
493fcde50a
commit
9b0052200a
2
configure
vendored
2
configure
vendored
@ -2348,6 +2348,7 @@ SYSTEM_FUNCS="
|
||||
strerror_r
|
||||
sysconf
|
||||
sysctl
|
||||
sysctlbyname
|
||||
usleep
|
||||
UTGetOSTypeFromString
|
||||
VirtualAlloc
|
||||
@ -6394,6 +6395,7 @@ check_func_headers mach/mach_time.h mach_absolute_time
|
||||
check_func_headers stdlib.h getenv
|
||||
check_func_headers sys/stat.h lstat
|
||||
check_func_headers sys/auxv.h getauxval
|
||||
check_func_headers sys/sysctl.h sysctlbyname
|
||||
|
||||
check_func_headers windows.h GetModuleHandle
|
||||
check_func_headers windows.h GetProcessAffinityMask
|
||||
|
@ -61,6 +61,28 @@ static int detect_flags(void)
|
||||
return flags;
|
||||
}
|
||||
|
||||
#elif defined(__APPLE__) && HAVE_SYSCTLBYNAME
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
static int detect_flags(void)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
size_t size;
|
||||
int flags = 0;
|
||||
|
||||
size = sizeof(value);
|
||||
if (!sysctlbyname("hw.optional.arm.FEAT_DotProd", &value, &size, NULL, 0)) {
|
||||
if (value)
|
||||
flags |= AV_CPU_FLAG_DOTPROD;
|
||||
}
|
||||
size = sizeof(value);
|
||||
if (!sysctlbyname("hw.optional.arm.FEAT_I8MM", &value, &size, NULL, 0)) {
|
||||
if (value)
|
||||
flags |= AV_CPU_FLAG_I8MM;
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static int detect_flags(void)
|
||||
|
Loading…
Reference in New Issue
Block a user