<pre style='margin:0'>
Michael Dickens (michaelld) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/e83a55ef196d4283be438c052295b2fc44f3df5b">https://github.com/macports/macports-ports/commit/e83a55ef196d4283be438c052295b2fc44f3df5b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new e83a55ef196 volk: add patch to support ARM64
</span>e83a55ef196 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit e83a55ef196d4283be438c052295b2fc44f3df5b
</span>Author: Michael Dickens <michaelld@macports.org>
AuthorDate: Thu Jul 22 12:05:25 2021 -0400

<span style='display:block; white-space:pre;color:#404040;'>    volk: add patch to support ARM64
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Modeled on https://github.com/google/cpu_features/pull/150
</span>---
 science/volk/Portfile                              |   4 +
 .../patch-cpu_features-add-support-for-ARM64.diff  | 276 +++++++++++++++++++++
 2 files changed, 280 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/science/volk/Portfile b/science/volk/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 78df5075af4..a1a40c72a50 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/science/volk/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/science/volk/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -87,6 +87,10 @@ if {${name} eq ${subport}} {
</span>         move ${workpath}/${cpu_features_distname} ${worksrcpath}/cpu_features
     }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # fix cpu_features to work with ARM64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append patch-cpu_features-add-support-for-ARM64.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     # done with special git command replication
 
     depends_build-append port:pkgconfig
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff b/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3613d6def57
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/science/volk/files/patch-cpu_features-add-support-for-ARM64.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,276 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/CMakeLists.txt.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -57,10 +57,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(PROCESSOR_IS_MIPS TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(^aarch64)|(arm64)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  set(PROCESSOR_IS_AARCH64 TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(PROCESSOR_IS_ARM TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  set(PROCESSOR_IS_AARCH64 TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(^i.86$)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(PROCESSOR_IS_X86 TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,10 +146,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ target_include_directories(cpu_features
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cpu_features>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if(PROCESSOR_IS_X86)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if(APPLE AND (PROCESSOR_IS_X86 OR PROCESSOR_IS_AARCH64))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_library(CpuFeature::cpu_features ALIAS cpu_features)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/README.md.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,7 +146,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | Android | yes² |   yes¹  |   yes¹  |  yes¹  |   N/A   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | iOS     |  N/A | not yet | not yet |   N/A  |   N/A   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | Linux   | yes² |   yes¹  |   yes¹  |  yes¹  |   yes¹  |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-| MacOs   | yes² |   N/A   | not yet |   N/A  |    no   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++| macOS   | yes² |   N/A   | yes² |   N/A  |    no   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ | Windows | yes² | not yet | not yet |   N/A  |   N/A   |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1.  **Features revealed from Linux.** We gather data from several sources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/include/cpu_features_macros.h.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/include/cpu_features_macros.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,7 +39,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CPU_FEATURES_ARCH_ARM
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(__aarch64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if (defined(__aarch64__) || (defined(__APPLE__) && defined(__arm64__)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CPU_FEATURES_ARCH_AARCH64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/src/cpuinfo_aarch64.c.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/src/cpuinfo_aarch64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,6 +22,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "internal/stack_line_reader.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "internal/string_view.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(CPU_FEATURES_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(HAVE_SYSCTLBYNAME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#error "Darwin needs support for sysctlbyname"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(CPU_FEATURES_MOCK_CPUID_ARM64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern bool GetDarwinSysCtlByName(const char*);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern int GetDarwinSysCtlByNameValue(const char*);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else  // CPU_FEATURES_MOCK_CPUID_ARM64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static bool GetDarwinSysCtlByName(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int enabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t enabled_len = sizeof(enabled);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const int failure = sysctlbyname(name, &enabled, &enabled_len, NULL, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return failure ? false : enabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int GetDarwinSysCtlByNameValue(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int enabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t enabled_len = sizeof(enabled);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const int failure = sysctlbyname(name, &enabled, &enabled_len, NULL, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return failure ? 0 : enabled;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif  // CPU_FEATURES_OS_DARWIN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Generation of feature's getters/setters functions and kGetters, kSetters,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // kCpuInfoFlags and kHardwareCapabilities global tables.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define DEFINE_TABLE_FEATURES                                                 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -79,6 +104,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define DEFINE_TABLE_FEATURE_TYPE Aarch64Features
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "define_tables.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(CPU_FEATURES_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static bool HandleAarch64Line(const LineResult result,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               Aarch64Info* const info) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   StringView line = result.line;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -116,6 +143,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* !CPU_FEATURES_OS_DARWIN */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const Aarch64Info kEmptyAarch64Info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Aarch64Info GetAarch64Info(void) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -124,6 +153,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // /proc/cpuinfo).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Aarch64Info info = kEmptyAarch64Info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(CPU_FEATURES_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // Handling Darwin platform through sysctlbyname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.implementer = GetDarwinSysCtlByNameValue("hw.cputype");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.variant = GetDarwinSysCtlByNameValue("hw.cpusubtype");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.part = GetDarwinSysCtlByNameValue("hw.cpufamily");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.revision = GetDarwinSysCtlByNameValue("hw.cpusubfamily");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.fp = GetDarwinSysCtlByName("hw.optional.floatingpoint");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.fphp = GetDarwinSysCtlByName("hw.optional.neon_hpfp");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.sha512 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha512");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.atomics = GetDarwinSysCtlByName("hw.optional.armv8_1_atomics");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.asimdfhm = GetDarwinSysCtlByName("hw.optional.armv8_2_fhm");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.sha3 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha3");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  info.features.crc32 = GetDarwinSysCtlByName("hw.optional.armv8_crc32");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   FillProcCpuInfoData(&info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const HardwareCapabilities hwcaps = CpuFeatures_GetHardwareCapabilities();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   for (size_t i = 0; i < AARCH64_LAST_; ++i) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,6 +179,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/test/CMakeLists.txt.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/test/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,6 +66,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ## cpuinfo_aarch64_test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(PROCESSOR_IS_AARCH64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   add_executable(cpuinfo_aarch64_test cpuinfo_aarch64_test.cc ../src/cpuinfo_aarch64.c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    target_compile_definitions(cpuinfo_aarch64_test PUBLIC CPU_FEATURES_MOCK_CPUID_ARM64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    target_compile_definitions(cpuinfo_aarch64_test PRIVATE HAVE_SYSCTLBYNAME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   target_link_libraries(cpuinfo_aarch64_test all_libraries)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   add_test(NAME cpuinfo_aarch64_test COMMAND cpuinfo_aarch64_test)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cpu_features/test/cpuinfo_aarch64_test.cc.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cpu_features/test/cpuinfo_aarch64_test.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,116 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace cpu_features {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(CPU_FEATURES_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class FakeCpu {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  bool GetDarwinSysCtlByName(std::string name) const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return darwin_sysctlbyname_.count(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int GetDarwinSysCtlByNameValue(std::string name) const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::map<std::string, int>::const_iterator iter =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        darwin_sysctlbynamevalue_.find(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (iter != std::end(darwin_sysctlbynamevalue_)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return iter->second;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  void SetDarwinSysCtlByName(std::string name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    darwin_sysctlbyname_.insert(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  void SetDarwinSysCtlByNameValue(std::string name, int value) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    darwin_sysctlbynamevalue_[name] = value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::set<std::string> darwin_sysctlbyname_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::map<std::string, int> darwin_sysctlbynamevalue_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++FakeCpu* g_fake_cpu = nullptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern "C" bool GetDarwinSysCtlByName(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return g_fake_cpu->GetDarwinSysCtlByName(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern "C" int GetDarwinSysCtlByNameValue(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return g_fake_cpu->GetDarwinSysCtlByNameValue(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++class CpuinfoAarch64Test : public ::testing::Test {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ protected:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  void SetUp() override { g_fake_cpu = new FakeCpu(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  void TearDown() override { delete g_fake_cpu; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++TEST_F(CpuinfoAarch64Test, FromDarwinSysctlFromName) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.floatingpoint");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon_hpfp");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.neon_fp16");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_1_atomics");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_crc32");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_fhm");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_sha512");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.armv8_2_sha3");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.amx_version");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.ucnormal_mem");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByName("hw.optional.arm64");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cputype", 16777228);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpusubtype", 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpu64bit", 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpufamily", 458787763);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_fake_cpu->SetDarwinSysCtlByNameValue("hw.cpusubfamily", 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const auto info = GetAarch64Info();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_EQ(info.implementer, 0x100000C);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_EQ(info.variant, 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_EQ(info.part, 0x1B588BB3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_EQ(info.revision, 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.fp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.asimd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.evtstrm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.aes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.pmull);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sha1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sha2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.crc32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.atomics);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.fphp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.asimdhp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.cpuid);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.asimdrdm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.jscvt);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.fcma);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.lrcpc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.dcpop);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.sha3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sm3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sm4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.asimddp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.sha512);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sve);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_TRUE(info.features.asimdfhm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.dit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.uscat);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.ilrcpc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.flagm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.ssbs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.sb);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.paca);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EXPECT_FALSE(info.features.pacg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DisableHardwareCapabilities() { SetHardwareCapabilities(0, 0); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TEST(CpuinfoAarch64Test, FromHardwareCap) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -167,5 +277,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   EXPECT_FALSE(info.features.bti);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }  // namespace
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }  // namespace cpu_features
</span></pre><pre style='margin:0'>

</pre>