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

Reply via email to