summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2018-02-28 16:38:53 -0600
committerDerek Foreman <derekf@osg.samsung.com>2018-02-28 18:07:53 -0600
commit9111811b83cc1b3bb0e73f837497882d2e06a0ce (patch)
tree40d71de154bb8ac5ed48d61b487b97e3a4056a2c
parent977b2731ee8b39bc35260604b61afa017fc61369 (diff)
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
-rw-r--r--src/lib/evas/common/evas_cpu.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lib/evas/common/evas_cpu.c b/src/lib/evas/common/evas_cpu.c
index 2adf1d1..ce01eec 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)
237 cpu_feature_mask &= ~CPU_FEATURE_NEON; 237 cpu_feature_mask &= ~CPU_FEATURE_NEON;
238 else 238 else
239 { 239 {
240 /* On linux eina_cpu sets this up with getauxval() */
241#if defined(HAVE_SYS_AUXV_H) && defined(HAVE_ASM_HWCAP_H) && defined(__arm__) && defined(__linux__)
242 cpu_feature_mask |= CPU_FEATURE_NEON *
243 !!(eina_cpu_features_get() & EINA_CPU_NEON);
244#else
240 cpu_feature_mask |= CPU_FEATURE_NEON * 245 cpu_feature_mask |= CPU_FEATURE_NEON *
241 evas_common_cpu_feature_test(evas_common_cpu_neon_test); 246 evas_common_cpu_feature_test(evas_common_cpu_neon_test);
242 evas_common_cpu_end_opt(); 247 evas_common_cpu_end_opt();
248#endif
243 } 249 }
244# endif 250# endif
245#endif 251#endif