[FFmpeg-devel] [PATCH] x86/emms: run the instruction unconditionally on supported targets
James Almer
jamrial at gmail.com
Thu Feb 4 01:15:00 CET 2016
On 2/3/2016 2:21 AM, James Almer wrote:
> Inlined functions like AV_ZERO* and AV_COPY* may use mmx instructions
> regardless of runtime cpuflags.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> On targets where __MMX__ is not defined (like default x86_32 builds) the
> runtime check is a must, and neither of the above functions will use mmx
> instructions anyway.
>
> libavutil/x86/emms.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/libavutil/x86/emms.h b/libavutil/x86/emms.h
> index a529b6b..0deeb8c 100644
> --- a/libavutil/x86/emms.h
> +++ b/libavutil/x86/emms.h
> @@ -34,7 +34,9 @@ void avpriv_emms_yasm(void);
> */
> static av_always_inline void emms_c(void)
> {
> +#if !defined(__MMX__)
> if(av_get_cpu_flags() & AV_CPU_FLAG_MMX)
> +#endif
> __asm__ volatile ("emms" ::: "memory");
> }
> #elif HAVE_MMX && HAVE_MM_EMPTY
>
If you want a simple test case, on x86_32 do:
configure --cpu=pentium-mmx && make fate-dca CPUFLAGS=0
And watch it crash.
More information about the ffmpeg-devel
mailing list