[FFmpeg-devel] Does i686 have MMX?

Måns Rullgård mans
Sat Aug 28 10:51:13 CEST 2010

Jason Garrett-Glaser <darkshikari at gmail.com> writes:

> 2010/8/27 M?ns Rullg?rd <mans at mansr.com>:
>> Jason Garrett-Glaser <darkshikari at gmail.com> writes:
>>> On Fri, Aug 27, 2010 at 4:26 AM, Luca Barbato <lu_zero at gentoo.org> wrote:
>>>> 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...
>>> You missed the earlier discussion where we agreed that it was.
>> I agree that it _is_ treated specially, and I think it's about time
>> that stopped.
> If we inline emms, we are treating MMX specially.  That is, for
> MMX2/SSE/SSE2/etc/etc, it's all autoloaded, but for MMX, it's inlined.

I was talking about mmx/sse/etc being treated specially compared to
e.g. altivec or neon.

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-devel mailing list