derekf pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9111811b83cc1b3bb0e73f837497882d2e06a0ce

commit 9111811b83cc1b3bb0e73f837497882d2e06a0ce
Author: Derek Foreman <[email protected]>
Date:   Wed Feb 28 16:38:53 2018 -0600

    evas: Check for NEON via eina_cpu_features if possible
    
    On linux we can do this test without firing a SIGILL and trapping it,
    if getauxval() is present.
    
    ref T6711
---
 src/lib/evas/common/evas_cpu.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/lib/evas/common/evas_cpu.c b/src/lib/evas/common/evas_cpu.c
index 2adf1d16d7..ce01eec76f 100644
--- a/src/lib/evas/common/evas_cpu.c
+++ b/src/lib/evas/common/evas_cpu.c
@@ -237,9 +237,15 @@ evas_common_cpu_init(void)
      cpu_feature_mask &= ~CPU_FEATURE_NEON;
    else
      {
+        /* On linux eina_cpu sets this up with getauxval() */
+#if defined(HAVE_SYS_AUXV_H) && defined(HAVE_ASM_HWCAP_H) && defined(__arm__) 
&& defined(__linux__)
+        cpu_feature_mask |= CPU_FEATURE_NEON *
+          !!(eina_cpu_features_get() & EINA_CPU_NEON);
+#else
         cpu_feature_mask |= CPU_FEATURE_NEON *
           evas_common_cpu_feature_test(evas_common_cpu_neon_test);
         evas_common_cpu_end_opt();
+#endif
      }
 # endif
 #endif

-- 


Reply via email to