* commit '8675bcb0addb1c7fb0b04682d1f3f95d5b8dae14':
aarch64: add armv8 CPU flag
Merged-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -73,7 +73,7 @@ config.h: .config |
73 | 73 |
|
74 | 74 |
SUBDIR_VARS := CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \ |
75 | 75 |
HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \ |
76 |
- ARMV5TE-OBJS ARMV6-OBJS VFP-OBJS NEON-OBJS \ |
|
76 |
+ ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \ |
|
77 | 77 |
ALTIVEC-OBJS MMX-OBJS YASM-OBJS \ |
78 | 78 |
MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MIPS32R2-OBJS \ |
79 | 79 |
OBJS SLIBOBJS HOSTOBJS TESTOBJS |
... | ... |
@@ -1,5 +1,6 @@ |
1 | 1 |
OBJS-$(HAVE_ARMV5TE) += $(ARMV5TE-OBJS) $(ARMV5TE-OBJS-yes) |
2 | 2 |
OBJS-$(HAVE_ARMV6) += $(ARMV6-OBJS) $(ARMV6-OBJS-yes) |
3 |
+OBJS-$(HAVE_ARMV8) += $(ARMV8-OBJS) $(ARMV8-OBJS-yes) |
|
3 | 4 |
OBJS-$(HAVE_VFP) += $(VFP-OBJS) $(VFP-OBJS-yes) |
4 | 5 |
OBJS-$(HAVE_NEON) += $(NEON-OBJS) $(NEON-OBJS-yes) |
5 | 6 |
|
... | ... |
@@ -1494,6 +1494,7 @@ ARCH_EXT_LIST_ARM=" |
1494 | 1494 |
armv5te |
1495 | 1495 |
armv6 |
1496 | 1496 |
armv6t2 |
1497 |
+ armv8 |
|
1497 | 1498 |
neon |
1498 | 1499 |
vfp |
1499 | 1500 |
vfpv3 |
... | ... |
@@ -1887,6 +1888,7 @@ CMDLINE_APPEND=" |
1887 | 1887 |
armv5te_deps="arm" |
1888 | 1888 |
armv6_deps="arm" |
1889 | 1889 |
armv6t2_deps="arm" |
1890 |
+armv8_deps="aarch64" |
|
1890 | 1891 |
neon_deps_any="aarch64 arm" |
1891 | 1892 |
vfp_deps_any="aarch64 arm" |
1892 | 1893 |
vfpv3_deps="vfp" |
... | ... |
@@ -4218,6 +4220,7 @@ check_inline_asm inline_asm_labels '"1:\n"' |
4218 | 4218 |
check_inline_asm inline_asm_nonlocal_labels '"Label:\n"' |
4219 | 4219 |
|
4220 | 4220 |
if enabled aarch64; then |
4221 |
+ enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]' |
|
4221 | 4222 |
# internal assembler in clang 3.3 does not support this instruction |
4222 | 4223 |
enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1' |
4223 | 4224 |
enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2' |
... | ... |
@@ -130,6 +130,7 @@ int av_parse_cpu_flags(const char *s) |
130 | 130 |
{ "vfpv3", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFPV3 }, .unit = "flags" }, |
131 | 131 |
{ "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, |
132 | 132 |
#elif ARCH_AARCH64 |
133 |
+ { "armv8", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV8 }, .unit = "flags" }, |
|
133 | 134 |
{ "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, |
134 | 135 |
{ "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" }, |
135 | 136 |
#endif |
... | ... |
@@ -263,6 +264,7 @@ static const struct { |
263 | 263 |
const char *name; |
264 | 264 |
} cpu_flag_tab[] = { |
265 | 265 |
#if ARCH_AARCH64 |
266 |
+ { AV_CPU_FLAG_ARMV8, "armv8" }, |
|
266 | 267 |
{ AV_CPU_FLAG_NEON, "neon" }, |
267 | 268 |
{ AV_CPU_FLAG_VFP, "vfp" }, |
268 | 269 |
#elif ARCH_ARM |