[FFmpeg-cvslog] aarch64: add armv8 CPU flag

Janne Grunau git at videolan.org
Mon Apr 7 02:51:18 CEST 2014


ffmpeg | branch: master | Janne Grunau <j at jannau.net> | Sat Apr  5 13:46:51 2014 +0200| [8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14] | committer: Janne Grunau

aarch64: add armv8 CPU flag

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14
---

 Makefile                |    2 +-
 arch.mak                |    1 +
 configure               |    3 +++
 libavutil/aarch64/cpu.c |    5 +++--
 libavutil/aarch64/cpu.h |    1 +
 libavutil/cpu.c         |    2 ++
 libavutil/cpu.h         |    1 +
 7 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 2453dfd..b3680c2 100644
--- a/Makefile
+++ b/Makefile
@@ -114,7 +114,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                           \
                OBJS HOSTOBJS TESTOBJS
 
diff --git a/arch.mak b/arch.mak
index b287fce..4bfc883 100644
--- a/arch.mak
+++ b/arch.mak
@@ -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)
 
diff --git a/configure b/configure
index fdd6c2f..4d005f1 100755
--- a/configure
+++ b/configure
@@ -1271,6 +1271,7 @@ ARCH_EXT_LIST_ARM="
     armv5te
     armv6
     armv6t2
+    armv8
     neon
     vfp
     vfpv3
@@ -1615,6 +1616,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"
@@ -3697,6 +3699,7 @@ od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
 check_inline_asm inline_asm_labels '"1:\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 2cc2ccd..37a7d8d 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 704df48..f5b1d89 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 d651eb2..e755d15 100644
--- a/libavutil/cpu.c
+++ b/libavutil/cpu.c
@@ -126,6 +126,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
@@ -185,6 +186,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 517c520..7cecccc 100644
--- a/libavutil/cpu.h
+++ b/libavutil/cpu.h
@@ -61,6 +61,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.



More information about the ffmpeg-cvslog mailing list