diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-04-07 02:15:09 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-04-07 02:15:18 +0200 |
commit | 4c57c6a7655fb3c1a7194c6f92a075c463d1b898 (patch) | |
tree | e86d0f975f4c9e7e4a607ec2b8e751e37636f688 | |
parent | 541bebd41401d0bc3a2430541faebd55cc021149 (diff) | |
parent | 8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14 (diff) | |
download | ffmpeg-4c57c6a7655fb3c1a7194c6f92a075c463d1b898.tar.gz |
Merge commit '8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14'
* commit '8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14':
aarch64: add armv8 CPU flag
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | arch.mak | 1 | ||||
-rwxr-xr-x | configure | 3 | ||||
-rw-r--r-- | libavutil/aarch64/cpu.c | 5 | ||||
-rw-r--r-- | libavutil/aarch64/cpu.h | 1 | ||||
-rw-r--r-- | libavutil/cpu.c | 2 | ||||
-rw-r--r-- | libavutil/cpu.h | 1 |
7 files changed, 12 insertions, 3 deletions
@@ -73,7 +73,7 @@ config.h: .config SUBDIR_VARS := CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \ HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \ - ARMV5TE-OBJS ARMV6-OBJS VFP-OBJS NEON-OBJS \ + ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \ ALTIVEC-OBJS MMX-OBJS YASM-OBJS \ MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS \ OBJS SLIBOBJS HOSTOBJS TESTOBJS @@ -1,5 +1,6 @@ OBJS-$(HAVE_ARMV5TE) += $(ARMV5TE-OBJS) $(ARMV5TE-OBJS-yes) OBJS-$(HAVE_ARMV6) += $(ARMV6-OBJS) $(ARMV6-OBJS-yes) +OBJS-$(HAVE_ARMV8) += $(ARMV8-OBJS) $(ARMV8-OBJS-yes) OBJS-$(HAVE_VFP) += $(VFP-OBJS) $(VFP-OBJS-yes) OBJS-$(HAVE_NEON) += $(NEON-OBJS) $(NEON-OBJS-yes) @@ -1494,6 +1494,7 @@ ARCH_EXT_LIST_ARM=" armv5te armv6 armv6t2 + armv8 neon vfp vfpv3 @@ -1887,6 +1888,7 @@ CMDLINE_APPEND=" armv5te_deps="arm" armv6_deps="arm" armv6t2_deps="arm" +armv8_deps="aarch64" neon_deps_any="aarch64 arm" vfp_deps_any="aarch64 arm" vfpv3_deps="vfp" @@ -4218,6 +4220,7 @@ check_inline_asm inline_asm_labels '"1:\n"' check_inline_asm inline_asm_nonlocal_labels '"Label:\n"' if enabled aarch64; then + enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]' # internal assembler in clang 3.3 does not support this instruction enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1' enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2' diff --git a/libavutil/aarch64/cpu.c b/libavutil/aarch64/cpu.c index 87e9d50561..8ef077aaea 100644 --- a/libavutil/aarch64/cpu.c +++ b/libavutil/aarch64/cpu.c @@ -22,6 +22,7 @@ int ff_get_cpu_flags_aarch64(void) { - return AV_CPU_FLAG_NEON * HAVE_NEON | - AV_CPU_FLAG_VFP * HAVE_VFP; + return AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 | + AV_CPU_FLAG_NEON * HAVE_NEON | + AV_CPU_FLAG_VFP * HAVE_VFP; } diff --git a/libavutil/aarch64/cpu.h b/libavutil/aarch64/cpu.h index d6af28126b..cf1b9cc516 100644 --- a/libavutil/aarch64/cpu.h +++ b/libavutil/aarch64/cpu.h @@ -23,6 +23,7 @@ #include "libavutil/cpu.h" #include "libavutil/cpu_internal.h" +#define have_armv8(flags) CPUEXT(flags, ARMV8) #define have_neon(flags) CPUEXT(flags, NEON) #define have_vfp(flags) CPUEXT(flags, VFP) diff --git a/libavutil/cpu.c b/libavutil/cpu.c index 256bd237d5..c4517bab67 100644 --- a/libavutil/cpu.c +++ b/libavutil/cpu.c @@ -130,6 +130,7 @@ int av_parse_cpu_flags(const char *s) { "vfpv3", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFPV3 }, .unit = "flags" }, { "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, #elif ARCH_AARCH64 + { "armv8", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV8 }, .unit = "flags" }, { "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, { "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" }, #endif @@ -263,6 +264,7 @@ static const struct { const char *name; } cpu_flag_tab[] = { #if ARCH_AARCH64 + { AV_CPU_FLAG_ARMV8, "armv8" }, { AV_CPU_FLAG_NEON, "neon" }, { AV_CPU_FLAG_VFP, "vfp" }, #elif ARCH_ARM diff --git a/libavutil/cpu.h b/libavutil/cpu.h index 0ad400fefb..8ff14d3ada 100644 --- a/libavutil/cpu.h +++ b/libavutil/cpu.h @@ -63,6 +63,7 @@ #define AV_CPU_FLAG_VFP (1 << 3) #define AV_CPU_FLAG_VFPV3 (1 << 4) #define AV_CPU_FLAG_NEON (1 << 5) +#define AV_CPU_FLAG_ARMV8 (1 << 6) /** * Return the flags which specify extensions supported by the CPU. |