forked from enlightenment/efl
eina_cpu: Detect NEON if available
We may have a few conditionals around that think this has actually been set at some point, let's surprise them by actually doing that.
This commit is contained in:
parent
0f98e1c6d3
commit
a453599d26
|
@ -449,6 +449,8 @@ sys/types.h \
|
||||||
sys/param.h \
|
sys/param.h \
|
||||||
sys/mman.h \
|
sys/mman.h \
|
||||||
netinet/in.h \
|
netinet/in.h \
|
||||||
|
sys/auxv.h \
|
||||||
|
asm/hwcap.h \
|
||||||
])
|
])
|
||||||
|
|
||||||
EFL_CHECK_PATH_MAX
|
EFL_CHECK_PATH_MAX
|
||||||
|
|
|
@ -53,6 +53,11 @@
|
||||||
|
|
||||||
#include "eina_cpu_private.h"
|
#include "eina_cpu_private.h"
|
||||||
|
|
||||||
|
#if defined(HAVE_SYS_AUXV_H) && defined(HAVE_ASM_HWCAP_H) && defined(__arm__) && defined(__linux__)
|
||||||
|
# include <sys/auxv.h>
|
||||||
|
# include <asm/hwcap.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/*============================================================================*
|
/*============================================================================*
|
||||||
* Local *
|
* Local *
|
||||||
*============================================================================*/
|
*============================================================================*/
|
||||||
|
@ -129,6 +134,19 @@ void _x86_simd(Eina_Cpu_Features *features)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_SYS_AUXV_H) && defined(HAVE_ASM_HWCAP_H) && defined(__arm__) && defined(__linux__)
|
||||||
|
static void
|
||||||
|
_arm_cpu_features(Eina_Cpu_Features *features)
|
||||||
|
{
|
||||||
|
unsigned long aux;
|
||||||
|
|
||||||
|
aux = getauxval(AT_HWCAP);
|
||||||
|
|
||||||
|
if (aux & HWCAP_NEON)
|
||||||
|
*features |= EINA_CPU_NEON;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*============================================================================*
|
/*============================================================================*
|
||||||
* Global *
|
* Global *
|
||||||
*============================================================================*/
|
*============================================================================*/
|
||||||
|
@ -147,8 +165,9 @@ eina_cpu_init(void)
|
||||||
{
|
{
|
||||||
#if defined(__i386__) || defined(__x86_64__)
|
#if defined(__i386__) || defined(__x86_64__)
|
||||||
_x86_simd(&eina_cpu_features);
|
_x86_simd(&eina_cpu_features);
|
||||||
|
#elif defined(HAVE_SYS_AUXV_H) && defined(HAVE_ASM_HWCAP_H) && defined(__arm__) && defined(__linux__)
|
||||||
|
_arm_cpu_features(&eina_cpu_features);
|
||||||
#endif
|
#endif
|
||||||
// FIXME: Handle NEON and friends
|
|
||||||
|
|
||||||
// Figure out the page size for this system
|
// Figure out the page size for this system
|
||||||
_eina_page_size();
|
_eina_page_size();
|
||||||
|
|
Loading…
Reference in New Issue