[x264-devel] [PATCH 2/9] aarch64: add armv8 and neon cpu flags and test them
Janne Grunau
janne-x264 at jannau.net
Sat Jul 19 20:57:48 CEST 2014
---
common/cpu.c | 10 ++++++++++
tools/checkasm.c | 8 ++++++++
x264.h | 3 ++-
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/common/cpu.c b/common/cpu.c
index 837de89..4877a01 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 cb88966..d29067e 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_ARMV8 ? "armv8" :
+ b->cpu&X264_CPU_NEON ? "neon" :
#endif
"c",
#if HAVE_MMX
@@ -2730,6 +2733,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 50aefc5..b896f91 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 */
--
2.0.0
More information about the x264-devel
mailing list