[FFmpeg-devel] Does i686 have MMX?

Luca Barbato lu_zero
Fri Aug 27 10:26:14 CEST 2010

On 08/26/2010 08:29 PM, Jason Garrett-Glaser wrote:
> The issue is simple:
> 1.  People use --cpu on x86 to mean "it should run on at least this
> CPU, and contain optimizations for all better CPUs".  --cpu=i686 is
> widely used in order to enable CMOV on normal builds.  Even if this is
> wrong, this is what people do.  We cannot silently go and break what
> everyone currently does, it's just not reasonable.

Your target "Everyone" might be using the release branch so they will
read the changelog item once a 0.7 will appear...

> 2.  This patch SILENTLY DISABLES MMX on almost all ffmpeg builds in
> the world.  This is bad.  I don't care if it's right, it's bad.

I'd rather have you substantiate this claim.

> 3.  MMX should NEVER EVER be disabled unless --disable-mmx is passed.
> End of story.

arm and powerpc might have something to say, but I'm digressing...

> Possible solutions:
> 1.  Revert the emms change.

Why it had been made?

> 2.  By policy, make ffmpeg require MMX to run by default.  Add a
> runtime check, just in case.  Any --cpu that doesn't support MMX will
> error out unless the user specifies --disable-mmx too.

That looks a worse timebomb.

> Benefits: --cpu still makes logical sense, keeps the emms change, and
> we can enable CMOV by default too (i.e. if --cpu isn't set).
> Possible problems: this still breaks everyone's build scripts, but at
> least it'll break them loudly, so people will fix them.

"Everyone" got it's build script broken by other stuff already many
times and hardly complained.

> 3.  By policy, make ffmpeg require MMX to run by default.  Add a
> runtime check, just in case, telling the user to recompile without MMX
> if they're on an unsupported CPU.  Don't check the user's --cpu option
> when it comes to validating this.  This is what x264 does.

I'm not sure why MMX must be special...

> Benefits: simple, doesn't break build scripts, and x264 showed that it worked.
> Possible problems: --cpu doesn't do quite what it implies -- adds
> runtime failure instead of compile-time.

Good to know.

> 4.  Modify the emms change to take an argument instead of using a
> global variable.
> Benefits: no behavioral changes, everything works just as before,
> except with no global.
> Possible problems: ugly.


> I will revert any patch that silently disables mmx on any CPU.

stay clear of arm, powerpc and whatever, YOU BARBARIAN. =P

lu - the world isn't just x86 and your "Everyone" looks a small group.


Luca Barbato

More information about the ffmpeg-devel mailing list