shithub: opus

Download patch

ref: e9b243b32a7d2e85b0dcfb9704c507bb59f8a3cf
parent: b6fd9aaa0da2a700c2d0dca87f9fe6e02d4a94e8
author: Michael Klingbeil <klingm@amazon.com>
date: Thu Feb 29 11:13:46 EST 2024

add arm rtcd for apple

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>

--- a/celt/arm/armcpu.c
+++ b/celt/arm/armcpu.c
@@ -164,6 +164,33 @@
   }
   return flags;
 }
+
+#elif defined(__APPLE__)
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+opus_uint32 opus_cpu_capabilities(void)
+{
+  opus_uint32 flags = 0;
+
+#if defined(OPUS_ARM_MAY_HAVE_DOTPROD)
+  size_t size = sizeof(uint32_t);
+  uint32_t value = 0;
+  if (!sysctlbyname("hw.optional.arm.FEAT_DotProd", &value, &size, NULL, 0) && value)
+  {
+    flags |= OPUS_CPU_ARM_DOTPROD_FLAG;
+  }
+#endif
+
+#if defined(OPUS_ARM_PRESUME_AARCH64_NEON_INTR)
+  flags |= OPUS_CPU_ARM_EDSP_FLAG | OPUS_CPU_ARM_MEDIA_FLAG | OPUS_CPU_ARM_NEON_FLAG;
+# if defined(OPUS_ARM_PRESUME_DOTPROD)
+  flags |= OPUS_CPU_ARM_DOTPROD_FLAG;
+# endif
+#endif
+  return flags;
+}
+
 #else
 /* The feature registers which can tell us what the processor supports are
  * accessible in priveleged modes only, so we can't have a general user-space
--