23 #if (defined(__linux__) || defined(__ANDROID__)) && HAVE_GETAUXVAL
27 #define HWCAP_AARCH64_ASIMDDP (1 << 20)
28 #define HWCAP2_AARCH64_I8MM (1 << 13)
34 unsigned long hwcap = getauxval(AT_HWCAP);
35 unsigned long hwcap2 = getauxval(AT_HWCAP2);
37 if (hwcap & HWCAP_AARCH64_ASIMDDP)
39 if (hwcap2 & HWCAP2_AARCH64_I8MM)
45 #elif defined(__APPLE__) && HAVE_SYSCTLBYNAME
46 #include <sys/sysctl.h>
48 static int have_feature(
const char *feature) {
60 if (have_feature(
"hw.optional.arm.FEAT_DotProd"))
62 if (have_feature(
"hw.optional.arm.FEAT_I8MM"))
74 #ifdef PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE
75 if (IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE))
94 #ifdef __ARM_FEATURE_DOTPROD
97 #ifdef __ARM_FEATURE_MATMUL_INT8