Diego Biurrun <di...@biurrun.de> writes: > --- > libavutil/cpu.c | 2 ++ > libavutil/cpu.h | 2 ++ > libavutil/x86/cpu.c | 2 ++ > 3 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/libavutil/cpu.c b/libavutil/cpu.c > index 6532744..75370bb 100644 > --- a/libavutil/cpu.c > +++ b/libavutil/cpu.c > @@ -82,6 +82,7 @@ int av_parse_cpu_flags(const char *s) > { "fma4" , NULL, 0, AV_OPT_TYPE_CONST, { CPUFLAG_FMA4 }, > .unit = "flags" }, > { "3dnow" , NULL, 0, AV_OPT_TYPE_CONST, { CPUFLAG_3DNOW }, > .unit = "flags" }, > { "3dnowext", NULL, 0, AV_OPT_TYPE_CONST, { CPUFLAG_3DNOWEXT }, > .unit = "flags" }, > + { "cmov", NULL, 0, AV_OPT_TYPE_CONST, { AV_CPU_FLAG_CMOV }, > .unit = "flags" }, > #elif ARCH_ARM > { "armv5te", NULL, 0, AV_OPT_TYPE_CONST, { AV_CPU_FLAG_ARMV5TE }, > .unit = "flags" }, > { "armv6", NULL, 0, AV_OPT_TYPE_CONST, { AV_CPU_FLAG_ARMV6 }, > .unit = "flags" },
Maybe cmov should be implicitly included in sse (or whatever level guarantees cmov) just like lesser simd variants are implied by later ones. > @@ -143,6 +144,7 @@ static const struct { > { AV_CPU_FLAG_FMA4, "fma4" }, > { AV_CPU_FLAG_3DNOW, "3dnow" }, > { AV_CPU_FLAG_3DNOWEXT, "3dnowext" }, > + { AV_CPU_FLAG_CMOV, "cmov" }, > #endif > { 0 } > }; > diff --git a/libavutil/cpu.h b/libavutil/cpu.h > index 15c0088..f477c83 100644 > --- a/libavutil/cpu.h > +++ b/libavutil/cpu.h > @@ -40,6 +40,8 @@ > #define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS > support even if YMM registers aren't used > #define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions > #define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions > +#define AV_CPU_FLAG_CMOV 0x1000 ///< i686 cmov > + > #define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard > > #define AV_CPU_FLAG_ARMV5TE (1 << 0) > diff --git a/libavutil/x86/cpu.c b/libavutil/x86/cpu.c > index 2424fe4..b87d3a3 100644 > --- a/libavutil/x86/cpu.c > +++ b/libavutil/x86/cpu.c > @@ -83,6 +83,8 @@ int ff_get_cpu_flags_x86(void) > cpuid(1, eax, ebx, ecx, std_caps); > family = ((eax>>8)&0xf) + ((eax>>20)&0xff); > model = ((eax>>4)&0xf) + ((eax>>12)&0xf0); > + if (std_caps & (1 << 15)) > + rval |= AV_CPU_FLAG_CMOV; > if (std_caps & (1<<23)) > rval |= AV_CPU_FLAG_MMX; > if (std_caps & (1<<25)) > -- Otherwise OK, assuming the cpuid flag is correct. -- Måns Rullgård m...@mansr.com _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel