Skip to content
/ FFmpeg Public
forked from FFmpeg/FFmpeg

Commit

Permalink
Merge commit '8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14'
Browse files Browse the repository at this point in the history
* commit '8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14':
  aarch64: add armv8 CPU flag

Merged-by: Michael Niedermayer <[email protected]>
  • Loading branch information
michaelni committed Apr 7, 2014
2 parents 541bebd + 8675bcb commit 4c57c6a
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions arch.mak
Original file line number Diff line number Diff line change
@@ -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)

Expand Down
3 changes: 3 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -1494,6 +1494,7 @@ ARCH_EXT_LIST_ARM="
armv5te
armv6
armv6t2
armv8
neon
vfp
vfpv3
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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'
Expand Down
5 changes: 3 additions & 2 deletions libavutil/aarch64/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
1 change: 1 addition & 0 deletions libavutil/aarch64/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 2 additions & 0 deletions libavutil/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions libavutil/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 4c57c6a

Please sign in to comment.