mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
aarch64: Add cpu flags for the dotprod and i8mm extensions
Set these available if they are available unconditionally for the compiler. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
fb1b88af77
commit
397cb623c8
@ -22,9 +22,18 @@
|
|||||||
|
|
||||||
int ff_get_cpu_flags_aarch64(void)
|
int ff_get_cpu_flags_aarch64(void)
|
||||||
{
|
{
|
||||||
return AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 |
|
int flags = AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 |
|
||||||
AV_CPU_FLAG_NEON * HAVE_NEON |
|
AV_CPU_FLAG_NEON * HAVE_NEON |
|
||||||
AV_CPU_FLAG_VFP * HAVE_VFP;
|
AV_CPU_FLAG_VFP * HAVE_VFP;
|
||||||
|
|
||||||
|
#ifdef __ARM_FEATURE_DOTPROD
|
||||||
|
flags |= AV_CPU_FLAG_DOTPROD;
|
||||||
|
#endif
|
||||||
|
#ifdef __ARM_FEATURE_MATMUL_INT8
|
||||||
|
flags |= AV_CPU_FLAG_I8MM;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ff_get_cpu_max_align_aarch64(void)
|
size_t ff_get_cpu_max_align_aarch64(void)
|
||||||
|
@ -25,5 +25,7 @@
|
|||||||
#define have_armv8(flags) CPUEXT(flags, ARMV8)
|
#define have_armv8(flags) CPUEXT(flags, ARMV8)
|
||||||
#define have_neon(flags) CPUEXT(flags, NEON)
|
#define have_neon(flags) CPUEXT(flags, NEON)
|
||||||
#define have_vfp(flags) CPUEXT(flags, VFP)
|
#define have_vfp(flags) CPUEXT(flags, VFP)
|
||||||
|
#define have_dotprod(flags) CPUEXT(flags, DOTPROD)
|
||||||
|
#define have_i8mm(flags) CPUEXT(flags, I8MM)
|
||||||
|
|
||||||
#endif /* AVUTIL_AARCH64_CPU_H */
|
#endif /* AVUTIL_AARCH64_CPU_H */
|
||||||
|
@ -174,6 +174,8 @@ int av_parse_cpu_caps(unsigned *flags, const char *s)
|
|||||||
{ "armv8", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV8 }, .unit = "flags" },
|
{ "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" },
|
{ "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" },
|
{ "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" },
|
||||||
|
{ "dotprod", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_DOTPROD }, .unit = "flags" },
|
||||||
|
{ "i8mm", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_I8MM }, .unit = "flags" },
|
||||||
#elif ARCH_MIPS
|
#elif ARCH_MIPS
|
||||||
{ "mmi", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMI }, .unit = "flags" },
|
{ "mmi", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMI }, .unit = "flags" },
|
||||||
{ "msa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MSA }, .unit = "flags" },
|
{ "msa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MSA }, .unit = "flags" },
|
||||||
|
@ -69,6 +69,8 @@
|
|||||||
#define AV_CPU_FLAG_NEON (1 << 5)
|
#define AV_CPU_FLAG_NEON (1 << 5)
|
||||||
#define AV_CPU_FLAG_ARMV8 (1 << 6)
|
#define AV_CPU_FLAG_ARMV8 (1 << 6)
|
||||||
#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations
|
#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations
|
||||||
|
#define AV_CPU_FLAG_DOTPROD (1 << 8)
|
||||||
|
#define AV_CPU_FLAG_I8MM (1 << 9)
|
||||||
#define AV_CPU_FLAG_SETEND (1 <<16)
|
#define AV_CPU_FLAG_SETEND (1 <<16)
|
||||||
|
|
||||||
#define AV_CPU_FLAG_MMI (1 << 0)
|
#define AV_CPU_FLAG_MMI (1 << 0)
|
||||||
|
@ -38,6 +38,8 @@ static const struct {
|
|||||||
{ AV_CPU_FLAG_ARMV8, "armv8" },
|
{ AV_CPU_FLAG_ARMV8, "armv8" },
|
||||||
{ AV_CPU_FLAG_NEON, "neon" },
|
{ AV_CPU_FLAG_NEON, "neon" },
|
||||||
{ AV_CPU_FLAG_VFP, "vfp" },
|
{ AV_CPU_FLAG_VFP, "vfp" },
|
||||||
|
{ AV_CPU_FLAG_DOTPROD, "dotprod" },
|
||||||
|
{ AV_CPU_FLAG_I8MM, "i8mm" },
|
||||||
#elif ARCH_ARM
|
#elif ARCH_ARM
|
||||||
{ AV_CPU_FLAG_ARMV5TE, "armv5te" },
|
{ AV_CPU_FLAG_ARMV5TE, "armv5te" },
|
||||||
{ AV_CPU_FLAG_ARMV6, "armv6" },
|
{ AV_CPU_FLAG_ARMV6, "armv6" },
|
||||||
|
@ -230,6 +230,8 @@ static const struct {
|
|||||||
#if ARCH_AARCH64
|
#if ARCH_AARCH64
|
||||||
{ "ARMV8", "armv8", AV_CPU_FLAG_ARMV8 },
|
{ "ARMV8", "armv8", AV_CPU_FLAG_ARMV8 },
|
||||||
{ "NEON", "neon", AV_CPU_FLAG_NEON },
|
{ "NEON", "neon", AV_CPU_FLAG_NEON },
|
||||||
|
{ "DOTPROD", "dotprod", AV_CPU_FLAG_DOTPROD },
|
||||||
|
{ "I8MM", "i8mm", AV_CPU_FLAG_I8MM },
|
||||||
#elif ARCH_ARM
|
#elif ARCH_ARM
|
||||||
{ "ARMV5TE", "armv5te", AV_CPU_FLAG_ARMV5TE },
|
{ "ARMV5TE", "armv5te", AV_CPU_FLAG_ARMV5TE },
|
||||||
{ "ARMV6", "armv6", AV_CPU_FLAG_ARMV6 },
|
{ "ARMV6", "armv6", AV_CPU_FLAG_ARMV6 },
|
||||||
|
Loading…
Reference in New Issue
Block a user