From: Janne Grunau Date: Wed, 19 Mar 2014 12:45:17 +0000 (+0100) Subject: aarch64: add armv8 and neon cpu flags and test them X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=efaf0b88f7c703533ee8857a6a5039cf64bce3a0;p=libx264 aarch64: add armv8 and neon cpu flags and test them --- diff --git a/common/cpu.c b/common/cpu.c index 837de89f..4877a015 100644 --- a/common/cpu.c +++ b/common/cpu.c @@ -89,6 +89,9 @@ const x264_cpu_name_t x264_cpu_names[] = {"ARMv6", X264_CPU_ARMV6}, {"NEON", X264_CPU_NEON}, {"FastNeonMRC", X264_CPU_FAST_NEON_MRC}, +#elif ARCH_AARCH64 + {"ARMv8", X264_CPU_ARMV8}, + {"NEON", X264_CPU_NEON}, #endif {"", 0}, }; @@ -409,6 +412,13 @@ uint32_t x264_cpu_detect( void ) return flags; } +#elif ARCH_AARCH64 + +uint32_t x264_cpu_detect( void ) +{ + return X264_CPU_ARMV8 | X264_CPU_NEON; +} + #else uint32_t x264_cpu_detect( void ) diff --git a/tools/checkasm.c b/tools/checkasm.c index 1bc07227..8dd879ae 100644 --- a/tools/checkasm.c +++ b/tools/checkasm.c @@ -184,6 +184,9 @@ static void print_bench(void) #elif ARCH_ARM b->cpu&X264_CPU_NEON ? "neon" : b->cpu&X264_CPU_ARMV6 ? "armv6" : +#elif ARCH_AARCH64 + b->cpu&X264_CPU_NEON ? "neon" : + b->cpu&X264_CPU_ARMV8 ? "armv8" : #endif "c", #if HAVE_MMX @@ -2731,6 +2734,11 @@ static int check_all_flags( void ) ret |= add_flags( &cpu0, &cpu1, X264_CPU_NEON, "NEON" ); if( x264_cpu_detect() & X264_CPU_FAST_NEON_MRC ) ret |= add_flags( &cpu0, &cpu1, X264_CPU_FAST_NEON_MRC, "Fast NEON MRC" ); +#elif ARCH_AARCH64 + if( x264_cpu_detect() & X264_CPU_ARMV8 ) + ret |= add_flags( &cpu0, &cpu1, X264_CPU_ARMV8, "ARMv8" ); + if( x264_cpu_detect() & X264_CPU_NEON ) + ret |= add_flags( &cpu0, &cpu1, X264_CPU_NEON, "NEON" ); #endif return ret; } diff --git a/x264.h b/x264.h index 50aefc59..b896f913 100644 --- a/x264.h +++ b/x264.h @@ -152,10 +152,11 @@ typedef struct /* PowerPC */ #define X264_CPU_ALTIVEC 0x0000001 -/* ARM */ +/* ARM and AArch64 */ #define X264_CPU_ARMV6 0x0000001 #define X264_CPU_NEON 0x0000002 /* ARM NEON */ #define X264_CPU_FAST_NEON_MRC 0x0000004 /* Transfer from NEON to ARM register is fast (Cortex-A9) */ +#define X264_CPU_ARMV8 0x0000008 /* Analyse flags */ #define X264_ANALYSE_I4x4 0x0001 /* Analyse i4x4 */